Optimal Discrete-time Fault Detection and Diagnosis Filtering