www.wikidata.id-id.nina.az
Dalam matematika dan ilmu komputer algoritme serapan dari bahasa Belanda algoritme adalah rangkaian terbatas dari instruksi instruksi yang rumit yang biasanya digunakan untuk menyelesaikan atau menjalankan suatu kelompok masalah komputasi tertentu Algoritma digunakan sebagai spesifikasi untuk melakukan perhitungan dan pemrosesan data Algoritma yang lebih mutakhir dapat melakukan deduksi otomatis disebut sebagai penalaran otomatis dan menggunakan tes matematis dan logis untuk mengarahkan eksekusi kode melalui berbagai rute disebut sebagai pengambilan keputusan otomatis Penggunaan karakteristik manusia sebagai deskriptor mesin secara metaforis telah dipraktekkan oleh Alan Turing dengan terminologi seperti memory search dan stimulus 1 Diagram alur dari sebuah algoritme Algoritme Euclid untuk menghitung faktor persekutuan terbesar f p b dari dua angka a dan b dalam lokasi bernama A dan B Algoritme dijalankan dengan pengurangan berturut turut dalam dua pengulangan JIKA pengujian B gt A menghasilkan ya atau benar lebih akuratnya angka b dalam lokasi B lebih besar atau sama dengan angka a dalam lokasi A MAKA algoritme menentukan B B A artinya angka b a menggantikan b sebelumnya Hal yang sama JIKA A gt B MAKA A A B Proses tersebut berhenti saat isi dari B adalah 0 menghasilkan f p k dalam A Algoritme tersebut diambil dari Scott 2009 13 simbol dan gaya penggambaran dari Tausworthe 1977 Sebaliknya heuristika adalah pendekatan untuk pemecahan masalah komputasi yang mungkin tidak sepenuhnya terspesifikasi atau tidak menjamin hasil yang benar atau optimal terutama dalam ranah masalah komputasi yang mana tidak ada hasil yang benar atau optimal yang terdefinisi dengan baik 2 Sebagai metode yang efektif algoritma dapat diekspresikan dalam jumlah ruang dan waktu yang terbatas 3 dan dalam bahasa formal yang terdefinisi dengan baik 4 untuk menghitung suatu fungsi 5 Dimulai dari tataran awal dan input awal bisa jadi kosong 6 instruksi instruksi yang ada menggambarkan sebuah komputasi yang ketika dieksekusi berjalan melalui sejumlah tataran dengan jumlah terhingga yang terdefinisi dengan baik 7 yang pada akhirnya menghasilkan output 8 dan berakhir pada tataran final akhir Transisi dari satu tataran ke tataran berikutnya tidak selalu bersifat menentukan beberapa algoritme yang dikenal sebagai algoritme acak menggabungkan input acak 9 Daftar isi 1 Sejarah 2 Definisi informal 3 Formalisasi 3 1 Menggambarkan algoritme 4 Implementasi 5 Algoritme komputer 6 Contoh 6 1 Contoh Algoritme 6 2 Algoritme Euclid 6 2 1 Contoh 6 2 2 Bahasa komputer untuk algoritme Euclid 6 2 3 Program yang kurang elegan inelegan untuk algoritme Euclid 6 2 4 Program elegan untuk algoritme Euclid 6 3 Menguji algoritme Euclid 6 4 Menghitung dan meningkatkan algoritme Euclid 7 Analisis Algoritme 7 1 Formal lawan empiris 7 1 1 Efisiensi eksekusi 8 Klasifikasi 9 Paradigma secara rancangan 9 1 Permasalahan optimisasi 9 2 Berdasarkan bidang kajian 9 3 Berdasarkan kompleksitas 9 4 Berdasarkan tipe evaluatif 10 Algoritme berkelanjutan 11 Isu legalitas 12 Etimologi 13 Sejarah Perkembangan dari kata algoritme 13 1 Asal mula 13 2 Simbol diskrit dan yang dapat dibedakan 13 3 Manipulasi simbol sebagai penampung bilangan aljabar 13 4 Rancangan mekanis dengan tingkat diskrit 13 5 Matematika selama abad 19 sampai pertengahan abad 20 13 6 Emil Post 1936 dan Alan Turing 1936 37 1939 13 7 J B Rosser 1939 dan S C Kleene 1943 13 8 Sejarah setelah 1950 14 Lihat juga 15 Referensi 16 Bacaan lanjutan 17 Pranala luarSejarah SuntingKonsep algoritma telah ada sejak zaman prasejarah Algoritma aritmatika seperti algoritma divisi digunakan oleh matematikawan Babilonia kuno sekitar tahun 2500 SM dan matematikawan Mesir sekitar tahun 1550 SM Matematikawan Yunani kemudian juga menggunakan algoritma pada 240 SM sebagaimana yang terdapat pada Tapis Eratosthenes untuk menemukan bilangan prima dan Algoritma Euklides untuk menemukan pembagi persekutuan terbesar dari dua bilangan 10 Matematikawan Arab seperti al Kindi pada abad ke 9 menggunakan algoritma kriptografi untuk pemecahan kode berdasarkan analisis frekuensi Kata algoritma berasal dari nama matematikawan Persia abad ke 9 Muḥammad bin Musa al Khwarizmi yang nisbah nya yang mengidentifikasikannya sebagai seseorang yang berasal dari Khwarezmia dilatinkan sebagai Algoritmi bahasa Persia yang diarabkan الخوارزمی sekitar 780 850 11 12 Namanya bermakna yang berasal dari daerah Khwarezmia sebuah daerah yang dulunya merupakan bagian dari Iran Raya dan sekarang sebagai bagian dari Uzbekistan 13 14 Sekitar tahun 825 Al Khwarizmi menulis sebuah risalah berbahasa Arab tentang sistem angka Hindu Arab yang diterjemahkan ke dalam bahasa Latin selama abad ke 12 Naskah ini dimulai dengan frasa Dixit Algorizmi Maka berkatalah Al Khwarizmi di mana Algorizmi di sini adalah Latinisasi penerjemah akan nama Al Khwarizmi 15 Bukunya yang bernama Aljabar menjadi salah satu buku matematikawan yang paling banyak dibaca di Eropa pada abad pertengahan 16 Dalam bahasa Latin abad pertengahan kata algorismus yang merupakan pengadaptasian dari namanya menjadi kata yang bermakna sistem bilangan desimal 17 Pada abad ke 15 di bawah pengaruh kata Yunani ἀri8mos arithmos angka lih aritmatika kata Latin nya diubah menjadi algorithmus 18 Dalam bahasa Inggris kata algorithm pertama kali digunakan pada sekitar tahun 1230 dan kemudian oleh Chaucer pada 1391 Bahasa Inggris mengadopsi istilah tersebut dari bahasa Prancis akan tetapi baru pada abad ke 19 lah kata algorithm mulai memiliki makna seperti sekarang yang ada dalam bahasa Inggris modern 19 Matematika India pada awalnya sebagian besar berbentuk algoritmik Algoritma yang mewakili tradisi matematika India berkisar dari Shulba Sutra dari beberapa abad sebelum masehi hingga teks teks abad pertengahan dari Sekolah Kerala akan Astronomi dan Matematika 20 Pemakaian awal lainnya dari kata ini berasal dari tahun 1240 dalam sebuah manual berjudul Carmen de Algorismo yang disusun oleh Alexandre de Villedieu Yang kalimatnya diawali dengan Haec algorismus ars praesens dicitur in qua Talibus Indorum fruimur bis quinque figuris yang bermakna Algorisme adalah ilmu yang saat ini kita gunakan untuk menghitung dengan angka angka India yang jumlahnya ada dua kali lima sepuluh Puisi ini panjangnya beberapa ratus baris dan merangkum ilmu menghitung dengan angka angka yang diadopsi dari India 21 Formalisasi parsial dari konsep algoritma modern dimulai dengan upaya untuk memecahkan Entscheidungsproblem masalah pengambilan keputusan yang diajukan oleh David Hilbert pada tahun 1928 Formalisasi selanjutnya dibingkai sebagai upaya untuk mendefinisikan kalkulabilitas efektif 22 atau metode efektif 23 Formalisasi tersebut termasuk fungsi rekursif Godel Herbrand Kleene pada tahun 1930 1934 dan 1935 kalkulus lambda Alonzo Church pada tahun 1936 Formulasi 1 Emil Post pada tahun 1936 dan mesin Turing nya Alan Turing pada tahun 1936 37 dan 1939 Definisi informal SuntingUntuk penjelasan lebih rinci dari berbagai sudut pandang mengenai definisi algoritme lihat Karakterisasi Algoritme Definisi informalnya bisa berarti sekumpulan aturan yang secara tepat menentukan seurutan operasi 24 yang mengikutkan semua program komputer termasuk program yang tidak melakukan perhitungan numerik Secara umum sebuah program hanyalah sebuah algoritme jika ia akan berhenti nantinya 25 Sebuah contoh prototipikal dari suatu algoritme adalah algoritme Euclid untuk menentukan bilangan pembagi terbesar dari dua integer sebagai contohnya ada contoh yang lain dijelaskan dengan diagram alur di atas dan sebagai contoh di bagian lanjut Boolos amp Jeffrey 1974 1999 memberikan sebuah makna informal dari kata algoritme dalam persamaan berikut Tidak ada manusia yang dapat menulis begitu cepat atau begitu lama atau begitu kecil kecil dan lebih kecil tanpa batas anda mungkin mencoba menulis di atas molekul atom elektron untuk mencatat semua anggota dari kumpulan bilangan tak terbatas dengan menuliskan namanya bergantian dalam suatu notasi Tapi manusia bisa melakukan sesuatu yang sama bergunanya pada kasus kumpulan bilangan tak terbatas Mereka dapat memberikan instruksi jelas untuk menentukan anggota ke n dari set untuk n terbatas acak Instruksi tersebut diberikan secara eksplisit dalam bentuk yang dapat diikuti oleh mesin penghitung atau oleh manusia yang mampu melakukan hanya operasi operasi dasar dengan simbol simbol 26 Suatu bilangan tak terbatas adalah bilangan yang elemen elemenya bisa berkorespondensi satu ke satu dengan integer Maka Boolos dan Jeffrey mengatakan bahwa sebuah algoritme berarti instruksi bagi sebuah proses yang membuat keluaran integer dari sebuah masukan acak integer yang secara teori bisa sangat besar Maka sebuah algoritme dapat berupa persamaan aljabar seperti y m n dua variabel masukan m dan n yang menghasikan keluaran y Tapi berbagai penulis yang mencoba mendefinisikan persamaan tersebut mengatakan bahwa kata algoritme mengandung lebih dari itu sesuatu yang kurang lebih untuk contoh penjumlahan Instruksi rinci dan tepat dalam bahasa yang dipahami oleh komputer 27 untuk proses yang cepat efisien baik 28 yang menentukan pergerakan dari komputer mesin atau manusia dibekali dengan informasi dan kemampuan internal yang dibutuhkan 29 untuk menemukan dekode dan kemudian mengolah masukan integer simbol m dan n simbol dan dan secara efektif 30 menghasilkan dalam waktu yang masuk akal 31 keluaran integer y pada tempat dan format tertentu Konsep dari algoritme juga digunakan untuk mendefinisikan notasi dari desidabilitas Notasi tersebut adalah pusat untuk menjelaskan bagaimana sistem formal berasal dari sejumlah kecil aksioma dan aturan Dalam logika waktu dari sebuah algoritme untuk selesai tidak dapat dihitung karena tidak berelasi dengan dimensi fisik kita Dari ketidakpastian tersebut yang mengkarakteristikan pekerjaan yang sedang berjalan timbulah ketidak tersediannya definisi algoritme yang sesuai dengan konkret pada tingkat tertentu dan penggunaan secara abstrak dari istilah tersebut Formalisasi SuntingAlgoritme sangat penting bagi cara komputer mengolah data Banyak program komputer mengandung algoritme memberikan rincian pada instruksi khusus yang komputer harus lakukan dengan urutan tertentu untuk menjalankan pekerjaan tertentu seperti menghitung gaji karyawan atau mencetak kartu rapor siswa Maka sebuah algoritme bisa dianggap sebagai urutan operasi yang bisa disimulasikan oleh sebuah sistem Turing lengkap Penulis yang mendukung tesis ini termasuk Minsky 1967 Savage 1987 dan Gurevich 2000 Minsky Tapi kita juga menjaga dengan Turing bahwa setiap prosedur yang secara alami disebut efektif bisa dinyatakan oleh mesin sederhana Walaupun tampaknya ekstrem alasan tersebut sukar disanggah 32 Gurevich argumen informal Turing untuk menyokong tesis ini membenarkan tesis yang lebih kuat setiap algoritme bisa disimulasikan oleh sebuah mesin Turing menurut Savage 1987 sebuah algoritme adalah sebuah proses penghitungan yang ditentukan oleh sebuah mesin Turing 33 Biasanya bila sebuah algoritme dihubungkan dengan pengolahan informasi data dibaca dari sumber masukan ditulis ke perangkat keluaran dan atau disimpan untuk pengolahan selanjutnya Data simpanan dianggap sebagai bagian dari keadaan internal dari entitas yang melakukan algoritme Pada praktiknya keadaan tersebut disimpan pada satu atau lebih struktur data Untuk beberapa proses komputasi algoritme harus ditentukan secara teliti dijabarkan dengan cara ia bakal berlaku untuk semua kemungkinan yang dapat timbul Yaitu setiap langkah tambahan harus secara sistematis dihadapi kasus per kasus Kriteria bagi setiap kasus harus jelas dan bisa dihitung Karena sebuah algoritme adalah kumpulan dari langkah langkah yang tepat urutan dari komputasi selalu penting bagi berfungsinya algoritme Instruksi biasanya diasumsikan terdaftar secara eksplisit dan dijelaskan dimulai dari atas dan terus ke bawah sebuah gambaran yang dijelaskan secara formal oleh alur kontrolSejauh ini diskusi tentang formalisasi algoritme telah mengasumsikan premis dari pemrograman imperatif Hal ini merupakan konsepsi umum yang mencoba menjelaskan sebuah pekerjaan dalam makna diskrit dan mekanis Keunikan dari konsepsi formalisasi algoritme adalah operasi penetapan mengatur nilai dari sebuah variabel Ia berasal dari intuisi ingatan sebagai kertas buram Contoh operasi penetapan tersebut ada di bawah Untuk konsepsi yang lain dari apa yang membentuk sebuah algoritme lihat pemrograman fungsional dan pemrograman logika Menggambarkan algoritme Sunting Algoritme dapat digambarkan dengan banyak notasi termasuk bahasa alamiah pseudokode diagram alur bagan drakon bahasa pemrograman atau tabel kontrol diproses oleh penerjemah Ekspresi bahasa alamiah terhadap algoritme condong lebih banyak dan rancu dan jarang digunakan untuk algoritme yang kompleks dan teknis Pseudokode diagram alur bagan drakon dan tabel kontrol adalah cara yang terstruktur untuk menggambarkan algoritme yang mencegah banyaknya kerancuan pada pernyataan pernyataan bahasa alamiah Bahasa pemrograman ditujukan untuk mengekspresikan algoritme dalam sebuah bentuk yang dapat dieksekusi oleh komputer tetapi sering kali digunakan sebagai suatu cara untuk menentukan atau mendokumentasikan algoritme Ada banyak macam kemungkinan representasi dan seseorang dapat mengekspresikan sebuah program mesin Turing sebagai urutan dari tabel tabel mesin lihat lebih lanjut di mesin kondisi terbatas tabel transisi kondisi dan tabel kontrol sebagai diagram alur dan bagan drakon lihat lebih lanjut di diagram kondisi atau sebagai bentuk kode mesin atau kode assembly dasar yang dikenal kumpulan lipat empat lihat lebih lanjut di mesin Turing Representasi dari algoritme dapat dikelompokan ke dalam tiga tingkatan dari deskripsi mesin Turing 34 1 Deskripsi tingkat tinggi ditujukan untuk menjelaskan algoritme menghiraukan rincian implementasi Pada tingkat ini kita tidak perlu menyebutkan bagaimana mesin mengatur perangkat pita atau kepala pita rekam 2 Deskripsi implementasi digunakan untuk menjelaskan cara mesin Turing menggunakan kepalanya dan cara menyimpan data Pada tingkat ini kita tidak memberikan secara rinci kondisi atau fungsi transisi 3 Deskripsi formal Lebih rinci tingkat paling rendah menjelaskan tabel kondisi dari mesin Turing Sebagai contoh dari algoritme sederhana Penjumlahan m n dijelaskan dalam tiga tingkatan tersebut lihat contoh algoritme Implementasi SuntingKebanyakan algoritme ditujukan untuk diimplementasikan sebagai program komputer Namun algoritme juga diimplementasikan dengan tujuan lain seperti dalam jaringan saraf biologis sebagai contohnya otak manusia yang mengimplementasikan aritmetika atau sebuah serangga yang melihat makanan dalam sirkuit elektris atau dalam sebuah perangkat mekanis Algoritme komputer Sunting Contoh diagram alur dari struktur Bohm Jacopini URUTAN segi empat WHILE DO dan IF THEN ELSE Ketiga struktur dibentuk dari kondisi primitif GOTO IF i test i true THEN GOTO step xxx wajik GOTO tak bersyarat segi empat berbagai operator penetapan segi empat dan HALT bujursangkar Memasukan struktur tersebut ke dalam blok penetapan menghasilkan diagram yang kompleks cf Tausworthe 1977 100 114 Dalam sistem komputer sebuah algoritme pada dasarnya adalah instansi dari logika ditulis dalam perangkat lunak oleh pengembang perangkat lunak supaya efektif untuk komputer yang ditargetkan untuk mesin tertentu untuk menghasilkan keluaran dari masukan yang diberikan kemungkinan nul Program yang elegan padat program yang baik cepat Pernyataan dari sederhana dan elegan muncul secara informal dalam buku Knuth dan dalam Chaitin Knuth kita menginginkan algoritme yang baik dalam definisi estetika sederhana Salah satu kriterianya adalah waktu yang dibutuhkan untuk berjalannya algoritme Kriteria yang lain adalah adaptasi dari algoritme ke komputer kesederhanaan dan elegan dll 35 Chaitin sebuah program adalah elegan maksud saya adalah ia merupakan program terkecil untuk menghasilkan keluaran 36 Chaitin membuka definisinya dengan Saya akan perlihatkan bahwa anda tidak dapat membuktikan sebuah program adalah elegan bukti tersebut akan menyelesaikan permasalahan perhentian ibid Algoritme terhadap fungsi yang dapat dihitung oleh algoritme Untuk sebuah fungsi bisa ada beberapa algoritme Hal ini benar bahkan tanpa mengembangkan kumpulan instruksi yang ada bagi programmer Rogers mengamati bahwa Sangat penting untuk membedakan antara pengertian algoritme misalnya prosedur dan pernyataan fungsi yang dihitung oleh algoritme misalnya pemetaan hasil dari prosedur Fungsi yang sama bisa memiliki beberapa algoritme berbeda 37 Sayangnya ada pertukaran antara kebaikan kecepatan dan elegan kepadatan sebuah program yang elegan bisa melakukan lebih banyak langkah untuk menyelesaikan sebuah komputasi daripada yang kurang elegan Sebuah contoh yang menggunakan algoritme Euclid bisa dilihat di bawah Komputer dan komputor model dari komputasi Sebuah komputer atau manusia komputor 38 adalah tipe terbatas dari mesin sebuah perangkat mekanis deterministik diskrit 39 yang secara buta mengikuti instruksinya 40 Model primitif dari Melzak dan Lambek 41 mereduksi pemikiran tersebut menjadi empat elemen i diskrit lokasi yang bisa dibedakan ii diskrit penghitung yang tak bisa dibedakan 42 iii sebuah agen dan iv sebuah daftar instruksi yang efektif relatif terhadap kemampuan dari agen 43 Minsky menjelaskan variasi yang lebih sesuai dari model abacus nya Lambek dalam Basis Komputabilitas Paling Sederhana 44 Mesin Minsky memproses secara berurutan lewat lima atau enam tergantung bagaimana seseorang menghitungnya instruksi kecuali baik sebuah kondisi IF THEN GOTO atau GOTO tak bersyarat mengubah alur program keluar dari urutan Selain HALT mesin Minsky mengikutkan tiga operasi penetapan penggantian substitusi 45 ZERO misalnya isi dari lokasi diganti oleh 0 L 0 SUCCESSOR misalnya L L 1 dan DECREMENT misalnya L L 1 46 Jarang seorang programer harus menulis kode dengan kumpulan instruksi terbatas Tapi Minsky memperlihatkan sebagaimana Melzak dan Lambek bahwa mesinnya adalah Turing komplet dengan hanya empat tipe instruksi utama GOTO kondisional GOTO tak bersyarat penetapan penggantian substitusi dan HALT 47 Simulasi dari sebuah algoritme bahasa komputer komputor Knuth menganjurkan pembaca bahwa cara terbaik untuk belajar algoritme dalah mencobanya langsung ambil pulpen dan kertas dan bekerja lewat contoh 48 Lalu bagaimana dengan simulasi atau eksekusi yang sebenarnya Programmer harus menerjemahkan algoritme ke dalam bahasa yang mana simulator komputer komputor dapat mengeksekusi secara efektif Stone memberikan contoh dari hal ini saat menghitung akar dari persamaan kuadrat si komputor harus tahu bagaimana mendapatkan akar kuadrat Jika tidak maka supaya algoritme dapat efektif ia harus menyediakan sejumlah aturan untuk mengekstrak akar kuadrat 49 Hal ini berarti programer harus tahu sebuah bahasa yang efektif relatif terhadap target pada agen komputasi komputer komputor Lalu model apa yang seharusnya digunakan untuk simulasi Van Emde Boas mengamati bahkan bila kita mendasari teori kompleksitas dengan mesin abstrak bukannya mesin kongkrit kesembarangan dari pemilihan model masih tetap ada Pada titik itulah mulainya pemikiran simulasi 50 Bila kecepatan yang dihitung jumlah instruksi berpengaruh Sebagai contohnya subprogram dalam algoritme Euclid untuk menghitung sisa akan berjalan lebih cepat jika programmer memiliki instruksi modulus sisa pembagian bukannya dengan pengurangan atau lebih parah hanya penurunan Pemrograman terstruktur struktur kanonikal Menurut Tesis Church Turing setiap algoritme bisa dihitung dengan sebuah model yang dikenal Turing komplet dan menurut demonstrasi Minsky kekomplitan Turing membutuhkan hanya empat tipe instruksi GOTO bersyarat GOTO tak bersyarat penetapan HALT Kemeny dan Kurtz mengamati bahwa saat penggunaan GOTO tak bersyarat yang tak disiplin dan IF THEN GOTO bersyarat bisa menghasilkan kode spageti seorang programer bisa menulis program terstruktur menggunakan instruksi tersebut di lain sisi juga memungkinkan dan tidak begitu sulit untuk menulis sebuah program terstruktur yang buruk dalam sebuah bahasa terstruktur 51 Tausworthe menambahkan tiga struktur kanon Bohm Jacopini 52 SEQUENCE IF THEN ELSE dan WHILE DO dengan dua lagi DO WHILE dan CASE 53 Keuntungan dari program terstruktur adalah ia cocok dengan pembuktian kebenaran menggunakan induksi matematika 54 Simbol diagram alur 55 Pembantu grafik yang disebut diagram alur memberikan suatu cara untuk menjelaskan dan mendokumentasikan sebuah algoritme dan program komputer Seperti alur program dari mesin Minsky sebuah diagram alur selalu mulai dari atas dan terus ke bawah Simbol utamanya hanya 4 arah panah memperlihatkan alur program segi empat SEQUENCE GOTO wajik IF THEN ELSE dan titik OR Struktur kanonikal Bohm Jacopini dibuat dari bentuk bentuk primitif tersebut Sub struktur bisa bersarang dalam segi empat hanya jika jalan keluar tunggal terjadi pada super struktur Simbol dan penggunaannya untuk membangun struktur kanonikal diperlihatkan dalam diagram Contoh SuntingInfo lebih lanjut Contoh algoritme Contoh Algoritme Sunting Animasi dari algoritme quicksort mengurutkan larik dari nilai acak Batang merah menandakan elemen pivot pada awal animasi elemen paling kanan dipilih sebagai pivot Salah satu dari algoritme sederhana adalah menemukan bilangan terbesar dalam sebuah deretan angka tak berurut Solusinya membutuhkan pemeriksaan setiap angka dalam deret tetapi hanya sekali Dari hal ini munculah algoritme sederhana yang bisa dinyatakan dalam kalimat bahasa deskripsi tingkat tinggi sebagai Deskripsi tingkat tinggi Jika tidak ada angka dalam deret makan tidak ada bilangan terbesar Asumsikan item pertama dalam deret adalah yang terbesar Untuk setiap sisa angka dalam deret jika angka tersebut besar dari angka terbesar sekarang anggap angka tersebut menjadi yang terbesar dalam deret Bila tidak ada lagi angka yang tersisa pada deret untuk diperiksa anggap angka terbesar sekarang menjadi angka yang terbesar dalam deret Deskripsi Quasi formal Ditulis dalam kalimat yang lebih dekat dengan bahasa tingkat tinggi dari program komputer berikut ini adalah kode formal dari algoritme dalam pseudokode atau kode pijin Algoritma LargestNumber Masukan Deret angka L Keluaran Angka terbesar dalam daftar L terbesar Lnull untuk setiap item dalam L lakukan jika item gt terbesar maka terbesar item kembalikan terbesar adalah singkatan untuk diubah menjadi Misalnya terbesar item artinya nilai dari terbesar diubah menjadi nilai dari item kembalikan mengakhiri algoritma dan mengeluarkan nilai kembalian Algoritme Euclid Sunting Info lebih lanjut Algoritme Euklid Contoh diagram dari algoritme Euclid dari T L Health 1908 dengan rincian tambahan Euclid tidak sampai pada penghitungan ketiga dan tidak memberikan contoh numeris Nocomachus memberikan contoh dari 49 dan 21 Saya mengurangi yang kecil dari yang besar 28 adalah yang kiri kemudian saya kurangi lagi 21 hal ini memungkinkan tersisa 7 tetapi 7 tidak bisa dikurangi dari 7 Heath berkomentar bahwa Kalimat terakhir terdengar aneh tetapi maknanya sangat jelas begitu juga makna dari kalimat tentang mengakhiri dengan satu dan angka yang sama Heath 1908 300 Algoritme Euclid muncul sebagai Proposisi II dalam Book VII Elementary Number Theory dari Elements 56 Euclid mengajukan permasalahan Ambil dua angka bukan prima untuk mencari bilangan pembagi terbesar Dia menentukan Sebuah angka merupakan besaran yang terdiri dari unit unit angka penghitung integer positif kecuali 0 Dan mengukur adalah menempatkan ukuran panjang terkecil s dengan tepat q kali di antara ukuran terpanjang l sampai sisa r lebih kecil dari panjang terkecil s 57 Dalam dunia modern sisa r l q s q sebagai hasil bagi atau sisa r adalah modulus bagian sisa integer yang tersisa setelah pembagian 58 Supaya metode Euclid berhasil panjang awalnya harus memenuhi dua kebutuhan i panjangnya tidak 0 DAN ii hasil pengurangan harus lebih sebuah pengujian harus menjamin bahwa bilangan terkecil dari dua angka adalah hasil pengurangan dari yang terbesar cara lain keduanya bisa sama sehingga pengurangan menghasilkan 0 Pembuktian asli Euclid mengikutkan kebutuhan yang ketiga kedua panjang bukanlah bilangan prima Euclid menentukan hal ini supaya dia bisa membentuk sebuah bukti reductio ad absurdum bahwa dua pembagi dua angka adalah yang terbesar 59 Walau algoritme Nicomachus sama dengan Euclid bila kedua bilangan prima maka menghasilkan angka 1 untuk bilangan pembagi terbesar Jadi untuk lebih jelasnya algoritme berikut adalah algoritme Nicomachus Contoh Sunting Ekspresi grafik dari algoritme Euclid menggunakan contoh dengan 1599 dan 650 9778 650 2 299 650 299 2 52 299 52 5 39 52 39 1 13 39 13 3 0Bahasa komputer untuk algoritme Euclid Sunting Hanya beberapa tipe instruksi yang dibutuhkan untuk mengeksekusi algoritme beberapa tes logika GOTO bersyarat GOTO tak bersyarat penetapan penggantian dan pengurangan Sebuah lokasi disimbolkan dengan huruf besar misalnya S A dll Kuantitas beragam angka dalam sebuah lokasi ditulis dengan huruf kecil dan biasanya dihubungkan dengan nama lokasi Sebagai contohnya lokasi L pada awal bisa mengandung angka l 3009 Program yang kurang elegan inelegan untuk algoritme Euclid Sunting Inelegan adalah terjemahan dari versi Knuth terhadap algoritme berdasarkan pengulangan sisa mengganti pembagian atau instruksi modulus Diambil dari Knuth 1973 2 4 Bergantung pada kedua angka Inelegan bisa menghitung f p k dengan sedikit langkah daripada elegan Algoritme berikut disebut sebagai versi Euclid dan Nichomachus 4 langkah nya Knuth tetapi bukannya menggunakan pembagi untuk menentukan sisa ia menggunakan pengurangan berturut turut dari panjang terkecil s dari sisa panjang r sampai r kurang dari s Deskripsi tingkat tinggi diperlihatkan dengan tulisan tebal diadaptasi dari Knuth 1973 2 4 INPUT 1 Kedalam dua lokasi L dan S taruh angka l dan s yang merepresentasikan kedua panjang INPUT L S 2 Inisialisasi R buat supaya sisa panjang r sama dengan panjang awal l R L E0 Pastikan r s 3 Pastikan angka terkecil dari kedua angka ada dalam S dan yang terbesar di R IF R gt S THEN isi dari L adalah angka terbesar jadi lewati langkah 4 5 dan 6 GOTO step 6 ELSE tukar isi R dan S 4 L R langkah pertama ini berlebih tetapi berguna untuk diskusi nanti 5 R S 6 S L E1 Cari sisa Sampai sisa panjang r di R kurang dari panjang terkecil s pada S kurangi angka s dalam S berulang kali dari sisa panjang r dalam R 7 IF S gt R THEN selesai mengukur jadi GOTO 10 ELSE ukur lagi 8 R R S 9 Pengulangan sisa GOTO 7 E2 Apakah sisa 0 APAKAH i pengukuran terakhir adalah sama dan sisa di R adalah 0 program dapat berhenti ATAU ii algoritme harus terus jalan hasil pengukuran meninggalkan sisa di R kurang dari angka pengukuran dalam S 10 IF R 0 THEN selesai jadi GOTO langkah 15 ELSE lanjut ke langkah 11 E3 Interchange s dan r Sulitnya algoritme Euclid Menggunakan sisa r untuk mengukur angka terkecil sebelumnya s L sebagai lokasi sementara 11 L S 12 R S 13 S L 14 Ulang proses pengukuran GOTO 7 OUTPUT 15 Selesai S berisi faktor persekutuan terbesar PRINT S DONE 16 HALT END STOP Program elegan untuk algoritme Euclid Sunting Versi algoritme Euclid berikut hanya membutuhkan 6 instruksi inti untuk melakukan 13 langkah pada solusi inelegan parahnya inelegan membutuhkan tipe instruksi lebih banyak Diagram alur dari elegan bisa dilihat pada bagian atas artikel ini Dalam bahasa Basic tak terstruktur langkahnya diberi nomor dan instruksi LET adalah instruksi penetapan disimbolkan dengan 5 REM Algoritme Euclid untuk faktor persekuturan terbesar 6 PRINT Masukan dua integer besar dari 0 10 INPUT A B 20 IF B 0 THEN GOTO 80 30 IF A gt B THEN GOTO 60 40 LET B B A 50 GOTO 20 60 LET A A B 70 GOTO 20 80 PRINT A 90 END Bagaimana cara kerja Elegan Sebagai pengganti pengulangan Euclid luar Elegan mengulang antara dua pengulangan pengulangan A gt B yang menghitung A A B dan pengualang B A yang menghitung B B A Hal ini bekerja karena saat yang dikurang M lebih kecil pengurang S Selisih pengurang yang di kurang yang dikurang bisa menjadi s panjang pengukuran yang baru dan pengurang bisa menjadi r yang baru panjang yang akan diukur dengan kata lain arti dari pengurangan dibalik Menguji algoritme Euclid Sunting Apakah algoritme berjalan seperti yang penulis inginkan Beberapa kasus uji cukup menentukan fungsi inti Sumber pertama 60 menggunakan 3009 dan 884 Knuth menyarankan 40902 24140 Kasus menarik lainnya yaitu dua angka relatif prima 14157 dan 5950 Tapi kasus pengecualian harus teridentifikasi dan diuji Apakah inelegan berjalan benar saat R gt S S gt R R S Sama juga dengan Elegan B gt A A gt B A B Semuanya benar Apa yang terjadi bila salah satu bilangan nol atau keduanya nol Inelegan terus berjalan pada kedua kasus elegan terus berjalan saat A 0 Apa yang terjadi bila angka negatif dimasukan Angka desimal Bila angka masukan misalnya domain dari fungsi yang dihitung oleh algoritme program mengikutkan hanya integer positif termasuk 0 maka kegagalan pada nol mengindikasikan bahwa algoritme dan program instansiasinya adalah sebuah fungsi parsial bukannya fungsi total Kesalahan yang terkenal karena eksepsi adalah kegagalan roket Ariane V Bukti dari kebenaran program menggunakan induksi matematika Knuth mendemonstrasikan penggunaan induksi matematika untuk versi pengembangan dari algoritme Euclid dan dia mengajukan metode umum yang digunakan untuk membuktikan validitas dari setiap algoritme 61 Tausworthe mengajukan bahwa sebuah pengukuran dari kompleksitas dari sebuah program adalah panjang dari pembuktian kebenarannya 62 Menghitung dan meningkatkan algoritme Euclid Sunting Elegan kepadatan lawan kebaikan kecepatan Dengan hanya 6 instruksi dasar Elegan adalah jelas pemenang dibandingkan dengan instruksi inelegan dengan 13 instruksi Namun inelegan lebih cepat ia sampai pada HALT dengan langkah lebih sedikit Analisis algoritme 63 mengindikasikan kenapa hal tersebut terjadi Elegan melakukan pengujian kondisi dua kali disetiap pengulangan pengurangan sementara inelegan hanya sekali Bila algoritme biasanya membutuhkan banyak pengulangan secara rata rata lebih banyak waktu yang terbuang saat melakukan tes B 0 yang hanya diperlukan saat sisa sudah dihitung Bisakah algoritme ditingkatkan Bila programmer sudah menilai sebuah program cocok dan efektif yaitu ia menghitung fungsi yang ditujukan oleh penulisnya maka pertanyaannya menjadi bisakah ditingkatkan Kepadatan dari inelegan bisa ditingkatkan dengan menghilangkan 5 langkah Tapi Chaitin membuktikan bahwa memadatkan algoritme tidak bisa diotomatiskan dengan algoritme generalisasi 64 tapi ia bisa dilakukan secara heuristik misalnya dengan pencarian menyeluruh contohnya bisa ditemukan di Berang sibuk coba dan gagal kecerdasan kedalaman penggunaan penalaran induktif dll Bisa diamati bahwa langkah 4 5 dan 6 diulang pada langkah 11 12 dan 13 Pembandingan dengan Elegan menyediakan petunjuk langkah langkah tersebut dengan langkah 2 dan 3 dapat dihilangkan Hal ini mereduksi jumlah instruksi dasar dari 13 menjadi 8 yang membuatnya lebih elegan dari Elegan dengan 9 langkah Kecepatan Elegan bisa ditingkatkan dengan memindahkan tes B 0 keluar dari pengulangan Perubahan ini memerlukan penambahan 3 instruksi B 0 A 0 GOTO Sekarang Elegant menghitung contoh angka lebih cepat untuk setiap angka pada A B dan R S hal ini selalu merupakan kasus yang membutuhkan analisis yang mendalam Analisis Algoritme SuntingArtikel utama Analisis algoritme Sangat penting untuk mengetahui berapa banyak sumber tertentu seperti waktu dan tempat penyimpanan secara teoretis diperlukan untuk sebuah algoritme Metode metode telah dikembangkan untuk analisis algoritme untuk mendapatkan jawaban kuantitatif estimasi sebagai contohnya algoritme pengurutan di atas memerlukan waktu O n menggunakan notasi O besar dengan n sebagai panjang deret yang akan diurut Setiap saat algoritme hanya perlu mengingat dua nilai nilai terbesar yang ditemukan dan posisinya sekarang dideretan input Oleh karena itu dikatakan memiliki kebutuhan ruang O 1 jika ruang yang dibutuhkan untuk menyimpan angka masukan tidak dihitung atau O n jika dihitung Algoritme berbeda mungkin menyelesaikan pekerjaan yang sama dengan kumpulan instruksi yang berbeda dengan waktu ruang atau usaha lebih sedikit atau banyak dari yang lain Sebagai contohnya algoritme pencairan binari biasanya mengungguli pencarian berderet secara paksa bila digunakan untuk tabel pencarian pada deret terurut Formal lawan empiris Sunting Artikel utama Algoritme empiris Profiling pemrograman komputer dan Optimisasi program Analisis dan kajian algoritme adalah bidang dari ilmu komputer dan biasanya dilakukan secara abstrak tanpa menggunakan bahasa pemrograman tertentu atau implementasi Dalam artian analisis algoritme mirip dengan bidang matematika lainnya yang mana fokus pada properti yang mendasari algoritme dan bukan pada implementasi tertentu Biasanya pseudokode digunakan pada analisis karena merupakan representasi paling umum dan sederhana Namun pada akhirnya kebanyakan algoritme diimplementasikan di perangkat keras lunak tertentu dan efisiensi algoritmik mereka akhirnya diuji menggunakan kode yang sebenarnya Untuk solusi dari sebuah masalah efisiensi dari algoritme tertentu mungkin tidak terlalu berpengaruh kecuali n sangat besar tetapi bagi algoritme yang dirancang untuk kecepatan interaktif komersial atau penggunaan ilmiah jangka panjang ia bisa saja kritikal Meningkatkan n dari kecil ke n yang besar biasanya menunjukan ketak efisienan algoritme yang tidak berbahaya Pengujian empiris berguna karena bisa membuka interaksi tak terduga yang mempengaruhi performa Benchmark bisa digunakan untuk membandingkan potensi kenaikan sebelum sesudah algoritme setelah optimisasi program dilakukan Efisiensi eksekusi Sunting Artikel utama Efisiensi algoritmik Untuk menggambarkan kemungkinan potensi peningkatan bahkan pada algoritme yang sudah teruji inovasi terbaru berkaitan dengan algoritme FFT banyak digunakan di bidang pemrosesan gambar bisa menurunkan waktu pemrosesan dengan faktor sampai 1 000 untuk aplikasi seperti pencitraan medis 65 Secara umum peningkatan kecepatan bergantung pada properti khusus dari permasalahan yang mana sangat umum pada aplikasi praktis 66 Percepatan dengan tingkat seperti itu membolehkan perangkat komputasi yang sering menggunakan pemrosesan gambar seperti kamera digital dan peralatan medis menghabiskan daya yang lebih sedikit Klasifikasi SuntingSalah satu cara mengklasifikasikan algoritme yaitu dengan cara implementasi Rekursi atau iterasi Sebuah algoritme rekursi yaitu algoritme yang memanggil dirinya sendiri berulang kali sampai kondisi tertentu tercapai ini merupakan metode umum bagi pemrograman fungsional Algoritme iteratif menggunakan konstruksi berulang seperti pengulangan dan terkadang struktur data tambahan seperti tumpukan untuk menyelesaikan permasalahan Beberapa permasalahan secara alami cocok dengan satu implementasi atau lainnya Sebagai contoh Menara Hanoi dikenal dengan implementasi rekursif Setiap versi rekursif memiliki kesamaan tapi bisa lebih atau kurang kompleks dengan versi iteratif dan sebaliknya Logical Sebuah algoritme bisa dilihat sebagai logika deduksi terkontrol Pernyataan ini diekspresikan sebagai Algoritme logika kontrol 67 Komponen logika mengekspresikan aksioma yang bisa digunakan dalam komputasi dan komponen kontrol menentukan cara deduksi digunakan pada aksioma Ini merupakan dasar dari paradigma pemrograman logika Dalam bahasa pemrograman logika murni komponen kontrol adalah tetap dan algoritme ditentukan dengan memberikan hanya komponen logikanya Daya tarik dari pendekatan ini adalah semantik elegan sebuah perubahan dalam aksioma memiliki perubahan dalam algoritme Serial paralel atau terdistribusi Algoritme biasanya dibicarakan dengan asumsi bahwa komputer menjalankan satu instruksi algoritme setiap waktu Komputer tersebut terkadang disebut dengan komputer serial Rancangan algoritme untuk lingkungan tersebut disebut dengan algoritme serial terbalik dengan algoritme paralel atau algoritme terdistribusi Algoritme paralel memanfaatkan arsitektur komputer yang mana beberapa prosesor bisa mengerjakan masalah pada waktu yang sama selain itu algoritme terdistribusi memanfaatkan banyak mesin yang terhubung dengan jaringan Algoritme paralel atau terdistribusi membagi permasalahan menjadi banyak sub masalah simetris atau asimetris dan mengumpulkan hasilnya kembali Konsumsi sumber pada algoritme tersebut tidak hanya perputaran prosesor disetiap prosesor tetapi juga daya komunikasi antara prosesor Algoritme pengurutan bisa diparalelkan secara efisien tetapi biaya komunikasinya sangat mahal Algoritme iteratif secara umum bisa diparalelkan Beberapa permasalahan tidak ada algoritme paralelnya dan disebut dengan permasalahan serial lahiriah Deterministik atau non deterministik Algoritme deterministik menyelesaikan masalah dengan keputusan yang tepat disetiap langkah dari algoritme sedangkan algoritme non deterministik menyelesaikan masalah lewat penerkaan walaupun penerkaan biasanya lebih akurat dengan menggunakan heuristik Tepat atau perkiraan Bila banyak algoritme sampai pada solusi yang tepat algoritme perkiraan mencari sebuah perkiraan yang terdekat dengan solusi benarnya Perkiraan bisa menggunakan baik strategi deterministik atau acak Algoritme seperti itu memiliki nilai guna untuk banyak permasalahan sulit Algoritme quantum Berjalan di model realistik dari komputasi quantum Istilah ini biasanya digunakan untuk algoritme yang tampak pada dasarnya quantum atau menggunakan beberapa fitur penting komputasi quantum seperti superposisi quantum atau belitan quantum Paradigma secara rancangan SuntingCara lain mengklasifikasikan algoritme adalah dengan metodologi rancangannya atau paradigma Ada sejumlah paradigma tiap tiapnya berbeda dari yang lain Lebih lanjut setiap kategori tersebut mengikutkan banyak tipe algoritme yang berbeda Beberapa paradigma umum termasuk Pencarian paksa atau pencarian mendalam Ini merupakan metode naif mencoba setiap kemungkinan solusi untuk melihat yang terbaik 68 Membagi dan menaklukan Divide and conqueror Algoritme bagi dan takluk secara berulang mereduksi instansi jumlah masalah menjadi satu atau lebih kecil instasi masalah yang sama biasanya secara rekursif sampai instansi cukup kecil diselesaikan dengan mudah Salah satu contoh bagi dan takluk adalah pengurutan gabung Pengurutan dapat dilakukan disetiap segmen data setelah membagi data menjadi segmen segmen dan urutan seluruh data bisa didapat pada fase takluk dengan menggabungkan segmen segmen Variasi sederhana dari bagi dan takluk disebut algoritme kurang dan takluk yang menyelesaikan sub masalah yang sama dan menggunakan solusi dari sub masalah tersebut untuk menyelesaikan masalah yang lebih besar Bagi dan takluk membagi permasalahan menjadi banyak sub masalah dan sehingga tahap takluk lebih kompleks daripada algoritme kurang dan taklukan Sebuah contoh dari algoritme kurang dan taklukan adalah algoritme pencarian binari Pencarian dan enumerasi Banyak masalah seperti bermain catur bisa dimodelkan sebagai masalah dalam grafik Sebuah algoritme eksplorasi grafik menentukan aturan aturan untuk bergerak disekitar grafik dan berguna bagi masalah tersebut Kategori ini juga mengikutkan algoritme pencarian enumerasi batas dan cabang dan backtracking Algoritme pengacakan Algoritme ini membuat pilihan secara acak atau pseudo acak Ia sangat berguna untuk menemukan solusi perkiraan untuk masalah dimana solusi yang pasti tidak praktis lihat metode heuristik di bawah Untuk beberapa masalah diketahui bahwa perkiraan tercepat harus mengikutkan beberapa pengacakan 69 Apakah algoritme pengacakan dengan kompleksitas waktu polinomial bisa menjadi algoritme tercepat untuk beberapa masalah masih menjadi pertanyaan terbukan yang dikenal sebagai Masalah P versus NP Ada dua kelas besar dari algoritme ini Algoritme Monte Carlo mengembalikan jawaban yang benar dengan probabilitas tinggi Misalnya RP adalah sub klas dari algoritme ini yang berjalan dalam waktu polinomial Algoritme Las Vegas selalu mengembalikan jawaban yang benar tetapi waktu prosesnya adalah hanya terikat secara probabilistik misalnya ZPP Reduksi Teknik ini menyelesaikan masalah sulit dengan mengubahnya menjadi permasalahan yang lebih diketahui yang mana kita berharap memiliki algoritme asimptotikal optimal Tujuannya yaitu untuk menemukan sebuah algoritme reduksi yang kompleksitasnya tidak didominasi oleh algoritme hasil reduksi Sebagai contoh algoritme seleksi untuk menemukan rata rata dalam daftar tak terurut mengikutkan mengurutkan daftar bagian yang paling mahal dan menarik elemen paling tengah dalam daftar terurut bagian yang paling mudah Teknik ini juga diketahui dengan ubah dan taklukan Permasalahan optimisasi Sunting Pemrograman Linear Saat mencari solusi optimal terhadap sebuah fungsi linear yang terikat persamaan linear dan ketidaksamaan konstrain batasan dari permasalahan bisa digunakan secara langsung untuk menghasilkan solusi optimal Ada algoritme yang dapat memecahkan setiap permasalahan dalam kategori ini seperti algoritme simpleks yang terkenal 70 Permasalahan yang dapat diselesaikan dengan pemrograman linear termasuk permasalahan alur maksimum untuk grafik terarah Jika sebuah masalah sebagai tambahan membutuhkan satu atau lebih jawaban haruslah integer maka ia diklasifikan dalam pemrograman integer Algoritme pemrograman linear dapat menyelesaikan masalah seperti itu jika dapat dibuktikan bahwa semua batasan untuk nilai integer adalah tidak benar yaitu solusi memenuhi batasan tersebut Pada kasus umum algoritme yang dikhususkan atau algoritme yang menemukan solusi perkiraan digunakan bergantung pada kesulitan dari permasalahan Pemrograman dinamis Bila sebuah masalah memperlihatkan substruktur optimal artinya solusi optimal terhadap sebuah masalah bisa direkonstruksi dari solusi optimal ke sub masalah dan submasalah tumpang tindih artinya sub masalah yang sama digunakan untuk menyelesaikan banyak instasi masalah berbeda pendekatan tercepat disebut pemrograman dinamis menghindari penghitungan solusi yang telah dikomputasi Sebagai contoh algoritme Floyd Warshall jalan terpendek ke tujuan dari sebuah vertex dalam grafik berbobot bisa ditemukan dengan menggunakan jalan terpendek ke tujuan dari semua simpul yang berdekatan Pemrograman dinamis dan memoisasi berpadanan Perbedaan utama antara pemrograman dinamis dan bagi dan taklukan adalah submasalah kurang lebih independen dalam bagi dan taklukan sementara submasalah tumpang tindik dalam pemrograman dinamis Perbedaaan antara pemrograman dinamis dan rekursi langsung adalah dalam caching atau memoisasi dari pemanggialan rekursif Saat submasalah independen dan tidak ada pengulangan memoisasi tidak membantu sama sekali makanya pemrograman dinamis bukalanh solusi untuk semua permasalahan kompleks Dengan menggunakan memoisasi atau tabel dari submasalah yang telah diselesaikan pemrograman dinamis mereduksi eksponensial dari banyak permasalahan menjadi kompleksitas polinomial Metode rakus Sebuah algoritme rakus mirip dengan algoritme pemrograman dinamis tetapi perbedaannya adalah solusi dari submasalah tidak harus diketahui pada setiap tahap melainkan pilihan yang rakus bisa dibuat dengan melihat apa yang terbaik untuk saat tersebut Metode rakus mengembangkan solusi dengan kemungkinan keputusan yang terbaik bukan dengan keputusan yang ada pada tahap algoritmis berdasarkan optimasi lokal yang ada sekarang dan keputusan yang terbaik bukan semua kemungkinan keputusan yang dibuat pada langkah sebelumnya Algoritme ini tidak terlalu mendalam dan tidak memberikan jawaban yang akurat terhadap banyak permasalahan Tapi bila ia bekerja ia menjadi metode yang paling cepat Algoritme rakus paling terkenal adalah menemukan rentang pohon minimal seperti pada Pohon Huffman Kruskal Prim Sollin Metode heuristik Dalam masalah optimisasi algoritme heuristik bisa digunakan untuk menemukan suatu solusi yang terdekat dengan solusi optimal jika seandainya menemukan solusi optimal tidak praktis Algoritme ini bekerja dengan mendekati sedikit demi sedikit ke solusi optimal saat ia berjalan Secara prinsipnya jika dijalankan tanpa batas waktu ia akan menemukan solusi optimal Kebaikan mereka adalah mereka dapat menemukan suatu solusi sangat dekat dengan solusi optimal dalam waktu yang relatif sangat pendek Algoritme tersebut termasuk pencarian lokal pencarian tabu simulasi pelunakan dan algoritme genetik Beberapa dari mereka seperti simuasi pelunakan adalah algoritme non deterministik sementara yang lainnya seperti pencarian tabu adalah deterministik Saat batas dari galat dari solusi non optimal diketahui algoritme kemudia dikategorikan sebagai algoritme pendekatan Berdasarkan bidang kajian Sunting Lihat pula Daftar algoritme Setiap bidang sains memiliki permasalahannya sendiri dan membutuhkan algoritme yang efisien Masalah yang berkaitan di satu bidang terkadang dipelajari bersama Beberapa contoh yaitu algoritme pencarian algoritme penggabungan algoritme numerik algoritme grafik algoritme deret algoritme komputasi geometri algoritme kombinatorial algoritmas medis mesin belajar kriptografi algoritme kompresi data dan teknik penguraian Terkadang bidang bidang tersebut saling tumpang tindih dan perkembangan algoritme di satu bidang bisa meningkatkan bidang lainnya yang terkadang tidak berkaitan Sebagai contohnya pemrograman dinamis ditemukan untuk optimisasi konsumsi sumber daya dalam industri tetapi sekarang digunakan untuk menyelesaikan sejumlah besar permasalahan dalam banyak bidang Berdasarkan kompleksitas Sunting Lihat pula kelas kompleksitas dan Kompleksitas parameterisasi Algoritme bisa diklasifikasikan berdasarkan jumlah waktu yang dibutuhkan untuk selesai dibandingkan dengan ukuran inputnya Ada berbagai varietas beberapa algoritme selesai dalam waktu linear relatif terhadap ukuran input beberapa selesai dalam jumlah waktu yang eksponensial atau lebih buruh dan beberapa berhenti Sebagai tambahan beberapa masalah bisa memiliki berbagai algoritme dengan kompleksitas yang berbeda sementara permasalahan yang lain bisa saja tidak memiliki algoritme atau tidak diketahui algoritmanya yang efisien Ada juga pemetaan dari beberapa algoritme terhadap permasalahan lain Karena itu lebih cocok untuk mengklasifikasikan permasalahan itu sendiri bukannya algoritme menjadi kelas kelas yang sama berdasarkan kompleksitas dari kemungkinan algoritme terbaik baginya Burgin 2005 p 24 menggunakan definisi algoritme secara umum yang melonggarkan kebutuhan bersama yang keluaran dari algoritme yang menjalankan sebuah fungsi harus ditentukan setelah sejumlah langkah Dia mendefinisikan kelas super rekursif dari algoritme sebagai sebuah kelas algoritme yang mana memungkinkan untuk menghitung fungsi yang tidak bisa dihitung oleh mesin Turing manapun Burgin 2005 p 107 Hal ini berkaitan dekat dengan kajian dari metode hiperkomputasi Berdasarkan tipe evaluatif Sunting Lihat pula Keragaman evaluatif Untuk menjaga keseimbangan saat mengintegrasikan mesin ke dalam masyarakat seseorang bisa mengklasifikasikan algoritme berdasarkan tipe dari evaluasi yang mereka lakukan Sejumlah filsuf telah berhipotesis bahwa masyarakat diuntungkan dari keragaman evaluatif seperti mereka diuntungkan keragaman jender dan tipe darah misalnya Dean 2012 Sober amp Wilson 1998 Hertzke amp McConkey 1998 dan Bellah 1985 Teknologi dapat mengancam ekosistem moral tersebut seperi spesies invasif jika ia mengganggu campuran keragaman Wallach amp Allen 2008 mengklasifikasikan algoritme pembuat keputusan menjadi tiga tipe evaluatif Algoritme bottom up membuat penilaian tidak terprediksi bagi pemrogram misalnya perangkat lunak yang berevolusi Yang lainnya top down dibagi menjadi deontologikal yang dapat bergantung pada implementasi aturan pemrograman lawan consequensialis yang mengandalkan pada memaksimalkan perkiraan pemrograman Sebagai contohnya sebuah kalkulator standar termasuk deontologikal sementara mesin pembelajaran untuk perdagangan saham termasuk consequensialis Santos Lang mengganti nama deontologikal dan consequensialis menjadi kelas institusional dan negosiator dengan tujuan untuk menghindari implikasi bahwa semua teori teori etika deontologikal dan consequensialis bisa diimplementasikan sebagai algoritme dan membagi kelas bottom up menjadi pengganggu algoritme yang tidak terprediksi karena menggunakan generator pengacakan lawan relasional algoritme yang tidak terprediksi karena efek jaringan Seorang mutator dalam komputasi evolusioner bisa menjadi contoh dari pengganggu sementara kelas 3 atau 4 dari otomata sellular adalah contoh dari mesin relasional Santos Lang mencatat bahwa algoritme terkadang memiliki subkomponen dari tipe lainnya Sebagai contohnya negosiator perdagangan saham bisa mengimplementasikan sebuah algoritme genetik dan memiliki mutator pengganggu dan mutator bisa memiliki subkomponen institusional dan relasional semua komputasi adalah relasional pada tingkat di jajaran kimiawi Santos Lang 2014 Algoritme berkelanjutan SuntingKata sifat berkelanjutan bila diterapkan pada kata algoritme bisa berarti Sebuah algoritme beroperasi pada data yang merepresentasikan kuantitas yang berkelanjutan walaupun data tersebut direpresentasikan oleh pendekatan diskrit seperti algoritme yang dipelajari dalam analisis numerik atau Sebuah algoritme dalam bentuk dari persamaan diferensial yang beroperasi secara berkelanjutan terhadap data berjalan dalam sebuah komputer analog 71 Isu legalitas SuntingLihat pula Paten perangkat lunak untuk pendahuluan umum dari paten pada perangkat lunak termasuk algoritme untuk diimplementasikan pada komputer Algoritme biasanya tidak dipatenkan Di Amerika Serikat sebuah klaim yang terdiri hanya dari manipulasi sederhana dari konsep abstrak angka atau sinyal tidak berarti suatu process SPTO 2006 dan oleh karena itu algoritme tidak bisa dipatenkan sebagaimana dalam Gottschalk v Benson Namun penerapan praktis dari algoritme terkadang dipatenkan Sebagai contohnya dalam Diamond v Diehr aplikasi dari algoritme umpan balik sederhana untuk membantu dalam menyembuhkan karet sintetis dianggap dapat dipatenkan Mematenkan perangkat lunak sangat kontroversial dan ada paten yang mengikutkan algoritme yang sangat dikritisi terutama algoritme kompresi data seperti Format Grafiknya Unisys Sebagai tambahan beberapa algoritme kriptografi memiliki batasan ekspor lihat ekspor dari kriptografi Etimologi SuntingKata Algoritme atau Algorisma pada versi penulisan lain datang dari nama al Khwarizmi dieja dalam Arab klasik sebagai Al Khwarithmi Al khwarizmi bahasa Persia خوارزمي 780 850 adalah matematikawan ahli astronomi ahli geografi dari Persia dan sarjana House of Wisdom di Baghdad yang arti namanya penduduk asli Khwarezm sebuah kota yang merupakan bagian dari Wilayah Iran pada masanya dan sekarang Uzbekistan 72 73 Sekitar tahun 825 dia menulis risalah dalam bahasa Arab yang diterjemahkan dalam Latin pada abad ke 12 dengan judul Algoritmi de numero Indorum Judul ini artinya Algoritmi pada bilangan India di mana Algoritmi adalah pelatinan penerjemah dari nama Al Khwarizmi 74 Al Khwarizmi dulunya adalah matematikawan yang paling banyak dibaca di Eropa pada akhir Abad Pertengahan pada umum lewat bukunya yang lain Aljabar 75 Pada akhir abad pertengahan algorismus perubahan dari namanya berarti sistem bilangan desimal yang masih merupakan arti dari kata Inggris modern algorism Pada abad ke 17 Prancis kata tersebut berubah tetapi tidak maknanya menjadi algorithme Inggris mengadopsi Prancis setelahnya tetapi tidak pada akhir abad ke 19 lah Algorithm mengambil makna dari kata Inggris masa sekarang 76 Etimologi alternatif mengklaim asal mulanya dari istilah algebra aljabar dari makna abad pertengahan aritmetika Arab dan arithmos istilah Yunani untuk angka yang secara harfiah berarti bilangan Arab atau perhitungan Arab Karya algoritme Al Kharizmi bukan berbentuk seperti pada masa modern sekarang tetapi sebagai tipe dari pengulangan kalkulus disini disebutkan bahwa karya fundamentalnya yang dikenal sebagai algebra pada awalnya berjudul Buku Ringkasan tentang Kalkulasi dengan Penyempurnaan dan Pengimbangan menjelaskan tipe tipe dari pengulangan perhitungan dan persamaan kuadrat Dalam makna tersebut algoritima dikenal di Eropa jauh sebelum Al Kharizmi Algoritme paling tua yang dikenal sekarang adalah Algoritme Euklid lihat juga Pengembangan algoritme Euklid Sebelum ditemukan istilah algorithm orang Yunani menyebutnya anthyphairesis secara harfiah berarti anti substraksi atau substraksi timbal balik untuk bacaan lebih lanjut disini dan ini Diarsipkan 2013 11 03 di Wayback Machine Algoritme dikenal oleh orang Yunani berabad sebelum 77 Euclid Bukannya kata algebra orang Yunani menggunakan istilah arithmetica ἀri8mhtikh yaitu dalam karya Diophantus yang dikenal bapak dari Aljabar lihat juga artikel Wikipedia persamaan Diophantine dan Eudoxos Sejarah Perkembangan dari kata algoritme SuntingAsal mula Sunting Bukti terawal tentang algoritma ditemukan dalam matematika Babilonia di Mesopotamia kuno saat ini merupakan bagian dari Irak Sebuah tablet tanah liat Sumeria yang ditemukan di Shuruppak dekat Baghdad dan berasal dari sekitar tahun 2500 SM menjelaskan algoritma divisi yang paling awal 78 Selama dinasti Hammurabi sekitar 1800 1600 SM tablet tanah liat Babilonia menjabarkan algoritma untuk rumus rumus komputasi 79 Algoritma juga digunakan dalam astronomi Babilonia Tablet tanah liat Babilonia menguraikan dan menggunakan prosedur algoritmik untuk menghitung waktu dan tempat peristiwa astronomi yang signifikan 80 Algoritma untuk aritmatika juga ditemukan dalam matematika Mesir kuno yang terdapat pada Papirus Matematika Rhind yang berasar dari sekitar tahun 1550 SM 81 Algoritma kemudian digunakan dalam matematika Helenistik kuno Dua contohnya adalah Tapis Eratosthenes yang dijelaskan dalam Pengenalan Aritmatika oleh Nicomachus 82 83 Ch 9 2 dan Algoritma Euklides yang pertama kali dipaparkan dalam Euclid s Elements sekitar 300 SM 83 Ch 9 1 Simbol diskrit dan yang dapat dibedakan Sunting Penanda penghitung Untuk mencatat hewan gembalaan kumpulan biji dan uang mereka orang dahulu menggunakan penghitung akumulasi batu atau tanda yang ditoreh pada tongkat atau membuat simbol diskrit di kerang Sampai orang Babilonia dan Mesir menggunakan tanda dan simbol pada akhirnya bilangan Roma dan abakus berkembang Dilson p 16 41 Penanda penghitung muncul dalam sistem bilangan operan aritmetika digunakan dalam mesin Turing dan komputasi mesin Post Turing Manipulasi simbol sebagai penampung bilangan aljabar Sunting Karya dari Geometer Yunani kuno algoritme Euklid matematikawan India Brahmagupta dan matematikawan Persia Al Khwarizmi yang darinya isitlah algorism dan algoritme diturunkan dan matematikawan Eropa Barat memuncak dalam notasi Leibniz dari rasiosinator kalkulus sekitar 1680 an Abad yang baik dan setengah lebih maju dari masanya Leibniz mengajukan logika aljabar sebuah aljabar yang akan menentukan aturan aturan untuk memanipulasi konsep logika dengan cara yang aljabar biasa menentukan aturan untuk manipulasi angka 84 Rancangan mekanis dengan tingkat diskrit Sunting Jam Bolter memuji penemuan jam gaya berat sebagai Kunci penemuan dari Eropa pada Abad Pertengahan khususnya pada ambang pelarian 85 yang menyediakan kita dengan tik dan tak dari jam mekanis Mesin otomatis yang akurat 86 mengarah langsung pada otomata mekanis dimulai pada abad ke 13 dan terakhir pada mesin komputasi motor berbeda dan motor analitik dari Charles Babbage dan bangsawan Ada Lovelace pertengahan abad ke 19 87 Lovelace dikreditkan sebagai yang pertama menciptakan algoritme yang ditujukan untuk diproses di komputer motor analitis Babbage perangkat pertama yang dianggap komputer Turing sempurna sebenarnya bukan hanya sebuah kalkulator dan terkadang dikenal programmer pertama dalam sejarah walaupun implementasi penuh dari perangkat Babbage kedua tidak terealisasi sampai beberapa dekade setelah masanya Mesin logika 1870 Stanley Jevons sempoa logika dan mesin logika Masalah teknisnya adalah untuk mereduksi persamaan boolean bila ditampilkan dalam sebuah bentuk yang pada masa sekarang dikenal sebagai pemetaan Karnaugh Jevons 1880 pertama menjelaskan sempoa sederhana dari potongan kayu dilengkapi dengan penyemat dibuat supaya bagian atau kelas kombinasi logika manapun dapat dipilih secara mekanis Baru baru ini Saya telah mereduksi sistem menjadi bentuk yang secara sempurna mekanis dan membuatnya mewujudkan keseluruhan proses inferensi tak langsung dalam apa yang disebut sebuah Mesin Logika Mesinnya dilengkapi dengan beberapa tangkai kayu yang bisa dipindahkan dan di bawah ada 21 kunci seperti pada piano dll Dengan mesin ini dia dapat menganalis sebuah silogisme atau argumen logika sederhana apapun 88 Mesin tenun Jacquard kartu berlobangnya Hollerith telegraf dan telepon penyiaran elektromekanis Bell dan Newell 1971 mengindikasikan bahwa mesin tenun Jacquard 1801 pelopor dari kartu Hollerith kartu berlobang 1887 dan teknologi alih telepon adalah akar dari sebuah pohon yang mengarah pada perkembangan dari komputer pertama 89 Pada pertengahan abad ke 19 telegraf pelopor dari telepon digunakan diseluruh dunia pengkodean diskrit dan pembedaan huruf sebagai titik dan strip Pada akhir abad ke 19 pita telegraf sekitar 1870 an digunakan sebagaimana juga kartu Hollerith pada sensus Amerika 1890 Kemudian muncullah teleprinter sekitar 1910 an dengan kerta berlobang menggunakan kode Baudot di pita Jaringan alih telepon dari penyiaran elektromekanis ditemukan 1835 adalah karya dair George Stibitz 1937 penemu dari perangkat penghitungan digital Saat bekerja di laboratorium Bell dia mengamati beratnya penggunaan kalkulator mekanis dengan geligi Dia pulang ke rumah pada suatu malam 1937 berniat untuk menguji idenya Saat mengatik selesai Stibitz telah membangun perangkat hitung digital 90 Davis 2000 mengamati pentingnya penyiaran elektromekanis dengan keadaan binari nya buka dan tutup Hanya dengan perkembangan dimulai sejak 1930 an dari kalkulator elektromekanis menggunakan penggantian elektris sehingga mesin yang dibuat memiliki ruang lingkup yang dibayangkan Babbage 91 Matematika selama abad 19 sampai pertengahan abad 20 Sunting Simbol dan aturan Dengan cepat berkembangnya matematika dari George Boole 1847 1854 Gottlob Frege 1897 dan Giuseppe Peano 1888 1889 mereduksi aritmetika menjadi serangkaian simbol dimanipulasi oleh aturan aturan The Principles of arithmetic presented by a new method nya Peano 1888 adalah usaha pertama mengaksiomakan matematika dalam sebuah bahasa simbolik 92 Tapi Heijenoort memberi pujian pada Frege 1879 Frege merupakan karya tulis paling penting mengenai logika yang mana kita lihat sebuah bahasa formula yaitu sebuah lingua characterica sebuah bahasa ditulis dengan simbol simbol khusus untuk berpikir murni yaiut bebas dari hiasan retorikal dibangun dari simbol simbol tertentu yang dimanipulasi menurut aturan aturan terbatas 93 Karya dari Frege lebih lanjut disederhanakan dan diperkuat oleh Alfred North Whitehead dan Bertrand Russell dalam Principia Mathematical 1910 1913 Paradoks Pada masa yang sama sejumlah paradoks yang mengganggu muncul dalam literatur pada khususnya paradoks Burali Forti 1987 paradoks Russell 1902 03 dan Paradoks Richard 94 Hasilnya mengarah ke makalah Kurt Godel 1931 dia secara khusus merujuk paradoks pembohong yang mereduksi aturan dari rekursi pada angka Penghitungan Efektif Dalam usaha untuk menyelesaikan permasalahan keputusan yang didefinisikan oleh Hilbert tahun 1928 matematikawan pertama mendefinisikan apa arti dari metode efektif atau kalkulasi efektif misalnya sebuah kalkulasi yang akan sukses Dalam waktu yang cepat hal berikut muncul kalkulus l oleh Alonzo Church Stephen Kleene dan J B Rosser 95 definisi dari rekursi umum yang benar benar diasah dari karya Godel berdasarkan saran dari Jacquard Herbrand cf kuliah Godel di Princeton tahun 1934 dan penyederhaan selanjutnya oleh Kleene 96 Church membuktikan 97 bahwa permasalahan keputusan tidak terpecahkan definisi Emil Post tentang penghitungan efektif yaitu sebagai pekerja yang tanpa berpikir mengikuti suatu daftar instruksi untuk bergerak ke kiri atau kanan lewat sederetan ruangan dan bersamaan dengan itu bisa menandai atau menghapus kertas atau mengamati kertas dan membuat pilihan ya tidak tentang instruksi selanjutnya 98 Pembuktian Alan Turing bahwa permasalahan keputusan tidak terpecahkan dengan menggunakan sebuah mesin otomatis nya 99 dengan efek yang mirip dengan formulasi nya Post definisi J Barkley Rosser tentang metode efektif dalam makna sebuah mesin 100 Proposal S C Kleene dari pelopor Tesis Church yang disebutnya Thesis I 101 dan beberapa tahun kemudian Kleene menamakan tesisnya Tesis Church 102 dan mengajukan Tesis Turing 103 Emil Post 1936 dan Alan Turing 1936 37 1939 Sunting Berikut adalah kebetulan yang luar biasa dari dua orang yang tidak saling mengenal tetapi mendeskripsikan sebuah proses orang sebagai komputer mengerjakan perhitungan dan mereka menghasilkan definisi yang mirip Emil Post 1936 mendeskripsikan aksi dari sebuah komputer manusia sebagai berikut dua konsep ikut serta yaitu sebuah simbol ruang dimana pekerjaan yang mengarah dari masalah ke jawaban dilakukan dan sekumpulan arahan yang baku dan tidak bisa diubah Simbol ruangnya yaitu sederetan dua arah tak terbatas dari ruang atau kotak penyelesai masalah atau pekerja harus berjalan dan bekerja di simbol ruang ini dengan bisanya si pekerja masuk dan beroperasi dengan satu kotak dalam satu waktu sebuah kotak memiliki dua kemungkinan kondisi yaitu kosong atau belum ditandai dan dengan adanya tanda tunggal disana katakanlah garis vertikal Satu kotak dibiarkan dan disebut sebagai titik awal sebuah masalah tertentu diberikan dalam bentuk simbolik dengan sejumlah kotak terbatas yaitu INPUT ditandai dengan coretan Begitu juga jawabannya yaitu OUTPUT diberikan dalam bentuk simbolik dari suatu konfigurasi dari kotak kotak yang ditandai Sekumpulan arahan bisa digunakan untuk permasalahan umum menentukan proses determistik saat diterapkan pada setiap masalah tertentu Proses ini hanya berhenti bila datang arahan dengan tipe C yaitu STOP 104 Lihat lebih lanjut pada mesin post Turing Patung Alan Turing di Taman Bletchley Karya Alan Turing 105 mendahului karya dari Stibitz 1937 tidak diketahui apakah Stibitz mengetahui karya Turing Biografinya Turing percaya bahwa Turing menggunakan model seperti mesin ketik diturunkan dari ketertarikannya pada masa muda Alan memiliki impian menemukan mesin ketik pada saat muda Ibu Turing memiliki sebuah mesin ketik dan dia mungkin memulainya dengan menanyakan pada dirinya sendiri apa maksudnya dengan menyebut sebuah mesin ketik dengan mekanikal 106 Dengan lazimnya kode Morse dan telegraf mesin pita telegraf dan mesin ketik jarak jauh pada waktu itu kita bisa menyimpulkan bahwa semua itu memberikan pengaruh Turing model dari komputasinya sekarang dikenal dengan mesin Turing memulai sebagaimana Post dengan analisis dari komputer manusia yang ia sederhanakan menjadi sekumpulan gerakan dasar sederhana dan keadaan pikiran Tapi dia terus maju selangkah ke depan dan membuat sebuah mesin sebagai model dari komputasi angka 107 Menghitung biasanya dilakukan dengan menulis simbol tertentu di atas kertas Misalkan kertas tersebut dibagi menjadi segi empat seperti buku aritmetika anak anak Saya asumsikan bahwa komputasi dilakukan pada kertas satu dimensi yaitu di pita yang dibagi dalam persegi Juga misalkan bahwa jumlah simbol yang akan dicetak terbatas Perilaku dari komputer disetiap waktu ditentukan oleh simbol yang diobservasinya dan keadaan pikiran nya pada waktu tersebut Juga bisa diasumsikan bahwa ada batas B sebagai jumlah simbol atau persegi yang mana komputer dapat amati dalam satu waktu Jika ia ingin mengamati lebih ia harus menggunakan pengamatan beriringan Kita juga memisalkan bahwa jumlah keadaan pikiran yang diperlukan disini adalah terbatas Mari kita bayangkan bahwa operasi yang dilakukan oleh komputer akan dipecah menjadi operasi operasi sederhana yang sangat mendasar sehingga tidak mudah membayangkannya untuk dibagi lebih jauh 108 Reduksi Turing menghasilkan hal berikut Operasi sederhana haruslah mengikutkan a Perubahan dari simbol pada salah satu persegi yang sedang diamati b Perubahan dari salah satu persegi diamati terhadap persegi lainnya di antara L persegi dari salah satu yang sebelumnya diamati dd Bisa saja beberapa dari perubahan tersebut menyebabkan perubahan keadaan pikiran Operasi tunggal paling umum oleh karena itu harus diambil jadi salah satu hal berikut A Suatu kemungkinan perubahan a dari simbol bersamaan dengan suatu perubahan dari keadaan pikiran B Suatu kemungknian perubahan b dari persegi yang diamati bersama dengan kemungkinan perubahan dari keadaan pikiran dd Kita sekarang mungkin sudah bisa membentuk sebuah mesin untuk melakukan pekerjaan dari komputer tersebut 108 Beberapa tahun kemudian Turing mengembangkan analisisnya tesis secara definisi dengan ekspresi kuat berikut Sebuah fungsi dikatakan bisa dihitung secara efektif jika nilainya bisa ditemukan dengan proses yang murni mekanis Walau sangat mudah menangkap ide ini namun ia membutuhkan beberapa definisi matematikan terbatas yang bisa diekspresikan dia mendiskusikan sejarah dari definisi seperti di atas dengan menghormati Godel Herbrand Kleen Church Turing dan Post Kita mungkin gunakan pernyataan tersebut secara harfiah memahami murni dengan proses mekanis yang mana dapat dilakukan oleh sebuah mesin Memungkinkan untuk memberikan deskripsi matematis dalam beberapa bentuk normal dari struktur mesin tersebut Perkembangan dari ide ini mengarah pada definisi penulis dari sebuah fungsi yang dapat dihitung dan untuk mengidentifikasi komputibilitas dengan penghitungan yang efektif Kita boleh menggunakan ekspresi fungsi hitung untuk mengartikan sebuah fungsi yang dapat dihitung oleh sebuah mesin dan kita biarkan secara efektif dapat dihitung mengacu pada ide intuitif tanpa definisi tertentu dengan salah satu dari definisi tersebut 109 dd J B Rosser 1939 dan S C Kleene 1943 Sunting J Barkley Rosser mendefinisikan metode matematis efektif dengan cara berikut kemiringan ditambahkan Metode efektif disebut sebagai metode yang spesial yang mana setiap langkahnya secara tepat ditentukan dan pasti menghasilkan jawaban dalam sejumlah langkah yang terbatas Dengan pengertian khusus ini tiga definisi berbeda telah diajukan sampai sekarang catatan kakinya 5 lihat diskusinya di bawah Yang paling sederhana karena Post dan Turing menyatakan intinya bahwa sebuah metode efektif menyelesaikan sekumpulan permasalahan hanya ada jika seseorang bisa membuat sebuah mesin yang akan menyelesaikan setiap masalah dari sekumpulan masalah tanpa campur tangan manusia kecuali memasukan pertanyaan dan nantinya membaca jawabannya Ketiga definisi tersebut sama jadi tidak masalah yang mana yang digunakan Lebih lanjut fakta bahwa ketiganya sama adalah argumen yang sangat kuat untuk kebenaran dari salah satunya Rosser 1939 225 6 Catatan kaki Rosser 5 merujuk karya dari 1 Church dan Kleene dan definisi dari definabiliti l secara khusus Church menggunakannya dalam An Unsolvable Problem of Elementary Number Theory nya 1936 2 Herbrand dan Godel dan penggunaan rekursi mereka terutama Godel menggunakannya dalam makalah terkenalnya On Formally Undecidable Propositions of Principia Mathematica and Related Systems I 1931 dan 3 Post 1936 dan Turing 1936 7 dalam model mekanisme komputasi mereka Stephen C Kleene didefinisikan sebagai Thesis I nya yang terkenal yang dikenal sebagai tesis Church Turing Tapi dia melakukan hal tersebut dalam konteks berikut penebalan dari aslinya 12 Teori teori algoritme Dalam menyiapkan sebuah teori algoritme yang komplet apa yang kita lakukan adalah mendeskripsikan sebuah prosedur yang dapat dilakukan untuk setiap kumpulan nilai dari variabel variabel tunggal yang mana prosedur berhenti dan dengan cara tersebut dari hasilnya kita bisa membaca sebuah jawaban tertentu ya atau tidak untuk pertanyaan apakah nilai predikat benar Kleene 1943 273 Sejarah setelah 1950 Sunting Sejumlah usaha telah diarahkan untuk memperbaiki lebih lanjut definisi dari algoritme dan aktivitas tersebut masih terus berjalan karena isu isu yang mengelilinginya terutama fondasi matematika khususnya tesis Church Turing dan filsafat pikiran khususnya argumen menyangkut kecerdasan buatan Lebih lanjut lihat karakterisasi algoritme Lihat juga SuntingPemerintahan algoritmik Mesin abstrak Rekayasa algoritme Komposisi algoritmik Sintesis algoritmik Algoritme trading Sampah masuk sampah keluar Pendahuluan untuk Algoritme Daftar topik algoritme umum Daftar publikasi penting dalam ilmu komputer teoretis Algoritme Numerical Mathematics Consortium Teori komputasi Teori komputabilitas Teori kompleksitas KomputasiReferensi Sunting Blair Ann Duguid Paul Goeing Anja Silvia and Grafton Anthony Information A Historical Companion Princeton Princeton University Press 2021 p 247 David A Grossman Ophir Frieder Information Retrieval Algorithms and Heuristics 2nd edition 2004 ISBN 1402030045 Any classical mathematical algorithm for example can be described in a finite number of English words Rogers 1987 2 Well defined with respect to the agent that executes the algorithm There is a computing agent usually human which can react to the instructions and carry out the computations Rogers 1987 2 an algorithm is a procedure for computing a function with respect to some chosen notation for integers this limitation to numerical functions results in no loss of generality Rogers 1987 1 An algorithm has zero or more inputs i e quantities which are given to it initially before the algorithm begins Knuth 1973 5 A procedure which has all the characteristics of an algorithm except that it possibly lacks finiteness may be called a computational method Knuth 1973 5 An algorithm has one or more outputs i e quantities which have a specified relation to the inputs Knuth 1973 5 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 analogue devices carried forward deterministically without resort to random methods or devices e g dice Rogers 1987 2 Cooke Roger L 2005 The History of Mathematics A Brief Course John Wiley amp Sons ISBN 978 1 118 46029 0 Al Khwarizmi biography www history mcs st andrews ac uk Diarsipkan dari versi asli tanggal August 2 2019 Diakses tanggal May 3 2017 Parameter url status yang tidak diketahui akan diabaikan bantuan Etymology of algorithm Chambers Dictionary Diarsipkan dari versi asli tanggal March 31 2019 Diakses tanggal December 13 2016 Parameter url status yang tidak diketahui akan diabaikan bantuan Hogendijk Jan P 1998 al Khwarzimi Pythagoras 38 2 4 5 Diarsipkan dari versi asli tanggal April 12 2009 Parameter url status yang tidak diketahui akan diabaikan bantuan Oaks Jeffrey A Was al Khwarizmi an applied algebraist University of Indianapolis Diarsipkan dari versi asli tanggal July 18 2011 Diakses tanggal May 30 2008 Parameter url status yang tidak diketahui akan diabaikan bantuan Brezina Corona 2006 Al Khwarizmi The Inventor Of Algebra The Rosen Publishing Group ISBN 978 1 4042 0513 0 Foremost mathematical texts in history Diarsipkan June 9 2011 di Wayback Machine according to Carl B Boyer algorismic The Free Dictionary diarsipkan dari versi asli tanggal December 21 2019 diakses tanggal 2019 11 14 Parameter url status yang tidak diketahui akan diabaikan bantuan Oxford English Dictionary Third Edition 2012 s v Mehri Bahman 2017 From Al Khwarizmi to Algorithm Olympiads in Informatics 11 2 71 74 doi 10 15388 ioi 2017 special 11 Sriram M S 2005 Algorithms in Indian Mathematics Dalam Emch Gerard G Sridharan R Srinivas M D Contributions to the History of Indian Mathematics dalam bahasa Inggris Springer hlm 153 ISBN 978 93 86279 25 5 Abu Jafar Muhammad ibn Musa al Khwarizmi members peak org Diarsipkan dari versi asli tanggal August 21 2019 Diakses tanggal 2019 11 14 Parameter url status yang tidak diketahui akan diabaikan bantuan Kleene 1943 in Davis 1965 274 Rosser 1939 in Davis 1965 225 Stone 1973 4 Stone secara sederhana membutuhkan harus berhenti dalam sejumlah langkah Stone 1973 7 8 Boolos and Jeffrey 1974 1999 19 cf Stone 1972 5 Knuth 1973 7 menyatakan Pada praktiknya kita tidak hanya menginginkan algoritme kita menginginkan algoritam yang baik salah satu kriteria dari kebaikannya adalah lama waktu yang digunakan untuk menjalankan algoritme kriteria lainnya adalah kemampuan adaptasi dari algoritme ke komputer kesederhanaan dan elegan dll cf Stone 1973 6 Stone 1973 7 8 menyatakan bahwa harus ada sebuah prosedur yang robot yaitu komputer bisa ikuti supaya dapat menentukan secara tepat bagaimana mengikuti instruksi tersebut Stone menambahkan keterbatasan dari proses dan kepastian tidak memiliki kerancuan pada instruksi pada definisi tersebut Knuth loc cit Minsky 1967 105 Gurevich 2000 1 3 Sipser 2006 157 Knuth 1973 7 Chaitin 2005 32 Rogers 1987 1 2 Dalam esainya Calculations by Man and Machine Conceptual Analysis Seig 2002 390 memuji perbedaan ini oleh Robin Gandy cf Wilfred Seig dll 2002 Reflections on the foundations of mathematics Essays in honor of Solomon Feferman Association for Symbolic Logic A K Peters Ltd Natick MA cf gandy 1980 126 robin gandy church s thesis and principles for mechanisms appearing on pp 123 148 in j barwise et al 1980 the kleene symposium north holland publishing company Sebuah robot Sebuah komputer adalah sebuah robot yang melakukan setiap tugas yang dapat dijelaskan sebagai urutan dari instruksi cf Stone 1972 3 abacus nya Lambek adalah sejumlah lokasi tak terbatas yang bisa dihitung lubang kabel dll berikut dengan persediaan penghitung yang tak terbatas kerikil remah roti dll Lokasinya bisa dibedakan penghitungnya tidak Lubangnya memiliki kapasitas tak terbatas dan digerakan oleh agen yang memahami dan mampu menjalankan sejumlah instruksi Lambek 1961 295 Lambek mengacu Melzak yang mendefinisikan mesin Q nya sebagai sejumlah lokasi yang besar tanpa batas persediaan penghitung yang tanpa batas yang terdistribusi di antara lokasi lokasi tersebut sebuah program dan sebuah operator yang tujuan satu satunya yaitu menjalankan program Melzak 1961 283 B B J loc cit menambahkan syarat bahwa lubang tersebut mampu menyimpan sejumlah batu p 46 Melzak dan Lambek muncul di The Canadian Mathematical Bulletin vol 4 no 3 September 1961 Jika tidak ada kebingungan yang dihasilkan kata penghitung bisa dihiraukan dan sebuah lokasi bisa dikatakan mengandung sebuah angka Kita mengatakan bahwa instruksi adalah efektif bila ada sebuah prosedur yang robot dapat ikuti supaya dapat menentukan secara tepat bagaimana mematuhi instruksi Stone 1972 6 cf Minsky 1967 Chapter 11 Computer models and Chapter 14 Very Simple Bases for Computability pp 255 281 in particular cf Knuth 1973 3 Tapi selalu diikuti oleh IF THEN untuk menghindari pengurangan yang tidak sesuai Namun beberapa instruksi penetapan berbeda misalnya DECREMENT INCREMENT dan ZERO CLEAR EMPTY untuk mesin Minsky juga dibutuhkan untuk kekomplitan Turing spesifikasi lengkapnya tergantung kepada perancang GOTO tak bersyarat cukup mudah ia dapat dibentuk dengan menginisialisasi suatu lokasi tertentu dengan nol misalnya instruksi Z 0 oleh karena itu instruksi IF Z 0 THEN GOTO xxx adalah tak bersyarat Knuth 1973 4 Strone 1972 5 Metode untuk mendapatkan akar tidaklah biasa lihat Metode untuk menghitung akar kuadrat Leeuwen Jan 1990 Handbook of Theoretical Computer Science Algorithms and complexity Volume A Elsevier hlm 85 ISBN 978 0 444 88071 0 John G Kemeny and Thomas E Kurtz 1985 Back to Basic The History Corruption and Future of the Language Addison Wesley Publishing Company Inc Reading MA ISBN 0 201 13433 0 Tausworthe 1977 101 Tausworthe 1977 142 Knuth 1973 bagian 1 2 1 dikembangkan oleh Tausworthe 1977 di halaman 100ff dan Bab 9 1 cf Tausworthe 1977 Heath 1908 300 Hawking s Dover 2005 edisi diambil dari Heath Biarkan CD mengukur BF meninggalkan FA kurang darinya Hal ini merupakan singkatan cerdik untuk mengatakan ukur pada BA panjang yang sama dengan CD sampai titik F sehingga sisa panjang FA kurang dari CD dengan kata lain misalkan BF adalah yang kelipatan terbesar dari CD yang terdapat dalam BA Heath 1908 297 Untuk percobaan moden menggunakan pembagian dalam algoritme lihat Hardy dan Wright 1979 180 Knuth 1973 2 Volume 1 ditambah diskusi tentang algoritme Euclid dalam Knuth 1969 293 297 Volume 2 Euclid mengungkapkan pertanyaan ini dalam Proposisi 1 nya Euclid s Elements Book VII Proposition 2 Aleph0 clarku edu Diakses tanggal May 20 2012 Knuth 1973 13 18 Dia memuji formulasi pembuktian algoritme dalam makan asersi dan induksi kepada R W Floyd Peter Naur C A R Hoare H H Goldstine dan J von Neumann Tausworth 1977 meminjam contoh Euclid Knuth dan mengembangkan metode Knuth di bab 9 1 dari Formal Proofs pages 288 298 Tausworthe 1997 294 cf Knuth 1973 7 Vol I and his more detailed analyses on pp 1969 294 313 Vol II Kesalahan terjadi saat sebuah algoritme mencoba memadatkan dirinya sendiri Keberhasilan akan memecahkan permasalahan perhentian Gillian Conahan January 2013 Better Math Makes Faster Data Networks discovermagazine com Haitham Hassanieh Piotr Indyk Dina Katabi and Eric Price ACM SIAM Symposium On Discrete Algorithms SODA Diarsipkan 2013 07 04 di Wayback Machine Kyoto January 2012 Lihat juga sFFT Web Page Kowalski 1979 Carroll Sue Daughtrey Taz July 4 2007 Fundamental Concepts for the Software Quality Engineer American Society for Quality hlm 282 et seq ISBN 978 0 87389 720 4 Misalnya volume dari suatu politop kompleks dijelaskan menggunakan sebuah keanggotaan oracle dapat diperkirakan sampai keakuratan yang tinggi dengan mengacak algoritme waktu polinomial bukan dengan deterministik lihat Dyer Martin Frieze Alan Kannan Ravi January 1991 A Random Polynomial time Algorithm for Approximating the Volume of Convex Bodies J ACM New York NY USA ACM 38 1 1 17 doi 10 1145 102782 102783 George B Dantzig and Mukund N Thapa 2003 Linear Programming 2 Theory and Extensions Springer Verlag Tsypkin 1971 Adaptation and learning in automatic systems Academic Press hlm 54 ISBN 978 0 08 095582 7 Hogendijk Jan P 1998 al Khwarzimi Pythagoras 38 2 4 5 ISSN 0033 4766 Diarsipkan dari versi asli tanggal 2008 03 19 Diakses tanggal 2014 08 28 Oaks Jeffrey A Was al Khwarizmi an applied algebraist University of Indianapolis Diarsipkan dari versi asli tanggal 2010 11 15 Diakses tanggal 2008 05 30 Brezina Corona 2006 Al Khwarizmi The Inventor Of Algebra The Rosen Publishing Group ISBN 978 1 4042 0513 0 Foremost mathematical texts in history according to Carl B Boyer Etymology of algorithm at Dictionary Reference com Becker O 1933 Eudoxus Studien I Eine voreuklidische Proportionslehre und ihre Spuren bei Aristoteles und Euklid Quellen und Studien zur Geschichte der Mathematik B 2 311 333 Chabert Jean Luc 2012 A History of Algorithms From the Pebble to the Microchip Springer Science amp Business Media hlm 7 8 ISBN 9783642181924 Knuth Donald E 1972 Ancient Babylonian Algorithms PDF Commun ACM 15 7 671 677 doi 10 1145 361454 361514 ISSN 0001 0782 Diarsipkan dari versi asli PDF tanggal 2012 12 24 Parameter s2cid yang tidak diketahui akan diabaikan bantuan Parameter url status yang tidak diketahui akan diabaikan bantuan Aaboe Asger 2001 Episodes from the Early History of Astronomy New York Springer hlm 40 62 ISBN 978 0 387 95136 2 Kesalahan pengutipan Tag lt ref gt tidak sah tidak ditemukan teks untuk ref bernama Springer Science amp Business Media2 Ast Courtney Eratosthenes Wichita State University Department of Mathematics and Statistics Diarsipkan dari versi asli tanggal February 27 2015 Diakses tanggal February 27 2015 Parameter url status yang tidak diketahui akan diabaikan bantuan a b Kesalahan pengutipan Tag lt ref gt tidak sah tidak ditemukan teks untuk ref bernama Cooke20052 Davis 2000 18 Bolter 1984 24 Bolder 1984 26 Bolter 1984 33 34 204 206 All quotes from W Stanley Jevons 1880 Elementary Lessons in Logic Deductive and Inductive Macmillan and Co London and New York Republished as a googlebook cf Jevons 1880 199 201 Louis Couturat 1914 the Algebra of Logic The Open Court Publishing Company Chicago and London Republished as a googlebook cf Couturat 1914 75 76 gives a few more details interestingly he compares this to a typewriter as well as a piano Jevons states that the account is to be found at Jan 20 1870 The Proceedings of the Royal Society Bell and Newell diagram 1971 39 cf Davis 2000 Melina Hill Valley News Correspondent A Tinkerer Gets a Place in History Valley News West Lebanon NH Thursday March 31 1983 page 13 Davis 2000 14 van Heijenoort 1967 81ff van Heijenoort s commentary on Frege s Begriffsschrift a formula language modeled upon that of arithmetic for pure thought in van Heijenoort 1967 1 Dixon 1906 cf Kleene 1952 36 40 cf footnote in Alonzo Church 1936a in Davis 1965 90 and 1936b in Davis 1965 110 Kleene 1935 6 in Davis 1965 237ff Kleene 1943 in Davis 1965 255ff Church 1936 in Davis 1965 88ff cf Formulation I Post 1936 in Davis 1965 289 290 Turing 1936 7 in Davis 1965 116ff Rosser 1939 in Davis 1965 226 Kleene 1943 in Davis 1965 273 274 Kleene 1952 300 317 Kleene 1952 376 Turing 1936 7 in Davis 1965 289 290 Turing 1936 in Davis 1965 Turing 1939 in Davis 1965 160 Hodges p 96 Turing 1936 7 116 a b Turing 1936 7 in Davis 1965 136 Turing 1939 in Davis 1965 160Bacaan lanjutan SuntingAxt P 1959 On a Subrecursive Hierarchy and Primitive Recursive Degrees Transactions of the American Mathematical Society 92 pp 85 105 Bell C Gordon and Newell Allen 1971 Computer Structures Readings and Examples McGraw Hill Book Company New York ISBN 0 07 004357 4 Bellah Robert Neelly 1985 Habits of the Heart Individualism and Commitment in American Life Berkeley University of California Press ISBN 978 0 520 25419 0 Blass Andreas Gurevich Yuri 2003 Algorithms A Quest for Absolute Definitions PDF Bulletin of European Association for Theoretical Computer Science 81 Includes an excellent bibliography of 56 references Boolos George Jeffrey Richard 1974 1999 Computability and Logic edisi ke 4th Cambridge University Press London ISBN 0 521 20402 X Periksa nilai tanggal di year bantuan cf Chapter 3 Turing machines where they discuss certain enumerable sets not effectively mechanically enumerable Burgin Mark 2004 Super Recursive Algorithms Springer ISBN 978 0 387 95569 8 Campagnolo M L Moore C and Costa J F 2000 An analog characterization of the subrecursive functions In Proc of the 4th Conference on Real Numbers and Computers Odense University pp 91 109 Church Alonzo 1936a An Unsolvable Problem of Elementary Number Theory The American Journal of Mathematics 58 2 345 363 doi 10 2307 2371045 JSTOR 2371045 Reprinted in The Undecidable p 89ff The first expression of Church s Thesis See in particular page 100 The Undecidable where he defines the notion of effective calculability in terms of an algorithm and he uses the word terminates etc Pranala luar Sunting Lihat informasi mengenai algoritma di Wiktionary Wikibooks memiliki buku di Algorithma Indonesia Pengertian Algoritme pranala nonaktif permanen Inggris Hazewinkel Michiel ed 2001 1994 Algorithm Encyclopedia of Mathematics Springer Science Business Media B V Kluwer Academic Publishers ISBN 978 1 55608 010 4 Algorithms di Curlie dari DMOZ Inggris Weisstein Eric W Algorithm MathWorld Inggris Dictionary of Algorithms and Data Structures National Institute of Standards and Technology Inggris Algorithms and Data Structures by Dr Nikolai Bezroukov Diperoleh dari https id wikipedia org w index php title Algoritma amp oldid 22590154