วันศุกร์ที่ 3 กุมภาพันธ์ พ.ศ. 2555

คอมพิวเตอร์ DNA

คอมพิวเตอร์ DNA ที่เป็นประเด็นกันอยู่ตอนนี้ หมายถึงเครื่องคำนวณที่ใช้ DNA มาเป็นกลไกหลักในการทำงาน คือ DNA ของสิ่งมีชีวิตจริงๆ เนี่ยะแหละ ไม่ใช่พวก Dynamics Network Architecture หรือ Digital Numerical Automatic (หลังๆ มานี่ตัวย่อเยอะมาก จนผมเริ่มหัดเสกคำย่อใหม่ๆ จนเป็นนิสัย) แต่เป็น Deoxyribo Necleic Acid ของเราเอง ความพยายามเอา DNA ซึ่งเป็นสารชีวภาพมาช่วยการคำนวณได้นั้นนับเป็นเรื่องที่น่ามหัศจรรย์อย่างยิ่ง ยิ่งพิสูจน์ได้ว่าน่าจะเร็วว่าคอมพิวเตอร์ซิลิคอนอีกต่างหาก ก็ยิ่งน่ามหัศจรรย์เข้าไปใหญ่ ประมาณว่าแม้แต่เส้นผมของเรายังเร็วกว่าเพนเทียมทรี แต่ความจริงมีรายละเอียดข้างในให้ติดตามอีกมาก อย่าเพิ่งทึกทักแบบนั้น
ความจริงถ้าพวกเราได้ติดตามข่าวคราววงการคอมพิวเตอร์มาเป็นเวลานาน ก็จะพบว่าไม่ใช่เรื่องแปลกใหม่ที่จะมีคนออกมาทำนายว่า Moore's Law อาจจะไม่เป็นจริงอีกต่อไป คือพูดกันมาหลายครั้งแล้ว คนที่ทักคนแรกๆ ก็คงจะอารมณ์ประมาณว่า วิศวกรไม่น่าจะลดขนาดได้ทันตามกำหนดการณ์นั้นทุกครั้งไป หรือน่าจะมีสักครั้งที่ติดปัญหาอะไรที่น่าจะแก้ไม่ตก แต่ก็น่าแปลกอีกเช่นกันที่เหมือนว่ากฎนี้จะเอาตัวรอดมาได้ทุกครั้งในช่วงหลายปีที่ผ่านมา
แต่ในความคิดของผม กลับมองว่าความจริงแล้วกฎของ Moore นั้นไม่ได้เป็นกฎที่คาดการณ์เทคโนโลยี คือ ไม่ได้ทำนายว่านักวิทยาศาสตร์จะสามารถเพิ่มพลังให้กับซิลิคอนได้สองเท่าทุก 18 เดือน แต่เป็นกฎที่บอกใบ้นักการตลาดทราบว่า ถ้าคุณเพิ่มพลังให้กับซิลิคอนทุกๆ 18 เดือน รับรองว่าอัตรานี้ขายของดีที่สุด ถ้าเพิ่มเร็วกว่านี้ผู้ซื้ออาจจะเกิดอาการงงและปรับตัวไม่ทัน ส่งผลให้ระงับการตัดสินใจซื้อ (เหมือนกับที่เรามีแผ่น MP3 เยอะและเร็วมาก จนเราไม่มีความคิดจะตามเก็บให้หมดอีกต่อไป) แต่ถ้าปรับช้ากว่านี้ก็จะไม่มีแรงจูงใจพอให้ซื้อเครื่องใหม่ ทำนองว่าเครื่องเราก็ไม่เห็นจะแตกต่างกับเครื่องใหม่ซักเท่าใด ซึ่งประชาชนชาวซิลิคอนวัลลี่ย์ก็ดูเหมือนจะปฏิบัติตามกฎข้อนี้กันด้วยดีเป็นเวลานาน ผลก็คือพวกเราก็ซื้อเครื่องใหม่กันเป็นว่าเล่น โปรแกรมสำเร็จรูปก็อ้วนขึ้นอย่างรวดเร็ว จากแผ่นดิสค์แผ่นเดียวเก็บได้หลายโปรแกรม กลายเป็นโปรแกรมละหลายแผ่น และในที่สุดก็กลายเป็นโปรแกรมละหลายซีดี
คิดดูซิครับว่าอะไรจะบังเอิญปานนั้น ที่อินเทลสามารถเพิ่มซิลิคอนลงในซีพียูของตนได้สองเท่าทุกๆ 18 เดือนมาเป็นเวลา 20 กว่าปีแล้ว ความจริงทีม R&D ของอินเทลทำการบ้านล่วงหน้าไปไกลกว่านั้น แต่อินเทลเลือกที่จะทยอยปล่อยหมัดของตนในอัตราที่เหมาะสม แต่มาช่วงหลังนี้ นักทำนายให้เหตุผลที่ค่อนข้างจะน่าฟังว่าการพัฒนาด้วยซิลิคอนน่าจะมาถึงกำแพงจริงๆ ไม่ว่าจะเป็นเรื่องความละเอียดในการสร้างทรานซิสเตอร์ และสายเชื่อมสัญญานในซีพียูอาจจะมาถึงระดับที่ไม่น่าจะเล็กลงกว่านี้ได้อีก เพราะข้อจำกัดคือ ไม่สามารถเล็กกว่าความยาวคลื่นของรังสีเอ็กซ์เรยได้ หรือจะเป็นข้อจำกัดเรื่องความเร็วสัญญาณคล็อกของซีพียูซึ่งโยงไปกับเรื่องขนาดของชิป ฯลฯ
เมื่อปี 1994 มีนักวิจัยคนหนึ่งชื่อว่า Professor Leonard Adleman จากมหาวิทยาลัย Southern California ท่านนี้คือผู้ร่วมสร้างอัลกอริทึมเข้ารหัส RSA อันโด่งดัง ตัว A ก็คือ Adleman นั่นเอง นอกจากนั้นท่านยังเป็นคนคิดคำว่า "ไวรัสคอมพิวเตอร์" ขึ้นเป็นคนแรก เพราะลูกศิษย์ของท่านเอาโปรแกรมมาให้ดูในห้องเรียนของท่านในปี 1983 บทเลกเชอร์ในหนังเรื่อง Sneaker ที่เกี่ยวกับเทคนิคขั้นสูงในการแยกตัวประกอบ เพื่อใช้ในการแฮกก็เป็นฝีมือของท่านอีก ท่านเล่าให้ฟังว่าตอนทำเลกเชอร์นี้อุตส่าห์วาดในเครื่องแมคเสียสวยงามใช้เวลาตั้งหลายชั่วโมง แต่ผู้กำกับกลับอยากได้เป็นลายมือหวัดๆ ทำให้ถึงกลับรำพึงออกมาว่า อยากได้หวัดๆ ก็ไม่บอกมีตั้งเยอะ ไม่ต้องเสียเวลาทำ
แต่งานนี้ท่านเป็นคนแรกที่สร้างแนวคิดว่า ความจริงแล้ว DNA ที่เป็นพิมพ์เขียวของสิ่งมีชีวิตนั้นสามารถนำมาสร้างเป็นเครื่องคำนวณได้ แรกๆ ความคิดนี้ดูเหมือนจะเป็นความคิดแผลงๆ ที่พยายามทำเรื่องง่ายให้เป็นเรื่องยาก แต่พอเห็นวิธีการจริงๆ แล้ว โลกทั้งโลกก็ต้องตะลึงกับผลที่ออกมา เพราะกลายเป็นว่า DNA มีพลังการคำนวณที่น่าตกใจมาก มากจนเล็งเห็นแนวโน้มว่าอาจจะเป็นคอมพิวเตอร์ยุคต่อไปเลยก็ได้ จากนั้นเป็นต้นมา งานวิจัยที่พยายามเอาทั้ง DNA หรือ RNA มาช่วยคำนวณก็แตกตัวให้เห็นมากมาย ว่ากันว่าปัจจุบันมีมากถึง 15 สายแล้ว เราจะมาดูตัวอย่างกันว่าโลกนี้ไปถึงไหนกันบ้าง ขลุกอยู่กับม็อบเขื่อนซะนาน ต้องเปิดตาซะหน่อย

เปิดตัวครั้งแรก


อย่างที่กล่าวไปแล้วว่า DNA นั้นเริ่มถูกจุดประกายเป็นครั้งแรกโดยฝีมือของนาย Adleman และการจุดประกายนั้นนับได้ว่าเป็นการเปิดศักราชของสาขาวิชานี้เลย ดังนั้น Adleman ก็ต้องกลายเป็นบิดาไปอย่างไม่มีปัญหา โดยโจทย์แรกที่เขานำมาตั้งเป็นตัวอย่างก็คือปัญหา Traveling Salesman ที่เป็นปัญหา Classic ของคนเรียนวิชาอัลกอริทึม ปัญหานี้มีอยู่ว่า มีเมืองอยู่จำนวนหนึ่ง เช่น A ถึง F มีระยะเชื่อมต่อกันแตกต่างกันไป เซลล์แมนคนหนึ่งต้องเดินทางไปขายของทุกเมือง จะเลือกเดินทางอย่างไรจึงจะได้ทางสั้นที่สุด ดังนั้นคำตอบที่เป็นไปได้ถึงมีอาจเป็นตั้งแต่ ABCDEF ไปจนถึง FEDCBA
ลักษณะปัญหาแบบนี้เป็นปัญหาเชิงทฤษฎีกราฟ ซึ่งการแก้ปัญหามักใช้อัลกอริทึมเดียว (ผมใช้คำว่ามักจะ เพราะไม่อยากปิดทางอัจฉริยะชาวไทย ด้วยการใช้คำว่า "ต้อง") คือลองผสมดูทุกๆ วิธีที่เป็นได้ แล้วเลือกเส้นทางที่ดีที่สุด ในวงการเรียกวิธีแบบนี้ว่า "bruce-force" แปลเป็นไทยได้ว่า "แรงควาย" ลักษณะเดียวกับการทดลองเดาพาสเวิร์ด ถ้าเป็นการคำนวณโดยใช้คอมพิวเตอร์ธรรมดาก็สามารถทำได้ แถมบอกได้เลยด้วยว่าจะใช้เวลาในการหาคำตอบนานเท่าใด ปัญหาที่เกิดขึ้นก็คือ ถ้าเมืองมีซัก 6 เมืองก็ไม่เท่าไร แต่ถ้ามีซัก 100 ละก็ มันบอกว่าขอเวลาคิดซักล้านปี คอยหน่อยนะ !?!?!
แต่กับการใช้ DNA มาแก้ปัญหานั้นจะต่างออกไป สิ่งที่เป็นประเด็นสำคัญประเด็นแรกเลยก็คือ เราจะสามารถโมเดลปัญหาให้มาอยู่ในรูปของ DNA ได้อย่างไร? เราจะเอา DNA มาเกี่ยวกับเซลล์แมนได้อย่างไร? คำตอบของ Adleman ออกมาดังนี้ครับ คือ ขั้นแรกต้องทราบก่อนว่าข้อมูลในสายพันธุกรรมนั้นจะประกอบด้วยหน่วยพื้นฐาน 4 ตัวด้วยกันคือ A, T, C และ G (Adenine, Thymine, Cytosine และ Guanine) หลายคนอาจจะเห็นทันทีว่าอย่างนี้ก็เป็นเลขฐานสี่นั่นเอง เหมือนกับที่คอมพิวเตอร์ในปัจจุบันเป็นเลขฐานสองที่ประกอบด้วย 0 กับ 1 ดังนั้นการแทนชื่อเมืองด้วยรหัส ATCG ก็ไม่น่าจะยาก