กลับไปหน้าบทความ

อ่าน 4 นาที

ตัวอย่างเครื่องจักรทัวริง

ต่อไปนี้เป็นตัวอย่างเพิ่มเติมเพื่อเสริมบทความเรื่อง เครื่องจักรทัวริ ง

ตัวอย่างเครื่องจักรทัวริง

ต่อไปนี้เป็นตัวอย่างเพิ่มเติมเพื่อเสริมบทความเรื่องเครื่องจักรทัวริ

ตัวอย่างแรกของทัวริง

ตารางต่อไปนี้คือตัวอย่างแรกสุดของ ทิวริง (ทิวริง 1937):

"1. สามารถสร้างเครื่องจักรเพื่อคำนวณลำดับ 0 1 0 1 0 1..." (0 <blank> 1 <blank> 0...) [ 1 ]
การกำหนดค่า พฤติกรรม
การกำหนดค่า m (สถานะ) สัญลักษณ์เทป การทำงานของเทป การกำหนดค่า m ขั้นสุดท้าย(สถานะ)
ว่างเปล่า พี0, อาร์
ว่างเปล่า อาร์ อี
อี ว่างเปล่า พี1, อาร์ เอฟ
เอฟ ว่างเปล่า อาร์

ในส่วนที่เกี่ยวกับการกระทำที่เครื่องจักรทำจริง ๆ นั้น Turing (1936) [ 2 ]ระบุไว้ดังนี้:

"ตาราง [ตัวอย่าง] นี้ (และตารางที่ตามมาทั้งหมดในลักษณะเดียวกัน) จะต้องเข้าใจว่าสำหรับการกำหนดค่าที่อธิบายไว้ในสองคอลัมน์แรก การดำเนินการในคอลัมน์ที่สามจะดำเนินการตามลำดับ จากนั้นเครื่องจะเปลี่ยนไปใช้การกำหนดค่า m ในคอลัมน์สุดท้าย" [ 2 ]

เขาทำให้เรื่องนี้ชัดเจนมากเมื่อเขาลดตารางข้างต้นให้เหลือคำสั่งเดียวที่เรียกว่า "b" [ 3 ]แต่คำสั่งของเขามี 3 บรรทัด คำสั่ง "b" มีสัญลักษณ์ที่เป็นไปได้ 3 แบบ {ไม่มี, 0, 1} แต่ละความเป็นไปได้จะตามด้วยลำดับของการกระทำจนกว่าเราจะมาถึงคอลัมน์ขวาสุด ซึ่งการกำหนดค่า m สุดท้ายคือ "b":

การกำหนดค่า m ปัจจุบัน (คำสั่ง) สัญลักษณ์เทป การดำเนินการบนเทป การกำหนดค่า m ขั้นสุดท้าย (คำสั่ง)
ไม่มี พี0
0 อาร์, อาร์, พี1
1 อาร์, อาร์, พี0

ดังที่นักวิจารณ์หลายท่าน รวมถึงทิวริง (1937) เองได้สังเกตไว้ (เช่น โพสต์ (1936), โพสต์ (1947), คลีน (1952), หวัง (1954)) คำสั่งของทิวริงไม่ใช่หน่วยย่อย — สามารถลดความซับซ้อนของแบบจำลองลงได้อีกโดยไม่ลดกำลังการคำนวณ ดูเพิ่มเติมได้ที่เครื่องจักรโพสต์-ทิวริ

ตามที่ระบุในบทความเครื่องจักรทัวริงทัวริงเสนอให้แบ่งตารางของเขาออกเป็นอะตอมย่อยเพิ่มเติมโดยอนุญาตให้พิมพ์/ลบเพียงครั้งเดียวตามด้วยการเคลื่อนที่ของเทป L/R/N เพียงครั้งเดียว เขาให้ตัวอย่างตารางเล็ก ๆ แรกที่แปลงแล้วดังนี้: [ 4 ]

การกำหนดค่า m ปัจจุบัน (สถานะทัวริง) สัญลักษณ์เทป การดำเนินการพิมพ์ เทป-โมชั่น การกำหนดค่า m ขั้นสุดท้าย (สถานะทัวริง)
คำถามที่ 1ว่างเปล่า พี0 อาร์ q 2
q 2ว่างเปล่า P ว่างเปล่า เช่น E อาร์ q 3
q 3ว่างเปล่า พี1 อาร์ q 4
q 4ว่างเปล่า P ว่างเปล่า เช่น E อาร์ คำถามที่ 1

คำกล่าวของทัวริงยังคงบ่งบอกถึงการดำเนินการพื้นฐานห้าอย่าง ที่คำสั่งหนึ่งๆ (การกำหนดค่า m) เครื่องจักรจะดำเนินการดังนี้:

  1. สังเกตสัญลักษณ์เทปที่อยู่ใต้หัว
  2. โดยอิงตามสัญลักษณ์ที่สังเกตได้ จะนำไปยังลำดับคำสั่งที่เหมาะสมเพื่อใช้งาน
  3. พิมพ์สัญลักษณ์ S jหรือลบ หรือไม่ทำอะไรเลย
  4. เลื่อนเทปไปทางซ้าย ขวา หรือไม่เลื่อนเลย
  5. ไปสู่การกำหนดค่า m ขั้นสุดท้ายสำหรับสัญลักษณ์นั้น

เนื่องจากการกระทำของเครื่องจักรทัวริงไม่ใช่การกระทำแบบอะตอมิก การจำลองเครื่องจักรจึงต้องแยกชุด 5-tuple แต่ละชุดออกเป็นลำดับของการกระทำที่ง่ายกว่า หนึ่งในความเป็นไปได้ — ซึ่งใช้ในตัวอย่าง "พฤติกรรม" ของเครื่องจักรนี้ต่อไปนี้ — มีดังนี้:

(q i ) ทดสอบสัญลักษณ์เทปใต้หัว: ถ้าสัญลักษณ์คือ S 0ให้ไปที่ q i .01 ถ้าสัญลักษณ์คือ S 1ให้ไปที่ q i .11 ถ้าสัญลักษณ์คือ S 2ให้ไปที่ q i .21 เป็นต้น
(q i .01) พิมพ์สัญลักษณ์ S j 0 หรือลบ หรือไม่ทำอะไรเลย จากนั้นไปที่ q i .02
(q i .02) เลื่อนเทปไปทางซ้ายหรือขวา หรือไม่เลื่อนเลย จากนั้นไปที่ qm0
(q i .11) พิมพ์สัญลักษณ์ S j 1 หรือลบ หรือไม่ทำอะไรเลย จากนั้นไปที่ q i .12
(q i .12) เลื่อนเทปไปทางซ้ายหรือขวา หรือไม่เลื่อนเลย จากนั้นไปที่ qm1
(q i .21) พิมพ์สัญลักษณ์ S j 2 หรือลบ หรือไม่ทำอะไรเลย จากนั้นไปที่ q i .22
(q i .22) เลื่อนเทปไปทางซ้ายหรือขวา หรือไม่เลื่อนเลย จากนั้นไปที่ qm2
(ฯลฯ — ต้องคำนึงถึงสัญลักษณ์ทั้งหมด)

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

ในตัวอย่างต่อไปนี้เกี่ยวกับการทำงานของเครื่องจักร เราจะสังเกตเห็นลักษณะเฉพาะบางประการของแบบจำลองของทัวริง:

ธรรมเนียมการเขียนตัวเลขเฉพาะในช่องสลับกันนั้นมีประโยชน์มาก ฉันจะใช้ธรรมเนียมนี้เสมอ[ 2 ]

ดังนั้นเมื่อพิมพ์ เขาจึงเว้นช่องสี่เหลี่ยมสลับกันไป ช่องสี่เหลี่ยมที่พิมพ์แล้วเรียกว่าช่อง F ส่วนช่องสี่เหลี่ยมว่างๆ ที่อยู่ระหว่างนั้นอาจใช้เป็น "เครื่องหมาย" และเรียกว่า "ช่อง E" ซึ่งหมายถึง "ลบได้ง่าย" ช่อง F เหล่านั้นก็คือ "ช่องรูปภาพ" ของเขา และจะมีเพียงสัญลักษณ์ 1 หรือ 0 เท่านั้น ซึ่งเขาเรียกว่า "ตัวเลข" (เช่นเดียวกับ "เลขฐานสอง")

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

ลำดับ ตัวระบุคำสั่ง ศีรษะ
. . . . .. . . . . . . . . . . . .
1 1. . . . .. . . . . . . . . . . . .
2 2. . . . .0. . . . . . . . . . . .
3 3. . . . .. 0. . . . . . . . . . .
4 4. . . . .1. 0. . . . . . . . . .
5 1. . . . .. 1. 0. . . . . . . . .
6 2. . . . .0. 1. 0. . . . . . . .
7 3. . . . .. 0. 1. 0. . . . . . .
8 4. . . . .1. 0. 1. 0. . . . . .
9 1. . . . .. 1. 0. 1. 0. . . . .
10 2. . . . .0. 1. 0. 1. 0. . . .
11 3. . . . .. 0. 1. 0. 1. 0. . .
12 4. . . . .1. 0. 1. 0. 1. 0. .
13 1. . . . .. 1. 0. 1. 0. 1. 0.
14 2. . . . .0. 1. 0. 1. 0. 1. 0

ภาพนี้แสดง "ขั้นตอนการทำงาน" เดียวกัน โดยรวมขั้นตอนการพิมพ์เทปและการเคลื่อนย้ายต่างๆ ไว้ด้วย:

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

ตัวอย่างเช่น สมมติว่าเทปของเขาไม่ได้ว่างเปล่าตั้งแต่แรก จะเกิดอะไรขึ้น? เครื่องจักรทัวริงจะอ่านค่าที่แตกต่างจากค่าที่ตั้งใจไว้

ซับรูทีนการคัดลอก

นี่คือซับรูทีนที่สำคัญมากซึ่งใช้ในรูทีน "คูณ"

เครื่องจักรทัวริงตัวอย่างนี้จัดการกับสตริงของ 0 และ 1 โดยที่ 0 แทนด้วยสัญลักษณ์ว่าง หน้าที่ของมันคือการเพิ่มค่า 1 ซ้ำเป็นสองเท่าในทุกๆ ชุดของ 1 ที่พบในเทป โดยการเขียน 0 คั่นระหว่าง 1 เหล่านั้น ตัวอย่างเช่น เมื่อหัวอ่านอ่าน "111" มันจะเขียน 0 จากนั้นเขียน "111" ผลลัพธ์ที่ได้จะเป็น "1110111"

เพื่อให้บรรลุเป้าหมาย เครื่องจักรทัวริงนี้ต้องการสถานะการทำงานเพียง 5 สถานะ ซึ่งเรียกว่า {s 1 , s 2 , s 3 , s 4 , s 5 } แต่ละสถานะจะทำการกระทำ 4 อย่าง:

  1. อ่านสัญลักษณ์ใต้หัวข้อ
  2. เขียนสัญลักษณ์เอาต์พุตที่รัฐกำหนด
  3. เลื่อนเทปไปทางซ้ายหรือขวาตามที่รัฐกำหนด
  4. เปลี่ยนไปใช้สถานะถัดไปซึ่งถูกกำหนดโดยสถานะปัจจุบัน
การกำหนดค่า m เริ่มต้น

(คำแนะนำปัจจุบัน)

สัญลักษณ์เทป การดำเนินการพิมพ์ การเคลื่อนไหวของเทป การกำหนดค่า m ขั้นสุดท้าย

(คำแนะนำถัดไป)

10 เอ็น เอ็น ชม
11 อี อาร์ 2
20 อี อาร์ 3
21 พี1 อาร์ 2
30 พี1 แอล . 4
31 พี1 อาร์ 3
. 40 อี แอล . 5
. 41 พี1 แอล . 4
. 50 พี1 อาร์ 1
. 51 พี1 แอล . 5
ชม

คำสั่งพิมพ์ : พิมพ์สัญลักษณ์ S หรือลบหรือไม่ทำอะไรเลย

การ "รัน" ลำดับการทำงานของเครื่องจักรผ่านการกำหนดค่าเครื่องจักร 16 รูปแบบ (หรือที่เรียกว่าสถานะทัวริง):

ลำดับ ตัวระบุคำสั่ง ศีรษะ
1 10 0 0 0 110 0 0 0 0
2 20 0 0 0 0 10 0 0 0 0
3 20 0 0 0 0 010 0 0 0
4 30 0 0 0 0 00 10 0 0
5 . 40 0 0 0 1010 0 0 0
6 . 50 0 0 10 10 0 0 0 0
7 . 50 0 10 100 0 0 0 0
8 10 0 0 10 110 0 0 0
9 20 0 0 0 100 10 0 0
10 30 0 0 0 0 10 0 10 0
11 30 0 0 0 0 010 0 10
12 . 40 0 0 0 110 0 10 0
13 . 40 0 0 1100 10 0 0
14 . 50 0 110 010 0 0 0
15 10 0 0 110110 0 0
16 ชม 0 0 0 110110 0 0

พฤติกรรมของเครื่องจักรนี้สามารถอธิบายได้ว่าเป็นลูป: มันเริ่มต้นที่ s 1แทนที่เลข 1 ตัวแรกด้วยเลข 0 จากนั้นใช้ s 2เคลื่อนไปทางขวา ข้ามเลข 1 และเลข 0 ตัวแรกที่พบ s 3จะข้ามลำดับเลข 1 ถัดไป (ในตอนแรกไม่มี) และแทนที่เลข 0 ตัวแรกที่พบด้วยเลข 1 s 4เคลื่อนกลับไปทางซ้าย ข้ามเลข 1 ไปเรื่อยๆ จนกว่าจะพบเลข 0 แล้วเปลี่ยนไปใช้ s 5 s 5จะเคลื่อนไปทางซ้าย ข้ามเลข 1 ไปเรื่อยๆ จนกว่าจะพบเลข 0 ที่เขียนไว้โดย s 1ใน ตอนแรก

มันจะแทนที่เลข 0 ด้วยเลข 1 เลื่อนไปทางขวาหนึ่งตำแหน่ง แล้วกลับเข้าไปที่เลข1อีกครั้งเพื่อวนลูปอีกรอบ

กระบวนการนี้ดำเนินต่อไปจนกว่า s 1จะพบ 0 (ซึ่งเป็น 0 ที่อยู่ตรงกลางระหว่างสตริง 1 สองสตริง) ณ เวลานั้นเครื่องจะหยุดทำงาน

คำอธิบายทางเลือก

คำอธิบายอีกแบบหนึ่งมองว่าปัญหาอยู่ที่ว่าจะติดตามจำนวน "1" ได้อย่างไร เราไม่สามารถใช้สถานะหนึ่งสถานะสำหรับแต่ละจำนวนที่เป็นไปได้ (เช่น สถานะสำหรับ 0, 1, 2, 3, 4, 5, 6 เป็นต้น) เพราะถ้าเป็นเช่นนั้น เราจะต้องมีสถานะอนันต์เพื่อแทนจำนวนธรรมชาติทั้งหมด และเครื่องสถานะมีจำนวนจำกัดเราจึงต้องติดตามสิ่งนี้โดยใช้เทปในรูปแบบใดรูปแบบหนึ่ง

หลักการทำงานพื้นฐานคือ การคัดลอกเลข "1" แต่ละตัวไปยังอีกด้านหนึ่ง โดยการเคลื่อนที่ไปมา – มันฉลาดพอที่จะจำได้ว่ามันอยู่ส่วนไหนของการเดินทางแล้ว โดยละเอียดแล้ว มันจะส่งต่อเลข "1" แต่ละตัวไปยังอีกด้านหนึ่ง โดยการจดจำเลข "0" ที่อยู่ตรงกลาง และจดจำเลข "0" ที่อีกด้านหนึ่งเพื่อรู้ว่ามันถึงจุดสิ้นสุดแล้ว มันจะกลับมาโดยใช้วิธีเดียวกัน โดยตรวจจับเลข "0" ตรงกลาง และจากนั้นก็ตรวจจับเลข "0" ที่ด้านเดิม เลข "0" ที่ด้านเดิมนี้เป็นกุญแจสำคัญในการไขปริศนาว่ามันติดตามจำนวนเลข "1" ได้อย่างไร

เทคนิคก็คือ ก่อนที่จะทดเลข "1" มันจะทำเครื่องหมายว่าเลขนั้น "ถูกใช้ไปแล้ว" โดยการแทนที่ด้วย "0" เมื่อมันกลับมา มันจะเติม "0" กลับเข้าไปด้วย "1" จากนั้นก็ไปยังเลขถัดไปทำเครื่องหมายด้วย "0" และทำซ้ำวงจร โดยทดเลข "1" นั้นไปเรื่อยๆ ใน แต่ละรอบที่ทวนไปมา เครื่องหมาย "0" จะเคลื่อนเข้าใกล้จุดศูนย์กลางมากขึ้นหนึ่งขั้นนี่คือวิธีที่มันติดตามว่ามันได้ทวนเลข "1" ไปกี่ตัวแล้ว

เมื่อมันกลับมา เครื่องหมาย "0" จะดูเหมือนจุดสิ้นสุดของกลุ่ม "1" สำหรับมัน - "1" ใดๆ ที่ถูกนำไปแล้วจะมองไม่เห็นสำหรับมัน (อีกด้านหนึ่งของเครื่องหมาย "0") ดังนั้นจึงเหมือนกับว่ามันกำลังทำงานกับ "1" จำนวน (N-1) ตัว - คล้ายกับการพิสูจน์โดย การ อุปมาน ทางคณิตศาสตร์

การ "ดำเนินการ" แบบเต็มรูปแบบที่แสดงผลลัพธ์ของการ "เคลื่อนไหว" ระหว่างขั้นตอนต่างๆ

ตารางคำสั่ง Turing ต่อไปนี้ได้มาจาก Peterson: [ 5 ] "busy beaver สามสถานะจะเขียนเลข 1 จำนวน 6 ตัวก่อนที่จะหยุด" Peterson ขยับหัวอ่าน ในแบบจำลองต่อไปนี้เทปจะเคลื่อนที่ 0 คืออักขระว่าง: เทปเริ่มต้นด้วยเซลล์ทั้งหมดเป็น 0

สัญลักษณ์เทป สถานะปัจจุบันAสถานะปัจจุบันBสถานะปัจจุบันC
เขียนสัญลักษณ์ ย้ายเทป รัฐถัดไป เขียนสัญลักษณ์ ย้ายเทป รัฐถัดไป เขียนสัญลักษณ์ ย้ายเทป รัฐถัดไป
0 1 แอล บี1 อาร์ เอ1 อาร์ บี
1 1 อาร์ ซี1 แอล บี1 เอ็น หยุด

ภาพวาด "สถานะ" ของ Busy Beaver 3 สถานะแสดงลำดับเหตุการณ์ภายในที่จำเป็นต่อการดำเนินการ "สถานะ" จริงๆ ดังที่กล่าวไว้ข้างต้น Turing (1937) ทำให้ชัดเจนอย่างยิ่งว่านี่คือการตีความที่ถูกต้องของ 5-tuple ที่อธิบายคำสั่ง[ 1 ]สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการแยกย่อย 5-tuple ของ Turing โปรดดูที่เครื่องจักรหลัง Turing :

ตารางต่อไปนี้แสดงผลการทำงานแบบ "ย่อ" — เฉพาะสถานะของทัวริงเท่านั้น:

ลำดับ ตัวระบุคำสั่ง ศีรษะ
1 0 0 0 0 0 0 00 0 0 0 0 0 0
2 บี0 0 0 0 0 0 01 0 0 0 0 0 0
3 เอ0 0 0 0 0 110 0 0 0 0 0 0
4 ซี0 0 0 0 1100 0 0 0 0 0 0
5 บี0 0 0 11100 0 0 0 0 0 0
6 เอ0 0 111100 0 0 0 0 0 0
7 บี0 0 0 11111 0 0 0 0 0 0
8 บี0 0 0 0 111110 0 0 0 0
9 บี0 0 0 0 0 111110 0 0 0
10 บี0 0 0 0 0 0 111110 0 0
11 บี0 0 0 0 0 0 0111110 0
12 เอ 0 0 0 0 0 1111110 0 0
13 ซี0 0 0 0 1111110 0 0 0
14 ชม0 0 0 0 1111110 0 0 0

ลำดับการทำงานทั้งหมดของ Busy Beaver แบบ 3 สถานะ ผลลัพธ์ของสถานะ Turing (สิ่งที่ Turing เรียกว่า "m-configurations" หรือ "machine-configurations") แสดงเป็นสีเทาในคอลัมน์ A และอยู่ใต้คำสั่งของเครื่อง (คอลัมน์ AF-AU) ด้วย:

ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Turing_machine_examples&oldid=1317091874 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ ตัวอย่างเครื่องจักรทัวริง

ต่อไปนี้เป็นตัวอย่างเพิ่มเติมเพื่อเสริมบทความเรื่อง เครื่องจักรทัวริ ง

ตัวอย่างแรกของทัวริง

ตารางต่อไปนี้คือตัวอย่างแรกสุดของ ทิวริง (ทิวริง 1937):

ซับรูทีนการคัดลอก

นี่คือซับรูทีนที่สำคัญมากซึ่งใช้ในรูทีน "คูณ"

คำอธิบายทางเลือก

คำอธิบายอีกแบบหนึ่งมองว่าปัญหาอยู่ที่ว่าจะติดตามจำนวน "1" ได้อย่างไร เราไม่สามารถใช้สถานะหนึ่งสถานะสำหรับแต่ละจำนวนที่เป็นไปได้ (เช่น สถานะสำหรับ 0, 1, 2, 3, 4, 5, 6 เป็นต้น) เพราะถ้าเป็นเช่นนั้น เราจะต้องมีสถานะอนันต์เพื่อแทนจำนวนธรรมชาติทั้งหมด...