ฉันจะแปลงเครื่องทัวริงให้จดจำภาษาเป็นไวยากรณ์ที่ไม่ จำกัด ได้อย่างไร


19

จากบทความ Wikipedia นี้ไวยากรณ์ที่ไม่ จำกัด นั้นเทียบเท่ากับเครื่องจักรทัวริง บทความบันทึกว่าฉันสามารถแปลงเครื่องทัวริงให้เป็นไวยากรณ์ที่ไม่ จำกัด แต่แสดงให้เห็นเพียงวิธีการแปลงไวยากรณ์เป็นเครื่องทัวริง

ฉันจะทำอย่างนั้นและแปลงเครื่องทัวริงให้ตระหนักถึงภาษาเป็นไวยากรณ์ที่ไม่ จำกัด ได้อย่างไร ฉันได้ลองเปลี่ยนกฎการเปลี่ยนเป็นกฎไวยากรณ์ แต่เครื่องทัวริงสามารถกำหนดค่าสถานะที่แตกต่างกันมากมายเช่นกัน ...L

คำตอบ:


9

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

ความคิดที่สำคัญที่สองคือเราต้องย้อนกระบวนการ: TM ใช้คำว่าเป็นอินพุตและแปลงเป็นหรือ0หรือไม่ยุติ อย่างไรก็ตามไวยากรณ์ต้องสร้างคำขึ้นมา โชคดีที่ไวยากรณ์ไม่ได้มีการกำหนดค่าโดยเนื้อแท้ดังนั้นเราสามารถปล่อยให้มัน "เดา" ซึ่งการยอมรับ1มาจาก; ทุกคำที่ทำให้ TM ยอมรับนั้นสามารถสร้างขึ้นได้101

ให้ชุดของ nonterminals wlog ให้Q 0เป็น start-state-nonterminal และQ F ⊆ Qชุดของ accept-states-nonterminals อันดับแรกเราต้องเริ่มกฎที่สร้างการยอมรับการกำหนดค่าทั้งหมดQ={Q0,…,Qk}Q0QF⊆Q

S→#1Qf#สำหรับทุก FQf∈QF

ในทำนองเดียวกันเรายุติเมื่อเรา "เข้าถึง" สถานะเริ่มต้นในตำแหน่งที่ถูกต้องกล่าวคือในสัญลักษณ์แรก:

#aQ0→#aสำหรับทุก∈ Σa∈Σ

การแปลการเปลี่ยนสถานะที่แท้จริงนั้นเป็นการส่งตรง:

aQ→cQ′  for a,c∈Σ∧(a,Q,N)∈δ(c,Q′)aQb→acQ′ for a,b,c∈Σ∧(b,Q,L)∈δ(c,Q′)abQ→cQ′b for a,b,c∈Σ∧(a,Q,R)∈δ(c,Q′)

มีเทคนิคบางอย่างที่ต้องรีดออก ตัวอย่างเช่นคุณต้องกำจัดเครื่องหมายขอบเขตในตอนท้าย ที่สามารถทำได้โดยการวางไข่ nonterminals พิเศษสองตัวแทนการยกเลิกแลกเปลี่ยนพวกนั้นไปยังจุดสิ้นสุดแล้วลบ#พร้อมกับพวกเขา นอกจากนี้ต้องสร้าง#เพิ่มเติมตามความต้องการ ที่ต้องมีการเจาะของกฎที่มีd = ####d=#

#Q0Σ

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