3914 IEEE TRANSACTIONS ON WIRELESS COMMUNICATIONS, VOL. 6, NO. 11, NOVEMBER 2007 Efficient Puncturing Method for Rate-Compatible Low-Density Parity-Check Codes Hyo Yol Park, Student Member, IEEE, Jae Won Kang, Kwang Soon Kim , Senior Member, IEEE, and Keum Chan Whang Abstract— In this paper, we propose an efficient puncturing method for LDPC codes. The proposed algorithm provides the order of variable nodes for puncturing based on the proposed cost function. The proposed cost function tries to maximize the minimum reliability among those provided from all check nodes. Also, it tries to allocate survived check nodes evenly to all punctured variable nodes. Furthermore, the proposed algorithm prevents the formation of a stopping set from the punctured variable nodes even when the amount of puncturing is quite large. Simulation results show that the proposed punctured LDPC codes perform better than existing punctured LDPC codes. Index Terms— Low-density parity-check code, rate-compatible code, puncturing. I. I NTRODUCTION L OW-density parity-check (LDPC) codes have very pow- erful and promising advantages in both performance and complexity over turbo codes. Because of such advantages, IEEE 802.16e recently adopted LDPC codes as optional forward error correction (FEC) codes [1]. In existing third- generation cellular system standards, rate-compatible punc- tured turbo (RCPT) codes have been adopted for adaptive modulation and coding (AMC) and hybrid automatic repeat request (HARQ) techniques [2], which can enhance the system performance. Those RCPT codes can support various code rates from a single mother code by applying appropriate punc- turing patterns. However, in LDPC codes, such a puncturing technique has not yet been well established, which has been considered a major drawback of LDPC codes compared to turbo codes. Recently, there have been some efforts to develop solutions for rate-compatible punctured LDPC codes [3]– [7]. In [3], capacity-approaching puncturing distributions were proposed for irregular LDPC codes. However, the puncturing distributions cannot determine the exact locations of punctured bits and are valid only when the codeword length is infinite and there is no cycle in the graph associated with the code. In [4], the structure of a parity check matrix for a rate- compatible punctured LDPC code was proposed. However, it cannot support various code rates and cannot determine the exact puncturing locations, either. In [5], a group-wise puncturing method was proposed by maximizing the number Manuscript received June 19, 2006; revised January 21, 2007, March 22, 2007, and May 16, 2007; accepted July 25, 2007. The associate editor coordinating the review of this paper and approving it for publication was A. Grant. The authors are with the Department of Electrical and Electronic Engineer- ing, Yonsei University, 134 Shinchon-dong, Seodaemun-gu, Seoul 120-749, Korea. Corresponding author (e-mail: ks.kim@yonsei.ac.kr). Digital Object Identifier 10.1109/TWC.2007.060386. of k-step recoverable (k-SR) nodes at the lowest value of k (denoted as the minimum k-SR nodes in the sequel) and puncturing the group of the same k-SR nodes for practical regular LDPC codes. Here, a k-SR node denotes a punctured variable node that can be recovered at the kth iteration. However, this algorithm cannot provide bit-wise puncturing and does not take the recovery reliability of a k-SR node into account. Later in [6], the number of survived check nodes of a k-SR node was considered based on the fact that a k-SR node with more survived check nodes can be recovered more reliably. However, it can be applied only to an LDPC code with a dual-diagonal block structure and does not take the recovery reliability fully into account. In [7], it was shown that a punctured node with a smaller number of unpunctured variable nodes (denoted as 0-SR nodes in the sequel) in its recovery tree is very likely to have higher recovery reliability. Taking such recovery reliability into account, the algorithm in [7] tries to maximize the number of the minimum k-SR nodes (i.e, to minimize the number of iterations required to recover a punctured node). After that, starting from the minimum k- SR nodes, the order of a bit-wise puncturing among the same k-SR nodes is determined by trying to allocate more survived check nodes to the variable nodes to be punctured earlier. However, trying to maximize the recovery reliability of the punctured nodes cannot directly improve the overall decoding performance because it does not consider the fact that a check node cannot improve the reliability of the neighboring 0-SR nodes until all the neighboring punctured nodes are recovered. In addition, as the amount of puncturing becomes larger, the increasing number of survived check nodes of one k-SR node reduces the number of survived check nodes of other k-SR nodes, which results in poor recovery reliability of the other k-SR nodes. In this paper, we propose an efficient puncturing algorithm for LDPC codes that does not try to minimize the number of iterations required to recover each punctured node and maximize the recovery reliability of punctured nodes as in [7], but instead tries to maximize the minimum reliability provided among check nodes (the reliability provided from a check node is denoted as the initial reliability of the check node in the sequel). For this purpose, a pruned recovery tree is newly defined and used. In addition, the proposed algorithm can provide similar recovery reliability to all punctured nodes by trying to allocate survived check nodes evenly to all punctured nodes by reserving only one survived check node for each punctured node. Furthermore, the proposed algorithm provides an efficient method for preventing punctured nodes 1536-1276/07$25.00 c 2007 IEEE