Bayesian structure learning using dynamic programming and MCMC