21
Turing Machine ดทำโดย นำงสำวจอมขว กล ำอินทร์ ้นม ธยมศึกษำปีท 4/1 เลขท 27

งานคอมพิวเตอร์.Ppt (1)

Embed Size (px)

Citation preview

TuringMachine

จัดท ำโดย

นำงสำวจอมขวัญ กล ำอนิทร์

ช้ันมัธยมศึกษำปทีี 4/1 เลขที 27

แอลนั แมธสิัน ทวัริง (Alan Mathison Turing)• แอลนั แมธสิัน ทัวริง (Alan Mathison Turing) เป็นนักคณติศาสตร,์ นักตรรกศาสตร,์ นักรหัสวิทยา และวรีบรุษุสงคราม ชาวองักฤษ และเปน็ทีย่อมรบัวา่เปน็บดิาของวทิยาการคอมพวิเตอร์ เขาได้สรา้งรปูแบบที่เปน็ทางการทางคณติศาสตร์ของการระบุ อลักอรทิึมและการค านวณ โดยใช้เครือ่งจักรทัวริง ซึง่ตามขอ้ปญัหาเชริช์-ทัวรงิไดก้ล่าววา่เปน็รูปแบบของเครือ่งจักร ค านวณเชงิกลที่ครอบคลมุทกุๆ รปูแบบที่เปน็ไปได้ในทางปฏบิตั ิในระหวา่งสงครามโลก

ครัง้ทีส่อง ทัวริงมสีว่นส าคญัในการแกะรหสัลบัของฝา่ยเยอรมนั โดยเขาเปน็หวัหนา้ของกลุ่ม Hut 8 ที่ท าหนา้ที่ในการแกะรหัสของเครือ่งอนีิกมาที่ใชใ้นฝา่ยทหารเรอื

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

เครื่องจักรทัวริง (the Turing machine)

• เครือ่งจกัรทวัรงิ (the Turing machine) คือเครื่องจักรนามธรรมที่แอลนั ทัวริงไดค้ิดค้นขึ้นใน ค.ศ. 1936 (พ.ศ. 2479) เพื่อการนิยามอัลกอริทึมหรือ 'กระบวนการเชิงกล' อย่างชัดเจนแบบคณิตศาสตร์ เครื่องจักรทัวริงได้ถูกใช้อย่างแพรห่ลายในการศกึษาวิทยาการคอมพิวเตอร์เชิงทฤษฎี โดยเฉพาะในทฤษฎีความซับซ้อนในการค านวณและทฤษฎีการค านวณ ข้อปัญหา (thesis) ที่ว่าโมเดลของเครื่องจักรทัวริงนั้นครอบคลุมกระบวนการเชิงกลทั้งหมด ในการค านวณทางตรรกศาสตร์และคณิตศาสตร์ เป็นที่รู้จักกันในชื่อข้อปัญหาของเชิร์ช-ทัวริง

แนวคิดของเครื่องจักรทัวริง

แนวคดิของเครือ่งจักรทัวริง นั้นต้องการจะอธิบายการท างานของคนที่ปฏิบัติตามขั้นตอน

ที่ระบุไว้อย่างชัดเจน เพื่อแก้ไขข้อมูลที่ถูกบันทึกไว้ในกระดาษที่เรียงต่อกันความยาวไม่จ ากัด โดยที่กระดาษแผ่นหน่ึงจะสามารถเก็บสัญลักษณ์ได้หนึ่งตัวจากสัญลักษณ์ที่เป็นไปได้จ านวนจ ากัด ผู้ปฏิบัติงานน้ันจะต้องจดจ าสถานะหน่ึงจากสถานะท่ีเป็นไปได้ท่ีมีจ านวนจ ากัด และขั้นตอนที่ระบุให้เขาท างานน้ันจะอยู่ในลักษณะเช่น "ถ้าสถานะของคุณคือ 42 และสัญลักษณ์บนกระดาษที่คุณเห็นคือ '0', ให้เปลี่ยนสัญลักษณ์นี้เป็น '1', จดจ าว่าสถานะใหม่เป็น 17 และไปท างานต่อกับกระดาษแผ่นถัดไป"เครื่องจักรทัวริงนั้นไม่เกี่ยวข้องกับการทดสอบของทัวริง ซึ่งถูกใช้เพื่ออธิบายความหมายของปญัญาประดิษฐ์โดยทัวริง

เครื่องจักรทัวริงสากล

เครื่องจักรทัวริงที่สามารถจ าลองการท างานของเครื่องจักรทัวริงเครื่องใด ๆ ก็ได้เรียกว่า เครือ่งจักรทัวรงิสากล (universal Turing machine) หรือเรียกสั้นๆ ว่า เครือ่งจักรสากล ทัวริงอธิบายไว้ใน ค.ศ. 1947 (พ.ศ. 2490) ว่า........สามารถแสดงได้ว่ามีเครื่องจกัรพิเศษในรูปแบบนี้ ที่สามารถท างานของเครื่องจักรอื่น ๆ ในรูปแบบดังกล่าวได้ทั้งหมด นอกจากนี้เครื่องจักรน้ียังสามารถใช้เป็นโมเดลส าหรับเครื่องจักรในแบบอื่น ๆ เครื่องจักรพิเศษนี้สามารถเรียกได้ว่าเป็นเครื่องจักรสากล ........

วิธีใช้งานโปรแกรม

• วธิีใชง้านโปรแกรม1. เปิดโปรแกรม Visual Turing ขึ้นมา โปรแกมจะสร้างโปรเจคเอาไว้ให้ ดงัในรูปที่ 7 หรือ

หากต้องการสร้างโปรเจคใหมใ่ห้กดที่ New button หรือ File/New หรือ Ctrl+N

• 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

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

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

โปรแกรม Visual Turing

• โปรแกรม Visual TuringVisual Turing เป็นเครื่องมือที่ใช้ออกแบบและสร้าง

Turing machine โดยน าเสนอในรูปแบบของภาพ graphic สามารถ cut, copy, paste และ undo ได้ สามารถรัน machine ที่สร้างขึ้น และท าการ debug breakpoints รวมถึงสามารถมองเห็นล าดบัการท างานของ machine ในแต่ละขัน้ตอนได้อย่างชดัเจน

เปรยีบเทยีบ Transition Diagram แบบVisual Turing กับ แบบมาตรฐาน

แสดง Main Machine ของ Copy String

แสดง Left # Machine แสดง Right # Machine

แสดง Tape ข้อมูลน าเข้า

แสดง Tape ข้อมูลออก

แสดง Transition Diagram

แบบมาตรฐานของ Copy String

จุดเด่นของโปรแกรม

1. น าเสนอในรูปแบบของภาพ graphic2. มีความยืดหยุ่น สามารถออกแบบและสร้าง Machine ได้ตามท่ีเราต้องการ3. สามารถมองเห็นล าดับการท างานและเส้นทางการเดินไปยังแต่ละโหนด ท าให้เข้าใจ

หลักการท างาน4. Turing machine กับ หัวอ่านบนเทป ท างานสัมพันธ์กัน ท าให้สามารถท าความ

เข้าใจได้ง่าย5. ประหยัดทรัพยากรและหน่วยความจ าของเครือ่ง6. มีความสะดวกในการติดตั้งโปรแกรม เนื่องจากตัว

ติดตั้งเป็นไฟล์นามสกุล .exe7. มีความรวดเร็วในการ execute โปรแกรม

จุดด้อยของโปรแกรม

1. มีข้อจ ากัดเรื่องข้อมูล input และ output 2. การใช้งานค้อนข้างยาก ต้องใช้เวลาในการเรียนรู้ใหม่ เนื่องจากการเขียน Turing machine ใน Visual Turing ไม่เหมือนกับการเขียนแบบมาตรฐานสากล 3. เทปมีความยาวจ ากัด 4. ไม่สามารถเปิดไฟล์ไดค้รั้งละหลายๆไฟล์ เปิดไดค้รั้งละไฟล์เดียว

โปรแกรม Turing Machine Simulator

เป็นโปรแกรมบนเวบไซต์(http://ironphoenix.org/tril/tm/) ที่พัฒนาด้วยภาษาจาวา (Java Applet) ใช้จ าลองตัวแบบการค านวณ Turing Machine โดยผู้ใช้สามารถสร้างแบบจ าลองของ Turing Machine ในรูปแบบของรหัสสัญลักษณ์ และ input เทปเพื่อทดสอบตัวแบบได้ นอกจากน้ียังมีตัวอย่างของ Turing Machine เพื่อเป็นแนวทางในการศึกษาและเรียนรู้อีกด้วย

จากรูป เป็น Turing Machine ส าหรับการลบเลข (Subtractor) ที่ประกอบด้วยเลข1เพียงอย่างเดียวและผลลัพธ์ต้องไม่เป็นลบ สามารถอธิบาย รหัสสัญลักษณ์ที่ใช้แทน Transition diagram ของ Turing Machineได้ดังนี้1,_ 1,_,> หมายถึง เมื่ออยู่ท่ี state1 ถ้าหัวอ่านread Null ให้เขียน Null แล้วขยับหัวอ่านไปทางขวา และไปstate11,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

จุดเด่นของโปรแกรม

1. เป็นโปรแกรมบนเวบไซต์จึงง่ายต่อการเผยแพร่2. มีตัวอย่าง Turing Machine เพื่อแนวทางในการศึกษา3. มีความสามารถในการสร้าง Turing Machine โดยการใช้รหัสสัญลักษณ์และ

สามารถinput เทปเพื่อการตรวจสอบ Outputได้4. สามารถ input เทปที่มีความยาวได้ถึง 15,000 ตัวอักษร5. แสดงข้นตอนการหา output ทั้งแบบ step และ แบบ compute6. ลักษณะของรหัสสัญลักษณ์ที่ใช้เข้าใจ

ง่ายและเป็นไปตามรูปแบบมาตรฐานสากล7. พัฒนาด้วยภาษาจาวา(Java Applet)

จึงท าให้โปรแกรมสามารถใช้งานได้บนทุกๆระบบปฏิบัติการ

จุดด้อยของโปรแกรม1. แม้จะแสดงขั้นตอนการหา output แต่ก็ขาดส่วนที่เป็น Transition

diagram ท าให้ผู้ใช้อาจเกิดปัญหาในการจินตนาการภาพของการไหลเวียนของ state2. ไม่สามารถท าการบันทึก Turing machine ที่ผู้ใช้สร้างขึ้นเองไว้ในรูปแบบ

ของแฟ้มข้อมูลได้ เมื่อผู้ใช้ท าการปิดหน้าต่างเว็บไซต์ หรือ รีเฟรชหน้าจอ Machine ที่สร้างไว้ก็จะหายไป

3. การสร้าง Turing Machine ด้วยรหัสสัญลักษณ์ ล่าช้ากว่ากว่าการสร้างด้วย Transition diagram

4. ผู้ใช้จะต้องติดตั้ง Java Runtime เสียก่อน จึงจะสามารถใช้งานโปรแกรมได้

5. ส าหรับผู้ใช้ที่ไม่สามารถเชื่อมต่อเข้ากับระบบ Internet ก็ไม่สามารถใช้งานโปรแกรมได้

อ้างอิง• http://fuggingitup.blogspot.com

/2007/08/turing-machine.html• http://www.atriumtech.com/cgi

-bin/hilightcgi?Home=/home/InterWeb2000&File=/home2/searchdata/Forums/http/www.pantip.com/cafe/wahkor/topicstock/X1447152/X1447152.html

• http://202.28.94.55/web/320491/2548/web1/g19/doc.html