Decidability ของภาษาคำนำหน้า


9

ที่กลางภาคมีคำถามที่แตกต่างกันดังต่อไปนี้:

สำหรับการตัดสินใจ L กำหนด

Pref(L)={xy s.t. xyL}
แสดงว่า Pref(L) ไม่จำเป็นต้องตัดสินใจได้

แต่ถ้าฉันเลือก L=Σ ถ้าอย่างนั้นฉันก็คิด Pref(L) เป็นยัง Σจึงตัดสินใจได้ ด้วยL=ให้ผลลัพธ์เหมือนกัน และตั้งแต่L จะต้องตัดสินใจได้ฉันไม่สามารถเลือกปัญหาการหยุดชะงักหรือ ..

  1. ฉันจะหาได้อย่างไร L เช่นนั้น Pref(L) ไม่สามารถตัดสินใจได้?
  2. เงื่อนไขใดบ้าง L จะทำให้ Pref(L) decidable และสิ่งใดที่ทำให้ไม่สามารถตัดสินใจได้?

คำตอบ:


9

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

{xΣyΣ x,yV}

ที่ไหน Vเป็นภาษาที่ตัดสินได้ สิ่งเหล่านี้รวมถึงภาษาที่ไม่สามารถอธิบายได้เช่น

ATM={e,x e encodes a Turing machine which accepts x}
.

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

สำหรับคำถามที่สองไม่มีวิธีอัลกอริทึมทั่วไปในการตรวจสอบว่าคำนำหน้าของภาษา decidable ที่ให้นั้นไม่สามารถตัดสินใจได้ จากทฤษฎีบทของไรซ์


คุณให้อย่างชัดเจน V ที่สร้าง ATM?
Ran G.

2
ปล่อยให้ y เป็นสตริงที่ตั้งใจจะแสดงการหยุดการยอมรับการคำนวณ Me บน x, V จะตรวจสอบว่า y เป็นการคำนวณที่ยอมรับได้ของ Me บน x.
Kaveh

นั่นเป็นทางออกที่ดี!
Ran G.

3

Meta-knowledge: คุณต้องการค้นหาภาษาที่ไม่สามารถตัดสินได้ซึ่งยังมีคุณสมบัติการคำนวณบางอย่าง ภาษาที่ไม่สามารถตัดสินได้เองอาจไม่ทำให้คุณไปได้ไกลนัก แต่เป็นแบบกึ่งตัดสินใจได้ ...


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

u=f(n)

ลองดูที่สมการนี้สักหน่อยโดยคำนึงถึงความสามารถในการตัดสินใจและคำนำหน้า


พูดง่าย ๆ สมมติว่าคุณมี x และคุณต้องการทดสอบว่ามีมาหรือไม่ Pref(L). คุณจะไม่ทำได้ดีกว่าการเช็คทั่วไปxa, xb, xaaฯลฯ ที่ไหน a,b,เป็นตัวอักษรของตัวอักษร นี่เป็นฟังก์ชันแบบเรียกซ้ำบางส่วนที่ทดสอบการเป็นสมาชิกPref(L). แน่นอนเรารู้ว่าPref(L)เป็นอีกแล้ว; สิ่งที่เราต้องแสดงคือบางครั้งไม่มีวิธีอื่น เรามาจัดเซ็ทกันบ้างSN ซึ่งเป็นเรื่องและไม่เกิดซ้ำและปล่อยให้ f เป็นการแจงนับ S (S=f(x)xN)

สมมติว่าตัวอักษรมีสามสัญลักษณ์ 0, 1 และ : (ถ้าคุณมีสองสัญลักษณ์เท่านั้น {,}เข้ารหัส 0 เช่น , 1 เช่น และ : เช่น ) ถ้าnN, ปล่อย n¯ เป็น n เขียนในฐาน 2 โดยใช้สัญลักษณ์ 0 และ 1 ไม่มีผู้นำ 0.

ปล่อย L={y¯:x¯y=f(x)}. ในภาษาอังกฤษแบบธรรมดาเราได้นำองค์ประกอบของS และตรึงดัชนีการแจงนับของพวกเขา L สามารถตัดสินใจได้ชัดเจน (ตรวจสอบว่ามีเพียงรายการเดียว) :ว่าลำดับสองหลักไม่มีการนำทาง 0และลำดับตัวเลขตัวแรกจะทำให้ภาพแตกต่างกัน fของจำนวนที่คาถาที่สอง) ยังตัดสินใจว่าบางคนy¯ เป็นคำนำหน้าของ L เท่ากับการตัดสินใจว่า y อยู่ใน Sซึ่งคุณไม่สามารถทำได้โดยไม่รู้ตัว x ตั้งแต่ Sไม่ใช่การเรียกซ้ำโดยสมมติฐาน อย่างเป็นทางการPref(L) ไม่สามารถตัดสินใจได้เพราะ Pref(L){0,1}:=S: ไม่สามารถตัดสินใจได้

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