Fountain Codes Based on Zigzag Decodable Coding
Takayuki Nozaki
Kanagawa University, JAPAN
Email: nozaki@kanagawa-u.ac.jp

Abstract—Fountain codes based on non-binary low-density
parity-check (LDPC) codes have good decoding performance
when the number of source packets is finite. However, the spacecomplexity of the decoding algorithm for fountain codes basedon non-binary LDPC codes grows exponentially with the degreeof a field extension. Zigzag decodable codes generate the output
packets from source packets by using shift and exclusive or. It is
known that the zigzag decodable codes are efficiently decoded by
the zigzag decoder. In this paper, by applying zigzag decodable
coding to fountain codes, we propose a fountain code whose spacedecoding complexity is nearly equal to that for the Raptor codes.
Simulation results show that the proposed fountain coding systemoutperforms Raptor coding system in terms of the overhead forthe received packets.

I. I NTRODUCTION
On the Internet, a message is transmitted in a sequence of
packets. We consider that the packets which are not correctly
received are erased. Hence, the Internet is modeled as thepacket erasure channel (PEC).
Retransmitting packets is a method to realize reliablecommunication over the Internet. However, in the case ofmulticasting, it is difficult to retransmit packets as the numberof receiver increases, since the retransmission requests canoverwhelm the sender.
Fountain code [1] realizes reliable communication on multicasting. We assume that the transmitted message are divided
into k source packets. Fountain code produces infinite output
packets from k source packets. The receivers decode themessage from arbitrary k(1 + α) output packets with α > 0.
Hence, the receivers need not request retransmitting packets.
The parameter α is referred to as overhead for received
packets. For good fountain codes, the value of α is close to
zero.
Luby first realized the concepts of the fountain code with
LT codes1 [2]. Each output packet of the LT code is generated
as follows. Firstly, the encoder randomly chooses the degree dof the output packet according to the degree distribution Ω(x).
Secondly, the encoder randomly chooses d distinct source
packets. Finally, the encoder outputs bit-wise exclusive or(XOR) of the d source packets as an output packet. Decodingof LT codes is similar to that of low-density parity-check(LDPC) codes over the binary erasure channel. More precisely,
the decoder constructs the factor graph from the received
packets and recover the source packets by using the peelingalgorithm [3].
1 Notice that the Tornado codes [1] are not fountain codes since the Tornado
codes produce the finite output packets.

Raptor codes [4] are fountain codes which achieves α → 0
as k → ∞ with linear time encoding and decoding. Encodingof Raptor code is divided into two stages. In the first stage,
the encoder generates the precoded packets from the source
packets by using an LDPC code. In the second stage, the encoder generates the output packets from the precoded packets
by using an LT code. Decoding of the Raptor codes is similar
to that of the LT codes.
When the number k of source packets is finite, the fountaincode based on a non-binary LDPC code [5] outperforms
Raptor codes. However, the space complexity of the decoding
algorithm for the fountain codes based on non-binary LDPC
codes grows exponentially with the degree of a field extension,
similarly to the decoding algorithm for the non-binary LDPC
codes.
Gollakota and Katabi [6] proposed zigzag decoding tocombat hidden terminals in wireless networks. Sung andGong [7] proposed zigzag decodable (ZD) codes which are
efficiently decoded by the zigzag decoder, for the distributed
storage systems. As a similar study, Qureshi et al. [8] proposed
triangular codes and back-substitution decoding method for theindex decoding problem. Both ZD codes and triangular codes
generates output packets from the source packets by using shift
and XOR.
Qureshi et al. [9] suggested that the triangular codes canbe applied to the fountain codes. However, there are nocomparison with other fountain codes and there are no analysisof the fountain codes based on triangular coding.
In this paper, we investigate the fountain codes based on
ZD coding. The contributions of this paper are the followings:(1) We improve zigzag decoding. (2) We give a factor graphrepresentation of the ZD codes. (3) We propose a fountain code
based on ZD coding and its decoding algorithm. (4) We provethat the decoding erasure probability for the proposed fountaincoding system is lower than that for the Raptor coding system.
As an advantage of the fountain code based on ZD coding, thespace complexity of the decoding algorithm grows linearlywith the received bits. In other words, the space complexityof the decoding algorithm for the fountain codes based on ZD
coding is slightly larger than that for the Raptor codes at thesame overhead α.
The rest of the paper is organized as follows. Section II
briefly explains the ZD codes and zigzag decoding by a toy
example. Section III gives factor graph representation of the
ZD codes. Section IV proposes the fountain codes based on
ZD coding and its decoding algorithm. Section V analyzes theoverhead, decoding performance and decoding complexity forthe proposed fountain coding system. Moreover, simulation
results in Section V give that the proposed fountain coding
system outperforms Raptor coding system in terms of theoverhead for the received packets.
This work was partially presented in [10].
II. E XAMPLE OF ZD C ODES A ND Z IGZAG D ECODING
This section explains the ZD code and the zigzag decoding
algorithm with a toy example. Moreover, we point out adrawback of the zigzag decoding algorithm.
As a toy example, we consider a ZD code which generates
two encoded packets from two source packets with lengthℓ. The first encoded packet x1 = (x1,1 , x1,2 , . . . , x1,ℓ ) is
generated from the bit-wise XOR of two source packets s1 =(s1,1 , s1,2 , . . . , s1,ℓ ), s2 = (s2,1 , s2,2 , . . . , s2,ℓ ). The second
encoded packet x2 = (x2,1 , x2,2 , . . . , x2,ℓ+1 ) is generated
from the bit-wise XOR of s2 with a right shift and s1 . Noticethat the length of the second packet is ℓ+1. Figure 1 describes
the ZD code.
ZD codes are efficiently decoded by the zigzag decoding
algorithm [6], [7]. The zigzag decoding algorithm starts fromthe left of the packets. In a similar way to the peeling decoding
algorithm for the LDPC code over the binary erasure channel,
the zigzag decoding algorithm proceeds by solving linear
equations with one unknown variable.
In the case of the ZD code in Fig.1, the zigzag decoding
algorithm proceeds as the following way. The decoder recovers
s1,1 from x2,1 since s1,1 = x2,1 . The decoder recovers s2,1 bysolving x1,1 = s1,1 +s2,1 = x2,1 +s2,1 . Similarly, the decoder
recovers s1,2 , s2,2 , . . . , s2,ℓ and decoding is success.
Remark 1: Recall that the original zigzag decoding algorithm [6], [7] starts from the left of the encoding packets.
Hence, the ZD code described as in Fig.2 is not decoded by
the original zigzag decoding algorithm. However, if decoding
starts from the right of the encoding packets, the ZD code in
Fig.2 is decodable. Actually, si,ℓ is recoverable from xi,ℓ+1
for i = 1, 2, 3. Substituting these values, we get si,ℓ−1 for
i = 1, 2, 3 in a similar way. Finally, we get si,1 for i = 1, 2, 3
and decoding is success.
Hence, the zigzag decoding algorithm is improved if decoding starts from the left and right of the encoding packets. This
improved zigzag decoding algorithm is employed in Section
IV.
Remark 2: Similar to the ZD codes, the triangular codes[8] generate the encoded packets from the source packets byusing shift and XOR. The triangular code choose distinct shift
amount of the source packets. Hence, the triangular code arealways decodable from the left of the encoded packets. This
decoding algorithm is referred as back-substitution algorithm[8]. Since there are no constraints of shift amount of source
packets for the ZD codes, the triangular codes are special caseof the ZD codes.
III. FACTOR G RAPHS FOR ZD CODESThis section explains the matrix representation of the ZD
codes [7] and gives factor graph representation of the ZD
codes.

⊕

s1,2
s2,2

···
···

s1,ℓ
s2,ℓ

x1,1 x1,2

···

x1,ℓ

Fig. 1.

A toy example of ZD code

s1,1
s2,1

s1
s2
s3
x1

s1,2
s2,1

···
···

s1,ℓ
s2,ℓ−1 s2,ℓx2,1 x2,2···

x2,ℓ x2,ℓ+1

s1,1
⊕

s1

s2

s3
x2

s1
s2

s3
x3

Fig. 2. A ZD code which is not decoded by the original zigzag decoding
algorithm

A. Matrix Representation for ZD codes [7]Let ℓ be the length of source packets. Denote the numberof source packets, by k. A polynomial representation of thei-th source packet (si,1 , si,2 , . . . , si,ℓ ) is defined as∑ℓsi (z) = j=1 si,j z j .
Then, for the ZD codes, the polynomial representation of thei-th encoded packets is given by∑k(1)
xi (z) = j=1 gi,j (z)sj (z),where gi,j (z) is a monomial of z, i.e., gi,j (z) ∈{0, 1, z, z 2 , . . . }. We denote the degree of gi,j (z), bydeg(gi,j ). Then, the length of the i-th encoded packet isℓ + maxj deg(gi,j ). We get the following matrix presentation
with (1):x(z) = G(z)s(z).
Example 1: The matrix representation of the ZD code in
Fig.1 is()
1 1
G(z) =.
1 z
B. Factor Graph Representation of ZD codes
In this section, we give packet-wise and bit-wise factor
graph representation of the ZD codes.
Firstly, we give packet-wise factor graph representation of
the ZD codes. The factor graphs of the ZD codes consist of thesets of nodes Vs , Vx , C and labeled edges. The nodes in Vs , Vx
represent source packets and encoded packets, and are called
source nodes and encoded nodes, respectively. The number ofsource packets (resp. encoding packets) is equal to |Vs | (resp.
|Vx |). The nodes in C represent constraints for the neighbornodes, and are called factor nodes. The number of nodes in C
is equal to |Vx |. All the encoded nodes are of degree one andthe i-th encoded node and the i-th factor node are connectedby an edge labeled by 1. If gi,j (z) ̸= 0, then the j-th source
node and the i-th factor node are connected by an edge labeled
by gi,j (z). If gi,j (z) = 0, then the j-th source node and thei-th factor node are not connected. Note
∑ that the i-th factor
node represents a constraint such that j∈Nc (i) gi,j (z)sj (z) =xi (z), where Nc (i) gives the set of indexes of the source nodes
connecting to the i-th factor node.

vs,1
1 1
c1

vs,2
1 z

precode

c2
1

vx,1

1

inner code

vx,2

1 1 z

1 z2 zz1z2 1(a) Packet-wise representation (b) Bit-wise representation
Fig. 3.

Factor graph representation of the ZD code in Fig.1

Secondly, we give bit-wise factor graph representation of the
ZD codes. In this representation, edges are not labeled. Eachsource node and each encoded node corresponds to a bit ofsource packets and encoded packets, respectively. Each factor
node in this representation gives a constraint such that XORof the bits corresponding to the neighbor source nodes andthe neighbor encoded node is 0. The (j, t)-th source node and′(i, t+t′ )-th factor node are connected by an edge if gi,j = z t .
The (i, t)-th factor node and (i, t)-th encoded node are also
connected by an edge.
Example 2: Figures 3(a) and 3(b) show the packet-wise andbit-wise factor graph representation of the ZD code in Fig.1
with ℓ = 4. The black circle, white circle and white square
represent source nodes, encoded nodes and factor nodes,
respectively. Each dashed rectangular in Fig.3(b) corresponds
to a node in Fig.3(a).
IV. F OUNTAIN C ODE BASED ON ZD C ODING
In this section, we propose a fountain coding system basedon ZD coding. In a similar way to Raptor codes, the proposed
fountain code firstly generates precoded packets from source
packets by using an LDPC code. Next the proposed fountaincode generates the output packets from the precoded packets
with inner coding, which is a combination of LT code and ZD
code. Moreover, this section gives a decoding algorithm forthe proposed fountain codes.
A. Encoding
The system parameters for the proposed fountain coding
system are the precodeC, the degree distribution for the inner
∑
i
code
Ω(x)
=
Ω
x
and the shift distribution ∆(x) =
i
i
∑sm
i
∆
x
,
where
∆
represents
the probability that the shiftii
i=0amount is i. Notice that Ω(1) = 1 and ∆(1) = 1.
Similarly to the Raptor codes, the proposed fountain code
generates the precoded packets (a1 , . . . , an ) from the source
packets (s1 , . . . , sk ) by the precode C in the first stage. In thesecond stage, the proposed fountain code generates the infinite
output packets as the following procedure for t = 1, 2, . . . .
1) Choose a degree d of the output packet according to thedegree distribution Ω(x). In other words, choose d withprobability Ωi .
2) Choose d-tuple of shift amount (δ̃1 , . . . , δ̃d ) ∈ [0, sm ]din independent of each other according to shift distribution ∆(x). Define δ̃min := mini {δ̃1 , . . . , δ̃d } andcalculate δi := δ̃i − δ̃min for i ∈ [1, d].

Fig. 4.

An example of a factor graph for the proposed fountain code.

3) Choose d distinct precoded packets uniformly. Let(j1 , j2 , . . . , jd ) denote the d-tuple of indexes of thechosen precoded packets. Then the polynomial representation for the t-th output packet is given as∑d δi
i=1 z aji (z).
Note that the information of the tuples (δ1 , . . . , δd ),(j1 , . . . , jd ) is in the header of the t-th output packet.
B. Decoding
Let (y1 , y2 , . . . , yk̃ ) be a tuple of the received packets,
where k̃ = k(1 + α). Firstly, similarly to the Raptor code, thedecoder of the proposed fountain coding system constructs afactor graph from the precode C and headers of the received
packets. The generated factor graphs depend on receivers,
since the received packets depend on receivers. After constructing a factor graph in bit-wise representation, the decoder
recovers source packets from k̃ received packets in a similar
way to the peeling decoder [3] for the LDPC code over the
BEC.
Figure 4 illustrates an example of factor graph in packetwise representation. In this example, we employ (3, 6)-regular
LDPC code as the precode. The black (resp. white) circles
represent the precoded (resp. received) packets, and are called
variable nodes. The black and white squares represent thecheck nodes of the precode and factor nodes of the inner code,
respectively. Each edge is labeled by a monomial of z. Notethat all the edges in the factor graph corresponding to theprecode are labeled by 1. Several labels in Fig.4 are omitted
for the visibility of the figure.
Remark 3: Qureshi et al. [9] suggested a fountain coding
system based on triangular coding. This fountain coding
system is an improvement of the LT code. Decoding of thisfountain coding system starts from the left of the encoded
packets. In this fountain coding system, the encoder chooses
distinct d shift amount δ1 , . . . , δd , namely, δi ̸= δj for i ̸= j.
On the other hand, decoding of the proposed fountaincoding system starts both left and right of the received packets.
Moreover, the proposed encoding algorithm is a generalizationof the fountain code in [9], since the proposed encoding
algorithm is an improvement of Raptor code and can choosed shift amount δ1 , . . . , δd with δi = δj for i ̸= j.

V. P ERFORMANCE E VALUATIONIn this section, we evaluate the performance of the proposed
fountain coding system.
A. Overhead
For the proposed fountain code, the length of the output
packets is slightly longer than that of the source packets.
Denote the length of the i-th received packet, as ℓ + ℓi , withℓi ≥ 0. Then, the total number of bits in the received packets∑k̃
is k̃ℓ + i=1 ℓi , where k̃ gives the total number of received
packets, namely k̃ = k(1 + α). Hence, we need to consider
not only the number of received packets k̃ but also the total
number of the bits in the data section of the received packets2
kℓ(1+β). We refer the value β as the overhead for the received
bits. The value β is given by∑k̃
β = α + (kℓ)−1 i=1 ℓi .
Notice that for the Raptor codes, β = α since ℓi = 0 for all i.
From the above equation, to calculate β, we need to evaluateℓ1 , ℓ2 , . . . , ℓk̃ .
Let L be a random variable which represents a length of areceived packet. For a given degree distribution Ω(x) and agiven shift distribution ∆(x), the expectation of L is given as
the following proposition.
1: For a given degree distribution=∑sΩ(x)∑Proposition
m
i
i
∆
x
,
Ω
x
and
a
given
shift
distribution
∆(x)
=
i
i
i=0
i
the following holds:∑sm∑sm −1Ω(∆[i,sm ] ),Ω(∆[0,i] ) − i=1
E[L] = ℓ + sm − i=0∑
where ∆[i,j] := t∈[i,j] ∆t .
Due to the space limitation, we omit the proof.
When the shift distribution ∆(x) is a uniform distribution,
we get the following corollary from Proposition 1.
Corollary 1: When ∑the shift distribution is a uniform dissm(sm + 1)−1 xi , for a given degree
tribution, i.e., ∆(x) = i=0
distribution Ω(x), the following holds:∑smΩ(i(sm + 1)−1 ).
E[L] = ℓ + sm − i=1
By using Proposition 1, for a fixed α, the expectation of theoverhead for the received bits is
β = (1 + α)ℓ−1 E[L] − 1.
Since E[L] ≤ ℓ + sm , β → α as ℓ → ∞.
B. Decoding Erasure Probability
In this section, we compare the decoding erasure probability
for the proposed fountain coding system with that for the
Raptor coding system.
We denote the proposed fountain code with the precode C,
the degree distribution Ω(x) and the shift distribution ∆(x), as
F(C, Ω(x), ∆(x)). Note that the Raptor code is a special casefor the proposed fountain code with ∆(x) = 1. In other words,
F(C, Ω(x), 1) represents the Raptor code with the precode
2 Simply, we refer the total number of the bits in the data section of thereceived packets as the number of received bits.

C and the degree distribution Ω(x). In this section, we will
prove that the fountain code F(C, Ω(x), ∆(x)) outperforms
the Raptor code F(C, Ω(x), 1) in terms of the decoding erasureprobability.
To prove the above, we use the following lemma.
Lemma 1: Fix an unlabeled factor graph G in packet-wise
representation. If decoding succeeds for the factor graph G
all the edges of which are labeled by 1, the decoding also
succeeds for the factor graph G with arbitrary labeling.
Outline of the proof: We use the proof by contradiction. We
assume that decoding is a failure for the factor graph G withsome labeling. Then, the factor graph G contains some stopping
sets. Thus, the decoding is also a failure for the factor graph
G all the edges of which are labeled by 1.
This lemma shows that, for a fixed unlabeled factor graph,the decoding succeeds for the proposed fountain coding system
if the decoding succeeds for the Raptor coding system. From
this lemma, we obtain the following theorem.
Theorem 1: Let P(α, C, Ω(x), ∆(x)) be the decoding erasure probability for the fountain code F(C, Ω(x), ∆(x))
at the overhead α for the received packets. For arbitraryα, C, Ω(x), ∆(x), the following holds:
P(α, C, Ω(x), 1) ≥ P(α, C, Ω(x), ∆(x)).
This theorem shows that the fountain code
F(C, Ω(x), ∆(x)) outperforms the Raptor code F(C, Ω(x), 1)
in terms of the decoding erasure probability. The following
corollary derived from Theorem 1.
Corollary 2: If Raptor code F(C, Ω(x), 1) achieves α =0, then the proposed fountain code F(C, Ω(x), ∆(x)) alsoachieves α = 0. In other words, if P(0, C, Ω(x), 1) = 0, thenP(0, C, Ω(x), ∆(x)) = 0.
From this corollary, the proposed fountain code achieves α =0.
C. Decoding Complexity
Recall that the proposed decoding algorithm works on thefactor graph in bit-wise representation in a similar way to thepeeling algorithm for the LDPC code over the BEC. Hencethe space complexity of the decoding algorithm is equal to thetotal number of factor nodes in inner code, precoded nodes andfactor nodes in precode in bit-wise representation. Then, thespace complexity of the decoding algorithm is kℓ(2 + β) + nℓ.
Similarly, the decoding complexity of the decoding algorithm
for the Raptor code is kℓ(2 + α) + nℓ. Note that β = α in thecase of the Raptor code.
The number of iteration of the peeling algorithm is upperbound on the number of check nodes in the factor graph.
For the Raptor coding system, since the decoding algorithm
works on the factor graph in packet-wise representation, thenumber of iteration is upper bounded on αk + n. On the other
hand, for the proposed fountain coding system, the number of
iteration is upper bounded on ℓ(βk + n) since the decoding
algorithm works on the factor graph in bit-wise representation.
This is the main drawback of the proposed fountain coding
system. However, the number of the iteration of the proposed

(a) k = 900, n = 1000
0120.23000.08000.0556100
100.8379
101.6205
0.23000.08900.0727

sm
α∗
E[L]
β∗

(b) k = 1800, n = 2000
01
20.17500.07170.0483100
100.8379
101.6205
0.17500.0801
0.0653

30.0422102.3864
0.0648

0.07
0.06
0.05
0.04
0.03
0.02
0.01
0

sm=0
sm=1
sm=2
sm=3

0

0.05

0.1

0.15

0.2

0.25

0.3

0.25

0.3

Overhead α(a) k = 900, n = 1000
30.0367102.3864
0.0614

Relative frequency

sm
α∗
E[L]
β∗

Relative frequency

TABLE IOVERHEADS α∗ , β ∗ AT WHICH THE DECODING ERASURE PROBABILITIESACHIEVE 0.1 FOR sm = 0, 1, 2, 3.

0.05
0.04
0.03
0.02
0.01
0

sm=0
sm=1
sm=2
sm=3

0

0.05

0.1

0.15

0.2

Overhead α

fountain coding system will be reduced if the scheduling of
the decoding algorithm is optimized.
D. Simulation Result(b) k = 1800, n = 2000
Fig. 5.

This section shows that the proposed fountain coding systemoutperforms the Raptor coding system in terms of the overhead
for the received packets and the received bits by simulation
results.
As a precode, we employ a (3,30)-regular LDPC code
ensemble with (k, n) = (900, 100), (1800, 2000). The degree
distribution for the inner code is Ω(x) = 0.007969x +0.493570x2 + 0.166220x3 + 0.072646x4 + 0.032558x5 +0.056058x8 + 0.037229x9 + 0.055590x19 + 0.025023x65 +0.003135x66 [4]. The length of the source packets ℓ is
100 bits.∑The shift distribution is uniform distribution, i.e.,sm1i∆(x) = i=01+sm x .
In this simulation, we examine the necessary number of thereceived packets to recover the source packets for the Raptor
code and the proposed code. Figure 5 displays histograms of
the overhead for the received packets. The histogram of theoverhead α for the Raptor code is shown in sm = 0. The
histograms with sm = 1, 2, 3 give the overhead α for the
proposed fountain codes with maximum shift amount sm =1, 2, 3, respectively. From Fig.5, we see that the necessary
number of received packets to recover the source packets forthe proposed fountain code is smaller than that for the Raptor
code. Moreover, the necessary number of received packets torecover the source packets decreases as the maximum shift
amount sm increases.
Table I shows the overheads α∗ , β ∗ at which the decoding
erasure probabilities achieve 0.1. The value E[L] are derived
from Corollary 1. Table I shows that the overheads α∗ , β ∗for the received packets and received bits decrease as sm
increases. In other words, the proposed fountain coding systemoutperforms the Raptor coding system in terms of the overhead
for the received packets and the received bits. Moreover, Table
I shows that the overheads α∗ , β ∗ decrease as the number ofsource packets increases.
VI. C ONCLUSION
In this paper, we have proposed a fountain coding system
based on ZD coding. We have shown that the space complexity

Histograms of the overhead α to recover the source packets.

of the decoding algorithm for the proposed fountain coding
system and the Raptor coding system depends on the received
bits. We have proved that the decoding erasure probability forthe proposed fountain coding system is lower than that for the
Raptor coding system for a fixed precode, degree distribution
and overhead α. Moreover, we have shown that the proposed
fountain coding system outperforms the Raptor coding systemin terms of the overhead for the received packets and thereceived bits by simulation results.
ACKNOWLEDGMENT
This work was partially supported by JSPS KAKENHI
Grant Number 25889061.
R EFERENCES[1] J. Byers, M. Luby, and M. Mitzenmacher, “A digital fountain approachto asynchronous reliable multicast,” IEEE Journal on Selected Areas inCommunications, vol. 20, no. 8, pp. 1528–1540, 2002.
[2] M. Luby, “LT codes,” in Proc. The 43rd Annual IEEE Symposium on
Foundations of Computer Science (FOCS’2002), 2002, pp. 271–280.
[3] M. Luby, M. Mitzenmacher, M. A. Shokrollahi, D. A. Spielman, andV. Stemann, “Practical loss-resilient codes,” in Proc. the 29th annual
ACM Symposium on Theory of Computing, 1997, pp. 150–159.
[4] A. Shokrollahi, “Raptor codes,” IEEE Transactions on Information
Theory, vol. 52, no. 6, pp. 2551–2567, 2006.
[5] K. Kasai, D. Declercq, and K. Sakaniwa, “Fountain coding via multiplicatively repeated non-binary LDPC codes,” IEEE Transactions on
Communications, vol. 60, no. 8, pp. 2077–2083, 2012.
[6] S. Gollakota and D. Katabi, “Zigzag decoding: combating hidden
terminals in wireless networks,” in Proc. SIGCOMM, 2008, pp. 159–
170.
[7] C. W. Sung and X. Gong, “A zigzag-decodable code with the MDS
property for distributed storage systems,” in Proc. 2013 IEEE Int. Symp.
Inf. Theory (ISIT), 2013, pp. 341–345.
[8] J. Qureshi, C. H. Foh, and J. Cai, “Optimal solution for the index
coding problem using network coding over GF(2),” in Proc. 9th AnnualIEEE Communications Society Conference on Sensor, Mesh and Ad Hoc
Communications and Networks (SECON), 2012, pp. 209–217.
[9] ——, “Primer and recent developments on fountain codes,” Recent
Advances in Communications and Networking Technology, vol. 2, pp.
2–11, 2013.
[10] T. Nozaki, “Fountain codes based on triangular coding,” in IEICE Tech.
Rep., vol. 113, no. 228, IT2013-37, Sep. 2013, pp. 31–36, (in Japanese).