Digital Signal Processing for Optical Communication