Pada tahun 1931[2], Kurt Gödel memublikasikan teorema ketidaklengkapan yang membuktikan bahwa terdapat batasan mendasar dalam inferensi logika dan pembuktian matematika, atau dalam kata lain, terdapat keterbatasan logika dan matematika dalam melakukan penyangkalan atau pembuktian matematika.[3]
Pada awal abad ke-20, perkembangan pesat kajian mekanika kuantum memberikan sudut pandang baru dalam pemaknaan kata "komputasi". Kajian teori informasi pada dekade sebelumnya fokus melakukan abstraksi terhadap kondisi realitas untuk mendapatkan informasi secara akurat, dengan mengabaikan bentuk fisik (aliran sinyal listrik pada prosesor, misalnya) dari mesin dan realitas itu sendiri. Kegiatan abstraksi ini bersandar pada prinsip-prinsip mekanika klasik yang menghasilkan informasi yang bermanfaat untuk kegiatan komunikasi maupun komputasi, contohnya pada mesin Turing.[12]
Pada awal tahun 1980, beberapa peneliti menyadari bahwa prinsip-prinsip mekanika kuantum memiliki implikasi pada perspektif mengenai pemrosesan informasi.[12] Fisikawan Feynman, Yuri Manin dan peneliti lain kemudian menemukan bahwa fenomena keterkaitan partikel tidak dapat disimulasikan dengan baik oleh mesin Turing, yang menggunakan bita 0 dan 1 dalam melakukan komputasi.[13] Menggunakan fenomena ini, peneliti lain mencoba menggeser konsep "komputasi" yang menggunakan dua jenis bita digital: 0 dan 1, menjadi menggunakan qubit yang memiliki lebih dari dua "keadaan" (state) atau superposisi.[12][14]
Dengan menggunakan komputasi dalam qubit, seseorang dapat melakukan komputasi pada fungsi dengan menggunakan beberapa "keadaan" secara bersamaan. Penemuan-penemuan ini mengangkat kajian terhadap konsep komputer kuantum pada paruh kedua abad ke-20. Salah satu kajian pada awal tahun 1990an yang dilakukan oleh Peter Shor meneliti suatu algoritma untuk memfaktorkan bilangan besar dalam kompleksitas waktu polinomial dengan memanfaatkan prinsip kuantum.[15] Melalui penelusuran lebih lanjut, ditemukan bahwa algoritma ini berpotensi membuat algoritma kriptografi kunci publik seperti RSA menjadi tidak aman.[16]
Kajian riset ilmu komputer teoretis modern didasarkan pada perkembangan-perkembangan dasar yang telah dibahas sebelumnya, namun juga mencakup ragam kajian matematika dan interdisipliner lain, seperti yang ditunjukkan di bawah ini:
Algoritma adalah metode efektif berupa daftar terbatas dari instruksi yang didefinisikan dengan akurat untuk menghitung suatu fungsi.[17] Daftar langkah tersebut dimulai dari keadaan (state) awal dan masukan (input) awal, atau bisa jadi berisi nilai kosong.[18] Rangkaian instruksi pada algoritma menjelaskan langkah-langkah komputasi yang menghasilkan keadaan (state) yang tetap di tiap langkah. Pada akhir algoritma, rangkaian instruksi akan menghasilkan "keluaran" (output)[18] dan kemudian berhenti. Peralihan dari satu keadaan ke keadaan berikutnya tidak selalu bersifat deterministik (memiliki hubungan sebab-akibat yang jelas secara kasat mata). Sebagai contoh, algoritma acak, menambahkan tiap masukan secara acak, sehingga hasil algoritma tidak terlihat deterministik.[19]
Secara ringkas, teori automata membahas mesin (mesin mekanik maupun fungsi matematis) yang meniru sebagian fitur aksi manusia.[20] Mesin-mesin ini melakukan konversi informasi dari bentuk satu ke bentuk yang lain. Sebagai contoh, dalam mesin mekanik dikenal suatu sistem pendulum, yang memiliki keadaan awal (initial state), masukan berupa faktor peubah (seperti gaya) dan luaran berupa kondisi akhir yang menjadi keadaan awal bagi langkah berikutnya.[21] Dalam matematika, fungsi yang menggambarkan relasi antara dua variabel dapat menghasilkan luaran berbeda tiap kali variabel masukan berubah.[20] Teori automata mengkaji kelakuan dinamis dari hubungan antara masukan dan luaran dari automaton dan memberikan pembuktian matematis dari tingkah laku dinamis tersebut.[22]
Teori pengkodean
Teori pengkodean mengkaji aspek matematika dari metode (dalam konteks kajian ini disebut sebagai "kode") untuk mengoreksi galat pada transmisi informasi. Kode merepresentasikan data sedemikian rupa sehingga informasi tetap dapat diterima, meskipun ditemukan galat/kesalahan pada data.[23][24] Sebagai contoh, kode digunakan untuk kompresi data, kriptografi, koreksi kesalahan, dan pengkodean jaringan. Kode dikaji dalam ragam bidang ilmu—seperti teori informasi, teknik elektro, matematika, dan ilmu komputer—dengan tujuan untuk merancang metode transmisi data yang efisien dan andal. Hal ini biasanya melibatkan penghapusan redundansi dan koreksi (atau deteksi) kesalahan pada transmisi data.[25]
Biologi komputasi
Biologi komputasi merupakan cabang dari ilmu biologi yang beririsan dengan ilmu komputer yang mengkaji pemahaman serta pemodelan proses dan struktur makhluk hidup.[26] Biologi komputasi mengembangkan dan menerapkan metode analisis dan teori data biologis, pemodelan matematika dari struktur dan proses biologis dan teknik komputasi simulasi dalam sistem biologis, perilaku, dan sosial. [27] Bidang ini didefinisikan secara luas dan beririsan dengan kajian-kajian dalam ilmu komputer, matematika terapan, animasi, statistik, biokimia, kimia, biofisika, biologi molekuler, genetika, genomik, ekologi, evolusi, anatomi, ilmu saraf, dan visualisasi.[28]
Biologi komputasi berbeda dengan komputasi biologi, yang merupakan subbidang di bawah kajian ilmu komputer dan teknik komputer yang memanfaatkan bioteknologi dan biologi untuk membangun sistem komputer.[26] Namun, kajian biologi komputasi memiliki kemiripan dengan kajian bioinformatika, yaitu ilmu interdisipliner yang mengkaji penyimpanan dan pemrosesan data biologis menggunakan komputer.[26]
Teori kompleksitas komputasi
Teori kompleksitas komputasi adalah bagian dari kajian teori komputasi mengenai pengelompokkan masalah komputasi sesuai tingkat kompleksitas komputasinya, dan membahas hubungan antar tingkatan kompleksitas tersebut satu sama lain.[29] Dalam kajian ini, yang dimaksud dengan masalah komputasi adalah tugas yang pada prinsipnya dapat diselesaikan oleh komputer.[30] Masalah komputasi tersebut dapat diartikan juga sebagai masalah yang dapat diselesaikan dengan penerapan langkah-langkah matematika secara terstruktur, seperti dengan menggunakan solusi algoritma tertentu.
Suatu masalah komputasi dianggap kompleks/sulit bila pencarian solusi membutuhkan sumber daya komputasi yang besar dalam menjalankan algoritma yang diberikan (penggunaan ruang pada penyimpanan, atau penggunaan memori maupun prosesor atau prosesor grafik).[31] Kajian teori kompleksitas komputasi menelusuri pola-pola masalah-masalah komputasi secara matematika, dan kemudian menyusun model komputasi matematis untuk mempelajari masalah-masalah ini.[31] Model komputasi tersebut juga menghitung jumlah sumber daya yang dibutuhkan untuk pencarian solusi, seperti waktu proses dan ruang penyimpanan.
Teori kompleksitas komputasi juga mengkaji ukuran-ukuran kompleksitas lainnya, seperti jumlah komunikasi (digunakan dalam kajian kompleksitas komunikasi),[32] jumlah gerbang dalam suatu rangkaian digital (digunakan dalam kajian kompleksitas rangkaian)[33] dan jumlah unit prosesor yang bekerja (digunakan dalam kajian komputasi paralel).[34][35] Salah satu peran teori kompleksitas komputasi adalah untuk menentukan batasan praktis tentang apa yang dapat dan tidak dapat dilakukan oleh komputer.
Geometri komputasi
Geometri komputasi adalah cabang ilmu komputer yang mengkaji secara sistematis algoritma dan struktur data yang digunakan pada objek-objek geometri, dengan fokus untuk menemukan algoritma yang dapat dengan cepat menyelesaikan masalah-masalah geometris.[36] Beberapa masalah dalam kajian geometri murni juga ditemukan dan dapat dipecahkan melalui studi algoritma geometri komputasi.
Kajian geometri komputasi sebagai disiplin ilmu bermula dari perkembangan kajian grafika komputer serta desain dan manufaktur berbantuan komputer (computer-aided design/CAD, computer-aided manufacturing/CAM).[36] Seiring dengan perkembangan kajian geometri komputasi, banyak masalah geometri klasik dibahas melalui perspektif geometri komputasi seperti topologi, geometri konveks, dan geometri polihedron.[37]
Penerapan algoritma hasil kajian geometri komputasi dimanfaatkan dalam ragam bidang, termasuk robotika (perencanaan gerak dan masalah visibilitas),[36]sistem informasi geografis (Geographical Information System/GIS; lokasi dan pencarian geometris, perencanaan rute),[38][36] desain sirkuit terpadu (integrated circuit/IC; desain dan verifikasi geometri IC),[36]teknik berbantuan komputer (Computer-aided Engineering/CAE; generasi jaring),[37]visi komputer (rekonstruksi 3D).[36][37]
Teori komputasi pembelajaran
Teori komputasi pembelajaran mengkaji proses kognisi secara matematis,[39] memberikan penjelasan menggunakan nalar matematika yang kaku (rigor) mengenai bagaimana proses pembelajaran terjadi.[40] Teori ini mengambil fokus dalam pembelajaran terarah (supervised learning) dalam konteks pembelajaran mesin. [41]
Dalam pembelajaran terarah, suatu algoritma diberikan sampel-sampel yang telah diberi label untuk belajar/berlatih dengan sampel-sampel berlabel tersebut. Sebagai contoh, tupel pada sampel jamur berisi data-data deskriptif ragam spesies jamur, dan labelnya bisa berupa apakah jamur-jamur tersebut dapat dimakan atau tidak. Algoritma yang akan dilatih mengambil sampel yang telah dilabeli terlebih dahulu dan membuat suatu fungsi klasifikasi yang mempelajari secara induksi pola-pola relasi antara label jamur dan sampel data jamur.
Kemudian, fungsi klasifikasi memberikan label pada sampel uji ataupun sampel baru yang belum diproses melalui algoritma tersebut. Dari hasil pelabelan sampel uji, akan dilakukan perbandingan dengan sampel latih dan dilihat keakuratan prediksi fungsi klasifikasi dalam mengklasifikasikan jamur yang bisa dimakan dan tidak bisa dimakan.
Teori komputasi pembelajaran fokus dalam melakukan analisis formal matematis terhadap keakuratan fungsi klasifikasi dalam contoh. Pada contoh sebelumnya, analisis keakuratan tergolong mudah, karena label bersifat biner (bisa dimakan/1 dan tidak bisa dimakan/0).[41] Teori komputasi pembelajaran juga melakukan eksplorasi formal matematis terhadap ragam bentuk klasifikasi lain, yang terbukti sangat sulit dilakukan.[42]
Teori komputasi bilangan
Teori komputasi bilangan adalah irisan dari ilmu komputer dan teori bilangan, dengan tujuan mengkaji permasalahan dalam teori bilangan dari sudut pandang ilmu komputer, dan mencari algoritma yang efisien untuk memecahkan masalah-masalah tersebut.[43] Permasalahan-permasalahan bilangan yang dibahas dalam teori bilangan komputasi umumnya melibatkan bilangan bulat (integer) yang berukuran terlalu besar untuk ditampung atau diproses dalam komputer dengan prosesor 32 maupun 64 bita.[44]
^TCS covers a wide variety of topics including algorithms, data structures, computational complexity, parallel and distributed computation, probabilistic computation, quantum computation, automata theory, information theory, cryptography, program semantics and verification, algorithmic game theory, machine learning, computational biology, computational economics, computational geometry, and computational number theory and algebra. Work in this field is often distinguished by its emphasis on mathematical technique and rigor.[1]
^ abcRieffel, Eleanor; Polak, Wolfgang (2014). Quantum computing: a gentle introduction. Scientific and engineering computation (edisi ke-First MIT Press paperback edition). Cambridge, Massachusetts London, England: The Mit Press. ISBN978-0-262-52667-8.Pemeliharaan CS1: Teks tambahan (link)
^Feynman, Richard (2013). "Quantum Behavior". Dalam Gottlieb, Michael A.; Pfeiffer, Rudolf. The Feynman Lectures. California: California Institute of Technology.Parameter |url-status= yang tidak diketahui akan diabaikan (bantuan)
^Rogers, Hartley (2002). Theory of recursive functions and effective computability (edisi ke-5. print). Cambridge, Mass.: MIT Press. ISBN978-0-262-68052-3.
^ abKnuth, Donald Ervin; Knuth, Donald Ervin (1990). Fundamental algorithms. The art of computer programming / Donald E. Knuth (edisi ke-2. ed., [Nachdr.]). Reading, Mass.: Addison-Wesley. ISBN978-0-201-03821-7.
^Whether or not a process with random interior processes (not including the input) is an algorithm is debatable. Rogers opines that: "a computation is carried out in a discrete stepwise fashion, without the use of continuous methods or analog devices . . . carried forward deterministically, without resort to random methods or devices, e.g., dice" (Rogers 1967).
^ abAziz, Amar Dar; Cackler, Joe; Yung, Raylene. "Basics of Automata Theory". Automata Theory (dalam bahasa Inggris). Stanford Computer Science Department. Diakses tanggal 2023-12-19.
^Sipser, Michael (2013). Introduction to the theory of computation (edisi ke-Third edition, international edition). United States: Cengage Learning. ISBN978-1-133-18779-0.Parameter |url-status= yang tidak diketahui akan diabaikan (bantuan)Pemeliharaan CS1: Teks tambahan (link)
^Weisstein, Eric W. "Coding Theory". mathworld.wolfram.com (dalam bahasa Inggris). Diakses tanggal 2023-12-19.
^Guruswami, Venkatesan; Rudra, Atri; Sudan, Madhu (2023). Essential Coding Theory. New York: Department of Computer Science and Engineering, University at Buffalo, SUNY.Parameter |url-status= yang tidak diketahui akan diabaikan (bantuan)
^"About the CCMB". Center for Computational Molecular Biology. Diakses tanggal 18 August 2012.
^Dean, Walter (2021). Zalta, Edward N., ed. Computational Complexity Theory (edisi ke-Fall 2021). Metaphysics Research Lab, Stanford University.
^Arora, Sanjeev; Barak, Boaz (2016). Computational complexity: A Modern Approach (edisi ke-4th printing 2016). New York: Cambridge University Press. ISBN978-0-521-42426-4.
^Savage, John E. (2003). "Circuit Commplexity"(PDF). Models of computation: exploring the power of computing (edisi ke-cetak ulang). Reading, Mass.: Addison-Wesley. ISBN978-0-201-89539-1.Parameter |url-status= yang tidak diketahui akan diabaikan (bantuan)
^ abcdefBerg, Mark de (2008). Computational Geometry: Algorithms and Applications (edisi ke-3d Edition). Berlin, Heidelberg: Springer-Verlag Berlin Heidelberg. ISBN978-3-540-77974-2.Pemeliharaan CS1: Teks tambahan (link)
^ abcGoodman, Jacob E.; O'Rourke, Joseph; Tóth, Csaba D., ed. (2018). Handbook of discrete and computational geometry. Discrete mathematics and its applications (edisi ke-Third edition). Boca Raton London New York: CRC Press, Taylor & Francis Group, a Chapman & Hall book. ISBN978-1-4987-1139-5.Pemeliharaan CS1: Teks tambahan (link)
^Russell, Stuart J.; Norvig, Peter (2021). Artificial intelligence: a modern approach. Pearson Series in Artificial Intelligence. Ming-wei Chang, Jacob Devlin, Anca Dragan, David Forsyth, Ian Goodfellow, Jitendra Malik, Vikash Mansinghka, Judea Pearl, Michael J. Wooldridge (edisi ke-Fourth Edition). Hoboken, NJ: Pearson. ISBN978-0-13-461099-3.Pemeliharaan CS1: Teks tambahan (link)
^ abcWeisstein, Eric W. "Computational Number Theory". mathworld.wolfram.com (dalam bahasa Inggris). Diakses tanggal 2023-12-21.
^Das, Abhijit (2013). Computational number theory. Discrete mathematics and its applications. Boca Raton, Fla.: CRC Press, Taylor & Francis. ISBN978-1-4398-6615-3.