Source and Channel Coding: An Algorithmic Approach (The Springer International Series in Engineering and Computer Science)