Optimal and Adaptive Signal Processing