A hálózati kódolás az információelmélet egyik ága , amely a hálózaton keresztüli adatátvitel optimalizálásának kérdését vizsgálja a közbenső csomópontokon lévő adatcsomagok megváltoztatására szolgáló technikák segítségével.
A hálózati kódolás elveinek elmagyarázásához használja a pillangóhálózat példáját, amelyet a hálózati kódolásról szóló első munkában javasoltak "Hálózati információáramlás" [1] . Tekintsük az ábrán látható hálózatot, amelyben van egy vagy két forrás, amely A és B csomagokat generál, amelyek a pillangóhálózat bemenetére érkeznek. Az információ továbbításáért felelős első csomópontok egy-egy csomagot továbbítanak (A bal oldalon és B a jobb oldalon) a bemeneten a címzettek végcsomópontjaihoz. Ezeket a csomagokat egy közbenső csomópontnak is továbbítják, amely ahelyett, hogy egymás után két csomagot küldene (és időt veszítene), kombinálja ezeket a csomagokat, például az XOR művelettel , és továbbítja.
A célcsomópontok képesek visszaállítani az eredeti csomagokat egyetlen fogadott csomagra és ezek kombinációjára vonatkozó információkból. Ennek eredményeként nő a hálózati átviteli sebesség - két csomag egyidejűleg két címzettnek továbbítható (minden ciklusban), bár a minimális hálózati szakasz csak három adatátviteli csatornát tartalmaz.
Ellentétben a statikus hálózati kódolással, amikor a fogadó ismeri a csomaggal végzett összes manipulációt, akkor a véletlenszerű hálózati kódolás kérdését is figyelembe veszik, ha ez az információ ismeretlen. Az első ilyen témájú művek szerzői Kötter, Krzyszang és Silva [2] nevéhez fűződik . Ezt a megközelítést véletlen együtthatós hálózati kódolásnak is nevezik – amikor azok az együtthatók, amelyek alatt a forrás által továbbított kezdeti csomagok bekerülnek a fogadó által kapott csomagokba, ismeretlen együtthatókkal, amelyek az aktuális hálózati struktúrától, sőt a véletlenszerűségtől is függhetnek. köztes csomópontokon hozott döntések .
A fő módszer az, hogy a továbbított csomagba további információkat foglalnak, amelyek azonosítják a csomagot egy bizonyos munkameneten belül (úgy gondolják, hogy csak egy munkamenethez tartozó csomagok kombinálhatók). Ez lehet például egy egyszerű bitmező. A fent tárgyalt pillangóhálózat esetében ez a bitmező minden csomaghoz két bitből állhat:
Csomag | bit mező |
---|---|
tíz | |
0 1 | |
tizenegy |
Az első címzett két "1 0" és "1 1" bitmezővel rendelkező csomagot kap, a második címzett pedig "0 1" és "1 1" bitmezőt. Ezt a mezőt a csomagok lineáris egyenletének együtthatóira vonatkozó információként használva a vevő visszaállíthatja az eredeti csomagokat, ha azokat hiba nélkül továbbították.
A nem véletlenszerű hálózati kódoláshoz szabványos zavarás- és élsimítási technikák használhatók, amelyek az információk hálózaton keresztüli egyszerű továbbítására szolgálnak. Azonban, amint az „LDPC kódolási sémák hibához” [3] cikkben megjegyeztük, a lineáris kombinációkból helyreállított csomagok nagyobb valószínűséggel kapnak hibával, mivel két, információ-helyreállításra használt csomagban hibavalószínűségként érintik őket. egyszer.
A "pillangó" hálózatot figyelembe véve kimutatható, hogy az első címzettnél nagyobb a valószínűsége annak, hogy egy csomagot hibamentesen fogad, mint a csomag esetében, még akkor is, ha a kapott csomagokban azonos, de nem nulla hibavalószínűséget feltételezünk és .
Ennek a hatásnak a csökkentése érdekében a szerzők az A és B csomagok iteratív dekódolásának módszerének módosítását javasolják (például LDPC kódolással), amikor a csomagdekódolási iterációkat egyidejűleg hajtják végre, és a dekóderek információt cserélnek az adott csomag hibavalószínűségéről. bitek. Ennek a hatásnak a teljes megszabadulása érdekében a szerzők azt is javasolják, hogy a forráscsomagokat több részre bontsák, és különféle módokon vigyék át őket. Ahogy a numerikus kísérlet megmutatta, ez valóban kiegyenlíti a csomagdekódolás valószínűségét.
A véletlenszerű hálózati kódolásban a dekódoláshoz használt módszerek az összes vett csomagot egyetlen objektumnak (gyakran mátrixnak) tekintik, amely a fogadott sorcsomagokból épül fel. Ha a csomag első része bitmező, akkor a mátrixszal végzett műveletek először a bal oldalát átlós alakra hozzuk ( Gauss módszerrel ), majd a mátrix jobb oldalán lévő hibák javítására. . A hibák kijavítására rangkódok használhatók , amelyek nem csak a mátrix oszlopaiban lévő hibákat (a hibásan vett adatbitek miatt), hanem a mátrix soraiban (a bitmezőben előforduló átviteli hibák miatt) is javíthatják. .