Polynomkod
I kodningsteorin är en polynomkod en typ av linjär kod vars uppsättning giltiga kodord består av de polynom (vanligtvis av någon fast längd) som är delbara med ett givet fast polynom (av kortare längd, kallat generatorpolynom ) .
Definition
Fixa ett ändligt fält , vars element vi kallar symboler . I syfte att konstruera polynomkoder identifierar vi en sträng av symboler med polynomet
Fixa heltal och låt vara något fast polynom av graden , kallat generatorpolynomet . Polynomkoden som genereras av är koden vars kodord är exakt de polynom med grad mindre än som är delbara (utan rest) med .
Exempel
Betrakta polynomkoden över med , , och generatorpolynomet . Denna kod består av följande kodord:
Eller uttryckligen skrivet:
Eftersom polynomkoden definieras över det binära galoisfältet representeras polynomelement som en modulo -2 summa och slutliga polynom är:
På motsvarande sätt, uttryckt som strängar av binära siffror, är kodorden:
Detta, som varje polynomkod, är verkligen en linjär kod , dvs linjära kombinationer av kodord är återigen kodord. I ett fall som detta där fältet är GF(2), hittas linjära kombinationer genom att ta XOR för kodorden uttryckta i binär form (t.ex. 00111 XOR 10010 = 10101).
Kodning
I en polynomkod över kodlängd och generatorpolynomet av graden , kommer det att finnas exakt kodord. Faktiskt, per definition ett kodord om och endast om det har formen , där (kvoten ) har en grad mindre än . Eftersom det finns sådana kvoter tillgängliga, finns det samma antal möjliga kodord. Vanliga (okodade) dataord bör därför ha längden
Vissa författare, som (Lidl & Pilz, 1999), diskuterar bara mappningen som tilldelningen från dataord till kodord. Detta har emellertid nackdelen att dataordet inte förekommer som en del av kodordet.
Istället används ofta följande metod för att skapa en kod : givet ett dataord med längden , multiplicera först med , vilket har effekten av att flytta med platser till vänster. I allmänhet inte att vara delbart med , dvs det kommer inte att vara ett giltigt kodord . Det finns dock ett unikt kodord som kan erhållas genom att justera de symbolerna längst till höger av . För att beräkna det, beräkna resten av att dividera med :
där är av grad mindre än . Kodordet som motsvarar dataordet definieras då till att vara
Observera följande egenskaper:
- som är delbart med . I synnerhet ett giltigt kodord.
- Eftersom är av grad mindre än de symbolerna längst till vänster i ( med motsvarande symboler för . Med andra ord, de första symbolerna i kodordet är desamma som det ursprungliga dataordet. De återstående -symbolerna kallas kontrollsiffror eller kontrollbitar .
Exempel
För ovanstående kod med , och generatorpolynomet får vi följande tilldelning från dataord till kodord:
- 000 ↦ 000 00
- 001 ↦ 001 11
- 010 ↦ 010 01
- 011 ↦ 011 10
- 100 ↦ 100 10
- 101 ↦ 101 01
- 110 ↦ 110 11
- 111 ↦ 111 00
Avkodning
Ett felaktigt meddelande kan upptäckas på ett enkelt sätt genom polynomdelning av generatorpolynomet vilket resulterar i en rest som inte är noll.
Om man antar att kodordet är fritt från fel, kan en systematisk kod avkodas helt enkelt genom att ta bort m {\ kontrollsummesiffror.
Om det finns fel, bör felkorrigering utföras före avkodning. Effektiva avkodningsalgoritmer finns för specifika polynomkoder, såsom BCH-koder .
Egenskaper för polynomkoder
Som för alla digitala koder, bestäms feldetekterings- och korrigeringsförmågan hos polynomkoder av kodens minsta Hamming-avstånd . Eftersom polynomkoder är linjära koder, är det minsta Hamming-avståndet lika med minimivikten för ett kodord som inte är noll. I exemplet ovan är det minsta Hamming-avståndet 2, eftersom 01001 är ett kodord, och det finns inget kodord som inte är noll med bara en bit inställd.
Mer specifika egenskaper hos en polynomkod beror ofta på särskilda algebraiska egenskaper hos dess generatorpolynom. Här är några exempel på sådana egenskaper:
- En polynomkod är cyklisk om och endast om generatorpolynomet delar .
- Om generatorpolynomet är primitivt har den resulterande koden Hamming-avståndet minst 3, förutsatt att .
- I BCH-koder är generatorpolynomet valt att ha specifika rötter i ett förlängningsfält, på ett sätt som uppnår högt Hamming-avstånd.
Den algebraiska naturen hos polynomkoder, med smart utvalda generatorpolynom, kan också ofta utnyttjas för att hitta effektiva felkorrigeringsalgoritmer. Detta är fallet för BCH-koder .
Specifika familjer av polynomkoder
- Cykliska koder – varje cyklisk kod är också en polynomkod; ett populärt exempel är CRC -koden.
- BCH-koder – en familj av cykliska koder med högt Hamming-avstånd och effektiva algebraiska felkorrigeringsalgoritmer.
- Reed–Solomon-koder – en viktig delmängd av BCH-koder med särskilt effektiv struktur.
- WJ Gilbert och WK Nicholson: Modern Algebra with Applications , 2:a upplagan, Wiley, 2004.
- R. Lidl och G. Pilz. Tillämpad abstrakt algebra, 2:a upplagan. Wiley, 1999.