วิธีแสดงให้เห็นว่าฟังก์ชั่นไม่สามารถคำนวณได้?


43

ฉันรู้ว่ามีทัวริงอยู่ถ้าฟังก์ชั่นคำนวณได้ จากนั้นวิธีแสดงให้เห็นว่าฟังก์ชั่นนั้นไม่สามารถคำนวณได้หรือไม่มีทัวริงใด ๆ มีอะไรที่เหมือนกับบทปั๊มน้ำ?

คำตอบ:


57

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

[โน้ตโน้ต: เราสามารถเชื่อมโยงฟังก์ชันใด ๆกับภาษาแล้วพูดคุยเกี่ยวกับความสามารถในการตัดสินใจของมากกว่าความสามารถในการคำนวณของ ]fLf={(x,y)∣y=f(x)}Lff


ภาษาที่ไม่สามารถตัดสินใจได้มีอยู่จริง

มีบางภาษาที่ไม่มีเครื่องทัวริงสามารถตัดสินใจได้ อาร์กิวเมนต์นั้นง่าย: มี "เพียง" จำนวนมาก TM ที่แตกต่างกัน แต่มีหลายภาษาแตกต่างกันนับไม่ถ้วน ดังนั้นมีมากที่สุดภาษาที่ decidable และส่วนที่เหลือ (มากมายเหลือล้น) จะไม่สามารถตัดสินใจได้ อ่านเพิ่มเติม:(ℵ0)(ℵ)ℵ0

เพื่อวางมือของเราในภาษา undecidable เฉพาะความคิดคือการใช้เทคนิคชื่อdiagonalization (Georg Cantor, 1873) ซึ่ง แต่เดิมใช้เพื่อแสดงว่ามีจำนวนจริงมากกว่าจำนวนเต็มหรือกล่าวอีกนัยหนึ่งว่า\ℵ>ℵ0

ความคิดในการสร้างภาษา undecidable แรกนั้นง่าย: เราแสดงรายการทัวริงทั้งหมด (ซึ่งเป็นไปได้เนื่องจากพวกมันสามารถนับซ้ำได้!) และสร้างภาษาที่ไม่เห็นด้วยกับ TM แต่ละอันอย่างน้อยหนึ่งอินพุต

ε0100⋯M110101M201000M300010⋮⋱

ในข้างต้นแต่ละแถวคือหนึ่ง TM และแต่ละคอลัมน์เป็นหนึ่งอินพุต ค่าของเซลล์คือ 0 ถ้า TM ปฏิเสธหรือไม่หยุดและ 1 ถ้า TM ยอมรับอินพุตนั้น เรากำหนดภาษาเป็นเช่นนั้นที่มีอินพุต -th หาก th TM ไม่ยอมรับอินพุตนั้นD ฉันฉันDDii

ตารางต่อไปนี้ข้างต้นตั้งแต่ยอมรับ\ในทำนองเดียวกันแต่ตั้งแต่ไม่ยอมรับ1M 1 ε 0 ∉ D 1 ∈ D M 3 1ε∉DM1ε0∉D1∈DM31

ทีนี้สมมติว่าตัดสินใจและค้นหา lineในตาราง: ถ้ามีในคอลัมน์ -thจะยอมรับอินพุตนั้น แต่มันไม่ได้อยู่ในและถ้ามีตรงนั้นอินพุตจะอยู่ในแต่ไม่ยอมรับ ดังนั้นไม่ได้ตัดสินใจและเรามาถึงความขัดแย้ง D k 1 k M k D 0 D M k M k DMkDk1kMkD0DMkMkD

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

1. หลักฐานโดยตรง

วิธีแรกคือการแสดงให้เห็นโดยตรงว่าภาษาไม่สามารถตัดสินใจได้โดยแสดงว่าไม่มี TM สามารถตัดสินใจได้ วิธีนี้ใช้ตามวิธี diagonalization ที่แสดงด้านบน

ตัวอย่าง.

แสดงให้เห็นว่า (ส่วนเติมเต็มของ) ภาษาแนวทแยง ไม่สามารถบอกได้

LD¯={⟨M⟩∣⟨M⟩∉L(M)}

พิสูจน์
สมมติว่าสามารถได้และให้เป็นตัวตัดสินใจ มีสองกรณี: MDLD¯MD

  1. ⟨ M D ⟩MDยอมรับ⟨MD⟩ : แต่แล้วดังนั้น{} ดังนั้นนี้จะไม่สามารถเกิดขึ้นได้หากตัดสินใจ{}⟨M⟩∉ ¯ L D M D ¯ L D⟨MD⟩∈L(MD)⟨M⟩∉LD¯MDLD¯
  2. ⟨ M D ⟩MDไม่ยอมรับ⟨MD⟩ดังนั้น และทำให้{} แต่ถ้ามันอยู่ใน ,ควรจะยอมรับมันและเราก็กลับมาขัดแย้งกันอีกครั้ง⟨M⟩∈ ¯ L D L D M D⟨MD⟩∉L(MD)⟨M⟩∈LD¯LDMD

2. คุณสมบัติการปิด

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

โดยเฉพาะถ้าไม่สามารถตัดสินใจได้ (เราเขียน ) ดังนั้นความสมบูรณ์ของจะไม่สามารถตัดสินใจได้: ถ้ามี deciderสำหรับเราสามารถใช้มันเพื่อตัดสินใจโดยการยอมรับทุกครั้งปฏิเสธและในทางกลับกัน เนื่องจากหยุดคำตอบเสมอ (มันเป็น decider) เราจึงสามารถกลับคำตอบได้L ∉ R ¯ L M ¯ L L M MLL∉RL¯ML¯LMM

สรุป: ภาษาทแยงเป็น undecidable,R L D ∉RLD={⟨M⟩∣⟨M⟩∈L(M)}LD∉R

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

3. การลดปัญหาที่ไม่สามารถตัดสินใจได้

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

ตัวอย่าง.

แสดงให้เห็นว่าภาษาในแนวทแยง ไม่สามารถบอกได้

HP={⟨M,x⟩∣M halts on x}

พิสูจน์
เรารู้ว่าไม่สามารถตัดสินใจได้ เราลดเป็น (นี่แสดงว่า ) นั่นคือเราแสดงให้เห็นว่าหากสามารถตัดสินใจได้เราสามารถใช้ decider เพื่อตัดสินใจซึ่งเป็นข้อขัดแย้งL D H P L D ≤ H P H P L DLDLDHPLD≤HPHPLD

การลดการทำงานโดยการแปลงผู้สมัครสำหรับ (เช่นการป้อนข้อมูลสำหรับการใด ๆ ที่อาจเกิดขึ้น decider / ใบเสร็จสำหรับ ) เพื่อสมัครสำหรับดังกล่าวว่าถ้าหากHP เราตรวจสอบให้แน่ใจว่าการแปลงนี้สามารถคำนวณได้ ดังนั้นการตัดสินใจบอกเราหรือไม่ดังนั้นหากเราสามารถตัดสินใจ HP เราจะยังสามารถที่จะตัดสินใจ .¹L D L D W ' H P W ∈ L D W ' ∈ H P W ' W ∈ L D L DwLDLDw′HPw∈LDw′∈HPw′w∈LDLD

การแปลงมีดังนี้ ใช้และเอาท์พุท , ²โดยที่เป็น TM ที่มีพฤติกรรมเหมือนกับแต่ถ้าปฏิเสธดังนั้นจะไป เข้าสู่วงวนไม่สิ้นสุดW ' = ⟨ M ' , ⟨ M ⟩ ⟩ M 'เอ็มเอ็มเอ็ม'w=⟨M⟩w′=⟨M′,⟨M⟩⟩M′MMM′

เรามาดูกันว่าเป็นไปตามข้อกำหนด หากก็หมายความว่าหยุดและยอมรับการป้อนข้อมูลM ดังนั้นยังหยุดและยอมรับการป้อนข้อมูลM ดังนั้นHP ในทางตรงกันข้ามถ้าแล้วทั้งปฏิเสธหรือไม่เคยหยุดพักในM ในทั้งสองกรณีจะเข้าไปในวง จำกัด ในM ดังนั้น W ∈ L D M ⟨ M ⟩ M ' ⟨ M ⟩ ⟨ M ' , ⟨ M ⟩ ⟩ ∈ H Pw,w′
w∈LDM ⟨M⟩M′⟨M⟩⟨M′,⟨M⟩⟩∈HP
M ⟨ M ⟩ M ' ⟨ M ⟩ ⟨ M ' , ⟨ M ⟩ ⟩ ∉ H P W ∈ L D W ' ∈ H P H P ∉ Rw∉LDM⟨M⟩M′⟨M⟩⟨M′,⟨M⟩⟩∉HPและเราจะทำแสดงให้เห็นว่าถ้าหากและได้แสดงให้เห็นจึงว่าRw∈LDw′∈HPHP∉R

อ่านเพิ่มเติม: ตัวอย่างมากมายสำหรับการลดและพิสูจน์ความไม่มั่นคงของภาษาสามารถพบได้ผ่านทางแท็ก


  1. มีข้อ จำกัด เพิ่มเติมเกี่ยวกับการลดที่จะมีผล การแปลงจะต้องคำนวณและกำหนดไว้อย่างดีสำหรับอินพุตใด ๆ

  2. อินพุตของดูเหมือนโดยที่คือ TM และเป็นสตริง ดังนั้นที่นี่เราเลือกสตริงเพื่อเข้ารหัสของเครื่องซึ่งเป็นเพียงสตริงบางส่วน ..⟨ M , x ⟩ M x x MHP⟨M,x⟩MxxM


4. ทฤษฎีบทข้าว

"ดังนั้นทุกครั้งที่เราต้องการพิสูจน์ไม่สามารถตัดสินใจได้เราจำเป็นต้องลด (หรือ ) ลงหรือไม่ไม่มีทางลัดใด ๆ หรือไม่"L D H PLLDHP

ในความเป็นจริงมี นี่คือข้าวทฤษฎีบท

ทฤษฎีบทบอกว่าหลายภาษาที่มีโครงสร้างที่แน่นอนไม่สามารถตัดสินใจได้ เนื่องจากภาษาเหล่านี้มีโครงสร้างที่แน่นอนเราจึงสามารถลดได้หนึ่งครั้งและใช้กับภาษาใดก็ได้ที่ยอมรับโครงสร้างที่คล้ายกัน

ทฤษฎีบทดังกล่าวได้ระบุไว้อย่างเป็นทางการในวิธีต่อไปนี้

ทฤษฎีบท (ข้าว) รับคุณสมบัติ ภาษาต่อไปนี้ไม่สามารถตัดสินใจได้ ∅⊊S⊊RELS

LS={⟨M⟩∣L(M)∈S}

ชุดเป็นส่วนย่อยของภาษาใน ; เราเรียกมันว่าทรัพย์สินเพราะมันอธิบายคุณสมบัติของภาษาได้รับการยอมรับ(M) หน่วยความจำทั้งหมดที่มีการตอบสนองคุณสมบัตินี้ภาษาเป็นของL_SSREL(M)LS

ตัวอย่างเช่นสามารถเป็นคุณสมบัติที่ภาษาที่ยอมรับมีสองคำ:SL(M)

S2={L∣|L|=2,L∈RE}.
ในกรณีนี้คือชุดของ TM ทั้งหมดที่ภาษาประกอบด้วยสองคำ: LS2
LS2={⟨M⟩∣L(M)∈S}={⟨M⟩∣|L(M)|=2}.

สถานที่ให้บริการนั้นง่ายมาก แต่ไม่สามารถเป็นภาษา RE ทั้งหมดหรือไม่มีภาษา RE ถ้าหรือจะมีการกล่าวคุณสมบัติเล็กน้อยและคำนวณได้นั้น ตัวอย่างสำหรับง่ายเป็นหนึ่งมีเพียงภาษาเดียวพูด\} โปรดทราบว่าแม้ว่ามีเพียงภาษาเดียว แต่มีเครื่องจำนวนมากซึ่งภาษาคือดังนั้นจึงไม่มีที่สิ้นสุดและไม่สามารถตัดสินใจได้S=∅S=RELSSScomplete={Σ∗}SMΣ∗LScompete


ทฤษฎีบทนี้มีประสิทธิภาพมากในการพิสูจน์ความไม่แน่นอนของหลายภาษา

ตัวอย่าง.

ภาษาไม่สามารถบอกได้L∅={⟨M⟩∣M never reaches the accepting state}

พิสูจน์
เราสามารถเขียนเป็นนั่นคือสำหรับคุณสมบัติ . นี่คือคุณสมบัติที่ไม่สำคัญ (มันมีภาษาแต่ไม่รวมถึงภาษาดังนั้นโดยทฤษฎีบทของ Rice, undecidableL∅{⟨M⟩∣L(M)=0}L∅=LSS={L∈RE,|L|=0}L=∅L={1,11,111,…}L∅


ตอนนี้เราพิสูจน์ทฤษฎีบท ดังที่ได้กล่าวไว้ข้างต้นเราจะแสดงการลดลงจากเป็น (สำหรับไม่สำคัญใด ๆ โดยพลการ)HPLSS

พิสูจน์
ให้เป็นคุณสมบัติที่ไม่น่ารำคาญ,RE เราแสดงนั่นคือเราลดเป็นดังนั้นถ้าเราสามารถตัดสินใจเราจะสามารถตัดสินใจ (ซึ่งเรารู้ว่าเป็นไปไม่ได้ดังนั้นจึงไม่สามารถตัดสินใจได้) ในการพิสูจน์ด้านล่างเราคิดว่าภาษาที่ว่างเปล่าไม่ได้เป็นส่วนหนึ่งของที่เป็นS (หากภาษาที่ว่างอยู่ในหลักฐานที่เทียบเท่าทำงานบนทรัพย์สินที่สมบูรณ์ฉันจะละเว้นรายละเอียด) ตั้งแต่S∅⊊S⊊REHP≤LSHPLSLSHPLSS∅∉SSS¯=RE∖SSไม่น่าสนใจมันมีภาษาอย่างน้อยหนึ่งภาษา ลองเรียกภาษานั้นว่าและสมมติว่าเป็นเครื่องที่ยอมรับ (มีเครื่องดังกล่าวอยู่เนื่องจาก มีเฉพาะภาษาใน RE)L0M0L0S

จำได้ว่าในการลดลงดังกล่าว (ดูหัวข้อ 3 ด้านบน) เราจำเป็นต้องแสดงวิธีการแปลงอินพุตสำหรับเป็นอินพุตสำหรับเพื่อให้ wHPw′LS

w∈HP if and only if w′∈LS

ให้เราแปลงเป็นโดยที่คำอธิบายของเครื่อง (บนอินพุต ) มีดังต่อไปนี้:w=(⟨M⟩,x)w′=⟨M′⟩M′x′

  1. เรียกบนxMx
  2. หากขั้นตอนที่ 1 ข้างต้นหยุดทำงานให้เรียกใช้เมื่อและยอมรับ / ปฏิเสธตามนั้นM0x′

เราเห็นว่าการแปลงนี้ถูกต้อง โน้ตตัวแรกที่มันเป็นเรื่องง่ายที่จะสร้างรายละเอียดของรับx)M′w=(⟨M⟩,x)

หากแล้วหยุดบนxในกรณีนี้เงินไปยังขั้นตอนที่ 2 และพฤติกรรมเช่นเดียวM_0ดังนั้นภาษาที่ได้รับการยอมรับของมันคือS ดังนั้นL_S หากดังนั้นวนซ้ำบนกรณีนี้ลูปในการป้อนข้อมูลใด ๆ - จะได้รับการติดอยู่ในขั้นตอนที่ 1 ภาษาที่ได้รับการยอมรับโดยในกรณีนี้เป็นที่ว่างเปล่าS ดังนั้นL_Sw∈HPMxM′M0L(M′)=M0∈Sw′=⟨M′⟩∈LS
w∉HPMxM′x′M′L(M′)=∅∉Sw′=⟨M′⟩∉LS

4.1 ทฤษฎีบทข้าวขยาย

ทฤษฎีบทข้าวช่วยให้เรามีวิธีง่ายๆในการแสดงให้เห็นว่าภาษาใดภาษาหนึ่งที่น่าพอใจคุณสมบัติบางอย่างเป็น undecidable, ที่อยู่,R ทฤษฎีบทของ Rice ฉบับขยายทำให้เราสามารถพิจารณาได้ว่าภาษานั้นสามารถระบุซ้ำได้หรือไม่นั่นคือกำหนดว่าโดยตรวจสอบว่าตอบสนองคุณสมบัติเพิ่มเติมบางอย่างหรือไม่LL∉RL∉REL

ทฤษฎีบท (ข้าวขยาย) เมื่อได้รับทรัพย์สินภาษา นั้นสามารถนับซ้ำได้ ( ) ซ้ำ ๆ กันถ้าหากทั้งสามข้อต่อไปนี้มารวมกัน ถือS⊆RE

LS={⟨M⟩∣L(M)∈S}
LS∈RE
  1. สำหรับสองถ้าและยังแล้วยังSL1,L2∈REL1∈SL1⊆L2L2∈S
  2. หากแล้วมีอยู่ จำกัด เซตเพื่อให้SL1∈SL2⊆L1L2∈S
  3. ชุดของภาษาที่จำกัดทั้งหมดในนั้นนับได้ (ในคำอื่น ๆ : มี TM ที่ระบุภาษาทั้งหมดที่ จำกัด )SL∈S

พิสูจน์
นี่คือทฤษฎีบท "ถ้าเพียง แต่" และเราควรพิสูจน์ทั้งสองทิศทาง ครั้งแรกที่เราแสดงให้เห็นว่าถ้าหนึ่งในเงื่อนไขที่ (1,2,3) ไม่ค้างไว้แล้วRE หลังจากนั้นเราจะแสดงให้เห็นว่าถ้าทั้งสามเงื่อนไขค้างไว้พร้อมกันแล้วRELS∉RELS∈RE

ถ้า (1,2) ถือ แต่ (3) ไม่ได้แล้วLS∉RERE
สมมติว่าและเราจะเห็นว่าเรามีวิธีที่จะยอมรับภาษาที่ จำกัด ใด ๆ ใน (และดังนั้นชุดของภาษาทั้งหมดเหล่านี้คือ RE) ดังนั้นเงื่อนไข (3) ถือและเรามีความขัดแย้งกัน . จะตัดสินใจได้อย่างไรว่าจำกัดเป็นของหรือไม่ ได้อย่างง่ายดาย - เราใช้คำอธิบายของเพื่อสร้างเครื่องที่ยอมรับเฉพาะคำในและตอนนี้เรารันเครื่องของบน (จำได้ - เราถือว่าดังนั้นจึงมีเครื่องที่ยอมรับLS∈RESLSLMLLLSMLLS∈RELS!) ถ้าจากนั้นและตั้งแต่เครื่องจะพูดว่าใช่บนอินพุตและเราเสร็จแล้วL∈S⟨ML⟩∈LSLS∈RE⟨ML⟩

ถ้า (2,3) ถือ แต่ (1) ไม่ได้แล้วLS∉RERE
เราถือว่าและเราจะแสดงให้เห็นว่าเรามีวิธีในการตัดสินใจซึ่งนำไปสู่ความขัดแย้งLS∈REHP

เพราะเงื่อนไข (1) ไม่ได้ถือมีภาษาและเซ็ตของมันเพื่อให้S ตอนนี้เรากำลังจะทำซ้ำอาร์กิวเมนต์ที่ใช้ในส่วนที่ 4 ในการตัดสินใจ : อินพุตสำหรับเราสร้างเครื่องซึ่งภาษาถ้าหรือมิฉะนั้นภาษาของมันคือL_2จากนั้นเราสามารถตัดสินใจ :หยุดทั้งหรือ RE-machine สำหรับยอมรับL1∈SL2⊇L1L2∉SHP(⟨M⟩,x)HPM′L1(⟨M⟩,x)∉HPL2HPMxLSM′; เราสามารถเรียกใช้ทั้งคู่ขนานและรับประกันว่าอย่างน้อยหนึ่งจะหยุด

ให้รายละเอียดของการสร้าง (ในอินพุต ):M′x′

  1. ทำต่อไปในแบบคู่ขนาน:
    1.1 วิ่งบนx 1.2 เรียกใช้เครื่องบนMx
    L1x′
  2. ถ้า 1.2 หยุดและยอมรับ - ยอมรับ
  3. ถ้า 1.1 หยุด: เรียกใช้เครื่องของบนx'L2x′

ทำไมจึงใช้งานได้ ถ้าแล้ว 1.1 ไม่เคยหยุดพักและยอมรับว่าทุกปัจจัยการผลิตที่ได้รับการยอมรับในขั้นตอนที่ 1.2 ดังนั้นLในทางตรงกันข้ามถ้าแล้วในขั้นตอนบางจุดหยุดพักและ 1.1ยอมรับว่าL_2อาจเกิดขึ้นที่ยอมรับล่วงหน้า แต่เนื่องจากสิ่งนี้จะไม่เปลี่ยนภาษาของในกรณีนี้(⟨M⟩,x)∉HPM′L(M′)=L1(⟨M⟩,x)∈HPM′L21.2L1⊆L2M′

ถ้า (1,3) ถือ แต่ (2) ไม่ได้แล้วLS∉RERE
อีกครั้งเราจะถือว่าและแสดงให้เห็นว่ากลายเป็นสิ่งที่สามารถตัดสินใจได้ซึ่งเป็นข้อขัดแย้งLS∈REHP

หากไม่มีเงื่อนไข (2) ดังนั้นใด ๆเซตย่อย จำกัด ทั้งหมดตาม (โปรดทราบว่าต้องไม่สิ้นสุดเนื่องจาก ) ดังที่ได้กล่าวไว้ข้างต้นในการตัดสินใจเลือกสำหรับอินพุตที่กำหนดเราจะสร้างเครื่องซึ่งภาษาคือถ้าและบางขอบเขตมิฉะนั้น ความขัดแย้งดังกล่าวเป็นไปในลักษณะเดียวกันนี้L1∈SL2⊆L1L2∉SL1L1⊆L1HP(⟨M⟩,x)M′L1(⟨M⟩,x)∉HPL2

การก่อสร้างของเครื่องนี้ค่อนข้างคล้ายกับก่อนหน้านี้ที่เราสร้าง เครื่อง (ที่อินพุต ) ทำ:M′M′x′

  1. รันบนสำหรับขั้นตอนMx|x′|
  2. หากหยุดทำงานระหว่างขั้นตอนที่ 1 - ปฏิเสธM
  3. มิฉะนั้นเรียกใช้เครื่องของบนx'L1x′

มันถือว่าถ้าแล้วในบางจุดกล่าวว่าหลังจากที่ 1000 ขั้นตอนหยุดบนxดังนั้นขั้นตอนที่ 1 จะหยุดบน (และปฏิเสธ) ป้อนข้อมูลใด ๆความยาว>ดังนั้นในกรณีนี้เป็นแน่นอน นอกจากนี้ทราบว่าและโดยเฉพาะอย่างยิ่งจากสมมติฐานของเราเกี่ยวกับความอ่อนแอของสภาพ (2) เรามีที่S(⟨M⟩,x)∈HPMxx′>1000L(M′)L(M′)⊆L1L(M)∉S

ในทางกลับกันถ้าจากนั้นขั้นตอนที่ 1 จะไม่หยุดและเราจะไม่ปฏิเสธขั้นตอนที่ 2 ในกรณีนี้มันง่ายที่จะเห็นและใน โดยเฉพาะอย่างยิ่งS(⟨M⟩,x)∉HPL(M)=L1L(M)∈S


เราถูกทิ้งให้แสดงอีกทิศทางหนึ่งของทฤษฎีบทที่ขยายออกไป นั่นก็คือเราต้องแสดงให้เห็นว่าถ้าเงื่อนไขทั้งหมด (1,2,3) ไว้แล้วเรามี TM ที่ยอมรับ , ที่อยู่,RE กล่าวอีกนัยหนึ่งเราต้องแสดงเครื่องเพื่อให้อินพุตใดที่เครื่องยอมรับอินพุตนี้ยอมรับ}LSLS∈REMS⟨M⟩L(M)∈SMS(⟨M⟩)→accept

นี่คือวิธีที่เครื่องทำงาน (ที่อินพุต ):MS⟨M⟩

  1. ให้เป็นเครื่องที่ระบุภาษาที่ จำกัด ทั้งหมดในรับประกันโดยเงื่อนไข (3)Menum SS
  2. เรียกใช้สิ่งต่อไปนี้แบบขนาน (โดยการประกบกันดูเช่นนี้และสิ่งนี้ ) สำหรับ 2.1 เรียกใช้จนกว่าจะแสดงผลภาษา 2.2 ตรวจสอบว่ายอมรับทุกคำของ (รันสำหรับคำเหล่านี้ขนานอีกครั้ง) 2.3 หากบาง ,ยอมรับทุกคำของ - ยอมรับi=1,2,...
    Menum SLi
    MLiM
    iMLi

ทำไมมันทำงาน ถ้าจะมีเซตย่อย จำกัดและเมื่อเอาต์พุตชุดย่อยนั้นขั้นตอน 2.2 / 2.3 จะพบว่ายอมรับคำทั้งหมดในภาษานั้นและ ยอมรับ.L(M)∈SLj∈SMenum SM

ในทางตรงกันข้ามถ้าก็ไม่สามารถยอมรับคำทั้งหมดในสำหรับการใด ๆ... อันที่จริงโดยเงื่อนไข (1) ใด ๆจะยังอยู่ในดังนั้นหากยอมรับคำทั้งหมดในสำหรับบางแล้วและทำให้ , ในความขัดแย้งL(M)∉SLii=1,2,...L′⊇LiSMLiiL(M)⊇LiL(M)∈S


สุดท้ายโปรดทราบว่าสิ่งต่อไปนี้เป็นข้อพิสูจน์ที่ง่าย (และมีประโยชน์มาก) จากด้านบน:

ผลกระทบ (ข้าวขยาย) เมื่อพิจารณาถึงคุณสมบัติที่ไม่สำคัญดังนั้น , ภาษา ไม่สามารถนับซ้ำได้นั่นคือRES⊊RE∅∈S

LS={⟨M⟩∣L(M)∈S}
LS∉RE

ขอบคุณที่เพิ่มทฤษฎีบทของ Rice ฉบับขยาย! ฉันรู้รุ่นที่ต่างออกไป; ฉันจะต้องขุดมันขึ้นมา อย่างไรก็ตามฉันไม่คิดว่ามันสำคัญมากหรือเป็นประโยชน์ในการพิสูจน์ที่นี่ บางทีคุณสามารถอ้างอิงพวกเขาหรืออัปโหลดที่อื่นถ้าไม่มีการอ้างอิงที่ดีอยู่?
— Raphael

13

เครื่องมือหนึ่งที่มีประโยชน์คือทฤษฎีบทข้าว นี่คือสิ่งที่มันบอกว่า:

Letชุดที่ไม่น่ารำคาญของฟังก์ชั่นเอกคำนวณบางส่วนและ Gödelหมายเลขของ{P} จากนั้นชุดดัชนีของ∅⊊P⊊PφPP

IP={i∈N∣φi∈P}

ไม่เกิดซ้ำ

คุณพบว่ามันยังแสดงในรูปของการเข้ารหัสของทัวริง (หรือภาษาโปรแกรมทัวริงที่สมบูรณ์อื่น ๆ ) เช่น ; ที่นี่กำหนดหมายเลขGödelIP={⟨M⟩∣M TM,fM∈P}⟨.⟩

นั่นคือคุณสามารถใช้ทฤษฎีบทของไรซ์เพื่อพิสูจน์เซตดังกล่าว non-recursive ซึ่งเป็นชุดดัชนีของชุดฟังก์ชันที่ไม่น่าสนใจ (หรือลดลงเป็น )SS

โปรดทราบว่ามีส่วนขยายที่สามารถใช้เพื่อแสดงว่าชุดดัชนีบางอย่างไม่สามารถนับซ้ำได้

ตัวอย่าง

ให้เป็นหมายเลขGödel พิจารณาชุดของธรรมชาติφ

A={i∈N∣φi(j)=1 for all j∈2N}\}

ตอนนี้สำหรับP={f∈P∣f(j)=1 for all j∈2N}

  • A=IP ,
  • (n↦1)∈Pและ
  • (n↦2)∉P ,

ทฤษฎีบทของข้าวสามารถนำไปใช้ได้และนั้นไม่สามารถตัดสินใจได้A

เนื่องจากหลายคนไม่คุ้นเคยกับการกำหนดหมายเลขGödelโปรดทราบว่าตัวอย่างทำงานได้ดีในแง่ของเครื่องจักรทัวริง (เช่นโปรแกรม) โดยใช้\}A={⟨M⟩∣fM(x)=1 for all x∈2N}

Unexample

พิจารณาชุดของธรรมชาติ

A={i∈N∣φi(j)=i for all j∈2N}

ซึ่งแน่นอนว่าไม่สามารถคำนวณได้ อย่างไรก็ตามไม่ใช่ดัชนีที่ตั้งไว้สำหรับ ! ให้สำหรับบางA ตั้งแต่เป็นGödelหมายเลขมี (หลายอนันต์)กับแต่สำหรับทุกถือเพราะเจAPf=φii∈Aφj≠iφj=fj∉Af(2)=i≠j

ระวังสิ่งนี้! ตามกฎของหัวแม่มือหากใช้ดัชนีของฟังก์ชั่นใน "ด้านขวามือ" หรือเป็นพารามิเตอร์ของฟังก์ชั่นในการกำหนดชุดว่ามันอาจจะไม่ได้ตั้งค่าดัชนี คุณอาจต้องการคุณสมบัติของการกำหนดหมายเลขGödelและทฤษฎีของ fixpointเพื่อแสดงว่าชุดนั้นไม่มีชุดดัชนีsmn

ดูที่นี่และที่นี่เพื่อโพสต์ที่เกี่ยวข้องกับทฤษฎีบทของข้าว

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