Bagaimana cara menunjukkan bahwa suatu fungsi tidak dapat dihitung?


Jawaban:


57

Sebelum saya menjawab pertanyaan umum Anda, izinkan saya terlebih dahulu mengambil langkah mundur, memberikan latar belakang sejarah, dan menjawab pertanyaan awal: Apakah fungsi yang tidak dapat dihitung bahkan ada?

[catatan notasi: kita dapat berhubungan setiap fungsi f dengan bahasa Lf={(x,y)y=f(x)} dan kemudian mendiskusikan decidability dari Lf daripada computability dari f ]


Memang ada bahasa yang tidak dapat ditentukan

Ada beberapa bahasa yang tidak dapat diputuskan oleh mesin Turing. Argumennya sederhana: ada "hanya" banyak (0) TM yang berbeda, tetapi banyak () bahasa yang berbeda. Jadi ada paling banyak 0 bahasa yang dapat dipilih, dan sisanya (tak terhingga banyak) tidak dapat ditentukan. Bacaan lebih lanjut:

Untuk meletakkan tangan kita pada bahasa tertentu yang tidak dapat ditentukan, idenya adalah menggunakan teknik bernama diagonalisasi (Georg Cantor, 1873) yang awalnya digunakan untuk menunjukkan bahwa ada lebih banyak bilangan real daripada bilangan bulat, atau dengan kata lain, bahwa .>0

Gagasan untuk membangun bahasa yang tidak dapat dipastikan pertama adalah sederhana: kami mencantumkan semua mesin Turing (yang mungkin karena mereka dapat dihitung dengan mudah!), Dan membuat bahasa yang tidak setuju dengan masing-masing TM pada setidaknya satu input.

ε0100M110101M201000M300010

Di atas, setiap baris adalah satu TM dan setiap kolom adalah satu input. Nilai sel adalah 0 jika TM menolak atau tidak pernah berhenti, dan 1 jika TM menerima input itu. Kami mendefinisikan bahasa menjadi sedemikian rupa sehingga D berisi input ke- i jika dan hanya jika TM ke- i tidak menerima input itu.DDii

Mengikuti tabel di atas, sejak M 1 menerima ε . Demikian pula, 0 D , tetapi 1 D karena M 3 tidak menerima 1 .εDM1ε0D1DM31

Sekarang, asumsikan memutuskan D dan mencari jalur k dalam tabel: jika ada 1 di k kolom -th, maka M k menerima masukan bahwa tetapi tidak di D , dan jika ada 0 sana, input adalah di D tapi M k tidak menerimanya. Oleh karena itu, M k tidak memutuskan D , dan kami mencapai kontradiksi.MkDk1kMkD0DMkMkD

Sekarang untuk pertanyaan Anda. Ada beberapa cara untuk membuktikan bahwa suatu bahasa tidak dapat diputuskan. Saya akan mencoba menyentuh yang paling umum.

1. Bukti langsung

Metode pertama, adalah menunjukkan secara langsung bahwa suatu bahasa tidak dapat diputuskan, dengan menunjukkan bahwa tidak ada TM yang dapat memutuskannya. Ini usus mengikuti metode diagonalisasi yang ditunjukkan di atas.

Contoh.

Tunjukkan bahwa (komplemen dari) bahasa diagonal adalah diputuskan.

LD¯={MML(M)}

Bukti.
Asumsikan adalah decidable, dan biarkan M D menjadi penentu. Ada dua kasus:LD¯MD

  1. menerimaM DMDMD : tapi kemudian,sehinggaM ¯ L D . Jadi ini tidak bisa terjadi jika M D memutuskan ¯ L D .MDL(MD)MLD¯MDLD¯
  2. tidak menerimaM DMDMD : sehingga dan dengan demikianM ¯ L D . Tapi jika berada dalam L D , M D harus menerimanya, dan kami mencapai kontradiksi lagi.MDL(MD)MLD¯LDMD

2. Properti penutupan

Kadang-kadang kita dapat menggunakan properti closure untuk menunjukkan bahwa beberapa bahasa tidak dapat dipilih, berdasarkan bahasa lain yang sudah kita ketahui tidak dapat ditentukan.

Secara khusus, jika tidak decidable (kita menulis L R ), kemudian juga pelengkap ¯ L adalah diputuskan: jika ada penentuan M untuk ¯ L kita hanya bisa menggunakannya untuk memutuskan L dengan menerima setiap kali M menolak dan sebaliknya. Karena M selalu berhenti dengan jawaban (itu adalah penentu), kita selalu dapat membalikkan jawabannya.LLRL¯ML¯LMM

Kesimpulan: diagonal bahasa adalah diputuskan, L DR .LD={MML(M)}LDR

Argumen yang sama dapat diterapkan dengan mencatat bahwa jika kedua dan komplemennya ¯ L adalah rekursif enumerable, keduanya decidable. Ini sangat berguna jika kita ingin membuktikan bahwa suatu bahasa tidak berulang secara berulang, sebuah properti yang kuat daripada ketidakpastian.LL¯

3. Mengurangi dari masalah yang tidak dapat ditentukan

Biasanya, cukup sulit untuk membuktikan secara langsung bahwa suatu bahasa tidak dapat diputuskan (kecuali bahasa tersebut sudah dikonstruksi secara "diagonal"). Metode terakhir dan paling umum untuk membuktikan keragu-raguan adalah dengan menggunakan bahasa lain yang sudah kita ketahui tidak dapat diputuskan. Idenya adalah untuk mengurangi satu bahasa ke bahasa lain: untuk menunjukkan bahwa jika salah satu dapat didekati, maka yang lain juga harus dapat ditentukan, tetapi salah satunya sudah diketahui tidak dapat diputuskan yang mengarah pada kesimpulan bahwa yang pertama juga tidak dapat diputuskan. Baca lebih lanjut tentang pengurangan "Apa teknik umum untuk mengurangi masalah satu sama lain?" .

Contoh.

Menunjukkan bahwa bahasa diagonal adalah diputuskan.

HP={M,xM halts on x}

Bukti.
Kita tahu bahwa tidak dapat ditentukan. Kami mengurangi L D ke H P (ini dinotasikan L DH P ), yaitu, kami menunjukkan bahwa jika H P dapat ditentukan, kami dapat menggunakan penentu untuk memutuskan L D , yang merupakan kontradiksi.LDLDHPLDHPHPLD

Penurunan ini bekerja dengan mengkonversi calon untuk L D (yaitu masukan untuk setiap penentuan potensial / akseptor untuk L D ) untuk calon w ' untuk H P sehingga w L D jika dan hanya jika w 'H P . Kami memastikan bahwa konversi ini dapat dihitung. Dengan demikian, memutuskan w ' memberitahu kita apakah atau tidak w L D , jadi jika kita bisa memutuskan HP kita akan juga dapat memutuskan L DwLDLDwHPwLDwHPwwLDLD

Konversi adalah sebagai berikut. Ambil beberapa , dan output w ' = M ' , M , ² di mana M ' adalah TM yang berperilaku seperti M , tetapi jika M menolak, maka M ' masuk ke loop tak terbatas.w=Mw=M,MMMMM

Mari kita melihat bahwa memenuhi persyaratan. Jika w L D , itu berarti bahwa M perhentian dan menerima masukan M . Oleh karena itu, M ' juga perhentian dan menerima masukan M . Dengan demikian, M ' , M H P . Di sisi lain, jika w L D maka M menolak atau tidak pernah berhenti di w,w
wLDM MMMM,MHP
wLDM . Dalam kedua kasus M ' akan masuk ke loop tak terbatas padaM . Dengan demikian,M ' , M H P , dan kita selesai menunjukkan bahwa w L D jika dan hanya jika w 'H P , dan dengan demikian menunjukkan bahwa H P R .MMMM,MHPwLDwHPHPR

Bacaan lebih lanjut: banyak contoh untuk reduksi dan membuktikan ketidakjelasan bahasa dapat ditemukan melalui tag .


  1. Ada beberapa batasan lagi pada pengurangan agar valid. Konversi itu sendiri harus dapat dihitung , dan didefinisikan dengan baik untuk input apa pun.

  2. Masukan dari terlihat seperti M , x , di mana M adalah TM dan x adalah beberapa tali. Jadi di sini kita memilih string x untuk menjadi pengkodean dari mesin M , yang hanya beberapa string ..HPM,xMxxM


4. Teorema Padi

"Jadi setiap kali kita ingin membuktikan adalah diputuskan, kita perlu mengurangi L D (atau H P ) untuk itu? Apakah tidak ada jalan pintas saja?"LLDHP

Sebenarnya ada. Ini adalah Teorema Padi .

Teorema mengatakan bahwa banyak bahasa yang memiliki struktur tertentu, tidak dapat diputuskan. Karena semua bahasa ini memiliki struktur tertentu, kami dapat melakukan reduksi satu kali dan menerapkannya pada bahasa apa pun yang memiliki struktur serupa.

Teorema secara formal dinyatakan dengan cara berikut,

SRELS

LS={ML(M)S}

Set adalah subset dari bahasa dalam ; kami menyebutnya properti karena menggambarkan properti dari bahasa yang diterima . Semua TM yang bahasanya memenuhi properti ini adalah milik .SREL(M)LS

Misalnya, dapat menjadi properti yang bahasa yang diterima mengandung dua kata:SL(M)

S2={L|L|=2,LRE}.
Dalam hal ini adalah himpunan semua TM yang bahasanya terdiri dari dua kata: LS2
LS2={ML(M)S}={M|L(M)|=2}.

Properti bisa sangat sederhana, tetapi tidak bisa semua bahasa RE, atau tidak ada bahasa RE. Jika atau maka properti dikatakan sepele , dan diinduksi dapat dihitung. Contoh untuk sederhana adalah salah satu yang hanya mengandung satu bahasa, katakanlah . Perhatikan bahwa meskipun hanya berisi satu bahasa, ada banyak mesin yang tak terhingga yang bahasanya , jadi tidak terbatas, dan tidak dapat diputuskan.S=S=RELSSScomplete={Σ}SMΣLScompete


Teorema ini sangat kuat untuk membuktikan keraguan banyak bahasa.

Contoh.

Bahasa , tidak dapat diputuskanL={MM never reaches the accepting state}

Bukti.
Kita dapat menulis sebagai , yaitu untuk properti . Ini adalah properti non-sepele (itu termasuk bahasa , tetapi tidak termasuk, misalnya, bahasa . Oleh karena itu, oleh Teorema Rice, tidak dapat ditentukan.L{ML(M)=0}L=LSS={LRE,|L|=0}L=L={1,11,111,}L


Kami sekarang membuktikan teorema. Seperti disebutkan di atas, kami akan menunjukkan pengurangan dari ke (untuk sembarang non-sepele ).HPLSS

Bukti.
Biarkan menjadi properti non-sepele, . Kami menunjukkan , yaitu, kami mengurangi menjadi sehingga jika kami dapat memutuskan kami akan dapat memutuskan (yang kami tahu tidak mungkin, oleh karena itu, tidak dapat ditentukan). Dalam bukti di bawah ini kita asumsikan bahwa bahasa kosong bukan bagian dari , yaitu . (jika bahasa kosong dalam , bukti setara bekerja pada properti komplemen , saya akan menghilangkan detailnya). SejakSSREHPLSHPLSLSHPLSSSSS¯=RESSbersifat nontrivial, termasuk setidaknya satu bahasa; sebut saja bahasa dan anggap adalah mesin yang menerima (mesin tersebut ada, karena hanya menyertakan bahasa dalam RE).L0M0L0S

Ingatlah bahwa dalam pengurangan seperti itu (Lihat bagian 3 di atas), kita perlu menunjukkan cara mengubah input untuk menjadi input untuk sehingga wHPwLS

wHP if and only if wLS

Misalkan , kami mengonversinya menjadi mana deskripsi mesin (pada input ) adalah sebagai berikut:w=(M,x)w=MMx

  1. Jalankan pada .Mx
  2. Jika Langkah 1 di atas berhenti, jalankan pada dan terima / tolak sesuai.M0x

Kami melihat bahwa konversi ini valid. Catatan pertama adalah mudah untuk membuat deskripsi diberikan .Mw=(M,x)

Jika , maka berhenti di . Dalam hal ini, melanjutkan ke langkah 2, dan berperilaku seperti . Oleh karena itu bahasa yang diterima adalah . Oleh karena itu, . Jika maka loop pada . Kasus ini, loop pada setiap masukan - itu akan terjebak pada langkah 1. Bahasa diterima oleh dalam hal ini adalah kosong, . Oleh karena itu, .wHPMxMM0L(M)=M0Sw=MLS
wHPMxMxML(M)=Sw=MLS

4.1 Teorema Padi yang Diperpanjang

Teorema Rice memberi kita cara mudah untuk menunjukkan bahwa bahasa tertentu yang memenuhi sifat-sifat tertentu diputuskan, yaitu, . Versi diperpanjang dari teorema Rice memungkinkan kita untuk menentukan apakah bahasanya secara enumerable-enumerable atau tidak, yaitu menentukan apakah , dengan memeriksa apakah memenuhi beberapa properti tambahan.LLRLREL

Teorema (Beras, diperpanjang). Diberikan properti , bahasa secara -ulang dihitung ( ) jika dan hanya jika ketiga pernyataan berikut secara bersama-sama memegangSRE

LS={ML(M)S}
LSRE
  1. Untuk setiap dua , jika dan juga kemudian juga .L1,L2REL1SL1L2L2S
  2. Jika maka terdapat terbatas bagian sehingga .L1SL2L1L2S
  3. Himpunan semua bahasa hingga dalam dapat dihitung (dengan kata lain: ada TM yang menyebutkan semua bahasa terbatas ).SLS

Bukti.
Ini adalah teorema "jika dan hanya jika", dan kita harus membuktikan kedua arahnya. Pertama, kami menunjukkan bahwa jika salah satu kondisi (1,2,3) tidak berlaku, maka . Setelah itu kami akan menunjukkan bahwa jika ketiga kondisi bertahan secara bersamaan, maka .LSRELSRE

Jika (1,2) tahan, tetapi (3) tidak, makaLSRE .
Mari kita asumsikan bahwa , dan kita akan melihat bahwa kita memiliki cara untuk menerima bahasa terbatas apa pun di (dan dengan demikian, himpunan semua bahasa ini adalah RE), dengan demikian syarat (3) berlaku dan kita mencapai kontradiksi . Bagaimana cara memutuskan apakah terbatas milik atau tidak? Mudah - kami menggunakan deskripsi untuk membuat mesin yang hanya menerima kata-kata dalam , dan sekarang kami menjalankan mesin pada (ingat - kami mengasumsikan , jadi ada mesin yang menerimaLSRESLSLMLLLSMLLSRELS!). Jika maka dan karena , mesinnya akan mengatakan ya pada input , dan kita selesai.LSMLLSLSREML

Jika (2,3) bertahan, tetapi (1) tidak, makaLSRE .
Kami berasumsi bahwa dan kami akan menunjukkan bahwa kami memiliki cara untuk memutuskan , yang mengarah ke kontradiksi.LSREHP

Karena kondisi (1) tidak berlaku, ada bahasa dan superset dari itu, sehingga . Sekarang kita akan mengulangi argumen yang digunakan di Bagian 4 untuk memutuskan : diberi input untuk , kami membuat mesin yang bahasanya if atau sebaliknya, bahasanya adalah . Kemudian, kita dapat memutuskan : apakah berhenti di , atau mesin- untuk menerimaL1SL2L1L2SHP(M,x)HPML1(M,x)HPL2HPMxLSM; kita dapat menjalankan keduanya secara paralel dan dijamin bahwa setidaknya satu akan berhenti.

Mari kita berikan detail pembuatan (pada input ):Mx

  1. Lakukan hal berikut secara paralel:
    1.1 jalankan pada . 1.2 jalankan mesin padaMx
    L1x
  2. Jika 1,2 berhenti dan menerima - terima.
  3. Jika 1.1 berhenti: jalankan mesin pada .L2x

Mengapa ini bekerja? Jika maka 1.1 tidak pernah berhenti, dan menerima persis semua input yang diterima pada langkah 1.2, jadi . Di sisi lain, jika , pada beberapa titik langkah 1.1 berhenti dan menerima persis . Mungkin terjadi bahwa menerima sebelumnya, tetapi karena , ini tidak mengubah bahasa dalam kasus ini.(M,x)HPML(M)=L1(M,x)HPML21.2L1L2M

Jika (1,3) tahan, tetapi (2) tidak, makaLSRE .
Sekali lagi, kita akan menganggap dan menunjukkan bahwa menjadi decidable, yang merupakan kontradiksi.LSREHP

Jika kondisi (2) tidak berlaku, maka untuk setiap , semua himpunan bagiannya yang terbatas memenuhi (perhatikan bahwa harus tidak terbatas, karena ). Seperti di atas, untuk memutuskan untuk input yang diberikan , kami membuat mesin yang bahasanya if dan beberapa terbatas sebaliknya. Kontradiksi mengikuti dengan cara yang sama seperti di atas.L1SL2L1L2SL1L1L1HP(M,x)ML1(M,x)HPL2

Konstruksi mesin ini sangat mirip dengan kami buat sebelumnya. Mesin (pada input ) tidak:MMx

  1. Menjalankan pada untuktangga.Mx|x|
  2. Jika berhenti selama langkah 1 - tolakM
  3. Kalau tidak, jalankan mesin pada .L1x

Itu menyatakan bahwa, jika , maka pada titik tertentu, katakan setelah 1000 langkah, berhenti pada . Oleh karena itu, langkah 1 akan berhenti pada (dan menolak) input panjang . Oleh karena itu, dalam hal ini, adalah terbatas . Juga mencatat bahwa , dan khususnya, dengan asumsi kita tentang ketidakabsahan kondisi (2), kita mendapati bahwa .(M,x)HPMxx>1000L(M)L(M)L1L(M)S

Di sisi lain, jika , maka langkah 1 tidak pernah berhenti, dan kami tidak pernah menolak pada langkah 2. Dalam hal ini mudah untuk melihat bahwa dan dalam tertentu, .(M,x)HPL(M)=L1L(M)S


Kita dibiarkan menunjukkan arah lain dari teorema yang diperluas. Yaitu, kita perlu menunjukkan bahwa jika semua kondisi (1,2,3) bertahan, maka kita memiliki TM yang menerima , yaitu, . Dengan kata lain, kita perlu memperlihatkan mesin sehingga untuk setiap input yang , mesin menerima input ini, .LSLSREMSML(M)SMS(M)accept

Berikut adalah perilaku mesin (pada input ):MSM

  1. Biarkan menjadi mesin yang menghitung semua bahasa hingga dalam , dijamin oleh kondisi (3).Menum SS
  2. Jalankan berikut secara paralel (dengan melakukan dovetailing, lihat misalnya, ini dan ini ) untuk 2.1 Jalankan sampai mengeluarkan bahasa 2.2. Periksa apakah menerima semua kata-kata (jalankan pada kata-kata ini, sekali lagi secara paralel). 2.3. Jika untuk beberapa , menerima semua kata-kata - accept.i=1,2,...
    Menum SLi
    MLiM
    iMLi

Mengapa ini berhasil? Jika maka ia memiliki subset terbatas , dan sekali menampilkan subset itu, langkah 2.2 / 2.3 akan menemukan bahwa menerima semua kata dalam bahasa itu dan menerima.L(M)SLjSMenum SM

Di sisi lain, jika itu tidak dapat menerima semua kata dalam untuk setiap . Memang, dengan syarat (1), setiap juga dalam , jadi jika menerima semua kata dalam untuk beberapa , maka dan dengan demikian , dalam kontradiksi.L(M)SLii=1,2,...LLiSMLiiL(M)LiL(M)S


Akhirnya, perhatikan bahwa berikut ini adalah wajar (dan sangat berguna) wajar dari hal di atas:

Konsekuensi (Beras, diperpanjang). Diberikan properti non sepele , sehingga , bahasa tidak dapat dihitung secara rekursif, yaitu, .SRES

LS={ML(M)S}
LSRE

Terima kasih telah menambahkan versi panjang teorema Rice! Saya tahu versi yang berbeda; Saya harus menggali yang itu. Bagaimanapun, saya tidak berpikir itu sangat penting atau bahkan membantu untuk memiliki buktinya di sini. Mungkin Anda bisa mereferensikannya, atau mengunggahnya di tempat lain jika tidak ada referensi yang baik?
Raphael

13

Salah satu alat yang bermanfaat adalah teorema Rice . Inilah yang dikatakan:

Mari satu set non-sepele fungsi unary sebagian komputasi dan sebuah Gödel penomoran dari . Kemudian set indeksPPφPP

IP={iNφiP}

tidak rekursif.

Anda menemukannya juga dinyatakan dalam hal penyandian mesin Turing (atau bahasa pemrograman lengkap Turing lainnya), yaitu ; di sini mendefinisikan penomoran Gödel.IP={MM TM,fMP}.

Artinya, Anda dapat menggunakan teorema Rice untuk membuktikan set non-rekursif yang merupakan set indeks set fungsi non-sepele (atau yang dapat direduksi menjadi ).SS

Perhatikan bahwa ada ekstensi yang dapat digunakan untuk menunjukkan bahwa kumpulan indeks tertentu tidak dapat dihitung secara rekursif.

Contoh

Biarkan penomoran Gödel. Pertimbangkan serangkaian naturalsφ

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

Sekarang karena untukP={fPf(j)=1 for all j2N}

  • A=IP ,
  • (n1)P dan
  • (n2)P ,

Teorema Padi dapat diterapkan dan tidak dapat ditentukan.A

Karena banyak yang tidak terbiasa dengan penomoran Gödel, perhatikan bahwa contoh ini bekerja dengan baik dalam hal mesin Turing (yaitu program) dengan menggunakan .A={MfM(x)=1 for all x2N}

Unexample

Pertimbangkan serangkaian naturals

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

yang tentu saja tidak dapat dihitung. Namun, bukan indeks yang ditetapkan untuk ! Biarkan untuk beberapa . Karena adalah penomoran Gödel , ada (sangat banyak) dengan tetapi untuk semua berlaku karena .APf=φiiAφjiφj=fjAf(2)=ij

Berhati-hatilah dengan ini! Sebagai patokan, jika indeks fungsi digunakan pada "sisi kanan" atau sebagai parameter fungsi dalam definisi yang ditetapkan, kemungkinan bukan indeks yang ditetapkan. Anda mungkin memerlukan properti dari penomoran Gödel dan teorema fixpoint untuk menunjukkan bahwa set tidak ada set indeks.smn

Lihat di sini dan di sini untuk posting terkait pada teorema Rice.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.