Network coding merupakan suatu bagian disiplin ilmu jaringan (networking) dan teori informasi (information theory), dimana ilmu ini mempelajari manipulasi data dalam suatu kerangka jaringan (network) guna (diantaranya) meningkatkan throughput dan sifat robust dari suatu data. Teori ini pertama kali diperkenalkan oleh Rudolf Ahlswede pada tahun 2000 dalam papernya untuk IEEE Transactions on Information Theory yang berjudul Network Information Flow, terinspirasi dari aplikasi jaringan komputer.
Dalam jaringan komputer, kita mengetahui bahwa paket data dari suatu node dapat dikirim multicast ke beberapa node dengan bantuan intermediate node (router) yang bertugas mereplika dan meneruskan paket data ke node yang dituju tanpa mengubah isi dari data tersebut. Namun, dalam komunikasi jaringan (network communication), akan kita dapati bahwa mereplika dan merutekan informasi tidaklah cukup. Sebagai contoh:
perhatikan struktur Butterfly Network di atas. Source S mengirim informasi bit untuk node
dan
. Node 1, 2, 3, dan 4 berfungsi sebagai intermediate node. Kemudian tanpa menghilangkan generalisasi, S secara simetris mentransmit
ke node 1 dan
ke node 2. Gambar 1(a) mengilustrasikan bagaimana aliran bit yang terkirim dalam jaringan. Node 3 menerima
dan
masing-masing dari node 1 dan node 2. Dari dua informasi tersebut, dikarenakan output channel dari node 3 hanya ada 1, maka node 3 harus memilih salah satu diantara bit tersebut untuk diteruskan ke node 4. Pada kasus ini kita memilih
, sehingga node 4 mereplika dan kemudian mentransmit
ke node
dan
. Node
mendapatkan semua informasi, sedangkan node
hanya memperoleh informasi
baik dari node 1 maupun dari node 4. Artinya metode ini tidak bisa digunakan untuk aliran informasi di dalam jaringan.
Node 3 bisa saja mengirimkan ke node 4 dengan menaikkan kapasitas channel, seperti yang diilustrasikan pada Gambar 1(b). Artinya kita memperbesar power sinyal atau dengan menambah bandwidth. Tentunya ini sangat merugikan dan tidak elegan.
Network coding bisa mengatasi permasalahan ini dengan menggunakan operator “+” atau penjumlahan modulo 2 pada node 3, seperti yang diilustrasikan paga Gambar 1(c). Node 4 mereplika dan mengirim codeword tadi ke node tujuan: dan
. Node
bisa dengan mudah mendapatkan informasi
dengan cara menggunakan operasi penjumlahan:
. Dengan cara yang sama, node 2 dapat memperoleh informasi
. Disini kita bisa menghemat bandwidth dan pada saat yang sama memperbesar throughput.
Struktur jaringan di atas, dengan sedikit modifikasi akan kita dapatkan topologi jaringan sebagai berikut:
Bit dibangkitkan oleh node 1 dan
dibangkitkan oleh node 2. Dua multicast dalam jaringan dengan tujuan yang sama yaitu
dan
. Jika
atau
memiliki bit dari node 1 maka ia bisa memastikan bit data yang berasal dari node 2, dengan menggunakan operasi yang telah dijelaskan di atas. Begitu pula sebaliknya, jika
atau
memiliki bit dari node 2 maka ia bisa memastikan bit data yang berasal dari node 2 dengan menggunakan operasi yang sama.
Apabila kita gabungkan node 1 dengan menjadi
serta node 2 dengan
menjadi
seperti gambar berikut:
kita dapatkan struktur unicast, dimana node dan
bertukar informasi dalam jaringan. Jika tidak ada network coding, pada saat node
dan
mengirimkan informasi bersamaan, maka dibutuhkan kapasitas channel yang besar untuk node 3 dan 4. Maka disinilah perlunya network coding dalam proses routing saat terjadi multiple unicast dalam jaringan.











