Structure Discovery in Bayesian Networks: Algorithms and Applications