ฉันเจอคำจำกัดความของภาษาแบบเรียกซ้ำและนับซ้ำ แต่ฉันไม่เข้าใจว่ามันคืออะไร
บางคนได้โปรดบอกฉันว่าพวกเขาอยู่ในคำง่ายๆ?
ฉันเจอคำจำกัดความของภาษาแบบเรียกซ้ำและนับซ้ำ แต่ฉันไม่เข้าใจว่ามันคืออะไร
บางคนได้โปรดบอกฉันว่าพวกเขาอยู่ในคำง่ายๆ?
คำตอบ:
ไม่ได้จริงๆ คุณควรอ่านหนังสือสองสามเล่ม บางทีเราสามารถแนะนำบางอย่าง
ที่กล่าวว่าภาษาซ้ำถ้ามีเครื่องทัวริงกว่าสามารถตอบ "ใช่" หรือ "ไม่" เสมอถ้าสตริงที่กำหนดเป็นส่วนหนึ่งของภาษานี้ หากเรายกข้อกำหนดนี้เพียงแค่พูดว่า "ใช่" สำหรับสตริงของภาษา (มันสามารถทำงานได้ตลอดไปหากไม่มี) จากนั้นเรามีภาษาที่นับซ้ำ ไม่ยากที่จะเห็นว่าภาษาแบบเรียกซ้ำสามารถตัดสินใจได้โดยเครื่องทัวริงในขณะที่ภาษาที่นับจำนวนซ้ำสามารถมีสตริงของรายการ (ตัวอย่างเช่นโดยการเรียกใช้จำนวนทัวริงของเครื่องจักรในแบบขนาน - ใช่นี่เป็นไปได้ดู dove-tailing - บนตัวอักษรทั้งหมดและส่งออกสตริงถ้า TM ที่สอดคล้องกันยอมรับ) มีคำจำกัดความที่เทียบเท่าจำนวนมาก
มีปัญหาเกิดขึ้นซ้ำ ๆ หรือตัดสินใจได้หากเครื่องจักรสามารถคำนวณคำตอบได้
ปัญหาจะนับซ้ำหรือsemidecidableซ้ำถ้าเครื่องสามารถมั่นใจได้ว่าคำตอบนั้นเป็นค่าบวก
ภาษาเป็นเพียงชุดของสตริง อาจเป็นไปได้ของความสำคัญเชิงอนันต์
ภาษาสามารถนับซ้ำได้หากมี TM ที่เก็บสตริงเอาต์พุตที่เป็นของภาษา (และมีเฉพาะสตริงดังกล่าว) ดังนั้นในที่สุดสตริงทั้งหมดในภาษาจะอยู่ในเอาต์พุต
ภาษาจะเรียกซ้ำถ้า TM ข้างต้นไม่เพียง แต่เอาท์พุทสตริงทั้งหมดในภาษา แต่ยังทำตามลำดับ! (พูดตามพจนานุกรม)
ฉันแน่ใจว่าคุณสามารถนึกถึงภาษาแบบเรียกซ้ำ (และสร้าง TM ที่ให้ผลลัพธ์ตามลำดับ) มันค่อนข้างยากที่จะเกิดขึ้นกับภาษาที่นับซ้ำได้ (ซึ่งไม่ใช่การเรียกซ้ำ) เว้นแต่ว่าคุณจะอ่านเพิ่มเติมเกี่ยวกับความไม่แน่นอนและการทแยงมุม แต่ภาษาดังกล่าวมีอยู่จริง
ภาษาที่เรียกซ้ำนั้นสามารถถอดรหัสได้โดยเครื่องทัวริงบางตัวนั่นคือมี TM ที่สามารถให้อินพุตสตริงใด ๆ (ตามตัวอักษรที่เหมาะสม) ตอบได้อย่างถูกต้องใช่ถ้าสตริงอยู่ในภาษาหรือไม่ถ้าไม่ใช่
ภาษาที่มีการแจกแจงซ้ำ ๆ จะได้รับการยอมรับเท่านั้นนั่นคือมีทัวริง Machine ที่ยอมรับเมื่อสตริงอยู่ในภาษา แต่อาจวนซ้ำตลอดไปหากสตริงไม่ได้อยู่ในภาษา
ฉันรู้สึกว่าความแตกต่างที่สำคัญระหว่างภาษาแบบเรียกซ้ำและแบบนับซ้ำคือเครื่อง Recursive ทัวริงหยุดในสถานะที่ไม่ใช่ครั้งสุดท้ายหากไม่ยอมรับสตริง
เครื่องทัวริงซ้ำนับซ้ำหากไม่ยอมรับสตริงอาจหยุดอยู่ในสถานะที่ไม่สิ้นสุดหรือวนซ้ำตลอดไปซึ่งไม่ใช่กรณีของภาษาแบบเรียกซ้ำ
==> ภาษาจะเรียกซ้ำถ้ามีเครื่องทัวริงที่ยอมรับทุกสายในภาษาและปฏิเสธถ้ามันไม่ได้อยู่ในภาษา ตัวอย่างเช่นให้นำเครื่องทัวริง M และ String w: ถ้า string w เป็นสมาชิกของเครื่องทัวริง M ดังนั้น M หยุดการทำงานในสถานะสุดท้ายมิฉะนั้นจะปฏิเสธการคำนวณ ==> ==> ภาษาสามารถนับซ้ำได้หากมีเครื่องทัวริงที่ยอมรับสตริงทุกสายในภาษาและปฏิเสธหากไม่ได้อยู่ในภาษาอาจวนซ้ำตลอดไป ตัวอย่างเช่นให้นำเครื่องทัวริง M และ String w: ถ้า string w เป็นภาษา M จะหยุดการทำงานในสถานะสุดท้าย มิฉะนั้นจะปฏิเสธการคำนวณหรืออาจรันตลอดไป