Sgt/lecture9
บันทึกคำบรรยายวิชา Spectral graph theory นี้ เป็นบันทึกที่นิสิตเขียนขึ้น เนื้อหาโดยมากยังไม่ผ่านการตรวจสอบอย่างละเอียด การนำไปใช้ควรระมัดระวัง
Coding Theory
เราต้องการส่งข้อมูลขนาด m บิท แต่ระหว่างการส่งอาจจะเกิดความผิดพลาดทำให้บางบิทไม่ถูกต้อง จึงมีการคิดการส่งเพื่อให้สามารถตรวจจับ / แก้ไขความผิดพลาดได้ โดยส่งข้อมูลที่ encode แล้วและมีขนาด n บิท นั่นคือ
Hamming Code คือการ encode ข้อมูลขนาด 4 บิทไปเป็นข้อมูล 7 บิท โดยสามารถรับประกันได้ว่า ถ้าข้อมูลผิดพลาดไปไม่เกิน 1 บิท จะสามารถตรวจจับและแก้ไขได้ โดยให้ข้อมูลอยู่ที่บิทที่ 3,5,6,7 และ ให้
1.บิทที่ 4 เป็น XOR ของบิทที่ 5,6,7
2.บิทที่ 2 เป็น XOR ของบิทที่ 3,6,7
3.บิทที่ 1 เป็น XOR ของบิทที่ 3,5,7
ให้ แทนบิทที่ i เราสามารถตรวจจับ/แก้ไขความผิดพลาดไม่เกินหนึ่งบิทได้ดังนี้
a = XOR XOR XOR , b = XOR XOR XOR , c = XOR XOR XOR
ถ้า a,b,c ไม่เท่ากับศูนย์ บิทที่ผิดพลาดคือบิทที่
ซึ่งการสร้าง codeword แบบใดๆนั้นจะมีค่าสองค่าที่ใช้บอกความ"ดี" ของการสร้างนั้นๆ ได้แค่ ค่าอัตราส่วนระหว่างความยาว message ต่อความยาว codeword
และค่า Hamming Distance คือจำนวนบิทที่แตกต่างกันที่น้อยที่สุดของคู่ codeword ใดๆ ซึ่งเป็น upperbound ของ จำนวนบิทที่สามารถ correction ได้
เช่น การสร้าง codeword หนึ่งๆ มี Hamming distance เป็น d การสร้างแบบนั้นจะไม่สามารถ correct message ที่ผิดพลาดเกิน d/2 บิทได้
Random Linear Code
Reed-Solomon Code
อีกหนึ่งตัวอย่างของการทำ Error Correcting คือ Reed-Solomon Code
สำหรับจำนวนเฉพาะ p หนึ่งๆ และ message ขนาด m และนิยามฟังก์ชันพหุนาม
และ code word ขนาด n คือ
Reed-Solomon code จะ correct error ได้ p หน่วย
สังเกตุว่าหน่วยย่อยของ Reed-Solomon ไม่ใช่บิท เนื่องจาก correct ที่ระดับ element
หากจะใช้หน่วยเป็นบิท จะต้องแทน element ด้วย บิท และจะ correct ได้เพียง p บิท