สิ่งที่ขาดหายไปคือวิธีที่คุณรัน Turing Machine บนสตริงเพื่อรับ Enumerator แทนที่จะสร้างแต่ละสายเรียกใช้Mแล้วส่งออกสายนี้ถ้าMยอมรับ - ซึ่งตามที่คุณระบุจะไม่ทำงาน - คุณทำสิ่งต่อไปนี้ซึ่ง adopts กลยุทธ์ของการจำลองหลายตัวอย่างของMในสตริงที่แตกต่างกัน "ใน ขนาน".MMMM
สมมติเทปมีเนื้อหา
ที่W ฉันคือบางคำภายใต้การพิจารณาและS ฉันคือสถานะปัจจุบันของM
ปฏิบัติการWฉัน นี่แสดงว่าn⟨ w1, S1⟩ # ⋯ # ⟨ wn, Sn⟩WผมSผมMWผมnสำเนาของมีการจำลอง W ฉันจะถูกเก็บไว้เพื่อให้เรารู้ว่าสิ่งที่การป้อนข้อมูลเดิมMWผม
ตอนนี้เรียกใช้ลูปต่อไปนี้
- ในตอนท้ายเทปเขียนสตริงถัดจากพร้อมกับการกำหนดค่าเริ่มต้นSของM , ที่อยู่, การเขียนW ∈ Σ* * * *SM ⟩# ⟨ w , S⟩
- จำลองแต่ละสำเนาของบนเทปสำหรับขั้นตอนเดียว (อาจใช้เทปอื่น)M
- หากใด ๆ ของ เข้าสู่สถานะการยอมรับให้ใส่สตริงที่สอดคล้องกันลงในเทปเอาต์พุต ลบอินสแตนซ์ของ Mนี้ออกจากเทปMM
- หากใด ๆ ของ เข้าสู่สถานะปฏิเสธให้ลบอินสแตนซ์ของ M นั้นออกจากเทปMM
- ไปที่ขั้นตอนที่ 1
มันไม่ได้เป็นเรื่องยากที่จะยืนยันว่าทุกสายรับการยอมรับจากW ∈ Σ* * * *ในที่สุดก็จะถูกส่งออกในเทปM