Reduced Complexity Decoding Algorithms For Low-Density Parity Check Codes And Turbo Codes