ทัวริงเป็นที่รู้จัก => นับได้


10

ฉันได้รับหลักฐานการไปจากตัวแจงนับไปยังเครื่องทัวริง (รันตัวแจงนับและดูว่ามันตรงกับอินพุต) แต่ฉันไม่เห็นว่าวิธีอื่นทำงานอย่างไร

ตามบันทึกของฉันและหนังสือ (แนะนำทฤษฎีการคำนวณ - Sipser) เพื่อให้ได้ทัวริง enumerator จากเครื่องทัวริงเราเขียนชุดของตัวอักษรทั้งหมด จากนั้นคุณรัน TM บนอินพุตนี้หากยอมรับการพิมพ์ออกมาแทนที่ด้วยสตริงโฆษณาที่ซ้ำกันใหม่

ปัญหาที่ฉันมีอยู่แน่นอนว่านี่ต้องใช้ภาษาในการตัดสินใจ มิฉะนั้นอาจติดอยู่กับคำที่สามในวงวนไม่สิ้นสุดที่จะไม่ยอมรับหรือปฏิเสธและแน่นอนไม่พิมพ์ทั้งภาษา

ฉันกำลังคิดถึงอะไร

คำตอบ:


9

สิ่งที่ขาดหายไปคือวิธีที่คุณรัน Turing Machine บนสตริงเพื่อรับ Enumerator แทนที่จะสร้างแต่ละสายเรียกใช้Mแล้วส่งออกสายนี้ถ้าMยอมรับ - ซึ่งตามที่คุณระบุจะไม่ทำงาน - คุณทำสิ่งต่อไปนี้ซึ่ง adopts กลยุทธ์ของการจำลองหลายตัวอย่างของMในสตริงที่แตกต่างกัน "ใน ขนาน".MMMM

สมมติเทปมีเนื้อหา ที่W ฉันคือบางคำภายใต้การพิจารณาและS ฉันคือสถานะปัจจุบันของM ปฏิบัติการWฉัน นี่แสดงว่าnW1,S1##Wn,SnWผมSผมMWผมnสำเนาของมีการจำลอง W ฉันจะถูกเก็บไว้เพื่อให้เรารู้ว่าสิ่งที่การป้อนข้อมูลเดิมMWผม

ตอนนี้เรียกใช้ลูปต่อไปนี้

  1. ในตอนท้ายเทปเขียนสตริงถัดจากพร้อมกับการกำหนดค่าเริ่มต้นSของM , ที่อยู่, การเขียนWΣ* * * *SM#W,S
  2. จำลองแต่ละสำเนาของบนเทปสำหรับขั้นตอนเดียว (อาจใช้เทปอื่น)M
  3. หากใด ๆ ของ เข้าสู่สถานะการยอมรับให้ใส่สตริงที่สอดคล้องกันลงในเทปเอาต์พุต ลบอินสแตนซ์ของ Mนี้ออกจากเทปMM
  4. หากใด ๆ ของ เข้าสู่สถานะปฏิเสธให้ลบอินสแตนซ์ของ M นั้นออกจากเทปMM
  5. ไปที่ขั้นตอนที่ 1

มันไม่ได้เป็นเรื่องยากที่จะยืนยันว่าทุกสายรับการยอมรับจากWΣ* * * *ในที่สุดก็จะถูกส่งออกในเทปM


4
อาคา "นกพิราบหาง"
Kaveh
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.