More Related Content Similar to Turing machine Similar to Turing machine (17) Turing machine1. Tur ing machine เครื่องจักร ทัวริง Turing mach ine น . ส . วิภาวี ขวัญเมือง ม .4/1 เลขที่ 10 2. Alan Mathison Turing แอลัน แมธิสัน ทัวริง เป็นนักคณิตศาสตร์ , นักตรรกศาสตร์ , นักรหัสวิทยา และวีรบุรุษสงคราม ชาวอังกฤษและเป็นที่ยอมรับว่าเป็นบิดาของ วิทยาการคอมพิวเตอร์เขาได้สร้างรูปแบบที่เป็นทางการทางคณิตศาสตร์ของการระบุอัลกอริทึมและการคำนวณ โดยใช้ เครื่องจักรทัวริง ซึ่งตามข้อปัญหาเชิร์ช - ทัวริง ได้กล่าวว่าเป็นรูปแบบของเครื่องจักรคำนวณเชิงกลที่ครอบคลุมทุกๆ รูปแบบที่เป็นไปได้ในทางปฏิบัติ ในระหว่างสงครามโลกครั้งที่สอง ทัวริงมีส่วนสำคัญในการแกะรหัสลับของฝ่ายเยอรมัน โดยเขาเป็นหัวหน้าของกลุ่ม Hut 8 ที่ทำหน้าที่ในการแกะรหัส ของเครื่องอีนิกมาที่ใช้ในฝ่ายทหารเรือ หลังจากสงครามเขาได้ออกแบบเครื่องคอมพิวเตอร์ อิเล็กทรอนิกส์ที่สามารถโปรแกรมได้ เครื่องแรกๆของโลกที่ห้องปฏิบัติการฟิสิกส์แห่งชาติ และได้สร้างเครื่องคอมพิวเตอร์ขึ้นจริงๆ ที่มหาวิทยาลัยแมนเชสเตอร์รางวัลทัวริงถูกก่อตั้งขึ้นเพื่อยกย่องเขาในเรื่องนี้ นอกจากนั้นแล้วการทดสอบของทัวริงที่เขาได้เสนอนั้นมีผลอย่างสูงต่อการศึกษาเรื่องปัญญาประดิษฐ์ ซึ่งในขณะมีถกเถียงที่สำคัญว่า : เป็นไปได้หรือไม่ที่จะกล่าวว่าเครื่องจักรนั้นมีสำนึกและสามารถคิด ได้ 3. ประวัติ แอลัน ทัวริง เป็นชาวอังกฤษ เกิด 24 มิ . ย เมื่อปี พ . ศ . 2455 ( ค . ศ . 1912 ) ที่ลอนดอน อาศัยอยู่กับพี่ชาย . บิดาและมารดาของทัวริง พบกัน และทำงานที่ประเทศอินเดีย . ในสมัยมัธยม ทัวริงสนิท และนับถือรุ่นพี่คนหนึ่งชื่อ คริสโตเฟอร์ มอร์คอม ( Christopher Morcom ) ซึ่งเสียชีวิตไปซะก่อน ทัวริงเศร้ามาก เลยตั้งใจสานต่อสิ่งที่รุ่น พี่เขาอยากทำให้สำเร็จ . ตลอดสามปีหลังจากนั้น เขาเขียนจดหมายอย่างสม่ำเสมอให้ คุณแม่ของมอร์คอม ว่าเขาคิด และสงสัยเรื่องความคิดของคน ว่าไปจับจดอยู่ในเรื่องหนึ่ง ๆ ได้อย่างไร ( how the human mind was embodied in matter ) และ ปล่อยเรื่องนั้นๆ ออกไปได้อย่างไร ( whether accordingly it could be realeased from matter ) แล้ววันหนึ่งเขาก็ไปเจอหนังสือดังในยุคนั้นชื่อ " The Nature of the Physical World " อ่านไปก็เกิดนึกไปเองว่า ทฤษฏีกลศาสตร์ควอนตัม มันต้องเกี่ยวกับปัญหาเรื่อง mind and matter ที่เขาคิดอยู่ 4. อลัน ทัวริง เกิดในลอนดอน ปี 1912 บิดาทำงานเป็นข้าราชการอังกฤษที่ต้องประจำในอินเดีย ซึ่งเป็นสถานที่ที่มารดาของเขาเห็นว่าไม่เหมาะสมที่จะเป็นสภาพแวดล้อมของลูก ดังนั้นชีวิตในวัยเด็กของทัวริงจึงเติบโตในอังกฤษในบ้านเลี้ยงเด็ก โดยที่พ่อแม่มาเยี่ยมเป็นครั้งคราว คาดกันว่าความเดียวดายในวัยเด็กนี้ ทำให้ทัวริงติดใจการทำงานของจิตใจมนุษย์เป็นพิเศษ เมื่ออายุสิบสามปี ทัวริงเข้าโรงเรียน Sherbourne ใน Dorset ในสมัยมัธยม ทัวริงสนิทและนับถือรุ่นพี่คนหนึ่ง ชื่อ คริสโตเฟอร์ มอร์คอม ( Christopher Morcom ) ซึ่งเสียชีวิตในเวลาต่อมาอย่างกะทันหันด้วยวัณโรค ความสูญเสียนี้ทำให้ทัวริงหมดสิ้นศรัทธาในศาสนาและพระเป็นเจ้า และเชื่อว่าทุกสิ่งที่เกิดขึ้นจะต้องมีคำอธิบายที่เห็นและจับต้องได้จริง ทัวริงตั้งคำถามว่าจิตใจคนเราทำงานอย่างไร จิตของเพื่อนคนนั้นจะเป็นอย่างไรเมื่อร่างกายจากไปแล้ว เขาเชื่อว่าในเครื่องจักรกลและสมองของมนุษย์นั้นไม่มีจิตวิญญาณอยู่จริง แต่สงสัยว่าความคิด และความมีสติสัมปชัญญะเกิดได้อย่างไร อลัน ทัวริงเข้าเรียนที่ King's College ในเคมบริดจ์ เมื่อเรียนจบได้ไม่นานก็เผยแพร่ผลงานเครื่องจักรทัวริง ช่วงนั้นเป็นช่วงของสงครามโลกครั้งที่สอง จากผลงานของทัวริงที่ปรากฎทำให้รัฐบาลเรียกตัวเขาไปร่วมงานชิ้นสำคัญ ในตอนนั้น รัฐบาลอังกฤษรวบรวมนักคณิตศาสตร์ แชมเปียนหมากรุก นักภาษา นักวิเคราะห์อักขระอียิปต์ และใครก็ตามที่มีผลงานเกี่ยวกับหลักตรรกศาสตร์ เพื่อพยายามถอดรหัสของเครื่องเอนิกมา ( Enigma ) ซึ่งเป็นรหัสลับที่นาซีใช้ติดต่อสื่อสารในช่วงสงคราม งานนี้เป็นความลับระดับชาติ หลังจากทัวริงเสียชีวิตไปแล้ว สาธารณชนจึงได้รับรู้ว่าทัวริงมีส่วนในการออกแบบเครื่องมือที่ใช้แกะนาซีโค้ดที่ส่งไปที่ U - boats ในแอตแลนติกเหนือ และมีส่วนช่วยให้แกะรหัสนี้สำเร็จในเวลาต่อมา 5. ทัวริงกลับมาที่เคมบริดจ์หลังสงครามเลิก และยังสนใจเรื่องเครื่องจักรกลที่สามารถคิดเองได้ เขาเสนอความคิดว่าเครื่องกลหนึ่งๆ สามารถจะเรียนรู้และแก้คำสั่งที่แนบมาเองได้ ทัวริงยังคิดค้นการทดสอบแบบทัวริง ( Turing test ) ที่โด่งดังซึ่งเป็นการวัดว่าเครื่องมือหนึ่งๆ จะมีความฉลาดทัดเทียมมนุษย์ได้หรือไม่ โดยวัดจากการนำคนหนึ่งไปนั่งในห้องปิด และถามคำถามเดียวกันกับคน และกับเครื่อง ( แต่มองไม่เห็นว่าใครตอบ ) ถ้าผู้ถามไม่สามารถแยกแยะได้ว่าคำตอบใดมาจากเครื่อง คำตอบใดมาจากคน นั่นย่อมแปลว่าเครื่องกลนั้นฉลาดทัดเทียมมนุษย์ ตัวอย่างของการทดสอบแบบทัวริงที่น่าสนใจอันหนึ่ง คือรางวัล Loebner ที่จัดทุกปี เพื่อแข่งขันหาโปรแกรมสนทนาโต้ตอบกับคนที่มีความสามารถใกล้เคียงมนุษย์มากที่สุด กรรมการสิบคนจากหลากหลายอาชีพพิมพ์โต้ตอบคุยกับอีกฝ่าย ซึ่งกรรมการไม่รู้ว่าอีกฝ่ายนี้เป็นโปรแกรมหรือเป็นคนจริงๆ ถ้ากรรมการแยกแยะไม่ได้ว่ากำลังคุยกับโปรแกรมหรือกับคน แต่จริงๆ แล้วอีกฝ่ายเป็นโปรแกรม ย่อมหมายความว่าโปรแกรมนั้นหลอกคนได้สำเร็จ และมีความฉลาดระดับหนึ่ง โปรแกรมที่ชนะเลิศการแข่งขันในปี 2004 มีชื่อว่าอลิซ ( ALICE ) ผู้เรียนสามารถลองคุยกับอลิซได้ที่เว็บไซต์ http://alicebot.org/ ตัวอย่างคำตอบของเธอต่อกรรมการ 6. กรรมการ : Do you daydream Alice : I have a lot of dreams but I cannot remember them all. กรรมการ : Do you speak any Swedish Alice : I speak only English right now, but I'd like to learn some other languages. Can you teach me a few phrases in Any Swedish. โปรแกรมเหล่านี้ต้องละเอียดขนาดความเร็วของแต่ละตัวอักษรที่ปรากฎ ( เพราะต้องทำให้รู้สึกเหมือนคนกำลังพิมพ์ตอบ ) ต้องวิจัยกันทีเดียวว่าเวลาที่ใช้การพิมพ์ตัวอักษรแต่ละตัวเป็นอย่างไร เช่นการพิมพ์ t นั้นเร็วกว่าการพิมพ์ตัว s และต้องใส่ถ่วงเวลาแค่ไหนระหว่างตัวอักษรแต่ละตัวจะปรากฎ และบางทีโปรแกรมก็ต้องพิมพ์ผิด เว้นวรรคพลาดบ้าง จะได้แนบเนียน แต่อลิซหลอกกรรมการที่เป็นจิตแพทย์ไม่ค่อยเก่ง เพราะเธอจนปัญญาเอาทีเดียวกับคำถามเหล่านี้ กรรมการ : If I see a house Alice : Try it. กรรมการ : Am I on the inside outside or could it be either 7. Turing machine อลัน ทัวริง ( Alan Turing ) คิดค้นเครื่องจักรทัวริง ( Turing machine ) เครื่องมือในฝันที่สามารถทำอะไรได้ทุกอย่าง ถ้าเพียงแต่เราจะใส่วิธีทำลงไป ซึ่งกลายเป็นต้นแบบแรกเริ่มของคอมพิวเตอร์ในปัจจุบัน ทัวริงแมชชีนเป็นเครื่องมือมหัศจรรย์ เพราะเป็นครั้งแรกที่เราแยก " อุปกรณ์ " ออกจาก " ความสามารถของอุปกรณ์ " นั้นได้ การทำงานของเครื่องไม่ได้ถูกกำหนดมาล่วงหน้า แต่ขึ้นอยู่กับวิธีทำหรืออัลกอริทึมที่แนบมาด้วย เครื่องจักรทัวริงนั้นไม่้ยุ่งยาก ทำงานเป็นเหมือนเครื่องอ่านม้วนกระดาษยาวๆ ( หรือเทป ) ลองคิดดูว่าเรามีกระดาษเก็บข้อมูลยาวๆ ไม่สิ้นสุด บนกระดาษจะบันทึกเลขสองตัวคือ ศูนย์และหนึ่ง เช่น ... 0011011000100 ... ทัวริงแมชชีนมีหัวอ่านค่าในกระดาษนี้ ที่บอกว่าตอนนี้กำลังอ่านเลขตัวไหนอยู่ตรงไหน และรู้ว่าตอนนี้อยู่ในสถานะใด ( ทัวริงแมชชีนมีได้หลายสถานะ แล้วแต่ข้อมูลที่กำลังอ่านอยู่ ) วิธีทำที่แนบมาด้วยสามารถสั่งให้ทัวริงแมชชีนทำงานได้สี่ประการต่อไปนี้ 1 . อ่านเลขตัวติดกันทางซ้าย ( เปลี่ยนตำแหน่งปัจจุบัน ) 2 . อ่านเลขตัวติดกันทางขวา ( เปลี่ยนตำแหน่งปัจจุบัน ) 3 . แก้ค่าปัจจุบันที่อ่านอยู่ เช่นจาก 0 เป็น 1 หรือจาก 1 เป็น 0 ( เปลี่ยนค่าบนกระดาษ ) 4 . เปลี่ยนสถานะ รูปด้านบนเป็นการใช้เครื่องจักรทัวริงตรวจสอบคำว่าใช่ " aabb " หรือไม่ ไม่น่าเชื่อที่ว่าแค่สั่งให้เครื่องจักรทัวริงเคลื่อนไหวไปๆ มาๆ ลบค่าบ้าง เปลี่ยนสถานะบ้าง จะทำให้เครื่องนี้มีความสามารถมากมาย วิธีทำที่แนบมาเป็นตัวควบคุมการทำงานของทัวริง ถ้าเราแนบคำสั่งให้ทัวริงอ่านเลขตัวติดกันทางขวาไปเรื่อยๆ ทัวริงก็จะไม่มีประโยชน์อะไรนัก แต่ถ้าเราเขียนคำสั่งที่ซับซ้อนขึ้น เครื่องจักรทัวริงก็สามารถเล่นหมากรุกกับเราได้ อลัน ทัวริงถึงกับบอกว่าเครื่องจักรทัวริงสามารถจำลองระบบความคิดของมนุษย์ได้ และนี่คือเครื่องมือมหัศจรรย์ที่อลัน ทัวริงคิดค้น 8. โปรแกรม Visual Turing Visual Turing เป็นเครื่องมือที่ใช้ออกแบบและสร้าง Turing machine โดยนำเสนอในรูปแบบของภาพ graphic สามารถ cut, copy, paste และ undo ได้ สามารถรัน machine ที่สร้างขึ้น และทำการ debug breakpoints รวมถึงสามารถมองเห็นลำดับการทำงานของ machine ในแต่ละขั้นตอนได้อย่างชัดเจน 11. วิธีใช้งานโปรแกรม 1 . เปิดโปรแกรม Visual Turing ขึ้นมา โปรแกมจะสร้างโปรเจคเอาไว้ให้ ดังในรูป หรือหากต้องการสร้างโปรเจคใหม่ให้กดที่ New button หรือ File / New หรือ Ctrl + N 12. 2 . การสร้าง machine ใหม่ ให้กดที่ Insert machine button หรือ คลิกขวาที่ tree view ด้านซ้ายมือ เลือก Insert machine จากนั้นเปลี่ยนชื่อ machine ที่หน้าต่าง properties ดังรูป 3 . การสร้าง Symbol ใหม่ ให้กดที่ Insert symbol button หรือ คลิกขวาที่ tree view ด้านซ้ายมือ เลือก Insert symbol 4 . การสร้าง Symbol ใหม่ ให้กดที่ Insert variable button หรือ คลิกขวาที่ tree view ด้านซ้ายมือ เลือก Insert variable 13. 5 . การที่ Machine จะทำงานได้ ต้องเกิดจากการนำเอาคำสั่งแต่ละคำสั่งมาประกอบกันให้เป็น machine โดยกดที่ Insert instruction button ซึ่งประกอบด้วยคำสั่ง nothing, move left, move right และคำสั่ง write นอกจากนี้ยังมี Insert branch button ไว้สำหรับสร้างเส้นทางหรือสาขาออกไป , Insert arrow button สำหรับสร้างลูกศรเส้นทาง และ Insert self - arrow สำหรับสร้างลูกศรเส้นทางให้เดินวน ดังรูป 6 . การกำหนด Condition ของ arrow ทำได้โดยดับเบิ้ลคลิกหรือคลิกขวาเลือก properties ที่วงกลมบน arrow ดังรูป 14. 7 . การสร้างและแก้ไขเทป ทำได้โดยคลิกขวาบนเทป เลือก Symbols ที่ต้องการ นอกจากนี้ยังสามารถสร้างเทปใหม่และบันทึกเทปที่สร้างไว้ก็ได้โดยการกดที่ New tape button หรือไปที่ menu bar เลือก Tape / New tape เพื่อสร้างเทปใหม่ และกดที่ Save tape button หรือไปที่ menu bar เลือก Tape / Save tape เพื่อบันทึกเทป 8 . การกำหนดหัวอ่านเทป ทำได้โดยคลิกขวาบนเทปที่ต้องการ เลือก Set head Enter 9 . การรันโปรแกรม สามารถทำได้โดยไปที่ Playerbar กด Play button หรือ ไปที่ menu bar เลือก Run / Play, กด Pause เพื่อหยุดชั่วคราว , กด Stop เพื่อหยุดการทำงาน , กด Step back เพื่อย้อนกลับ 1 step, กด Step into เพื่อเดินหน้า 1 step, กด Step out เพื่อเดินหน้าแบบก้าวกระโดด 10 . การรันโปรแกรมนั้นสามารถปรับความเร็วในการรัน Machine ได้ 5 ระดับ โดยคลิกที่ Speed menu button แล้วเลือกระดับความเร็ว 11 . การลบ Machine, symbol, variable ทำได้โดยคลิกขวาที่ machine, symbol หรือ variable ที่ต้องการลบ ที่ tree view ด้านซ้ายมือ เลือก Delete และการลบคำสั่งแต่ละตำสั่งทำได้โดยเลือกคำสั่งที่ต้องการลบ แล้วกด Delete button หรือ คลิกขวาที่ตัวคำสั่งนั้น เลือก Delete 15. เปรียบเทียบ Transition Diagram แบบ Visual Turing กับ แบบมาตรฐาน แสดง Main Machine ของ Copy String แสดง Left # Machine แสดง Right # Machine แสดง Tape ข้อมูลนำเข้า แสดง Tape ข้อมูลออก แสดง Transition Diagram แบบมาตรฐานของ Copy String 16. โปรแกรม Turing Machine Simulator เป็นโปรแกรมบนเวบไซต์ ( http :// ironphoenix.org / tril / tm / ) ที่พัฒนาด้วยภาษาจาวา ( Java Applet ) ใช้จำลองตัวแบบการคำนวณ Turing Machine โดยผู้ใช้สามารถสร้างแบบจำลองของ Turing Machine ในรูปแบบของรหัสสัญลักษณ์ และ input เทปเพื่อทดสอบตัวแบบได้ นอกจากนี้ยังมีตัวอย่างของ Turing Machine เพื่อเป็นแนวทางในการศึกษาและเรียนรู้อีกด้วย แสดงรหัสสัญลักษณ์ที่ใช้แทน Transition diagram ของ Turing Machine และแสดงเทปที่ input เข้ามา 17. จากรูป เป็น Turing Machine สำหรับการลบเลข ( Subtractor ) ที่ประกอบด้วยเลข 1 เพียงอย่างเดียวและผลลัพธ์ต้องไม่เป็นลบ สามารถอธิบายรหัสสัญลักษณ์ที่ใช้แทน Transition diagram ของ Turing Machine ได้ดังนี้ 1,_ 1,_,> หมายถึง เมื่ออยู่ที่ state1 ถ้าหัวอ่าน read Null ให้เขียน Null แล้วขยับหัวอ่านไปทางขวา และไป state1 1,1 1,1,> หมายถึง เมื่ออยู่ที่ state1 ถ้าหัวอ่าน read 1 ให้เขียน 1 แล้วขยับหัวอ่านไปทางขวา และไป state1 1, - 1, - ,> หมายถึง เมื่ออยู่ที่ state1 ถ้าหัวอ่าน read - ให้เขียน - แล้วขยับหัวอ่านไปทางขวา และไป state1 1, = 2,_,< หมายถึง เมื่ออยู่ที่ state1 ถ้าหัวอ่าน read = ให้เขียน Null แล้วขยับหัวอ่านไปทางซ้าย และไป state2 2,1 3, = ,< หมายถึง เมื่ออยู่ที่ state2 ถ้าหัวอ่าน read 1 ให้เขียน = แล้วขยับหัวอ่านไปทางซ้าย และไป state3 2, - H,_,< หมายถึง เมื่ออยู่ที่ state2 ถ้าหัวอ่าน read - ให้เขียน Null แล้วขยับหัวอ่านไปทางซ้าย และไป state H ( Halt state ) 3,1 3,1,< หมายถึง เมื่ออยู่ที่ state3 ถ้าหัวอ่าน read 1 ให้เขียน 1 แล้วขยับหัวอ่านไปทางซ้าย และไป state3 3, - 4, - ,< หมายถึง เมื่ออยู่ที่ state3 ถ้าหัวอ่าน read - ให้เขียน - แล้วขยับหัวอ่านไปทางซ้าย และไป state4 4,_ 4,_,< หมายถึง เมื่ออยู่ที่ state4 ถ้าหัวอ่าน read Null ให้เขียน Null แล้วขยับหัวอ่านไปทางซ้าย และไป state4 4,1 1,_,> หมายถึง เมื่ออยู่ที่ state4 ถ้าหัวอ่าน read 1 ให้เขียน Null แล้วขยับหัวอ่านไปทางขวา และไป state1