นิยามภาษาแบบวนซ้ำและนับซ้ำสำหรับคนธรรมดา


24

ฉันเจอคำจำกัดความของภาษาแบบเรียกซ้ำและนับซ้ำ แต่ฉันไม่เข้าใจว่ามันคืออะไร

บางคนได้โปรดบอกฉันว่าพวกเขาอยู่ในคำง่ายๆ?

คำตอบ:


17

ไม่ได้จริงๆ คุณควรอ่านหนังสือสองสามเล่ม บางทีเราสามารถแนะนำบางอย่าง

ที่กล่าวว่าภาษาซ้ำถ้ามีเครื่องทัวริงกว่าสามารถตอบ "ใช่" หรือ "ไม่" เสมอถ้าสตริงที่กำหนดเป็นส่วนหนึ่งของภาษานี้ หากเรายกข้อกำหนดนี้เพียงแค่พูดว่า "ใช่" สำหรับสตริงของภาษา (มันสามารถทำงานได้ตลอดไปหากไม่มี) จากนั้นเรามีภาษาที่นับซ้ำ ไม่ยากที่จะเห็นว่าภาษาแบบเรียกซ้ำสามารถตัดสินใจได้โดยเครื่องทัวริงในขณะที่ภาษาที่นับจำนวนซ้ำสามารถมีสตริงของรายการ (ตัวอย่างเช่นโดยการเรียกใช้จำนวนทัวริงของเครื่องจักรในแบบขนาน - ใช่นี่เป็นไปได้ดู dove-tailing - บนตัวอักษรทั้งหมดและส่งออกสตริงถ้า TM ที่สอดคล้องกันยอมรับ) มีคำจำกัดความที่เทียบเท่าจำนวนมาก


18

มีปัญหาเกิดขึ้นซ้ำ ๆ หรือตัดสินใจได้หากเครื่องจักรสามารถคำนวณคำตอบได้

ปัญหาจะนับซ้ำหรือsemidecidableซ้ำถ้าเครื่องสามารถมั่นใจได้ว่าคำตอบนั้นเป็นค่าบวก


3

ภาษาเป็นเพียงชุดของสตริง อาจเป็นไปได้ของความสำคัญเชิงอนันต์

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

ภาษาจะเรียกซ้ำถ้า TM ข้างต้นไม่เพียง แต่เอาท์พุทสตริงทั้งหมดในภาษา แต่ยังทำตามลำดับ! (พูดตามพจนานุกรม)

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


1
สำหรับฉันคำจำกัดความของคุณดีที่สุดรายละเอียดสูงสุด: ลำดับต้องเป็นคำสั่งที่คำนวณได้: จะต้องเป็นไปได้ที่จะเปรียบเทียบสองสตริงใด ๆ กับ TM ที่ยกเลิก คำจำกัดความอื่น ๆ อีกมากมายทำให้เกิดความสับสนในการนับและ decidability เหล่านี้เป็นแนวความคิดที่แตกต่างกันแม้ว่าพวกเขาจะสามารถพิสูจน์ได้เทียบเท่าสำหรับชุดของสตริง จำกัด (ดูตัวอย่าง:. ? Can ภาษาที่มีสตริงอนันต์จะนับซ้ำ .
Babou

2

ภาษาที่เรียกซ้ำนั้นสามารถถอดรหัสได้โดยเครื่องทัวริงบางตัวนั่นคือมี TM ที่สามารถให้อินพุตสตริงใด ๆ (ตามตัวอักษรที่เหมาะสม) ตอบได้อย่างถูกต้องใช่ถ้าสตริงอยู่ในภาษาหรือไม่ถ้าไม่ใช่

ภาษาที่มีการแจกแจงซ้ำ ๆ จะได้รับการยอมรับเท่านั้นนั่นคือมีทัวริง Machine ที่ยอมรับเมื่อสตริงอยู่ในภาษา แต่อาจวนซ้ำตลอดไปหากสตริงไม่ได้อยู่ในภาษา


0

ฉันรู้สึกว่าความแตกต่างที่สำคัญระหว่างภาษาแบบเรียกซ้ำและแบบนับซ้ำคือเครื่อง Recursive ทัวริงหยุดในสถานะที่ไม่ใช่ครั้งสุดท้ายหากไม่ยอมรับสตริง

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


0

==> ภาษาจะเรียกซ้ำถ้ามีเครื่องทัวริงที่ยอมรับทุกสายในภาษาและปฏิเสธถ้ามันไม่ได้อยู่ในภาษา ตัวอย่างเช่นให้นำเครื่องทัวริง M และ String w: ถ้า string w เป็นสมาชิกของเครื่องทัวริง M ดังนั้น M หยุดการทำงานในสถานะสุดท้ายมิฉะนั้นจะปฏิเสธการคำนวณ ==> ==> ภาษาสามารถนับซ้ำได้หากมีเครื่องทัวริงที่ยอมรับสตริงทุกสายในภาษาและปฏิเสธหากไม่ได้อยู่ในภาษาอาจวนซ้ำตลอดไป ตัวอย่างเช่นให้นำเครื่องทัวริง M และ String w: ถ้า string w เป็นภาษา M จะหยุดการทำงานในสถานะสุดท้าย มิฉะนั้นจะปฏิเสธการคำนวณหรืออาจรันตลอดไป

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