# LDPC Codes on Balanced Incomplete Block Designs: Construction, Girth, and Cycle Structure Analysis
## 2 LDPC Codes Constructed from BIBDs and Their Tanner Graphs
### LDPC Codes Constructed Based on BIBDs  
Consider a \(\text{BIBD}(K,\lambda;v)\), where the number of blocks in \(\mathbf{B}\) is \(m\). The points and blocks in \(\text{BIBD}(K,\lambda;v)\) are represented as \(x_{1},x_{2},\ldots,x_{v}\) and \(B_{1},B_{2},\ldots,B_{m}\), respectively, that is, \(\mathbf{X}=\{x_{1},x_{2},\ldots,x_{v}\}\) and \(\mathbf{B}=\{B_{1},B_{2},\ldots,B_{m}\}\). Algebraically, \(\text{BIBD}(K,\lambda;v)\) can be represented by an incidence matrix (\(\mathbf{I}=[I_{ij}]\)) of size \(v\times m\), whose elements are either \(0\) or \(1\). The rows of \(\mathbf{I}\) correspond to the points of the BIBD, labeled from \(1\) to \(v\) (or, equivalently, \(x_{1},x_{2},\ldots,x_{v}\)), and the columns correspond to the blocks, labeled from \(1\) to \(m\) (or, equivalently, \(B_{1},B_{2},\ldots,B_{m}\)). Element \(I_{ij}\) equals \(1\) (i.e., \(I_{ij}=1\)) if and only if the \(i\)-th point (\(x_{i}\)) is contained in the \(j\)-th block (\(B_{j}\)); otherwise, \(I_{ij}=0\). In this paper, the incidence matrix of a BIBD is used as the parity-check matrix, and its null space defines an LDPC code, referred to as the BIBD-LDPC code. This approach leverages the combinatorial properties of BIBDs to construct LDPC codes with desirable structural characteristics. To facilitate the understanding of BIBDs, an example is provided. Consider a \(\text{BIBD}(3,1;7)\). Here, the number of elements in each block is \(3\), and the cardinality of point set \(\mathbf{X}\) is \(7\). Without loss of generality, let the point set be \(\mathbf{X}=\{a,b,c,d,e,f,g\}\) and the block set be \(\mathbf{B}=\{\{a,e,g\}\), \(\{a,b,f\}\), \(\{b,c,g\}\), \(\{a,c,d\}\), \(\{b,d,e\}\), \(\{c,e,f\}\), \(\{d,f,g\}\}\). A straightforward counting argument confirms that the incidence structure \((\mathbf{X},\mathbf{B})\) satisfies the properties of a \(\text{BIBD}(3,1;7)\). Consequently, the incidence matrix (\(\mathbf{I}=[I_{ij}]\)) of size \(7\times 7\) is constructed as follows:  
\[\mathbf{I}=[I_{ij}]_{7\times 7}=\left[ \begin{array}{cccccc}1&1&0&1&0&0&0\\ 0&1&1&0&1&0&0\\ 0&0&1&1&0&1&0\\ 0&0&0&1&1&0&1\\ 1&0&0&0&1&1&0\\ 0&1&0&0&0&1&1\\ 1&0&1&0&0&0&1\end{array} \right],\]  
where each row corresponds to a point in \(\mathbf{X}\) and each column corresponds to a block in \(\mathbf{B}\). Element \(I_{ij}\) is \(1\) if the \(i\)-th point is included in the \(j\)-th block; otherwise, it is \(0\). It can be observed that the rank of the incidence matrix (\(\mathbf{I}\)) is \(4\). Consequently, the null space of \(\mathbf{I}\) defines a \((3,3)\)-regular \((7,3)\) LDPC code. This code is characterized by a code length of \(7\), a dimension of \(3\), and a parity-check matrix with uniform row and column weights of \(3\). To avoid generating cycles of length \(4\), a well-known row-column (RC) constraint can be applied to the parity-check matrix. Specifically, no two rows (or two columns) in the parity-check matrix should have more than one position in common. Therefore, for BIBD-LDPC codes to be free of cycles of length \(4\), it is necessary to ensure that any two points do not appear together in more than one block or, equivalently, any two blocks share, at most, one common point. This condition requires that the \(\lambda\) parameter equal \(1\). Additionally, the column weights of the parity-check matrix take values from set \(K\). To ensure that the BIBD-LDPC code has a fixed column weight, we set \(K=\{\kappa\}\). Consequently, in the remainder of this paper, the discussed BIBD-LDPC codes are constructed from \(\text{BIBD}(\kappa,1;v)\). According to the structural properties of \(\text{BIBD}(\kappa,1;v)\), the code length of the constructed BIBD-LDPC code is given by  
\[\frac{v(v-1)}{\kappa(\kappa-1)}.\]  
The incidence matrix of \(\text{BIBD}(\kappa,1;v)\) has a column weight of \(\kappa\) and a row weight of \((v-1)/(\kappa-1)\). The rank of the incidence matrix depends on the specific structure ofthe BIBD. Numerical results show that the parity-check matrices of BIBD-LDPC codes typically have full (or nearly full) rank.