A Brief (Not-so-mathematical) Introduction To Network Coding


Suppose you and your friend are on the other side of the world, and to communicate you use a satellite.
Every time you two want to communicate, you both send your message to the satellite, and the satellite relays each message to the recipient.



Network coding aims to make this more efficient. See, in the picture above, the satellite must transmit two messages: one to you, and a different one to your friend. Can the satellite only transmit one message? IT CAN!



In the picture above, you send message a and your friend sends message b. When the satellite receives both messages, it makes one broadcast transmission of a+b. Seems silly; however, since you sent message a and you receive message a+b from the satellite, you can deduce message b = (a+b) - (a). Likewise, your friend can deduce you message a = (a+b) - (b).
All of this only requires one transmission from the satellite instead of two. Hence, the battery life of the satellite will last upto twice as long!

Now, this was a simplistic example. Things can be a lot more complicated. For example, what if there are three or more senders and receivers? What if there are multiple satellites, and not every satellite communicates with all senders or receivers?
In the example above, we used '+' (a "linear solution"). It turns out that for two senders and receivers, either '+' works (there is a linear solution) or there is no way communicate at all. My work, thus far, has been investigating whether or not are configurations with three or more senders and receivers such that there is a solution with no linear solution. This requires a lot of abstract algebra and graph theory.