Maximum likelihood sequence estimation (MLSE) with the Viterbi algorithm, see lecture notes "Communications III".
Five different channels are considered: $$H_{0}\left(z\right)=1+\frac{1}{2}z^{-1}$$ $$H_{1}\left(z\right)=1-\frac{3}{4}z^{-1}-\frac{5}{8}z^{-2}$$ $$H_{2}\left(z\right)=1+\frac{1}{2}z^{-1}-\frac{1}{4}z^{-2}$$ $$H_{3}\left(z\right)=1+z^{-1}-\frac{1}{2}z^{-2}$$ $$H_{4}\left(z\right)=1-\frac{1}{2}z^{-1}+\frac{3}{4}z^{-2}+\frac{1}{5}z^{-3}$$
Note that the channel impulse responses $H(z)$ are given in non-normalized form. However, in the simulations of the subsequent pages, the channel gains are properly accounted for in the $E_s/N_0$-computation.