กลับไปหน้าบทความ

อ่าน 4 นาที

รหัสคำนำหน้า

รหัส คำนำหน้า (Prefix code) คือระบบ รหัส ประเภทหนึ่งที่โดดเด่นด้วยคุณสมบัติของ คำนำหน้า ซึ่งหมายความว่าต้องไม่มี คำรหัส ทั้งหมด ในระบบที่เป็น คำนำหน้า (ส่วนเริ่มต้น)...

รหัสคำนำหน้า

รหัสคำนำหน้า (Prefix code) คือระบบ รหัสประเภทหนึ่งที่โดดเด่นด้วยคุณสมบัติของคำนำหน้าซึ่งหมายความว่าต้องไม่มีคำรหัส ทั้งหมด ในระบบที่เป็นคำนำหน้า (ส่วนเริ่มต้น) ของคำรหัสอื่นใดในระบบ คุณสมบัตินี้เป็นจริงอย่างเห็นได้ชัดสำหรับรหัสความยาวคงที่ ดังนั้นจึงเป็นเพียงประเด็นที่ควรพิจารณาสำหรับรหัส ความยาวแปรผัน

ตัวอย่างเช่น รหัสที่มีคำว่า code จะมีคุณสมบัติคำนำหน้า ในขณะที่รหัสที่ประกอบด้วยคำว่าdoes ไม่มีคุณสมบัตินี้ เพราะaเป็นคำนำหน้าของabและaa ด้วย รหัสคำนำหน้าเป็นรหัสที่ถอดรหัสได้อย่างเฉพาะเจาะจง กล่าวคือ เมื่อได้รับลำดับที่สมบูรณ์และถูกต้อง ผู้รับสามารถระบุแต่ละคำได้โดยไม่ต้องใช้เครื่องหมายพิเศษระหว่างคำ อย่างไรก็ตาม มีรหัสที่ถอดรหัสได้อย่างเฉพาะเจาะจงที่ไม่ใช่รหัสคำนำหน้า ตัวอย่างเช่น รหัสผกผันของรหัสคำนำหน้ายังคงถอดรหัสได้อย่างเฉพาะเจาะจง (เป็นรหัสคำต่อท้าย) แต่ไม่จำเป็นต้องเป็นรหัสคำนำหน้าเสมอไป

รหัสคำนำหน้าเรียกอีกอย่างว่ารหัสไร้คำนำหน้ารหัสเงื่อนไขคำนำหน้าและรหัสทันทีแม้ว่าการเข้ารหัสฮัฟฟ์แมนจะเป็นเพียงหนึ่งในอัลกอริทึมมากมายสำหรับการสร้างรหัสคำนำหน้า แต่รหัสคำนำหน้าก็มักถูกเรียกว่า "รหัสฮัฟฟ์แมน" เช่นกัน แม้ว่ารหัสนั้นจะไม่ได้สร้างขึ้นโดยอัลกอริทึมฮัฟฟ์แมนก็ตาม คำว่ารหัสไร้เครื่องหมาย จุลภาค บางครั้งก็ถูกนำมาใช้เป็นคำพ้องความหมายสำหรับรหัสไร้คำนำหน้า[ 1 ] [ 2 ]แต่ในหนังสือและบทความทางคณิตศาสตร์ส่วนใหญ่ (เช่น[ 3 ] [ 4 ] ) รหัสไร้เครื่องหมายจุลภาค มักใช้เพื่อหมายถึงรหัสที่ซิงโครไนซ์ตัวเองซึ่งเป็นคลาสย่อยของรหัสคำนำหน้า

การใช้รหัสคำนำหน้าช่วยให้สามารถส่งข้อความได้โดยใช้ลำดับของคำรหัสที่ต่อกัน โดยไม่ต้องใช้เครื่องหมายนอกช่วง หรือ (ทางเลือกอื่น) เครื่องหมายพิเศษระหว่างคำเพื่อ จัดกรอบคำในข้อความ ผู้รับสามารถถอดรหัสข้อความได้อย่างชัดเจนโดยการค้นหาและลบลำดับที่ประกอบเป็นคำรหัสที่ถูกต้องซ้ำๆ ซึ่งโดยทั่วไปแล้วจะไม่สามารถทำได้กับรหัสที่ไม่มีคุณสมบัติคำนำหน้า ตัวอย่างเช่นผู้รับที่อ่านเลข1ที่จุดเริ่มต้นของคำรหัสจะไม่ทราบว่านั่นคือคำรหัส1 ที่สมบูรณ์ หรือเป็นเพียงคำนำหน้าของคำรหัส10หรือ11ดังนั้นสตริง10อาจถูกตีความได้ว่าเป็นคำรหัสเดียวหรือเป็นการต่อกันของคำว่า1แล้วตามด้วย 0

รหัส Huffmanที่มีความยาวแปรผันได้รหัสประเทศสำหรับโทรศัพท์ส่วนประเทศและผู้จัดพิมพ์ของISBNรหัสการซิงโครไนซ์รองที่ใช้ใน มาตรฐานไร้สาย UMTS W-CDMA 3G และชุดคำสั่ง (ภาษาเครื่อง) ของสถาปัตยกรรมไมโครคอมพิวเตอร์ส่วนใหญ่ ล้วนเป็นรหัสคำนำหน้า

รหัสคำนำหน้าไม่ใช่รหัสแก้ไขข้อผิดพลาดในทางปฏิบัติ ข้อความอาจถูกบีบอัดด้วยรหัสคำนำหน้าก่อน จากนั้นจึงเข้ารหัสอีกครั้งด้วยการเข้ารหัสช่องสัญญาณ (รวมถึงการแก้ไขข้อผิดพลาด) ก่อนส่ง

สำหรับ รหัส ที่ถอดรหัสได้เฉพาะตัว ทุก รหัส จะมีรหัสคำนำหน้าที่มีความยาวคำรหัสเท่ากัน[ 5 ]อสมการของคราฟต์แสดงลักษณะของเซตความยาวคำรหัสที่เป็นไปได้ในรหัสที่ถอดรหัสได้เฉพาะตัว[ 6 ]

เทคนิค

ถ้าทุกคำในรหัสมีความยาวเท่ากัน รหัสนั้นเรียกว่ารหัสความยาวคงที่หรือรหัสบล็อก (แม้ว่าคำว่ารหัสบล็อก จะใช้กับ รหัสแก้ไขข้อผิดพลาดขนาดคงที่ในการเข้ารหัสช่องสัญญาณ ด้วยก็ตาม ) ตัวอย่างเช่น ตัวอักษร ISO 8859-15มีความยาว 8 บิตเสมอ ตัวอักษร UTF-32/UCS-4มีความยาว 32 บิตเสมอเซลล์ ATMมีความยาว 424 บิต (53 ไบต์) เสมอ รหัสความยาวคงที่ที่มีบิตความยาวคงที่สามารถเข้ารหัสสัญลักษณ์ต้นทาง ได้มากถึง

รหัสความยาวคงที่จำเป็นต้องเป็นรหัสคำนำหน้า สามารถแปลงรหัสใดๆ ให้เป็นรหัสความยาวคงที่ได้โดยการเติมสัญลักษณ์คงที่ลงในคำนำหน้าที่สั้นกว่าเพื่อให้มีความยาวเท่ากับคำนำหน้าที่ยาวที่สุด หรืออีกทางหนึ่ง อาจใช้รหัสเติมดังกล่าวเพื่อเพิ่มความซ้ำซ้อนที่ช่วยให้สามารถแก้ไขอัตโนมัติและ/หรือซิงโครไนซ์ได้ อย่างไรก็ตาม การเข้ารหัสความยาวคงที่ไม่มีประสิทธิภาพในสถานการณ์ที่บางคำมีโอกาสถูกส่งมากกว่าคำอื่นๆ มาก

การเข้ารหัสไบนารีแบบตัดทอนเป็นการขยายความโดยตรงของการเข้ารหัสความยาวคงที่เพื่อจัดการกับกรณีที่จำนวนสัญลักษณ์nไม่ใช่กำลังของสอง สัญลักษณ์ต้นทางจะถูกกำหนดเป็นคำรหัสที่มีความยาวและโดยที่ถูกเลือกเพื่อให้

การเข้ารหัสฮัฟฟ์แมนเป็นเทคนิคที่ซับซ้อนกว่าสำหรับการสร้างรหัสคำนำหน้าที่มีความยาวแปรผันได้ อัลกอริทึมการเข้ารหัสฮัฟฟ์แมนรับความถี่ที่คำในรหัสควรมีเป็นอินพุต และสร้างรหัสคำนำหน้าที่ลดค่าเฉลี่ยถ่วงน้ำหนักของความยาวคำในรหัสให้เหลือน้อยที่สุด (ซึ่งเกี่ยวข้องอย่างใกล้ชิดกับการลดเอนโทรปีให้เหลือน้อยที่สุด) นี่เป็นรูปแบบหนึ่งของการบีบอัดข้อมูลแบบไม่สูญเสียข้อมูลโดยอาศัยการเข้ารหัสเอนโทรปี

รหัสบางรหัสจะทำเครื่องหมายจุดสิ้นสุดของคำรหัสด้วยสัญลักษณ์ "จุลภาค" พิเศษ (เรียกอีกอย่างว่าค่า Sentinel ) ซึ่งแตกต่างจากข้อมูลปกติ[ 7 ]สิ่งนี้ค่อนข้างคล้ายกับช่องว่างระหว่างคำในประโยค ซึ่งทำเครื่องหมายว่าคำหนึ่งสิ้นสุดและอีกคำหนึ่งเริ่มต้นที่ใด หากทุกคำรหัสลงท้ายด้วยจุลภาค และจุลภาคไม่ปรากฏที่อื่นในคำรหัส รหัสนั้นจะไม่มีคำนำหน้าโดยอัตโนมัติ อย่างไรก็ตาม การสงวนสัญลักษณ์ทั้งหมดไว้ใช้เป็นจุลภาคเพียงอย่างเดียวอาจไม่มีประสิทธิภาพ โดยเฉพาะอย่างยิ่งสำหรับภาษาที่มีสัญลักษณ์จำนวนน้อยรหัสมอร์สเป็นตัวอย่างในชีวิตประจำวันของรหัสความยาวแปรผันที่มีจุลภาค การหยุดยาวระหว่างตัวอักษร และการหยุดที่ยาวกว่าระหว่างคำ ช่วยให้ผู้คนจดจำได้ว่าตัวอักษร (หรือคำ) หนึ่งสิ้นสุดที่ใด และคำถัดไปเริ่มต้นที่ใด ในทำนองเดียวกันการเข้ารหัสฟิโบนาชชีใช้11เพื่อทำเครื่องหมายจุดสิ้นสุดของทุกคำรหัส

รหัสซิงโครไนซ์อัตโนมัติเป็นรหัสคำนำหน้าซึ่งช่วยให้สามารถซิงโครไนซ์เฟรมได้

รหัสคำต่อท้ายคือชุดคำที่ไม่มีคำใดเป็นคำต่อท้ายของคำอื่น หรือกล่าวอีกนัยหนึ่งคือชุดคำที่เป็นคำตรงข้ามกับรหัสคำนำหน้า เช่นเดียวกับรหัสคำนำหน้า การแสดงสตริงโดยการต่อคำดังกล่าวจะมีเอกลักษณ์รหัสไบฟิกซ์คือชุดคำที่เป็นทั้งรหัสคำนำหน้าและรหัสคำต่อท้าย[ 8 ] รหัสคำนำหน้าที่เหมาะสมที่สุดคือรหัสคำนำหน้าที่มีความยาวเฉลี่ยน้อยที่สุด นั่นคือ สมมติว่ามีตัวอักษรnตัวที่มีความน่าจะเป็นสำหรับรหัสคำนำหน้าCถ้าC' เป็น รหัสคำนำหน้าอีกตัวหนึ่ง และคือความยาวของรหัสคำของC'แล้ว[ 9 ]

รหัสคำนำหน้ารหัสที่ใช้ในปัจจุบัน

ตัวอย่างของรหัสคำนำหน้า ได้แก่:

เทคนิค

เทคนิคที่ใช้กันทั่วไปในการสร้างรหัสคำนำหน้า ได้แก่รหัสฮัฟฟ์แมนและรหัสแชนนอน-ฟาโน รุ่นก่อนหน้า รวมถึงรหัสสากลเช่น:

หมายเหตุ

  1. ^มาตรฐานรัฐบาลกลางสหรัฐอเมริกา
  2. ^ พจนานุกรมศัพท์โทรคมนาคม ATIS ปี 2007เก็บถาวรจากต้นฉบับเมื่อวันที่ 8 กรกฎาคม 2010 เรียกดูเมื่อวันที่ 4 ธันวาคม 2010
  3. ^ Berstel, Jean; Perrin, Dominique (1985), ทฤษฎีของรหัส , สำนักพิมพ์ Academic Press
  4. ^ Golomb, SW ; Gordon, Basil ; Welch, LR (1958), "รหัสไร้เครื่องหมายจุลภาค" , Canadian Journal of Mathematics , 10 (2): 202– 209, doi : 10.4153/CJM-1958-023-9 , S2CID 124092269 
  5. เลอ บูเดก, ฌอง-อีฟส์, แพทริค ธีรัน และรูดิเกอร์ เออร์บันเคอ บทนำ aux sciences de l'information: เอนโทรปี การบีบอัด การแก้ไข และการแก้ไขข้อผิดพลาด PPUR Presses Polytechniques, 2015
  6. ^ Berstel et al (2010) หน้า 75
  7. ^ A. Jones, J. "การพัฒนาระบบทริกเกอร์และควบคุมสำหรับ CMS" (PDF)ฟิสิกส์พลังงานสูง ห้องปฏิบัติการแบล็กเก็ตต์ อิมพีเรียลคอลเลจ ลอนดอน หน้า 70 เก็บถาวรจากต้นฉบับ(PDF)เมื่อวันที่ 13 มิถุนายน 2011
  8. ^ Berstel et al (2010) หน้า 58
  9. ^บันทึกการบรรยายวิชา COMP 423 มหาวิทยาลัยแมคกิลล์
  10. ^ไพค์, ร็อบ (2003-04-03). "ประวัติ UTF-8" .
  11. ^ Shevchuk, YV (2018), "Vbinary: การเข้ารหัสจำนวนเต็มความยาวแปรผัน revisited" (PDF) , Program Systems: Theory and Applications , 9 (4): 239– 252, doi : 10.25209/2079-3316-2018-9-4-239-252
  • รหัส ต้นไม้ และคุณสมบัติคำนำหน้าโดย โคน่า แมคฟี
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Prefix_code&oldid=1347243775#Techniques "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ รหัสคำนำหน้า

รหัส คำนำหน้า (Prefix code) คือระบบ รหัส ประเภทหนึ่งที่โดดเด่นด้วยคุณสมบัติของ คำนำหน้า ซึ่งหมายความว่าต้องไม่มี คำรหัส ทั้งหมด ในระบบที่เป็น คำนำหน้า (ส่วนเริ่มต้น)...

เทคนิค

ถ้าทุกคำในรหัสมีความยาวเท่ากัน รหัสนั้นเรียกว่า รหัสความยาวคงที่ หรือ รหัสบล็อก (แม้ว่าคำว่า รหัสบล็อก จะใช้กับ รหัสแก้ไขข้อผิดพลาด ขนาดคงที่ใน การเข้ารหัสช่องสัญญาณ ด้วยก็ตาม ) ตัวอย่างเช่น ตัวอักษร ISO 8859-15 มีความยาว 8 บิตเสมอ ตัวอักษร UTF-32/UCS-4...

แนวคิดที่เกี่ยวข้อง

รหัส คำต่อท้าย คือชุดคำที่ไม่มีคำใดเป็นคำต่อท้ายของคำอื่น หรือกล่าวอีกนัยหนึ่งคือชุดคำที่เป็นคำตรงข้ามกับรหัสคำนำหน้า เช่นเดียวกับรหัสคำนำหน้า การแสดงสตริงโดยการต่อคำดังกล่าวจะมีเอกลักษณ์ รหัสไบฟิกซ์ คือชุดคำที่เป็นทั้งรหัสคำนำหน้าและรหัสคำต่อท้าย [ 8 ] รหัส...

หมายเหตุ

^ มาตรฐานรัฐบาลกลาง สหรัฐอเมริกา ^ พจนานุกรมศัพท์โทรคมนาคม ATIS ปี 2007 เก็บถาวรจากต้นฉบับเมื่อวันที่ 8 กรกฎาคม 2010 เรียกดูเมื่อ วันที่ 4 ธันวาคม 2010 ^ Berstel, Jean; Perrin, Dominique (1985), ทฤษฎีของรหัส , สำนักพิมพ์ Academic Press ^ Golomb, SW ; Gordon,...