อ่าน 3 นาที
รหัสพจนานุกรม
รหัสเลกซิโคกราฟิกหรือเลกซิโคดเป็นรหัสแก้ไขข้อผิดพลาด ที่สร้างขึ้นอย่างโลภ ซึ่งมีคุณสมบัติที่ดีเยี่ยม รหัสเหล่านี้ถูกสร้างขึ้นโดยอิสระโดย Vladimir Levenshtein และโดยJohn Horton...
รหัสพจนานุกรม
รหัสเลกซิโคกราฟิกหรือเลกซิโคดเป็นรหัสแก้ไขข้อผิดพลาด ที่สร้างขึ้นอย่างโลภ ซึ่งมีคุณสมบัติที่ดีเยี่ยม รหัสเหล่านี้ถูกสร้างขึ้นโดยอิสระโดย Vladimir Levenshtein [ 1 ]และโดยJohn Horton ConwayและNeil Sloane [ 2 ] รหัสเลกซิโคกราฟิกแบบไบนารีเป็นรหัสเชิงเส้นและรวมถึงรหัสแฮมมิงและ รหัสโกเล ย์แบบไบนารี[ 2 ]
การก่อสร้าง
เลกซิโค้ดที่มีความยาวnและระยะห่างต่ำสุดdบนฟิลด์จำกัดจะถูกสร้างขึ้นโดยเริ่มจากเวกเตอร์ที่เป็นศูนย์ทั้งหมด แล้วค่อยๆ เพิ่มเวกเตอร์ถัดไป (ตามลำดับพจนานุกรม ) ที่มีระยะห่างแฮมมิ งต่ำสุด dจากเวกเตอร์ที่เพิ่มเข้ามาแล้ว ตัวอย่างเช่น เลกซิโค้ดความยาว 3 ที่มีระยะห่างต่ำสุด 2 จะประกอบด้วยเวกเตอร์ที่ทำเครื่องหมายด้วย "X" ในตัวอย่างต่อไปนี้:
เวกเตอร์ ในโค้ด? 000 X 001 010 011 X 100 101 X 110 X 111
ตารางนี้แสดงเลกซิโค้ด n บิตทั้งหมด โดยเรียงตามระยะห่างแฮมมิงขั้นต่ำ d บิต ซึ่งส่งผลให้พจนานุกรมคำรหัสสูงสุดมี 2m คำตัวอย่างเช่น รหัส F4 ( n=4, d=2, m=3), รหัสแฮมมิงแบบขยาย (n=8, d=4, m=4) และโดยเฉพาะอย่างยิ่งรหัสโกเลย์ (n=24, d=8, m=12) แสดงให้เห็นถึงความกะทัดรัดเป็นพิเศษเมื่อเทียบกับรหัสข้างเคียง
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
ระยะห่างของเลกซิโค้ด d บิตคี่ทั้งหมดเป็นสำเนาที่เหมือนกันทุกประการของระยะห่าง d+1 บิตคู่ ลบด้วยมิติสุดท้าย ดังนั้นปริภูมิที่มีมิติเป็นเลขคี่จึงไม่สามารถสร้างสิ่งใหม่หรือสิ่งที่น่าสนใจกว่าปริภูมิ d+1 มิติคู่ข้างต้นได้
เนื่องจากเลกซิโคดเป็นเชิงเส้น จึงสามารถสร้างขึ้นโดยใช้ฐานของมันได้เช่นกัน[ 3 ]
การดำเนินการ
ต่อไปนี้ C จะสร้างรหัสพจนานุกรมและตั้งค่าพารามิเตอร์สำหรับรหัส Golay (N=24, D=8)
#include <stdio.h> #include <stdlib.h> int main () { /* การสร้างโค้ด GOLAY */ int i , j , k ; int _pc [ 1 << 16 ] = { 0 }; // มาโคร PopCount for ( i = 0 ; i < ( 1 << 16 ); i ++ ) for ( j = 0 ; j < 16 ; j ++ ) _pc [ i ] += ( i >> j ) & 1 ; #define pc(X) (_pc[(X)&0xffff] + _pc[((X)>>16)&0xffff]) #define N 24 // N บิต#define D 8 // ระยะห่าง D บิตunsigned int * z = malloc ( 1 << 29 ); for ( i = j = 0 ; i < ( 1 << N ); i ++ ) { // สแกนเลกซิโคดก่อนหน้าทั้งหมดfor ( k = j -1 ; k >= 0 ; k -- ) // ถ้า( pc ( z [ k ] ^ i ) < D ) // ตรวจสอบย้อนกลับbreak ; // เร็วกว่ามาก... ถ้า( k == -1 ) { // เพิ่มเลกซิโคดใหม่for ( k = 0 ; k < N ; k ++ ) // และพิมพ์printf ( "%d" , ( i >> k ) & 1 ); printf ( " : %d \n " , j ); z [ j ++ ] = i; } } }ทฤษฎีเกมเชิงการจัดเรียง
ทฤษฎีของรหัสพจนานุกรมมีความเชื่อมโยงอย่างใกล้ชิดกับทฤษฎีเกมเชิงการจัดเรียงโดยเฉพาะอย่างยิ่ง รหัสคำในรหัสพจนานุกรมไบนารีที่มีระยะทางdจะเข้ารหัสตำแหน่งที่ชนะในเกม Grundy รูปแบบหนึ่ง ซึ่งเล่นบนกองหิน โดยแต่ละการเคลื่อนไหวประกอบด้วยการแทนที่กองหินหนึ่งกองด้วยกองหินที่เล็กกว่าไม่เกินd − 1 กอง และเป้าหมายคือการหยิบหินก้อนสุดท้าย[ 2 ]
หมายเหตุ
- ↑ Levenšteĭn, VI (1960), "Об одном классе систематических кодов" [A class of systematic codes], Doklady Akademii Nauk SSSR (ในภาษารัสเซีย), 131 (5): 1011– 1014, MR 0122629; คำแปลภาษาอังกฤษในSoviet Math. Doklady 1 (1960), 368–371
- ^ a b c Conway, John H. ; Sloane, NJA (1986), "รหัสพจนานุกรม: รหัสแก้ไขข้อผิดพลาดจากทฤษฎีเกม", IEEE Transactions on Information Theory , 32 (3): 337– 348, CiteSeerX 10.1.1.392.795 , doi : 10.1109/TIT.1986.1057187 , MR 0838197
- ^ Trachtenberg, Ari (2002), "การออกแบบรหัสพจนานุกรมที่มีความซับซ้อนของเทรลลิสที่กำหนด", IEEE Transactions on Information Theory , 48 (1): 89– 100, doi : 10.1109/18.971740 , MR 1866958
ลิงก์ภายนอก
- ตารางเลกซิโคดไบนารีของบ็อบ เจนกินส์
- เครื่องมือสร้างพจนานุกรมและรูปแบบต่างๆ แบบออนไลน์
- ลำดับ OEIS A075928 (รายการรหัสคำในเลกซิโค้ดไบนารีที่มีระยะห่างแฮมมิง 4 เขียนเป็นตัวเลขทศนิยม)
- รหัสแก้ไขข้อผิดพลาดบนกราฟ: เลกซิโค้ด , เทรลลิส และกราฟแฟกเตอร์
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ รหัสพจนานุกรม
รหัสเลกซิโคกราฟิกหรือเลกซิโคดเป็นรหัสแก้ไขข้อผิดพลาด ที่สร้างขึ้นอย่างโลภ ซึ่งมีคุณสมบัติที่ดีเยี่ยม รหัสเหล่านี้ถูกสร้างขึ้นโดยอิสระโดย Vladimir Levenshtein และโดยJohn Horton...
การก่อสร้าง
เลกซิโค้ดที่มีความยาว n และระยะห่างต่ำสุด d บน ฟิลด์จำกัด จะถูกสร้างขึ้นโดยเริ่มจากเวกเตอร์ที่เป็นศูนย์ทั้งหมด แล้วค่อยๆ เพิ่มเวกเตอร์ถัดไป (ตาม ลำดับพจนานุกรม ) ที่มี ระยะห่างแฮมมิ งต่ำสุด d จากเวกเตอร์ที่เพิ่มเข้ามาแล้ว ตัวอย่างเช่น เลกซิโค้ดความยาว 3...
การดำเนินการ
ต่อไปนี้ C จะสร้างรหัสพจนานุกรมและตั้งค่าพารามิเตอร์สำหรับรหัส Golay (N=24, D=8)
ทฤษฎีเกมเชิงการจัดเรียง
ทฤษฎีของรหัสพจนานุกรมมีความเชื่อมโยงอย่างใกล้ชิดกับ ทฤษฎีเกมเชิงการจัดเรียง โดยเฉพาะอย่างยิ่ง รหัสคำในรหัสพจนานุกรมไบนารีที่มีระยะทาง d จะเข้ารหัสตำแหน่งที่ชนะใน เกม Grundy รูปแบบหนึ่ง ซึ่งเล่นบนกองหิน...