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 (เรียกว่า rate)
และค่า Hamming Distance คือจำนวนบิทที่แตกต่างกันที่น้อยที่สุดของคู่ codeword ใดๆ ซึ่งเป็น upperbound ของ จำนวนบิทที่สามารถ correction ได้
เช่น การสร้าง codeword หนึ่งๆ มี Hamming distance เป็น d การสร้างแบบนั้นจะไม่สามารถ correct message ที่ผิดพลาดเกิน d/2 บิทได้ และนิยาม minimum relative distance คือค่า d/n (Hamming distance ต่อความยาว codeword)
เราจะเรียกกระบวนการสร้าง codeword หนึ่งๆว่า asymtotically good ถ้า ไม่ว่า message จะมีความยาวเพิ่มขึ้นอย่างไร ค่า rate และ minimum relative distance จะมากกว่าค่าคงที่ค่าหนึ่งเสมอ
Random Linear Code
ในส่วนนี้ เราจะแสดงให้เห็นว่าถ้าหากเราเขียน message ให้อยู่ในรูปเวคเตอร์ v และสุ่มเมทริกซ์ M ขึ้นมาเพื่อเป็นเมทริกซ์ที่ใช้สร้าง codeword แล้ว
ด้วยความน่าจะเป็นที่สูง เมทริกซ์นั้นจะมีคุณสมบัติ asymtotically good
ทดสอบ
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 บิท