Efficient Encoding/Decoding of GC-Balanced Codes Correcting Tandem Duplications - Chee, Yeow Meng; Chrisnata, Johan; Kiah, Han Mao; Nguyen, Tuan Thanh (IEEE transactions on information theory, 2020)
Tandem duplication is the process of inserting a copy of a segment of DNA adjacent to the original position. Motivated by applications that store data in living organisms, Jain et al. (2017) proposed the study of codes that correct tandem duplications. All code constructions are based on irreducible words . Such code constructions are almost optimal to combat tandem duplications of length at most k where k\leq 3 . However, the problem of designing efficient encoder/decoder for such codes has not been investigated. In addition, the method cannot be extended to deal with the case of arbitrary k , where k\geq 4 . In this work, we study efficient encoding/decoding methods for irreducible words over general q -ary alphabet. Our methods provide the first known efficient encoder/decoder for q -ary codes correcting tandem duplications of length at most k , where k\leq 3 . In particular, we describe an (\ell,m) -finite state encoder and show that when m=\Theta (1/\epsilon) and \ell =\Theta (1/\epsilon) , the encoder achieves rate that is \epsilon away from the optimal rate. We also provide ranking/unranking algorithms for irreducible words and modify the algorithms to reduce the space requirements for the finite state encoder. Over the DNA alphabet (or quaternary alphabet), we also impose weight constraint on the codewords. In particular, a quaternary word is {\tt GC} -balanced if exactly half of the symbols of are either {\tt C} or {\tt G} . Via a modification of Knuth's balancing technique, we provide an efficient method that translates quaternary messages into {\tt GC} -balanced codewords and the resulting codebook is able to correct tandem duplications of length at most k , where k\leq 3 . In addition, we provide the first known construction of codes to combat tandem duplications of length at most k , where k \geq 4 . Such codes can correct duplication errors in linear-time and they are almost optimal in terms of rate.