สรุปใจความสำคัญ
[box_light]ทุกการแสดงผลที่เราเห็นในชีวิตประจำวันผ่านอุปกรณ์ที่มนุษย์สร้างขึ้น อันได้แก่ คอมพิวเตอร์ สมาร์ทโฟน โทรทัศน์ วิทยุ และอื่นๆ อีกมากมาย ล้วนเป็นรหัสที่ส่งมาจากแหล่งกำเนินของข้อมูล สิ่งที่ส่งผ่านสายหรืออากาศมานั้น มันไม่ได้ส่งมาเป็นภาพ วีดีโอ เสียง หรือตัวหนังสือ แต่มันส่งมาในรูปของ “รหัส(Coding)” ซึ่งมันไม่ใช่โค๊ดโปรแกรมด้วย(โค๊ดโปรแกรมเป็นตัวหนังสือและสัญลักษณ์) คำว่า “รหัส” มันพื้นฐานมากกว่านั้น มันอยู่ในรูปตัวเลข 0 และ 1 เท่านั้น บทความนี้เราจะมาดูกันว่า มันทำงานอย่างไร? มีการพัฒนาอย่างไร? อนาคตมันจะเป็นยังไงบ้าง? และมันเชื่อมโยงกับการรับส่งข้อมูลในโลกนี้อย่างไรบ้าง ?[/box_light]
รหัส คืออะไร?
รหัส(Coding) ที่ผมจะกล่าวถึงในบทความนี้ไม่ใช่ “รหัสลับ(Cryptography)” เหมือนในหนังนะครับ แต่มันคือชุดตัวเลขที่มีแต่เลข 0 และ 1 เท่านั้น เป็นนวัตกรรมทางความรู้ที่ทำให้เกิดเทคโนโลยีด้านการสื่อสารในรูปแบบต่างๆ สมัยก่อนอาจเป็นแค่การส่งโทรเลข หรือคลื่นวิทยุ แต่ทุกวันนี้มันกลายเป็นทุกๆ อย่างเลยทีเดียว ทั้ง โทรทัศน์ที่เราดู คอมพิวเตอร์ที่เราใช้ โทรศัพท์ที่เราพูดคุย และอื่นๆ อีกนับไม่ถ้วน
ทำไมต้องมีแต่เลข 0 และ 1 ? เหตุผลของเรื่องนี้ก็คือ สมัยยุคเริ่มต้นของการส่งข้อมูลทางไกลโดยไม่อาศัยม้าเร็ว นักวิทยาศาสตร์เขาส่งข้อมูลไปหากันด้วยการเปิดและปิดสวิตช์ไฟผ่านสาย หากเปิดสวิตซ์ให้หมายถึงเลข 1 และหากปิดสวิตซ์ให้หมายถึงเลข 0 โดยมีการนัดแนะกันว่าชุดตัวเลขที่ส่งไปแบบนี้มันหมายความว่าอะไร? ตัวอย่างเช่น
- “00000” หมายถึง ตัวอักษร “A”
- “00001” หมายถึง ตัวอักษร “B”
- “00010” หมายถึง ตัวอักษร “C”
- .
- .
- .
- “01110” หมายถึง ตัวอักษร “Z”
ขอเรียกชุดรหัสนี้ว่า “รหัสชุดที่หนึ่ง” เอาไว้กล่าวถึงภายหลัง ด้วยเหตุนี้จึงเป็นต้นกำเนิดการส่งข้อมูลผ่านสายได้เป็นครั้งแรกของโลก
สงสัยไหม ทำไมสมัยก่อนคุยโทรศัพท์แล้วเสียงขาดๆ หายๆ ?
เมื่อวิทยาศาสตร์และเทคโนโลยีพัฒนามากขึ้น แทนที่จะจดคำแปลรหัสบนไว้กระดาษ เราก็สามารถสร้างเครื่องมือแปลรหัสเป็นตัวอักษรได้โดยอัตโนมัติ แต่เมื่อมีการใช้งานไปนานๆ เข้า ก็พบปัญหาว่า การส่งนั้นมีข้อผิดพลาดขึ้นในระหว่างทาง สายส่งข้อมูลอาจถูกฟ้าผ่า ถูกลม ถูกฝนกระทบระหว่างทาง ทำให้การส่งข้อมูลมีความผิดพลาดขึ้น ด้วยเหตุนี้ “นักคณิตศาสตร์” จึงเข้ามาเกี่ยวข้อง
นี่เป็นคำถามที่หลายคนเคยถามบ่อยๆ ว่า “เรียนคณิตศาสตร์ไปเพื่ออะไร?” สาเหตุที่เราไม่ตระหนักรู้ก็เพราะว่าเราเรียนคณิตศาสตร์ต้นทางที่เป็นพื้นฐานมากๆ แต่สำหรับบทความนี้ผมจะบอกว่าคณิตศาสตร์ปลายทางมันก็เพื่อสิ่งนี้ “การแก้ปัญหา” ซึ่ง ณ ทีนี้ มันได้เข้ามาแก้ปัญหาการรับส่งข้อมูลนั่นเอง
ในบทความนี้ผมจะไม่ลงลึกมากนักนะครับ แต่จะบอกคร่าวๆ ว่ามันเข้ามาแก้ปัญหาจุดไหน อย่างไร? นั่นก็คือ คณิตศาสตร์ได้นำทฤษฎีพีชคณิตนามธรรม(Abstract Algebra) เป็นทฤษฏีที่ศึกษาเกี่ยวกับ เซต และ การดำเนินการ ซึ่งสำหรับเรื่องการรับส่งข้อมูลนี้ เซตที่เราสนใจก็คือเซตของชุดรหัสที่เราส่งหากันนั่นเอง เนื่องจากชุดรหัสมีแต่ตัวเลข 0 และ 1 ดังนั้น การดำเนินการพวกเขาจึงใช้การบวกและการคูณของเลขฐานสองเข้ามาช่วย นั่นคือ 0+0 = 0, 0+1=1+0=1 และ 1+1=0 เป็นต้น ส่วนการคูณก็ได้ผลเหมือนตัวเลขปกติ นักคณิตศาสตร์ได้สร้างชุดรหัสขึ้นมาใหม่ ไม่ใช้ชุดตัวเลข 5 ตัว ดัง “รหัสชุดที่หนึ่ง” แล้ว พวกเขาใส่ตัวเลขเพิ่มเข้าไปอีก 3 ตัว ซึ่ง 5 ตัวแรก(สีแดง) ความหมายมันก็เหมือนกับ “รหัสชุดที่หนึ่ง” แต่ 3 ตัวหลังมันจะทำหน้าที่ตรวจสอบและแก้ไขหากรหัสมีการผิดพลาดระหว่างทาง “รหัสชุดที่สอง” แสดงได้ดังนี้
- “00000011” หมายถึง ตัวอักษร “A”
- “00001001” หมายถึง ตัวอักษร “B”
- “00010101” หมายถึง ตัวอักษร “C”
- .
- .
- .
- “01110000” หมายถึง ตัวอักษร “Z”
ทำไมมันตรวจหาข้อผิดพลาดและแก้ไขได้หละ? นั่นก็เพราะว่าระบบมันสร้างเซตของรหัสขึ้นมา A = {00000000, 00000001, …, 11111111} พร้อมกับการบวกและคูณของเลขฐานสอง ทำให้มันมีคุณสมบัติเป็น “สนาม(Field)” ด้วยคุณสมบัติของเจ้า “สนาม(Field)” นี่หละครับ ทำให้เราตั้งเครื่องรับและส่งข้อมูลเช็คดูได้ว่า รหัสที่รับมามันอยู่ในเซตของรหัส A หรือไม่? ถ้าไม่อยู่ใน A แล้วมันผิดพลาดตรงไหน? ตำแหน่งอะไร? และเมื่อรู้ว่ามันผิดเครื่องก็จะแก้ให้ทันที นี่หละคือเสน่ห์ของเลขฐานสอง นั่นคือ หากเรารู้ว่าตำแหน่งอะไรผิดเราก็แก้ให้เป็นอีกตัวได้เลย เพราะตัวเลขมันมีแค่ 0 และ 1 เท่านั้น
เราส่งรูปภาพ วีดีโอ และข้อมูลต่างๆ หากันได้ยังไง ?
ในเซต A เราจะเห็นว่ามันเป็นชุดรหัสที่มีตัวเลขอยู่ 8 ตัว เราเรียกมันว่า “8 bit= 1 byte” ซึ่ง 1 byte ก็ส่งข้อมูลได้แค่ 1 ตัว เมื่อเราส่งข้อมูลหากันมากๆ มันก็จะกลายเป็น
- 1 KiloByte (KB) = 1024 Byte
- 1 MegaByte (MB) = 1024 KiloByte
- 1 GigaByte (GB) = 1024 MegaByte
เริ่มคุ้นๆ แล้วใช่ไหมครับ ? มันก็คือหน่วยที่เราใช้วัดปริมาณของข้อมูล หรือขนาดไฟล์นั่นเอง ไม่ว่าไฟล์ของเราอยู่ในรูปแบบอะไรก็ตาม .doc, .jpg, .mov, .mp3 หรือ .mp4 ทุกรูปแบบของไฟล์มันจะมีขนาดที่มีหน่วยเป็น Byte นั่นเอง แสดงว่ามันเกิดมาจาก 0 และ 1 จำนวนมหาศาลที่มารวมกัน
ขอยกตัวอย่างรูปภาพที่เราถ่ายด้วยสมาร์ทโฟนนะครับ หากรูปมันมีความละเอียด 2 ล้านพิกเซล นั่นหมายความว่า ใน 1 รูปที่เรามองเห็นมันจะมีเม็ดสีทั้งหมด 2 ล้านเม็ด ในแต่ละเม็ดจะมีเพียงสีเดียวเท่านั้น ซึ่งการที่เม็ดนั้นมันจะแสดงผลเป็นสีอะไรก็ขึ้นอยู่ว่าชุดรหัสที่มันได้รับมา ตัวอย่างเช่น 00010101 เป็นสีแดง, 01110010 เป็นสีดำ, 00011111 เป็นสีขาว อย่างนี้เป็นต้น หากเราส่งรูปให้เพื่อนหรืออัพโหลดขึ้น Facebook มันไม่ได้ส่งเป็นรูปไปเลยนะ รูปภาพมันวิ่งตามสายหรืออากาศไม่ได้ มันจะแปลงรูปในเครื่องเราเป็นชุดของรหัสก่อน จากนั้นใช้เปิดและปิดสัญญาณ ส่งตามสายหรืออากาศ เพื่อบอกว่าในแต่ละชุดรหัสมีตัวเลขอะไรบ้าง 0 หรือ 1 เมื่อส่งเข้าระบบไป หากมีข้อผิดพลาดระหว่างทางมันก็จะใช้คุณสมบัติของ “สนาม(Field)” เปลี่ยนเป็นชุดรหัสที่ถูกต้องได้ เครื่องคอมพิวเตอร์หรือสมาร์ทโฟนของเพื่อนเราก็จะแปลงชุดรหัสเป็นเม็ดสี และเมื่อเม็ดสีหลายล้านเม็ดมารวมกันก็จะกลายเป็นรูปภาพที่พวกเขาเห็นในคอมพิวเตอร์หรือในสมาร์ทโฟนนั่นเอง
คอมพิวเตอร์หรือสมาร์ทโฟน 32 Bit หรือ 64 Bit มันคืออะไร ?
เนื่องด้วย 1 Byte มันมีแค่ 8 Bit โดยที่เลข 5 ตัวแรกแทนข้อมูล ส่วน 3 ตัวหลังเป็นชุดตรวจสอบและแก้ไขความถูกต้อง ทำให้มันมีข้อจำกัด หากมันผิดพลาด 1 หรือ 2 ตำแหน่งยังพอแก้ไขได้ แต่ถ้ามากกว่านั้นจะแก้ไขไม่ได้ เป็นต้นเหตุให้ข้อมูลที่ได้รับมันผิดเพี้ยนไปได้ อย่างเช่นการโทรศัพท์สมัยก่อนเสียงจะขาดๆ หายๆ นั่นหละครับ หมายความว่ารหัสมันแก้ไขข้อผิดพลาดไม่ได้ ด้วยเหตุนี้เมื่อเรามีข้อมูลมากขึ้น ใน 1 Byte จึงจำเป็นต้องมีจำนวน Bit มากขึ้น ซึ่งจะทำให้เราสามารถบรรจุข้อมูลได้มากขึ้น และมีจำนวน Bit ที่เอาไว้ตรวจสอบและแก้ไขข้อผิดพลาดได้มากขึ้นด้วย ส่งผลทำให้แม้ว่าจะมีข้อผิดพลาดระหว่างทางสักแค่ไหนก็ตามระบบก็จะสามารถตรวจสอบและแก้ไขได้ ยิ่งจำนวน Bit เยอะประสิทธิภาพในการรับส่งข้อมูลก็ยิ่งดีขึ้นนั่นเอง ซึ่งทฤษฏีนั้นมันทำได้แบบนับไม่ถ้วนอยู่แล้วครับ ใน 1 Byte เราจะให้มีกี่ล้าน Bit ก็ได้ แต่ปัญหามันอยู่ที่ตัวแปลงรหัสสัญญาณนั่นเองว่ามีความสามารถแค่ไหน ดังนั้นเมื่อเทคโนโลยีพัฒนามากขึ้น คอมพิวเตอร์และสมาร์ทโฟนก็พัฒนามากขึ้นตาม จนสามารถเพิ่มจำนวน Bit เข้าไปได้มากขึ้นเรื่อยๆ จึงเป็นที่มาของ คอมพิวเตอร์ หรือ สมาร์ทโฟน 16 Bit, 32 Bit, 64 Bit ตามลำดับของการพัฒนาการ
ผมไม่ขอลงลึกมากเรื่อง ทฤษฏีรหัส(Coding Theory) หรือ พีชคณิตนามธรรม(Abstract Algebra) ความรู้ทางคณิตศาสตร์ที่นำมาช่วยตรวจสอบและแก้ไขข้อผิดพลาดของชุดรหัสนะครับ นี่หละเป็นคำตอบสำหรับหลายคนที่ถามมาตลอดว่า “เรียนคณิตศาสตร์ไปทำไม?” และนี่คือ พื้นฐานของพื้นฐานของเทคโนโลยีที่เราเสพอยู่ ที่เราอาจเคยรู้ว่ามันเกิดจากเลข 0 และ 1 มารวมกัน แต่ก็ไม่รู้ว่ามันทำงานอย่างไร? หากใครสนใจและต้องการลงลึกมากกว่านี้ สามารถศึกษาเพิ่มเติมได้จากสื่อที่เป็นหนังสือหรือสื่อออนไลน์เกี่ยวกับ “ทฤษฏีรหัส(Coding Theory)” ได้เลยนะครับ แล้วเพื่อนๆ จะรู้ว่ามันคืออะไร ? มันตรวจสอบและแก้ไขความผิดพลาดอย่างไร? และจะได้เห็นว่าการศึกษาเรื่องนี้มันยังไม่สิ้นสุดและมีการพัฒนาไปเรื่อยๆ ครับ
รู้ไหมครับ เราสามารถฝังชุดรหัสลงในสารเคมีหรือสิ่งมีชีวิตได้แล้ว ?
[box_info]
เอกสารอ้างอิง:
สุพจน์ ไวท์ยางกูร, ทฤษฏีรหัสขั้นแนะนำ(Introduction to Coding Theory), ภาควิชาคณิตศาสตร์ มหาวิทยาลัยขอนแก่น, 2540.
[/box_info]