Discrete probability models and methods : probability on graphs and trees, markov chains and random fields, entropy and coding (2017)