* home คืนเรือน | เพลิน | เพลิน ๑

computer image  A B O R T,    R E T R Y,    F A I L ?

ฉันไม่คิด ฉันจึงไม่เป็นอยู่

ตัวอย่างประกอบหลักการข้างต้น:
เย็นวันหนึ่ง เรเน เดคาร์ตออกไปหย่อนใจในผับแห่งหนึ่ง บริกรถามว่า "สวัสดีครับ มองซิเออร์เดคาร์ต วันนี้จะรับเครื่องดื่มเหมือนเคยหรือเปล่าครับ"

เดคาร์ตตอบว่า "ผมไม่คิดอย่างนั้นนะ" แล้วทันใดนั้น เขาก็หายตัวไปในอากาศธาตุ

* * *

นักคณิตศาสตร์สติไม่ดีคนหนึ่งก้าวขึ้นรถเมล์แล้วเริ่มต้นขู่กรรโชกผู้โดยสารทุกคนว่า "ข้าจะอินทิเกรตเจ้า! ข้าจะอินทิเกรตเจ้า!" ทุกคนตกใจกลัวและวิ่งหนีลนลานลงจากรถ ยกเว้นแต่สุภาพสตรีคนหนึ่งที่ยังนั่งสงบอยู่ นักคณิตศาสตร์ย่างสามขุมเข้าไปบอกว่า "ไม่กลัวรึไง ข้าจะอินทิเกรดเจ้า! ข้าจะดิฟเฟอเรนชิเอตเจ้า!" สตรีคนนั้นตอบอย่างเยือกเย็นว่า "ดิฉันไม่กลัวค่ะ ดิฉันคือ ex "

* * *

การค้นพบของไอน์สไตน์และพิธากอรัส
E = mc2 = m(a2 + b2)

* * *

ถาม: อะไรคือบันไดสู่ความร่ำรวยแบบ Object-Oriented?
ตอบ: Inheritance

* * *

ถาม: ทำไมโปรแกรมเมอร์ภาษาปาสคาลทุกคนถึงได้ถูกขอร้องให้ไปอยู่ที่แอตแลนติส?
ตอบ: เพราะแอตแลนติสอยู่ต่ำกว่าระดับน้ำทะเล (C-level)

* * *

ศัพท์คำว่า อัลกอริทึม (Algorithm) ตั้งตามชื่อของ Al Gore รองประธานาธิบดีของสหรัฐอเมริกา

หมายเหตุ (อ่านแล้วอาจไม่เพลิน) ทางหนีทีไล่ ->คืนเรือน

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

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

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

คำตอบที่ถูกนั้น ไม่ใช่แต่ควรจะเป็นคำตอบที่น่าจะถูกที่สุดจากคำตอบที่มีอยู่ทั้งหมด แต่ต้องเป็นคำตอบที่ถูกต้องแน่นอนอย่างปราศจากข้อสงสัย เรเน เดคาร์ตเขียนไว้ใน Meditations ว่า

"ข้าพเจ้าจะมุ่งหน้าต่อไป [...] จนกระทั่งข้าพเจ้าได้พบสิ่งที่แน่นอน หรืออย่างน้อย [...] ก็จนกว่าข้าพเจ้าจะแน่ใจว่าในโลกนี้ไม่มีความแน่นอนอยู่จริง [...] ข้าพเจ้าสุขใจกับความหวังว่าตัวเองจะโชคดีพอที่จะค้นพบความจริงแม้สักอย่างเดียว ที่เป็นความจริงอันแน่นอนสิ้นข้อสงสัย"

และคณิตศาสตร์เป็นศาสตร์ที่สำคัญ เพื่อนำมาสู่การหาความจริงอันนี้ ในศตวรรษที่สิบเจ็ด Leibniz เสนอทฤษฎี "แคลคูลัสของเหตุผล" ซึ่งเป็นระบบที่เขาหวังว่าจะสามารถหาคำตอบต่อทุกคำถามได้ ต่อมา David Hilbert ได้พิสูจน์หลักความเชื่อของคนส่วนใหญ่ว่า ไม่มีปัญหาอะไรในโลกที่แก้ไม่ได้ แต่แล้ว Kurt Gödel ก็ได้ทำลายความเชื่อนี้อย่างสิ้นเชิงด้วยทฤษฎี incompleteness theorem ที่โด่งดังมาก (มากมาก) ทฤษฎีนี้บอกว่าในระบบคณิตศาสตร์ใดๆ ก็ตาม จะต้องมีประโยคที่เราไม่สามารถพิสูจน์ได้ว่าจริง หรือเท็จอยู่เสมอ

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

ทฤษฎีของโกเดลสร้างความประหลาดใจใหญ่หลวงกับนักคณิตศาสตร์ คราวนี้ถ้ามีปัญหาที่แก้ไม่ได้อยู่จริง คำถามที่ตามมาคือ เรามีทางรู้ได้ไหม ว่าปัญหาหนึ่งๆ นั้นแก้ได้หรือเปล่า หากแก้ไม่ได้เราจะได้ไม่ต้องเสียเวลาไปนั่งคิดคำตอบแต่แรก หรือไม่เราจะได้ไม่ต้องลงแรงมากเกินไป ในการแก้ปัญหานั้น

ลองดูเรื่อง "จะแก้ปัญหาออกหรือไม่" นี้สักนิด ยกตัวอย่างความเชื่อ Goldbach ว่าเลขคู่ทุกจำนวนที่มากกว่า 2 นั้นได้มาได้จากการเอาจำนวนเฉพาะ (prime) สองตัวบวกกัน เช่น 8 = 3+5 จากการค้นพบของโกเดล เรารู้ว่าเป็นไปได้ ที่เราอาจจะไม่มีวันรู้ได้ว่าความเชื่อของ Goldbach นี้เป็นจริงหรือไม่ เพราะปัญหานี้อาจจะแก้ไม่ได้ อาจมีผู้เถียงว่าแก้ได้สิ เพียงแต่เราไล่ไปเรื่อยๆ ว่าตัวเลขแต่ละตัวนั้นได้มาจากผลบวกของจำนวนเฉพาะจริงหรือไม่ หาไปจนกว่าจะเจอตัวเลขตัวหนึ่งที่ไม่มีคุณสมบัตินี้ แล้วสรุปว่าผิด แต่ถ้ายังไม่เจอ ก็ต้องหาไปเรื่อยๆ

นี่เป็นวิธีการแก้ปัญหาก็จริง แต่เราต้องการวิธีที่จะต้องทำไป "เรื่อยๆ" หรือ เรื่อยๆ นี้อาจจะเป็นเดือน เป็นปี หรือชั่วกัลปาวสาน ดังนั้น นอกจากวิธีการแก้ปัญหาแล้ว เราต้องการวิธีที่จะต้องแก้ได้ทันเวลาอีกด้วย มิฉะนั้นแล้ววิธีนั้นก็ไร้ประโยชน์

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

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

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

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

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

ตั้งใจว่าจะพูดถึงคำว่าอัลกอริทึมสั้นๆ แท้ๆ ไม่รู้ทำไมถึงได้มาถึงอลัน ทัวริงได้ อย่างไรก็ตาม ชีวิตของอลัน ทัวริงน่าสนใจมาก ชื่อของเขาจะเป็นที่จดจำของโลกไม่รู้ลืม คราวหน้าฉันน่าจะเล่าเรื่องของเขาบ้าง เขาเป็นโฮโมเซกชวล และฆ่าตัวตายด้วยการกินแอปเปิ้ลเคลือบยาพิษเมื่ออายุได้เพียง 41 ปี แต่บางทีฉันควรจะต้องหาชื่อหน้าใหม่ที่ไม่ใช่เพลิน ก่อนที่จะถูกประณามจากผู้อ่าน ชื่อ Abort, Retry, Fail ที่ตั้งไว้แต่แรกเริ่มก็ไม่เลวทีเดียว แต่ตอนนี้ฉันกำลังสงสัยว่าคุณเป็นผู้อ่านเพียงคนเดียวหรือไม่ที่ทนอ่านได้จนถึงบรรทัดนี้ แต่ปัญหานี้แก้ได้ และคำตอบคือไม่ใช่ มีผู้อ่านถึงบรรทัดนี้อย่างน้อยสองคน คุณกับฉัน

Copyright © 2000 faylicity.com

คืนเรือน | เพลิน

เพลินล่าสุด ๑ มิถุนายน ๒๕๔๓