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


43

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

คำตอบ:


57

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

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


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

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

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

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

ε0100M110101M201000M300010

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

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

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

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

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

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

ตัวอย่าง.

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

LD¯={MML(M)}

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

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

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

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

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

สรุป: ภาษาทแยงเป็น undecidable,R L DRLD={MML(M)}LDR

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

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

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

ตัวอย่าง.

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

HP={M,xM halts on x}

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

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

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

เรามาดูกันว่าเป็นไปตามข้อกำหนด หากก็หมายความว่าหยุดและยอมรับการป้อนข้อมูลM ดังนั้นยังหยุดและยอมรับการป้อนข้อมูลM ดังนั้นHP ในทางตรงกันข้ามถ้าแล้วทั้งปฏิเสธหรือไม่เคยหยุดพักในM ในทั้งสองกรณีจะเข้าไปในวง จำกัด ในM ดังนั้น W L D M M M 'M M ' , M H Pw,w
wLDM MMMM,MHP
M M M 'M M ' , M H P W L D W 'H P H P RwLDMMMMM,MHPและเราจะทำแสดงให้เห็นว่าถ้าหากและได้แสดงให้เห็นจึงว่าRwLDwHPHPR

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


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

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


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

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

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

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

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

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

LS={ML(M)S}

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

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

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

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


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

ตัวอย่าง.

ภาษาไม่สามารถบอกได้L={MM never reaches the accepting state}

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


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

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

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

wHP if and only if wLS

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

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

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

หากแล้วหยุดบนxในกรณีนี้เงินไปยังขั้นตอนที่ 2 และพฤติกรรมเช่นเดียวM_0ดังนั้นภาษาที่ได้รับการยอมรับของมันคือS ดังนั้นL_S หากดังนั้นวนซ้ำบนกรณีนี้ลูปในการป้อนข้อมูลใด ๆ - จะได้รับการติดอยู่ในขั้นตอนที่ 1 ภาษาที่ได้รับการยอมรับโดยในกรณีนี้เป็นที่ว่างเปล่าS ดังนั้นL_SwHPMxMM0L(M)=M0Sw=MLS
wHPMxMxML(M)=Sw=MLS

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

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

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

LS={ML(M)S}
LSRE
  1. สำหรับสองถ้าและยังแล้วยังSL1,L2REL1SL1L2L2S
  2. หากแล้วมีอยู่ จำกัด เซตเพื่อให้SL1SL2L1L2S
  3. ชุดของภาษาที่จำกัดทั้งหมดในนั้นนับได้ (ในคำอื่น ๆ : มี TM ที่ระบุภาษาทั้งหมดที่ จำกัด )SLS

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

ถ้า (1,2) ถือ แต่ (3) ไม่ได้แล้วLSRERE
สมมติว่าและเราจะเห็นว่าเรามีวิธีที่จะยอมรับภาษาที่ จำกัด ใด ๆ ใน (และดังนั้นชุดของภาษาทั้งหมดเหล่านี้คือ RE) ดังนั้นเงื่อนไข (3) ถือและเรามีความขัดแย้งกัน . จะตัดสินใจได้อย่างไรว่าจำกัดเป็นของหรือไม่ ได้อย่างง่ายดาย - เราใช้คำอธิบายของเพื่อสร้างเครื่องที่ยอมรับเฉพาะคำในและตอนนี้เรารันเครื่องของบน (จำได้ - เราถือว่าดังนั้นจึงมีเครื่องที่ยอมรับLSRESLSLMLLLSMLLSRELS!) ถ้าจากนั้นและตั้งแต่เครื่องจะพูดว่าใช่บนอินพุตและเราเสร็จแล้วLSMLLSLSREML

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

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

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

  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)HPML(M)=L1(M,x)HPML21.2L1L2M

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

หากไม่มีเงื่อนไข (2) ดังนั้นใด ๆเซตย่อย จำกัด ทั้งหมดตาม (โปรดทราบว่าต้องไม่สิ้นสุดเนื่องจาก ) ดังที่ได้กล่าวไว้ข้างต้นในการตัดสินใจเลือกสำหรับอินพุตที่กำหนดเราจะสร้างเครื่องซึ่งภาษาคือถ้าและบางขอบเขตมิฉะนั้น ความขัดแย้งดังกล่าวเป็นไปในลักษณะเดียวกันนี้L1SL2L1L2SL1L1L1HP(M,x)ML1(M,x)HPL2

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

  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 กล่าวอีกนัยหนึ่งเราต้องแสดงเครื่องเพื่อให้อินพุตใดที่เครื่องยอมรับอินพุตนี้ยอมรับ}LSLSREMSML(M)SMS(M)accept

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

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

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

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


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

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

LS={ML(M)S}
LSRE

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

13

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

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

IP={iNφiP}

ไม่เกิดซ้ำ

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

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

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

ตัวอย่าง

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

A={iNφi(j)=1 for all j2N}\}

ตอนนี้สำหรับP={fPf(j)=1 for all j2N}

  • A=IP ,
  • (n1)Pและ
  • (n2)P ,

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

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

Unexample

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

A={iNφi(j)=i for all j2N}

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

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

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

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