In
computer networking, linear network coding is a program in which intermediate nodes transmit data from source nodes to sink nodes by means of
linear combinations.
Linear network coding may be used to improve a network's throughput, efficiency, and
scalability, as well as reducing attacks and eavesdropping. The
nodes of a network take ''several'' packets and combine for transmission. This process may be used to attain the maximum possible
information flow
Flow may refer to:
Science and technology
* Fluid flow, the motion of a gas or liquid
* Flow (geomorphology), a type of mass wasting or slope movement in geomorphology
* Flow (mathematics), a group action of the real numbers on a set
* Flow (psych ...
in a
network.
It has been proven that, theoretically,
linear coding is enough to achieve the upper bound in multicast problems with one source. However linear coding is not sufficient in general; even for more general versions of linearity such as
convolutional coding and
filter-bank coding. Finding optimal coding solutions for general network problems with arbitrary demands remains an open problem.
Encoding and decoding
In a linear network coding problem, a group of nodes
are involved in moving the data from
source nodes to
sink nodes. Each node generates new packets which are linear combinations of past received packets by multiplying them by
coefficient
In mathematics, a coefficient is a multiplicative factor in some term of a polynomial, a series, or an expression; it is usually a number, but may be any expression (including variables such as , and ). When the coefficients are themselves var ...
s chosen from a
finite field, typically of size
.
More formally, each node,
with
indegree,
, generates a message
from the linear combination of received messages
by the formula:
:
Where the values
are coefficients selected from
. Since operations are computed in a finite field, the generated message is of the same length as the original messages. Each node forwards the computed value
along with the coefficients,
, used in the
level,
.
Sink nodes receive these network coded messages, and collect them in a matrix. The original messages can be recovered by performing
Gaussian elimination
In mathematics, Gaussian elimination, also known as row reduction, is an algorithm for solving systems of linear equations. It consists of a sequence of operations performed on the corresponding matrix of coefficients. This method can also be used ...
on the matrix. In reduced row echelon form, decoded packets correspond to the rows of the form