Home    Previous page เครื่องทัวริงและเครื่องทัวริงครอบจักรวาล Next page
เครื่องทัวริง (Turing Machines)
ความสามารถของเครื่องที่ศึกษามายอมรับภาษาที่มีข้อจำกัดอยู่ เช่น ภาษาปกติ (โดยออโตมาตาจำกัด) ภาษาไม่พึ่งบริบท (โดยออโตมาตากดลง) ในขั้นต่อไปเราจะสร้างเครื่องที่สามารถยอมรับภาษาอื่นที่เครื่องเหล่านั้นยอมรับไม่ได้ เรียกว่าเครื่องทัวริง เครื่องทัวริงถูกคิดค้นครั้งแรกโดย อลัน ทัวริง (Alan Turing) ในปี ค.ศ. 1936 โดยที่หลักการของเครื่องนี้ถือได้ว่าเป็นแม่แบบของสถาปัตยกรรมของเครื่องคอมพิวเตอร์ที่มีหน่วยประมวลผลเดี่ยว ในปัจจุบันเครื่องทัวริงสามารถแบ่งออกได้เป็น
  1. เครื่องทัวริงแถบเดี่ยวปลายเปิดทางเดียว (One-way infinite single tape Turing machine),
  2. เครื่องทัวริงแถบเดี่ยวปลายเปิดสองทาง (Two-way infinite single tape Turing machine)
  3. หรือ เครื่องทัวริงหลายแถบ (Multitape Turing machine)
ตามจำนวนแถบและการใช้งานแถบ ในยุคแรกทัวริงออกแบบเครื่องในลักษณะของเครื่องทัวริงแถบเดี่ยวปลายเปิดสองทาง แต่เพื่อความง่ายต่อการเข้าใจ เราจะเริ่มศึกษาเครื่องทัวริงแถบเดี่ยวปลายเปิดทางเดียวก่อน แล้วค่อยพิจารณาเครื่องทัวริงที่ใช้แถบเดี่ยวปลายเปิดสองทาง และเครื่องทัวริงหลายแถบ ไม่ว่าอย่างไรก็ตามเราสามารถแสดงได้ว่าเครื่องทัวริงทั้งหมดสมมูลกัน

บทนิยาม เครื่องทัวริงแถบเดี่ยวปลายเปิดทางเดียว (One-way infinite single tape Turing machine) แต่ละเครื่องประกอบด้วย
  1. เซตของสถานะ (state) ทั้งหมดซึ่งเป็นเซตจำกัด เขียนแทนด้วย Q
  2. เซตของสัญลักษณ์รับเข้า (input symbol) ทั้งหมดซึ่งเป็นเซตจำกัด เขียนแทนด้วย
  3. เซตของสัญลักษณ์แถบ (tape symbol) ทั้งหมดซึ่งเป็นเซตจำกัด เขียนแทนด้วย สังเกตว่า
  4. เซตของสถานะยอมรับ (accepting state) ทั้งหมดซึ่งเป็นสับเซตของ Q เขียนแทนด้วย F
  5. สถานะเริ่มต้น (initial state) ซึ่งเป็นสมาชิกใน Q เขียนแทนด้วย q0
  6. สัญลักษณ์พิเศษที่บอกตำแหน่งซ้ายสุดของแถบ เขียนแทนด้วย Z0 และสัญลักษณ์ที่บอกว่าไม่มีข้อมูลบันทึกในช่อง เขียนแทนด้วย โดยที่ Z0 ไม่ใช่ตัวเดียวกับ
  7. ฟังก์ชันการผ่าน (transition function) เป็นฟังก์ชันที่มีโดเมนเป็นสับเซตของ Q × และพิสัยเป็นสับเซตของ Q × × {R, L, S} และมีเงื่อนไขว่า
    (qf, i) ไม่มีค่าทุก qf F, i
    และถ้า (q, Z0) = (p, X, D) แล้ว D L และ X = Z0
บทนิยาม แผนภาพการผ่าน (transition diagram) ของเครื่องทัวริงแถบเดี่ยวปลายเปิดทางเดียว (Q, , , , q0, Z0, F) คือ กราฟเทียมที่มีทิศทาง มี Q เป็นเซตของจุดยอด มีลูกศรชี้เข้าที่จุดยอด q0 จุดยอดทุกจุดใน F มีวงกลมล้อมรอบสองวง และถ้า (q, a) = (p, X, D) แล้วจะต้องมีอาร์กเชื่อมจากจุดยอด q ไปยังจุดยอด p โดยมี (a), (X, D) เขียนกำกับ ดังรูป

ตัวอย่างที่ 1: จงเขียนแผนภาพการผ่านของเครื่องทัวริง M = (Q, , , , q0, Z0, F) โดยที่ Q = {q0, q1, q2}, = {0, 1}, = {0, 1, X, Z0, }, F = {q1} และ
(q0, Z0) = (q0, Z0, R), (q0, 0) = (q1, X, R), (q0, 1) = (q2, 1, R),
(q2, 0) = (q1, X, R), (q2, 1) = (q0, 1, R)

บทนิยาม สำหรับเครื่องทัวริงแถบเดี่ยวปลายเปิดทางเดียว M = (Q, , , , q0, Z0, F) เรากล่าวว่า c เป็น โครงแบบ (configuration) หนึ่งของเครื่องทัวริง M ก็ต่อเมื่อ c = (q, i ) โดยที่ q Q, *, i และ *
ซึ่งหมายความว่า ขณะนั้นเครื่องทัวริง M กำลังอยู่ในสถานะ q สายอักขระที่ปรากฎบนแถบคือ i (อาจจะไม่ใช่สายอักขระรับเข้า) และหัวอ่านชี้อยู่ที่ i ดังรูป

เรากล่าวว่า c เป็นโครงแบบเริ่มต้น (initial configuration) ก็ต่อเมื่อ c = (q0, Z0w) เมื่อ w เป็นสายอักขระรับเข้า โดยทั่วไปจะใช้สัญลักษณ์ c0 แทนโครงแบบเริ่มต้น
เรากล่าวว่า c เป็นโครงแบบหยุด (halting configuration) ก็ต่อเมื่อ c = (q, i ) โดยที่ (q, i) ไม่มีค่า
ถ้า c = (q, i ) และ c' = (q', ' i' ') ต่างก็เป็นโครงแบบของเครื่องทัวริง M และ (q, i) = (p, X, D) แล้ว เรากล่าวว่า c' เป็นโครงแบบถัดจาก c เขียนแทนด้วย c c' ก็ต่อเมื่อ p = q' และ
  1. ถ้า D = R แล้ว ' = X และ = i'
  2. ถ้า D = L แล้ว = 'i' และ = X
  3. ถ้า D = S แล้ว ' = , = และ i' = X
เรากล่าวว่า c' เป็นโครงแบบที่ได้มาจาก c เขียนแทนด้วย c c' ก็ต่อเมื่อ c = c' หรือ มีโครงแบบ c1, c2, ..., cn ที่ c = c1, c' = cn และ c1 c2, c2 c3, ..., cn-1 cn
บทนิยาม ให้ M เป็นเครื่องทัวริงและ w เป็นสายอักขระรับเข้า จะกล่าวว่า M ยอมรับ w ก็ต่อเมื่อ มีโครงแบบ c ที่ c0 c โดยที่สถานะที่ปรากฎในโครงแบบ c เป็นสถานะหนึ่งที่เป็นสถานะยอมรับ
ภาษาที่ M ยอมรับ เขียนแทนด้วย L(M) คือเซตของสายอักขระรับเข้าทั้งหมดที่ M ยอมรับ จะได้ L(M) = { w * | M ยอมรับ w }
สำหรับภาษา L ใดๆ เรากล่าวว่า M ยอมรับ L ก็ต่อเมื่อ L = L(M)
ตัวอย่างที่ 2 จงตรวจสอบว่า เครื่องทัวริงในตัวอย่างที่ 1 ยอมรับสายอักขระต่อไปนี้หรือไม่
  1. 010
  2. 1101
ตัวอย่างที่ 3 จงเขียนแผนภาพการผ่านของเครื่องทัวริงแถบเดี่ยวปลายเปิดทางเดียวที่ยอมรับ L เมื่อ
  1. L = { w {0,1}* | w มี 0 ปรากฎอย่างน้อยหนึ่งตัว }
  2. L = {0n1n | n }
  3. L = { wwR | w {0, 1}* }
  4. L = { ww | w {0, 1}* }
บทนิยาม เครื่องทัวริงแถบเดี่ยวปลายเปิดสองทาง (Two-way infinite single tape Turing machine) แต่ละเครื่องประกอบด้วย
  1. เซตของสถานะ (state) ทั้งหมดซึ่งเป็นเซตจำกัด เขียนแทนด้วย Q
  2. เซตของสัญลักษณ์รับเข้า (input symbol) ทั้งหมดซึ่งเป็นเซตจำกัด เขียนแทนด้วย
  3. เซตของสัญลักษณ์แถบ (tape symbol) ทั้งหมดซึ่งเป็นเซตจำกัด เขียนแทนด้วย สังเกตว่า
  4. เซตของสถานะยอมรับ (accepting state) ทั้งหมดซึ่งเป็นสับเซตของ Q เขียนแทนด้วย F
  5. สถานะเริ่มต้น (initial state) ซึ่งเป็นสมาชิกใน Q เขียนแทนด้วย q0
  6. ฟังก์ชันการผ่าน (transition function) เป็นฟังก์ชันที่มีโดเมนเป็นสับเซตของ Q × และพิสัยเป็นสับเซตของ Q × × {R, L, S} และมีเงื่อนไขว่า (q, i) ไม่มีค่าทุก q F, i
แต่มีเงื่อนไขเพิ่มเติมว่าขณะเริ่มต้นจะอยู่ในสถานะ q0 อ่านสายอักขระรับเข้าเริ่มจากตัวที่อยู่ซ้ายสุดของสายอักขระนั้น โดยทั่วไปจะเขียนแทนเครื่องทัวริงนี้ด้วย (Q, , , , q0, F)
บทนิยาม แผนภาพการผ่าน (transition diagram) ของเครื่องทัวริงแถบเดี่ยวปลายเปิดสองทาง (Q, , , , q0, F) จะเหมือนกับของเครื่องทัวริงแถบเดี่ยวปลายเปิดทางเดียว คือ กราฟเทียมที่มีทิศทาง มี Q เป็นเซตของจุดยอด มีลูกศรชี้เข้าที่จุดยอด q0 จุดยอดทุกจุดใน F มีวงกลมล้อมรอบสองวง และถ้า (q, a) = (p, X, D) แล้วจะต้องมีอาร์กเชื่อมจากจุดยอด q ไปยังจุดยอด p โดยมี (a), (X, D) เขียนกำกับ
นิยามของโครงแบบ โครงแบบเริ่มต้น โครงแบบหยุด โครงแบบถัดจาก และโครงแบบที่ได้มาจากคำ ของเครื่องทัวริงแถบเดี่ยวปลายเปิดสองทาง เหมือนกับเครื่องทัวริงแถบเดี่ยวปลายเปิดทางเดียว
ตัวอย่างที่ 4 จงเขียนแผนภาพการผ่านของเครื่องทัวริงแถบเดี่ยวปลายเปิดสองทางที่ยอมรับ L เมื่อ L = { w {0,1}* | n(0, w) = n(1, w) }
บทนิยาม เครื่องทัวริง k-แถบ (k-tape Turing machine) แต่ละเครื่องประกอบด้วย (Q, , , , q0, Z0, F) โดยที่ฟังก์ชันการผ่าน (transition function) เป็นฟังก์ชันที่มีโดเมนเป็นสับเซตของ Q × ( {}) × k Q × k × {R, L, S}k+1 โดยที่ (q, a, x1, x2, ..., xk) ไม่มีค่าทุก q F, a {}, (x1, x2, ..., xk) k และ
ถ้า (q, a, x1, x2, ..., xk) = (q', y1, y2, ..., yk, D, D1, D2, ..., Dk) แล้ว D L และ Di L สำหรับแต่ละ i {1, 2, ..., k} ที่ xi = Z0
หมายเหตุ
  1. เราถือว่าเครื่องทัวริง k-แถบ ประกอบด้วยแถบทั้งหมด k+1 แถบ (นับแถบบันทึกข้อมูลรับเข้าเพิ่มอีกหนึ่งแถบ และที่เหลือเป็นแถบสำหรับหน่วยความจำอีก k แถบ) โดยแถบหน่วยความจำ k แถบเป็นแถบที่มีปลายเปิดทางเดียว
  2. หัวอ่านของแถบบันทึกรับเข้าเคลื่อนขวาหรืออยู่ที่เดิมเท่านั้น (จึงไม่จำเป็นต้องมีสัญลักษณ์พิเศษ Z0)
  3. หัวอ่านของแถบสำหรับหน่วยความจำสามารถเคลื่อนซ้าย ขวาหรืออยู่ที่เดิมก็ได้ ดังนั้นจึงต้องมีสัญลักษณ์พิเศษ Z0 เพื่อบอกตำแหน่งซ้ายสุดของแต่ละแถบ
  4. หัวอ่านแต่ละแถบเคลื่อนที่ได้อย่างเป็นอิสระไม่ขึ้นต่อกัน
  5. ในกรณีที่ไม่ได้ระบุ k เราเรียกรวมๆ ว่า เครื่องทัวริงหลายแถบ (multitape Turing Machine)
  6. ในกรณีที่เราต้องการให้เครื่องทัวริงสามารถเขียนข้อมูลออก เราเพิ่มเซตของข้อมูลออกทั้งหมด และฟังก์ชันของข้อมูลออกดังนี้
    เครื่องทัวริง k-แถบที่มีข้อมูลออก (k-tape Turing machine with output) แต่ละเครื่องประกอบด้วย Q, , , , q0, Z0, F เหมือนในบทนิยามของเครื่องทัวริง k-แถบ และให้ O เป็นเซตของสัญลักษณ์ข้อมูลออก และ เป็นฟังก์ชันข้อมูลออก ที่นิยามโดย
    :partial Q × ( {}) × k O × {R, S}
บทนิยาม แผนภาพการผ่าน (transition diagram) ของเครื่องทัวริง k-แถบ (Q, , , , q0, Z0, F) คือกราฟเทียมระบุทิศทางที่มี Q เป็นเซตของจุดยอดทั้งหมด มีลูกศรชี้เข้าที่จุดยอด q0 จุดยอดทุกจุดใน F มีวงกลมล้อมรอบสองวง และถ้า (q, a, x1, x2, ..., xk) = (p, y1, y2, ..., yk, D, D1, D2, ..., Dk) แล้ว จะต้องมีอาร์กเชื่อมจากจุดยอด q ไปยังจุดยอด p โดยมี
(a, x1, x2, ..., xk), (y1, y2, ..., yk, D, D1, D2, ..., Dk) เขียนกำกับ


ในกรณีที่เครื่องทัวริงมีข้อมูลออก และถ้า (q, a, x1, x2, ..., xk) = (o, D') แล้ว เราจะเติม /(o, D') ต่อท้ายคือ

บทนิยาม เรากล่าวว่า c เป็น โครงแบบ (configuration) หนึ่งของเครื่องทัวริง k-แถบ M ก็ต่อเมื่อ
c = (q, xiy, 1 A11, 2A2 2, ..., k Akk)
โดยที่ q Q, x *, i {}, y * และ j *, Aj , j * สำหรับทุก j = 1, 2, ..., k ซึ่งหมายถึง ขณะนั้นเครื่องทัวริง M อยู่ในสถานะ q สายอักขระที่ปรากฎบนแถบบันทึกรับเข้าคือ xiy โดยมีหัวอ่านชี้อยู่ที่ i และสำหรับแต่ละ j {1, 2, ..., k} สายอักขระที่ปรากฎบนแถบหน่วยความจำแถบที่ j คือ jAjBj โดยมีหัวอ่านชี้อยู่ที่ Aj ดังรูป

เราเรียก c ว่าเป็น โครงแบบเริ่มต้น (initial configuration) ก็ต่อเมื่อ q = q0, x = , i {}, 0 = 1 = ... = k = , A1 = A2 = ... = Ak = Z0 และ 1 = 2 = ... = k = โดยทั่วไปเราจะใช้สัญลักษณ์ c0 แทนโครงแบบเริ่มต้น ดังนั้น
c0 = (q0, iy, Z0, Z0, ..., Z0)
เรากล่าวว่า c เป็น โครงแบบหยุด (halting configuration) ก็ต่อเมื่อ q F หรือ (q, i, A1, A2, ..., Ak) ไม่มีค่า
สำหรับเครื่องทัวริงที่มีข้อมูลออก ถ้าบนแถบข้อมูลออกปรากฎสายอักขระ uo โดยมีหัวอ่านชี้ที่ o แล้ว เรานิยามโครงแบบโดยเพิ่ม uo เข้าไปในตอนท้ายของโครงแบบ เขียนได้เป็น
c = (q, xiy, 1 A11, 2A2 1, ..., k Akk, uo)
และโครงแบบเริ่มต้นคือ
c0 = (q0, iy, Z0, Z0, ..., Z0, )
ส่วนโครงแบบหยุดมีนิยามเหมือนเดิม
บทนิยาม
ให้ c = (q, xiy, 1A1 1, 2 A22, ..., kAk k) และ
c' = (q', x'i'y', 1'A1' 1', 2' A2'2', ..., k'Ak' k') เป็นโครงแบบของเครื่องทัวริง k แถบ M เครื่องหนึ่ง
ถ้า (q, i, A1, A2, ..., Ak) = (p, y1, y2, ..., yk, D, D1, D2, ..., Dk) แล้ว เรากล่าวว่า c' เป็น โครงแบบถัดจาก c (เขียนแทนด้วย c c') ก็ต่อเมื่อ
  1. p = q'
  2. ข้อใดข้อหนึ่งในสองข้อนี้ต้องเป็นจริง
    2.1 ถ้า D = R แล้ว x' = xi และ y = i'y'
    2.2 ถ้า D = S แล้ว x = x', i = i' และ y = y'
  3. สำหรับแต่ละ j {1, 2, ..., k} ข้อใดข้อหนึ่งในสามข้อนี้ต้องเป็นจริง
    3.1 ถ้า Dj = R แล้ว j' = jyj, j = Aj' j'
    3.2 ถ้า Dj = L แล้ว j = j'Aj' และ j' = yj j
    3.3 ถ้า Dj = S แล้ว j = j', Aj' = yj และ j = j'
เรากล่าวว่า c' เป็น โครงแบบที่ได้มาจาก c (เขียนแทนด้วย c c') ก็ต่อเมื่อ c = c' หรือมีโครงแบบ c1, c2, ..., cn ที่ c = c1, c' = cn และ c1 c2, c2 c3, ..., cn-1 cn
สำหรับเครื่องทัวริงที่มีข้อมูลออก ถ้า c = (q, xiy, 1A1 1, 2 A22, ..., kAk k, uo) และ
c' = (q', x'i'y', 1'A1' 1', 2' A2'2', ..., k'Ak' k', , u'o')
ต่างก็เป็นโครงแบบของเครื่องนี้ และถ้า
ถ้า (q, i, A1, A2, ..., Ak) = (p, y1, y2, ..., yk, D, D1, D2, ..., Dk) และ
(q, i, A1, A2, ..., Ak) = (v, N)
แล้ว นิยามของ c c' จะเหมือนที่กล่าวข้างต้น กับเงื่อนไขเพิ่มเติมคือ
  1. ถ้า N = R แล้ว u' = uv และ o' =
  2. ถ้า N = S แล้ว u' = u และ o' = v
สำหรับนิยาม c c' เหมือนกับข้างต้น
ตัวอย่างที่ 5 จงเขียนแผนภาพการผ่านของเครื่องทัวริงหลายแถบที่ยอมรับ L เมื่อ L = { w {0,1}* | n(0, w) n(1, w) }
นอกจากนี้เรายังสามารถสร้างเครื่องทัวริงที่คำนวณค่าของฟังก์ชัน แล้วแสดงผลลัพธ์บนแถบข้อมูลออก ดังนี้
ตัวอย่างที่ 6 จงเขียนแผนภาพการผ่านของเครื่องทัวริงที่คำนวณค่าของฟังก์ชัน f : ที่นิยามโดย f(n) = n+1 ทุก n เมื่อกำหนดว่า n เขียนแทนด้วย
  1. สายอักขระของ 1
  2. เลขฐานสอง
หมายเหตุ
  1. เรามักกำหนดให้เครื่องทัวริงที่คำนวณค่าฟังก์ชันมีแถบบันทึกรับเข้า และแถบข้อมูลออก โดยที่ขณะเริ่มต้นบนแถบรับข้อมูลเข้าจะมี สายอักขระที่แทนสมาชิกในโดเมนของฟังก์ชัน และเมื่อจบการทำงาน บนแถบช้อมูลออกจะปรากฎสายอักขระที่แทนค่าของฟังก์ชันที่จุดนั้น
  2. เนื่องจากจำนวนฟังก์ชันที่ต่างกันทั้งหมดจาก ไปยัง มีจำนวนอนันต์แบบนับไม่ได้ แต่จำนวนเครื่องทัวริงที่คำนวณค่าของฟังก์ชันจากเซตดังกล่าวมีจำนวนอนันต์แบบนับได้ ดังนั้นจะมีฟังก์ชันบางชนิดซึ่งไม่มีเครื่องทัวริงที่คำนวณค่าของฟังก์ชันนั้นได้
  3. ฟังก์ชันที่มีโดเมนเป็นสับเซตของ k และพิสัยเป็นสับเซตของ ที่เราสามารถสร้างเครื่องทัวริงที่คำนวณค่าของฟังก์ชันนั้นได้ มีชื่อเรียกว่า ฟังก์ชันทัวริง-คำนวณได้ (Turing-computable function) ซึ่งกลุ่มของฟังก์ชันนี้จะเป็นกลุ่มเดียวกับกลุ่มของฟังก์ชันรีเคอร์ซีฟ (recursive function)
ตัวอย่างที่ 7 จงสร้างเครื่องทัวริงที่คำนวณค่าของฟังก์ชันการบวกจำนวนนับสองจำนวน การหักออกของจำนวนนับสองจำนวน การคูณของจำนวนนับสองจำนวน
บทนิยาม เครื่องทัวริงแถบเดี่ยวปลายเปิดทางเดียวเชิงไม่กำหนด (Nondeterministic one-way infinite single tape Turing machine) เรียกสั้นๆ ว่า เอ็นทีเอ็ม (NTM) แต่ละเครื่องเป็นเครื่องทัวริงแถบเดี่ยวปลายเปิดทางเดียวที่มีฟังก์ชันการผ่าน สอดคล้องเงื่อนไขดังนี้
:partialQ × เซตของสับเซตจำกัดทั้งหมดของ Q × × {R, L, S} โดยที่ (q, a) ไม่มีค่า ทุก q F, a
ถ้า (p, X, D) (q, Z0) แล้ว D L
โครงแบบของเอ็นทีเอ็ม เขียนแทนด้วย (q, i) เช่นเดียวกับนิยามของเครื่องทัวริงแถบเดี่ยวปลายเปิดทางเดียว และถ้า c = (q, i ) และ c' = (q', ' i') เป็นโครงแบบของเอ็นทีเอ็ม แล้วจะกล่าวว่า c' เป็นโครงแบบถัดจาก c (เขียนแทนด้วย c c') ก็ต่อเมื่อ ข้อใดข้อหนึ่งในสามข้อต่อไปนี้ต้องเป็นจริง
  1. (q', X, R) (q, i), ' = X และ = i'
  2. (q', X, L) (q, i), = 'i' และ ' = X
  3. (q', X, S) (q, i), i' = X, = และ = '
และเรากล่าวว่า c' เป็นโครงแบบที่ได้มาจาก c (เขียนแทนด้วย c c') ก็ต่อเมื่อ c = c' หรือมีโครงแบบ c1, c2, ..., cn ที่ c = c1, c' = cn และ c1 c2, c2 c3, ..., cn-1 cn
แผนภาพการผ่าน (Transition diagram) ของเอ็นทีเอ็ม จะเหมือนกับของเครื่องทัวริงแถบเดี่ยวปลายเปิดทางเดียว สำหรับนิยามของเครื่องทัวริงเชิงไม่กำหนดอื่น ๆ ก็นิยามได้ในทำนองเดียวกัน
ตัวอย่างที่ 8 ให้ M = (Q, , , , q0, Z0, F) เป็นเอ็นทีเอ็มที่มี Q = {q0, q1, q2}, = {0, 1}, = {0, 1, , X, Y}, F = {q2} และ นิยามดังนี้
Z0 01 Y
q0 {(q0, Z0, R)}{(q1, X, R)} {(q0, 1, R), (q1, Y, R)} {(q0, Y, R)}
q1  {(q0, 0, L)} {(q2, Y, L)} 
q2      
จงตรวจสอบว่า M ยอมรับสายอักขระ 101 และ 100 หรือไม่

เครื่องทัวริงครอบจักรวาล (Universal Turing Machines)
เครื่องทัวริงที่ได้พิจารณา เปรียบเสมือนโปรแกรมแต่ละโปรแกรมที่สร้างเพื่อแก้ปัญหาเฉพาะอย่าง แต่โดยหลักการทำงานของ คอมพิวเตอร์ที่แท้จริงแล้ว ต้องสามารถทำงานได้หลายหลากขึ้นอยู่กับโปรแกรมที่ถูกเขียน เราจะศึกษาการสร้างเครื่องทัวริงที่จำลองการทำงานของ เครื่องทัวริงแถบเดี่ยวปลายเปิดทางเดียวเชิงกำหนดทุกเครื่องภายใต้สัญลักษณ์แบบเดียวกัน เพื่อความสะดวกเราจะกำหนด = {0, 1, , Z0} เครื่องนี้เราจะให้ชื่อว่า เครื่องทัวริงครอบจักรวาล (Universal Turing Machines) หรือเรียกสั้น ๆ ว่า ยูทีเอ็ม (UTM)
สำหรับสัญลักษณ์ของสายอักขระรับเข้า เรากำหนดให้ใช้ได้เฉพาะ 0 หรือ 1 เท่านั้น ดังนั้นเราต้องมีการกำหนดรหัสให้กับเครื่องทัวริง ต่อไปเราจะนิยามการกำหนดรหัสที่ใช้กับเครื่องทัวริง
บทนิยาม ให้ M = (Q, , , , q0, Z0, F) เป็นเครื่องทัวริงแถบเดี่ยวปลายเปิดทางเดียวเชิงกำหนดใด ๆ ที่มี = {0, 1, , Z0}, Q = {q1, q2, ..., qm} โดยที่ q1 เป็นสถานะเริ่มต้น และ F = {q2}

  • เราแทนสัญลักษณ์ที่ปรากฎบนแถบด้วย X1, X2, X3, X4 สำหรับ 0, 1, , Z0 ตามลำดับ
  • เราแทนการเลื่อนหัวอ่านด้วย D1, D2, D3 สำหรับ R, L และ S ตามลำดับ
  • และสำหรับแต่ละ i และ r {1, 2, ..., m}, j และ n {1, 2, 3, 4}, k {1, 2, 3},
    เราแทน (qi, Xj) = (qr, Xn, Dk) ด้วยรหัส (code):
    00...i ตัว ...0100...j ตัว...0100...r ตัว ...0100...n ตัว...0100...k ตัว...0
และแทนรหัสของเครื่องทัวริง M ด้วยรหัสของเครื่อง (Turing code)
111code111code211...11codet111
เมื่อ code1, code2, ..., codet เป็นรหัสของค่า ทั้งหมด ของเครื่องทัวริงนี้
เราใช้สัญลักษณ์ <M> แทนรหัสของเครื่องทัวริง และถ้า w เป็นสายอักขระนำเข้าของ M เราจะแทนสัญลักษณ์ <M,w> หมายถึง 111code111code211...11codet111w
ตัวอย่างที่ 9 ให้ M = ({q1, q2, q3}, {0,1}, {0, 1, , Z0}, , q1, Z0, {q2}) เป็นเครื่องทัวริงแถบเดี่ยวปลายเปิดทางเดียวเชิงกำหนดที่มี นิยามดังนี้
(q1, Z0) = (q1, Z0, R), (q1, 0) = (q1, 0, L), (q1, 1) = (q3, 0, R), (q3, 0) = (q1, 1, R), (q3, 1) = (q2, 0, R), (q3, ) = (q3, 1, L)
จงเขียนรหัสของเครื่องทัวริงนี้
ยูทีเอ็ม เปรียบได้กับเครื่องคอมพิวเตอร์ที่เราใช้งานอยู่ในปัจจุบัน และเครื่องทัวริงแต่ละเครื่องที่ถูกเข้ารหัสในแถบข้อมูลนำเข้าที่ยูทีเอ็มทำการจำลองเปรียบได้กับโปรแกรมต่าง ๆ ที่เครื่องคอมพิวเตอร์ใช้งานอยู่ เราจะใช้สัญลักษณ์ Lu แทนภาษาที่ยูทีเอ็มยอมรับ นั้นคือ
Lu = {<M, w> | M เป็นเครื่องทัวริง, w {0, 1}* และ M ยอมรับ w} {0, 1}*

Home | Previous | Next


© Copyright by กรุง สินอภิรมย์สราญ