Learning Chordal Markov Networks by Dynamic Programming