Lexikografisk kod
Lexikografiska koder eller lexikon är girigt genererade felkorrigerande koder med anmärkningsvärt goda egenskaper. De producerades oberoende av Vladimir Levenshtein och av John Horton Conway och Neil Sloane . De binära lexikografiska koderna är linjära koder och inkluderar Hamming-koderna och de binära Golay-koderna .
Konstruktion
En lexikon med längden n och minsta avstånd d över ett ändligt fält genereras genom att börja med vektorn helt noll och iterativt addera nästa vektor (i lexikografisk ordning ) med minsta Hamming-avstånd d från de vektorer som lagts till hittills. Som ett exempel skulle längd-3-lexikonet för minsta avstånd 2 bestå av vektorerna markerade med ett "X" i följande exempel:
Vektor I koden? 000 X 001 010 011 X 100 101 X 110 X 111
Här är en tabell över alla n-bitars lexikon efter d-bits minimala hammingsavstånd, vilket resulterar i maximalt 2 m kodordslexikon. Till exempel F 4- kod (n=4,d=2,m=3), utökad Hamming-kod (n=8,d=4,m=4) och speciellt Golay-kod (n=24,d=8,m =12) visar exceptionell kompakthet jämfört med grannar.
n \ d 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1 1 2 2 1 3 3 2 1 4 4 3 1 1 5 5 4 2 1 1 6 6 5 3 2 1 1 7 7 6 4 3 1 1 1 8 8 7 4 4 2 1 1 1 9 9 8 5 4 2 2 1 1 1 10 10 9 6 5 3 2 1 1 1 1 11 11 10 7 6 4 3 2 1 1 1 1 12 12 11 8 7 4 4 2 2 1 1 1 1 13 13 12 9 8 5 4 3 2 1 1 1 1 1 14 14 13 10 9 6 5 4 3 2 1 1 1 1 1 15 15 14 11 10 7 6 5 4 2 2 1 1 1 1 1 16 16 15 11 11 8 7 5 5 2 2 1 1 1 1 1 1 17 17 16 12 11 9 8 6 5 3 2 2 1 1 1 1 1 1 18 18 17 13 12 9 9 7 6 3 3 2 2 1 1 1 1 1 1 19 19 18 14 13 10 9 8 7 4 3 2 2 1 1 1 1 1 1 20 20 19 15 14 11 10 9 8 5 4 3 2 2 1 1 1 1 1 21 21 20 16 15 12 11 10 9 5 5 3 3 2 2 1 1 1 1 22 22 21 17 16 12 12 11 10 6 5 4 3 2 2 1 1 1 1 23 23 22 18 17 13 12 12 11 6 6 5 4 2 2 2 1 1 1 24 24 23 19 18 14 13 12 12 7 6 5 5 3 2 2 2 1 1 25 25 24 20 19 15 14 12 12 8 7 6 5 3 3 2 2 1 1 26 26 25 21 20 16 15 12 12 9 8 7 6 4 3 2 2 2 1 27 27 26 22 21 17 16 13 12 9 9 7 7 5 4 3 2 2 2 28 28 27 23 22 18 17 13 13 10 9 8 7 5 5 3 3 2 2 29 29 28 24 23 19 18 14 13 11 10 8 8 6 5 4 3 2 2 30 30 29 25 24 19 19 15 14 12 11 9 8 6 6 5 4 2 2 31 31 30 26 25 20 19 16 15 12 12 10 9 6 6 6 5 3 2 32 32 31 26 26 21 20 16 16 13 12 11 10 7 6 6 6 3 3 33 ... 32 ... 26 ... 21 ... 16 ... 13 ... 11 ... 7 ... 6 ... 3
Alla udda d-bitars lexikonavstånd är exakta kopior av de jämna d+1 bitarnas avstånd minus den sista dimensionen, så ett udda dimensionellt utrymme kan aldrig skapa något nytt eller mer intressant än det d+1 jämndimensionella utrymmet ovan.
Eftersom lexikon är linjära kan de också konstrueras med hjälp av sin bas .
Genomförande
Följande C genererar lexikografisk kod och parametrar ställs in för Golay-koden (N=24, D=8).
0
0
0
0
0
0
#include <stdio.h> #include <stdlib.h> int main () { /* GOLAY CODE generation */ int i , j , k ; int _pc [ 1 << 16 ] = { }; // PopCount Makro för ( i = ; i < ( 1 << 16 ); i ++ ) för ( j = ; j < 16 ; j ++ ) _pc [ i ] += ( i >> j ) & 1 ; #define pc(X) (_pc[(X)&0xffff] + _pc[((X)>>16)&0xffff]) #define N 24 // N bits #define D 8 // D bits distance unsigned int * z = malloc ( 1 << 29 ); for ( i = j = ; i < ( 1 << N ); i ++ ) { // Skanna alla tidigare för ( k = j -1 ; k >= ; k -- ) // lexikon. if ( pc ( z [ k ] ^ i ) < D ) // Omvänd kontrollbrytning ; // är mycket snabbare... if ( k == -1 ) { // Lägg till ny lexikon för ( k = ; k < N ; k ++ ) // & skriv ut printf ( "%d" , ( i > > k ) & 1 ); printf ( " : %d \n " , j ); z [ j ++ ] = i ; } } }
Kombinatorisk spelteori
Teorin om lexikografiska koder är nära kopplad till kombinatorisk spelteori . Framför allt kodar kodorden i en binär lexikografisk kod av distans d de vinnande positionerna i en variant av Grundys spel , som spelas på en samling stenhögar, där varje drag består av att ersätta valfri hög med högst d − 1 mindre högar, och målet är att ta den sista stenen.
Anteckningar
- ^ Levenšteĭn, VI (1960), "Об одном классе систематических кодов" [En klass av systematiska koder], Doklady Akademii Nauk SSSR (på ryska), 131 ( 5): 1011–1014, 1011–1012, 9014 ; Engelsk översättning i sovjetisk matematik. Doklady 1 (1960), 368–371
- ^ a b c Conway, John H. ; Sloane, NJA (1986), "Lexicographic codes: error-correcting codes from game theory", IEEE Transactions on Information Theory , 32 (3): 337–348, doi : 10.1109/TIT.1986.1057187 , MR 08381977
- ^ Trachtenberg, Ari (2002), "Designing lexicography codes with a given trellis complexity", IEEE Transactions on Information Theory , 48 (1): 89–100, doi : 10.1109/18.971740 , MR 1866958
externa länkar
- Bob Jenkins tabell över binära lexikon
- On-line generator för lexikon och deras varianter
- OEIS- sekvens A075928 (Lista över kodord i binär lexikon med Hamming-avstånd 4 skrivet som decimaltal.)
- Felkorrigerande koder på grafer: Lexikoder, spaljéer och faktorgrafer