Saya mulai membaca buku tentang Kompleksitas Komputasi dan Mesin Turing. Berikut ini kutipannya:
Algoritma (yaitu, mesin) dapat direpresentasikan sebagai string bit setelah kami memutuskan beberapa pengkodean kanonik.
Pernyataan ini diberikan sebagai fakta sederhana, tetapi saya tidak bisa memahaminya.
Misalnya, jika saya memiliki algoritma yang mengambil sebagai input dan menghitung atau:( x + 1 ) 2
int function (int x){
x = x + 1;
return x**2;
}
Bagaimana ini dapat direpresentasikan sebagai string menggunakan alfabet ?
algorithms
turing-machines
computability
computation-models
Kenenbek Arzymatov
sumber
sumber
Jawaban:
Jawaban yang paling naif dan sederhana untuk pertanyaan Anda adalah bahwa kode yang disediakan (dan kode mesin yang dikompilasi) sebenarnya direpresentasikan sebagai string sintaksis dari {0,1} *. Selain itu, karena Anda berbicara tentang mesin turing, program yang mereka jalankan adalah daftar linier operasi / instruksi, tidak ada alasan ini tidak dapat direpresentasikan sebagai bit / byte.
sumber
Anda sudah memiliki representasi fungsi itu sebagai teks. Konversi setiap karakter ke nilai satu byte menggunakan pengkodean ASCII. Maka hasilnya adalah urutan byte, yaitu urutan bit, yaitu string di atas alfabet . Itu salah satu contoh pengkodean.{ 0 , 1 }∗
sumber
Saya tidak bisa menahan ...
(Titik-titik di atas mewakili yang, nol kosong).
sumber
Komputer Anda menyimpan semuanya sebagai urutan
0
dan1
, termasuk pertanyaan yang Anda ketikkan untuk menanyakan bagaimana melakukannya. Sebagai contoh, setiap huruf dan simbol diwakili oleh 8-bit (saya berbicara tentang bagaimana hal-hal yang dulu, saat ini 16-bit, dan lebih rumit). Anda bisa melihatnya di sini . Yah, mereka tidak menunjukkan bit, melainkan kode heksadesimal dan oktal. Apakah Anda tahu cara mengonversi angka ke representasi digitalnya?sumber
Hipotesis mendasar di balik konsep ini adalah tesis Church-Turing . Mungkin sulit untuk melihat bahwa algoritma apa pun dapat direpresentasikan sebagai string bit, karena istilah "algoritma" dapat dianggap dalam istilah yang sangat informal. Dalam tesis Church-Turing, mereka menggunakan konsep yang sangat ketat tentang apa itu algoritma (dan bahkan kemudian ada beberapa pertanyaan tentang kata-kata). Namun, terminologi mereka telah mendapat begitu banyak bergoyang bahwa itu kadang-kadang berpendapat bahwa definisi ini untuk kata-kata seperti "algoritma" sangat efektif bahwa kita hanya menerima mereka sebagai yang definisi.
Church-Turing menyatakan bahwa setiap algoritma dapat diimplementasikan sebagai perhitungan pada Mesin Turing. Mengingat bahwa deskripsi Mesin Turing adalah himpunan nilai hingga, sepele untuk melihat bagaimana memetakan deskripsi ini ke dalam urutan angka, dan kemudian ke dalam urutan 0 dan 1.
Seperti jawaban lain yang disebutkan, itu sepele untuk mewakili contoh algoritma Anda dengan menggunakan pengkodean ASCII atau pengkodean lainnya.
Saya pikir alasan mengapa buku Anda memberikan pernyataan ini sebagai fakta berasal dari fakta bahwa banyak orang menggunakan tesis Church-Turing sebagai dasar untuk definisi algoritma. Jika Anda menggunakan definisi seperti itu, jelas fakta bahwa "5 adalah angka" karena pada dasarnya Anda mendefinisikannya.
sumber
Pernyataan ini didasarkan pada keberadaan TM universal . Ini pada dasarnya adalah TM yang dapat diprogram yang dapat mensimulasikan TM lainnya dengan paling banyak poli overhead. Karena itu, program Anda hanyalah bagian dari input yang dikodekan sebagai nol dan satu.
sumber
Baiklah, mari kita bicara tentang algoritma yang tidak dapat direpresentasikan sebagai bit-string yang terbatas untuk segala jenis pengkodean.
Biarkan saya mengetikkan algoritma seperti itu untuk Anda ... Ah, tetapi jika saya melakukan itu, saya dapat mewakili algoritma itu dengan pengkodean teks yang saya ketik.
Bagaimana kalau mewakili algoritme saya menggunakan beberapa 'sarana analog', katakan dengan posisi beberapa koin di meja saya. Meskipun posisi koin-koin itu dapat dimodelkan dengan beberapa bilangan real (yang dalam beberapa pengkodean tidak mungkin untuk diwakili secara tepat), seluruh uraian ini dapat kembali dianggap sebagai representasi dari algoritma saya dan dapat dikodekan ke bit-string lagi!
Saya harap contoh-contoh ini memperjelas bahwa jika beberapa algoritma tidak dapat diwakili oleh bit-string yang terbatas kita tidak memiliki cara untuk menggambarkan algoritma ini sama sekali!
Jadi, mengapa kita mempertimbangkan keberadaan sesuatu yang tidak dapat kita bicarakan? Mungkin menarik untuk filsafat, tetapi tidak untuk sains. Oleh karena itu, kami mendefinisikan gagasan tentang algoritma sehingga dapat diwakili oleh bit-string, karena dengan demikian kita setidaknya tahu bahwa kita dapat berbicara tentang semua algoritma.
Meskipun jawaban di atas pertanyaan yang diajukan, saya pikir kebingungan tentang contoh yang diberikan sebagian besar disebabkan oleh fakta bahwa representasi hanya perlu secara unik mewakili beberapa algoritma. Cara representasi tidak perlu melibatkan perhitungan aktual yang dilakukan oleh algoritma! Ini sangat berguna, karena itu berarti kami juga dapat mewakili algoritma yang tidak dapat dihitung !
sumber
Cara lain untuk melihatnya adalah melalui teori informasi. Semua penyandian informasi / pertanyaan yang bermakna / berguna dapat dibuat menjadi 'urutan' biner.
Sebagian besar bidang menjawab pertanyaan, "apa cara untuk mengajukan pertanyaan dengan jumlah rata-rata paling sedikit untuk mengomunikasikan informasi yang bermakna?" Dalam praktiknya, ini sama dengan "apa pendekatan optimal untuk mengajukan paling sedikit pertanyaan ya / tidak untuk memahami apa yang dikomunikasikan atau dikatakan?"
sumber