เครื่องทัวริงสามารถตัดสินใจได้หรือไม่ว่า NFA ยอมรับสตริงที่มีความยาวช่วงไพร์มหรือไม่?


14

ฉันต้องการทราบว่าปัญหาต่อไปนี้สามารถตัดสินใจได้:

อินสแตนซ์: NFA A ที่มี n สถานะ

คำถาม: มีจำนวนเฉพาะบางส่วนที่ p ยอมรับว่ามีความยาวของสตริงไหม

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

NFA สามารถเปลี่ยนเป็น DFA หรือนิพจน์ปกติได้อย่างง่ายดายหากโซลูชันต้องการแน่นอน

คำถามนี้เป็นสิ่งที่ฉันได้ไตร่ตรองว่าเป็นคำถามเตรียมทำเองสำหรับรอบชิงชนะเลิศที่ฉันจะมาใน 2 สัปดาห์


ฉันไม่แน่ใจว่านี่เป็นระดับปริญญาตรีหรือไม่ดังนั้นจึงไม่ต้องกังวลกับการลบ มันอาจกลายเป็นปัญหาที่ยากลองดูเช่นterrytao.wordpress.com/2007/05/25/…

ฉันสร้างมันขึ้นมาดังนั้นมันอาจจะยาก ฉันไม่พบหลักฐานที่พิสูจน์ไม่ได้ว่ามีปัญหาที่เกี่ยวข้องกับ NFAs / DFAs ซึ่งเป็นสาเหตุที่ฉันคิดว่ามันน่าสนใจที่จะลอง

ฉันเชื่อว่าสิ่งที่คุณเชื่อมโยงกับเป็นปัญหาที่แตกต่าง (ง่ายกว่า) มันสามารถตอบ "NFA ยอมรับความยาวได้กี่สตริง?" การใช้สูตรที่มีให้เราจะต้องตรวจสอบอินสแตนซ์จำนวนมากของเพื่อดูว่ามีสตริงที่ NFA ยอมรับหรือไม่ว่ามีความยาวที่สำคัญ ฉันไม่ได้ถามเกี่ยวกับนายกคนใดคนหนึ่งฉันถามพวกเขาทั้งหมด sL(n)

คำตอบ:


17

ความยาวของสายอักขระที่ยอมรับโดย DFA ก่อให้เกิดชุด semilinear (เช่นในทฤษฎีบทของ Parikhสำหรับภาษาเสรีบริบท) คำอธิบายของสิ่งเหล่านั้นไม่ได้ยากเกินกว่าที่จะมาได้ทฤษฎีบทของดีริชเลต์มีความก้าวหน้าทางเลขคณิตใด ๆ ของรูปแบบกับgcd ( a , b ) = 1มีค่าอนันต์ของจำนวนเฉพาะa+kGCD(a,)=1

การดึงข้างต้นเข้าด้วยกันจะช่วยให้อัลกอริทึมตรวจสอบว่าภาษาปกติของคุณ (หรือแม้แต่บริบทที่ไม่มีบริบท) ประกอบด้วยสตริงที่มีความยาวเฉพาะ แน่นอนไม่ได้คำถามง่ายๆ IMVHO ...


ฉันขอขอบคุณความช่วยเหลือในการทำความเข้าใจทฤษฎีบทของ Parikh ในกรณีนี้ เห็นได้ชัดว่าเราสามารถเปลี่ยน NFA เป็น PDA ได้โดยไม่ต้องใช้ stack ใน PDA ชุดย่อยเชิงเส้นระบุรอบหรือไม่ ถ้าเป็นเช่นนั้นมันทำงานอย่างไร
เย็น

1
kk

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

@ Chill เพียงแค่ดูความคิดเห็นก่อนหน้าของฉัน การอธิบายความยาวที่เป็นไปได้นั้นไม่ยากนักเพียงแค่ลบสัญลักษณ์บน DFA เป็นกราฟและตรวจสอบการเดินระหว่างสถานะเริ่มต้นเริ่มต้นและสถานะสุดท้าย ยากที่จะทำให้เป็นทางการง่ายต่อการคิดออกด้วยมือสำหรับตัวอย่างที่กำหนด
vonbrand

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