source: wikipedia

text: Dalam matematika dan ilmu komputer, algoritme (serapan dari ) 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". 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. Sebagai metode yang efektif, algoritma dapat diekspresikan dalam jumlah ruang dan waktu yang terbatas, dan dalam bahasa formal yang terdefinisi dengan baik untuk menghitung suatu fungsi. Dimulai dari tataran awal dan input awal (bisa jadi kosong), instruksi-instruksi yang ada menggambarkan sebuah komputasi yang, ketika dieksekusi, berjalan melalui sejumlah tataran dengan jumlah terhingga yang terdefinisi dengan baik, yang pada akhirnya menghasilkan "output" 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. Sejarah Konsep 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. 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 Mūsā al-Khwārizmī, yang nisbah-nya (yang mengidentifikasikannya sebagai seseorang yang berasal dari Khwarezmia) dilatinkan sebagai Algoritmi (bahasa Persia yang diarabkan: الخوارزمی sekitar: 780-850). Namanya bermakna 'yang berasal dari (daerah) Khwarezmia', sebuah daerah yang dulunya merupakan bagian dari Iran Raya dan sekarang sebagai bagian dari Uzbekistan. 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. Bukunya yang bernama Aljabar menjadi salah satu buku matematikawan yang paling banyak dibaca di Eropa pada abad pertengahan. Dalam bahasa Latin abad pertengahan, kata algorismus, yang merupakan pengadaptasian dari namanya, menjadi kata yang bermakna "sistem bilangan desimal". Pada abad ke-15, di bawah pengaruh kata Yunani ἀριθμός (arithmos), 'angka' (lih. 'aritmatika'), kata Latin-nya diubah menjadi algorithmus. 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. Matematika India pada awalnya sebagian besar berbentuk algoritmik. Algoritma yang mewakili tradisi matematika India berkisar dari Śhulba Sūtrā dari beberapa abad sebelum masehi hingga teks-teks abad pertengahan dari Sekolah Kerala akan Astronomi dan Matematika. 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: yang bermakna: Puisi ini panjangnya beberapa ratus baris dan merangkum ilmu menghitung dengan angka-angka yang diadopsi dari India. 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" atau "metode efektif". Formalisasi tersebut termasuk fungsi rekursif Gödel-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 Definisi informalnya bisa berarti "sekumpulan aturan yang secara tepat menentukan seurutan operasi". yang mengikutkan semua program komputer, termasuk program yang tidak melakukan perhitungan numerik. Secara umum, sebuah program hanyalah sebuah algoritme jika ia akan berhenti nantinya. 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. 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. 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") untuk proses yang cepat, efisien, "baik" yang menentukan "pergerakan" dari "komputer" (mesin atau manusia, dibekali dengan informasi dan kemampuan internal yang dibutuhkan) untuk menemukan, dekode, dan kemudian mengolah masukan integer/simbol m dan n, simbol + dan = ... dan "secara efektif" menghasilkan, dalam waktu yang "masuk akal", 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 Algoritme 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". 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". 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 kontrol Sejauh 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 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: 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 Kebanyakan 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 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" Chaitin: "... sebuah program adalah 'elegan, maksud saya adalah ia merupakan program terkecil untuk menghasilkan keluaran." 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". 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" ) adalah tipe terbatas dari mesin, sebuah "perangkat mekanis deterministik diskrit" yang secara buta mengikuti instruksinya. Model primitif dari Melzak dan Lambek mereduksi pemikiran tersebut menjadi empat elemen: (i) diskrit, lokasi yang bisa dibedakan, (ii) diskrit, penghitung yang tak bisa dibedakan (iii) sebuah agen, dan (iv) sebuah daftar instruksi yang efektif relatif terhadap kemampuan dari agen. Minsky menjelaskan variasi yang lebih sesuai dari model "abacus"-nya Lambek dalam "Basis Komputabilitas Paling Sederhana". 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): ZERO (misalnya, isi dari lokasi diganti oleh 0: L ← 0), SUCCESSOR (misalnya, L ← L+1), dan DECREMENT (misalnya, L ← L-1). 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.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". 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. 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". 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". Tausworthe menambahkan tiga struktur kanon Bohm-Jacopini: SEQUENCE, IF-THEN-ELSE, dan WHILE-DO, dengan dua lagi: DO-WHILE dan CASE. Keuntungan dari program terstruktur adalah ia cocok dengan pembuktian kebenaran menggunakan induksi matematika.Simbol diagram alur: 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 Contoh Algoritme 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: Masukan: Deret angka L. Keluaran: Angka terbesar dalam daftar L. terbesar ← Lnull untuk setiap item dalam L, lakukan jika item > terbesar, maka terbesar ← item kembalikan terbesar Algoritme Euclid Algoritme Euclid muncul sebagai Proposisi II dalam Book VII ("Elementary Number Theory") dari Elements. 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. Dalam dunia modern, sisa r = l - q*s, q sebagai hasil bagi, atau sisa r adalah "modulus", bagian sisa-integer yang tersisa setelah pembagian. 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. 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 Bahasa komputer untuk algoritme Euclid 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 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: [Kedalam dua lokasi L dan S taruh angka l dan s yang merepresentasikan kedua panjang]: INPUT L, S [Inisialisasi R: buat supaya sisa panjang r sama dengan panjang awal l] R ← L E0: [Pastikan r ≥ s.] [Pastikan angka terkecil dari kedua angka ada dalam S dan yang terbesar di R]: IF R > S THEN isi dari L adalah angka terbesar jadi lewati langkah 4, 5 dan 6: GOTO step 6 ELSE tukar isi R dan S. L ← R (langkah pertama ini berlebih, tetapi berguna untuk diskusi nanti). R ← S 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. IF S > R THEN selesai mengukur jadi GOTO 10 ELSE ukur lagi, R ← R - S [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. 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. L ← S R ← S S ← L [Ulang proses pengukuran]: GOTO 7 OUTPUT: [Selesai. S berisi faktor persekutuan terbesar]: PRINT S DONE: HALT, END, STOP. Program elegan untuk algoritme Euclid 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 > B THEN GOTO 60 40 LET B=B-A 50 GOTO 20 60 LET A=A-B 70 GOTO 20 80 PRINT A 90 ENDBagaimana cara kerja "Elegan": Sebagai pengganti "pengulangan Euclid" luar, "Elegan" mengulang antara dua pengulangan, pengulangan A > 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 Apakah algoritme berjalan seperti yang penulis inginkan? Beberapa kasus uji cukup menentukan fungsi inti. Sumber pertama 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 > S, S > R, R = S? Sama juga dengan "Elegan": B > A, A > 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." Tausworthe mengajukan bahwa sebuah pengukuran dari kompleksitas dari sebuah program adalah panjang dari pembuktian kebenarannya. Menghitung dan meningkatkan algoritme Euclid 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 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; 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 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 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 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. Secara umum, peningkatan kecepatan bergantung pada properti khusus dari permasalahan, yang mana sangat umum pada aplikasi praktis. 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 Salah 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. 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 Cara 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. 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. 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 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. 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 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 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 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 & Wilson 1998) Hertzke & McConkey 1998, dan Bellah 1985). Teknologi dapat mengancam ekosistem moral tersebut seperi spesies invasif jika ia mengganggu campuran keragaman. Wallach & 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 Kata 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. Isu legalitas Lihat 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 Kata "Algoritme", atau "Algorisma" pada versi penulisan lain, datang dari nama al-Khwarizmi. dieja dalam Arab klasik sebagai Al-Khwarithmi. Al-khwarizmi (, 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. 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. Al-Khwarizmi dulunya adalah matematikawan yang paling banyak dibaca di Eropa pada akhir Abad Pertengahan, pada umum lewat bukunya yang lain, Aljabar. 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. 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 . Algoritme dikenal oleh orang Yunani berabad sebelum Euclid. Bukannya kata algebra orang Yunani menggunakan istilah arithmetica(ἀριθμητική, yaitu dalam karya Diophantus yang dikenal "bapak dari Aljabar" - lihat juga artikel Wikipedia persamaan Diophantine dan Eudoxos). Sejarah: Perkembangan dari kata "algoritme" Asal mula 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. Selama dinasti Hammurabi sekitar 1800-1600 SM, tablet tanah liat Babilonia menjabarkan algoritma untuk rumus-rumus komputasi. Algoritma juga digunakan dalam astronomi Babilonia. Tablet tanah liat Babilonia menguraikan dan menggunakan prosedur algoritmik untuk menghitung waktu dan tempat peristiwa astronomi yang signifikan. Algoritma untuk aritmatika juga ditemukan dalam matematika Mesir kuno, yang terdapat pada Papirus Matematika Rhind yang berasar dari sekitar tahun 1550 SM. Algoritma kemudian digunakan dalam matematika Helenistik kuno. Dua contohnya adalah Tapis Eratosthenes, yang dijelaskan dalam Pengenalan Aritmatika oleh Nicomachus, dan Algoritma Euklides, yang pertama kali dipaparkan dalam Euclid's Elements (sekitar 300 SM). Simbol diskrit dan yang dapat dibedakan 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 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): Rancangan mekanis dengan tingkat diskrit Jam: Bolter memuji penemuan jam gaya-berat sebagai "Kunci penemuan dari Eropa pada Abad Pertengahan", khususnya pada ambang pelarian yang menyediakan kita dengan tik dan tak dari jam mekanis. "Mesin otomatis yang akurat" 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. 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".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. 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". 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." Matematika selama abad 19 sampai pertengahan abad 20 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". 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". 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. 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-λ oleh Alonzo Church, Stephen Kleene, dan J.B. Rosser 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. Church membuktikan 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. Pembuktian Alan Turing bahwa permasalahan keputusan tidak terpecahkan dengan menggunakan "sebuah mesin [otomatis]"-nya dengan efek yang mirip dengan "formulasi"-nya Post, definisi J. Barkley Rosser tentang "metode efektif" dalam makna "sebuah mesin". Proposal S. C. Kleene dari pelopor "Tesis Church" yang disebutnya "Thesis I", dan beberapa tahun kemudian Kleene menamakan tesisnya "Tesis Church" dan mengajukan "Tesis Turing". Emil Post (1936) dan Alan Turing (1936-37, 1939) 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]". Lihat lebih lanjut pada mesin post-Turing Karya Alan Turing 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'". 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. "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." 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. "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" "Kita sekarang mungkin sudah bisa membentuk sebuah mesin untuk melakukan pekerjaan dari komputer tersebut." 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". J. B. Rosser (1939) dan S. C. Kleene (1943) 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-λ, 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 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 Pemerintahan 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 Komputasi Referensi Bacaan lanjutan Axt, 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. Includes an excellent bibliography of 56 references. : cf. Chapter 3 Turing machines where they discuss "certain enumerable sets not effectively (mechanically) enumerable". 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 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 Pengertian Algoritme Dictionary of Algorithms and Data Structures—National Institute of Standards and Technology Algorithms and Data Structures by Dr Nikolai Bezroukov Logika matematika Ilmu komputer teoretis


Jual Foredi Boven Digoel ORI ABE 2020 [Penjual RESMI] poktanesia » Foredi » Foredi Boven Digoel Foredi Boven Digoel, Apakah Anda pas ini mendapatkan “siksaan” baik fisik maupun mental, karena Anda belum mampu membuat orgasme istri Anda? Semangat berapi sekaligus kelengkapan ranjang yang Anda persiapkan serasa percuma, karena semua pada kelanjutannya bergantung pada “kemampuan” Anda. Semua serasa sudah terjadi semestinya, sampai pada pas Anda “hilang kontrol”. Menyisakan raut wajah “kecewa berbalut senyum”, istri Anda sadar jika Anda serius mencintainya namun apa daya pas ini belum bisa perkasa. Foredi Boven Digoel Legal BPOM Harga Foredi Boven Digoel Berapa? Order Foredi Boven Digoel Sekarang Bagi Anda yang belum tahu, Foredi merupakan product spesial obat ejakulasi dini laris yang terbukti menunjang banyak pasutri merampungkan masalah ranjang mereka. CATATAN: Foredi berbentuk gel, bukan kapsul atau tablet yang dikonsumsi bersama dengan langkah minum. Dengan pakai obat luar, menjadikan faedah jantung Anda selalu aman. Foredi yang berkomposisi basic alami racikan tradisional, sudah miliki ijin edar BPOM — jadi Anda tak mesti menjadi cemas untuk menggunakannya. Anggap Anda tak kenal secara dekat bersama dengan nama di atas, kami percaya Anda kenal betul bersama dengan Boyke Dian Nugraha. Pakar kesehatan reproduksi nasional yang benar-benar populer ini menganjurkan Foredi secara langsung untuk Foredi, antiseptik lokal organ intim pria dewasa untuk tingkatkan keharmonisan hubungan intim bersama pasangan. Sebelum dikupas habis, Anda mesti tahu 2 (dua) arti kebugaran reproduksi yang sering keliru kaprah di masyarakat tersebut ini: Jadi, jika Anda punyai masalah disfungsi ereksi, tidaklah cocok kecuali Anda pakai Foredi untuk mengatasinya. Sebaliknya, sekiranya Anda pas ini mengalami masalah pasutri yang mana Anda masih sanggup ereksi tapi kok ejakulasinya benar-benar dini, Foredi is for you, sir! Selain punyai manfaat utama membantu mengatasi ejakulasi dini, Foredi terhitung diformulasikan untuk merawat kebugaran organ berarti yang Anda miliki. Jadi, bersama dengan teratur mengonsumsi, Anda dapat menjaga kebersihan organ penting pria bersama dengan terlampau baik. Yang mana dapat sebabkan pasangan Anda terlampau terasa safe kala akan terkait suami istri dengan Anda. Jangan pandang remeh hal ini, karena kalau organ penting Anda tidak bersih, dapat mengakibatkan: Keputihan Patologis yang berwujud terus menerus bersama tanda-tanda cairan menjadi banyak, gatal, berbau dan berwarna kuning coklat Banyak berasal dari customer Foredi (kemungkinan) kurang mencermati atau tahu langkah penggunaan yg benar. Oleskan tidak tebal 1/3 – setengah sachet, pada organ vital Anda: bagian kepala (jangan kena lubang) dan anggota bawah (uretra/Saluran Kencing) Setelah dicuci bersih biarkan 1 jam kembali hingga rasa hangat mereda lantas siap untuk jalankan hubungan intim (rasa hangat pertanda ramuan bekerja sempurna) CATATAN: Kunci supaya Foredi bekerja atau bereaksi dengan optimal adalah bersama dengan S A B A R. Maksud kita di sini adalah, bersabar menunggu hingga ramuan herbal meresap dengan baik. Sebaiknya oleskan gel Foredi sedikitnya 2 jam sebelum saat jalankan interaksi suami istri. Foredi dapat optimal jika digunakan sesuai petunjuk di atas, bagi penderita ejakulasi dini parah mampu 1 sachet yg dioleskan, bagi ejakulasi dini biasa lumayan setengah sachet saja, Anda akan paham dengan sendirinya kandungan pasnya (berbeda untuk tiap pria) setelah punya kebiasaan memakainya. Foredi amat baik digunakan 1-2 tetes saja tiap hari untuk ANTISEPTIK (untuk menghindari jamur, bakteri berbahaya akibat keringat, celana dalam yang tidak bersih, interaksi intim yang terkontaminasi bersama penyakit, dll) terhitung memperlancar aliran darah di alat vital. “Awalnya saya cobalah kok tidak mempan, rupanya saya tidak benar pakai... mohon maaf sekali kalau sempat komplain & ngomel-ngomel nggak karuan hehehe (malu banget saya), sehabis pemakaian yang disesuaikan dengan keadaan saya, hasilnyaaa edannnnnn... istri sampai puassss.. saya semakin pede!! Perlu diketahui aku ejakulasi dini udah 20 tahunan!!! Saya sungguh terbantu bersama dengan adanya solusi Foredi ini, terimakasih banyak aku ucapkan. Saya dapat sarankan ke teman-teman saya“ “Begitu tau Foredi tersertifikasi & teruji di BPOM, maka aku segera order karena sebetulnya kembali perlu banget mengingat saya mengalami ejakulasi dini yang menyedihkan. Dulu saya selamanya mengecewakan istri, tapi sekarang jangan bertanya — istri jadi ketagihan mlulu. Saya masih memakainya kendati tidak terkait intim untuk perawatan” “Baru 1x pake saja istri aku KO, 3-0! Selama ini saya pake “pil biru” berasal dari luar (sudah tentu barang ginian ilegal karena tidak terdaftar di BPOM), efeknya sakit kepala nggak ketulungan dan jantung berdebar kencang. Tapi pake Foredi ini sungguh berbeda sebab obat luar jadi tidak tersedia pengaruh samping ada pengaruh ke “depan” hehehe bener-bener dahsyat Foredi!” “Alhamdulillah... aku kini jadi pria sejati di mata istri. Bagaimana tidak saya sanggup memuaskan istri berulang kali dan selamanya perkasa! Luar biasa! Beli yang asli ya jangan yang palsu! Di sini servisnya profesional, cepat, dan memuaskan!” “Saya tidak menyangka mendapatkan produk ini! Karena menemukannya tidak sengaja sementara browsing. Kini istri aku hingga orgasme berulang-ulang karena saya mampu bertahan lama! Bahkan 4 jam lantas saya ‘bertempur’ lagi khasiatnya tetap ada! Wahhh maknyus tenan!!!” Hasil berbeda terhadap tiap pria sebab suasana tubuh yang termasuk berbeda. Kami waktu ini belum dulu secara langsung menyaksikan (atau mendapatkan) Foredi yang dilansir palsu (tidak original). Kami siap bertanggung jawab menggantikan produk kalau Anda mendapati Foredi yang sudah kadaluarsa. Madu Zestmag Kepahiang Madu Zestmag Ponorogo


source: fineweb

text: Inggris hari ini mencanangkan diri sebagai pemilik pembangkit listrik tenaga angin lepas pantai terbesar di dunia. Dengan keberadaan teknologi tersebut, negara kerajaan terbesar di Eropa itu bisa mensubtitusi sumber energi listrik ke pembangkit listrik tenaga angin. Dilansir Guardian, Kamis 23 September 2010, proyek pengembangan pembangkit listrik tenaga angin ini dinamakan Thanet. Dia dikembangkan oleh kontraktor asal Denmark, Vestas, produsen manufaktur turbin, dengan kocek investasi sangat besar, yakni 900 juta poundsterling atau setara Rp12,5 triliun. Hanya kurang dari 20 persen dari kocek investasi tersebut yang dikucurkan ke perusahaan-perusahaan asal Inggris. Proyek Thanet, yang mampu memproduksi hingga 300 MW energi listrik dari 100 turbin, sementara akan menjadi fasilitas pembangkit listrik lepas pantai terbesar hingga nanti proyek London Array yang mempunyai 340 unit turbin rampung. Sementara itu, Renewable UK, badan perdagangan untuk industri energi angin dan kelautan yang bisa diperbaharui mengatakan, ketika dalam kondisi angin baik, sebuah turbin di Inggris dapat menghasilkan tambahan 50 persen energi listrik dibandingkan turbin yang sama di Jerman. Namun, bagaimana pun, Jerman masih menjadi negara dengan jumlah turbin angin terbesar di Eropa dengan 21.315 turbin angin, dibandingkan Inggris sekitar 3.000 lebih sedikit. "Investasi energi yang dapat diperbarui akan mendongkrak pertumbuhan ekonomi dengan menciptakan industri 'hijau' dan pekerjaan-pekerjaan baru," kata juru bicara Vattenfall, perusahaan yang ada di belakang proyek Thanet. "Pemerintah harus menjamin kucuran dana yang memadai dan membuat Inggris sebagai pemimpin dunia dalam mengatasi perubahan iklim." (umi)


text: Jantung () adalah sebuah rongga, rongga organ berotot yang berfungsi sebagai pemompa darah lewat pembuluh darah oleh kontraksi berirama yang berulang. Darah menyuplai okisgen dan nutrisi pada tubuh, juga membantu menghilangkan sisa-sisa metabolisme. Istilah kardiak berarti berhubungan dengan jantung, dari kata Yunani cardia untuk jantung. Jantung adalah salah satu organ manusia yang berperan dalam sistem peredaran darah, terletak di rongga dada agak sebelah kiri. Pada manusia, mamalia, dan burung, jantung dibagi menjadi empat ruas: atrium atas kanan dan kiri; dan ventrikel bawah kanan dan kiri. Pada umumnya atrium dan ventrikel kanan disebut jantung kanan, dan sisanya disebut jantung kiri. Ikan hanya memiliki dua ruas, sebuah atrium dan sebuah ventrikel, sementara reptil memiliki tiga ruas. Pada jantung yang sehat darah mengalir satu arah melalui pembuluh darah. Terdapat sebuah kantung pembungkus yang melindungi jantung, perikardium, yang juga mengandung sedikit cairan. Dinding jantung tersusun atas tiga lapisan: epikardium, miokardium, dan endokardium. Jantung memompa darah melewati dua sistem sirkulasi. Darah yang berasal dari sistem peredaran darah besar mengandung sedikit oksigen dan memasuki atrium kanan melalui vena kava superior dan inferior menuju ventrikel kanan. Dari sini darah dipompa menuju paru-paru, tempat darah memperoleh oksigen dan meninggalkan karbon dioksida. Darah yang sudah mengandung oksigen kembali menuju atrium kiri, melewati ventrikel kiri dan dipompa menuju seluruh tubuh melalui aorta—di mana oksigen dipakai dan melalui metabolisme menjadi karbon dioksida. Ditambah lagi, darah juga membawa nutrisi dari hati menuju berbagai organ tubuh, sementara membawa zat sisa menuju hati dan ginjal. Normalnya, jumlah darah yang terpompa menuju paru-paru sama dengan jumlah darah yang terpompa ke seluruh tubuh. Pembuluh vena memompa darah menuju jantung dan membawa darah yang kaya karbon dioksida - kecuali vena pulmonaris dan vena pada sistem pencernaan. Arteri membawa darah keluar jantung, membawa oksigen selain pada arteri pulmonaris. Jarak yang jauh dari jantung membuat pembuluh vena memiliki tekanan yang lebih kecil dari pembuluh arteri. Ketika beristirahat, jantung berdetak kurang lebih 72 kali per menit. Latihan fisik biasanya mengangkat jumlahnya, tetapi jumlah melambat selama beberapa waktu, yang baik untuk jantung. Penyakit kardiovaskular adalah penyebab kematian yang umum pada tahun 2008, membawa 30% manusia pada kematian. Diikuti oleh penyakit pembuluh koroner dan stroke. Penyebab utamanya adalah: merokok, obesitas, latihan yang kurang, kolesterol tinggi, tekanan darah tinggi, diabetes, dan lain-lain. Diagnosis dari kardiovaskular sering kali dilakukan dengan stetoskop, ECG atau melalui pendengaran ultrasonik. Spesial yang fokus pada penyakit jantung disebut kardiologis, meskipun dibutuhkan spesialis lain untuk menanganinya. Permukaan jantung Jantung adalah satu otot tunggal yang terdiri dari lapisan endothelium. Jantung terletak di dalam rongga torakik, di balik tulang dada. Struktur jantung berbelok ke bawah dan sedikit ke arah kiri. Massanya kurang lebih 300 gram, besarnya sebesar kepalan tangan. Jantung hampir sepenuhnya diselubungi oleh paru-paru, tetapi tertutup oleh selaput ganda yang bernama perikardium, yang tertempel pada diafragma. Lapisan pertama menempel sangat erat kepada jantung, sedangkan lapisan luarnya lebih longgar dan berair, untuk menghindari gesekan antar organ dalam tubuh yang terjadi karena gerakan memompa konstan jantung. Jantung dijaga di tempatnya oleh pembuluh-pembuluh darah yang meliputi daerah jantung yang merata/datar, seperti di dasar dan di samping. Dua garis pembelah (terbentuk dari otot) pada lapisan luar jantung menunjukkan di mana dinding pemisah di antara serambi dan bilik jantung. Struktur internal jantung Secara internal, jantung dipisahkan oleh sebuah lapisan otot menjadi dua belah bagian, dari atas ke bawah, menjadi dua pompa. Kedua pompa ini sejak lahir tidak pernah tersambung. Belahan ini terdiri dari dua rongga yang dipisahkan oleh dinding jantung. Maka dapat disimpulkan bahwa jantung terdiri dari empat rongga, serambi kanan & kiri dan bilik kanan & kiri. Dinding serambi jauh lebih tipis dibandingkan dinding bilik karena bilik harus melawan gaya gravitasi bumi untuk memompa dari bawah ke atas dan memerlukan gaya yang lebih besar untuk mensuplai peredaran darah besar, khususnya pembuluh aorta, untuk memompa ke seluruh bagian tubuh yang memiliki pembuluh darah. Tiap serambi dan bilik pada masing-masing belahan jantung dipisahkan oleh sebuah katup. Katup di antara atrium kanan dan bilik kanan disebut katup trikuspidalis atau katup berdaun tiga. Sedangkan katup yang ada di antara serambi kiri dan bilik kiri disebut katup mitralis atau katup bikuspidalis (katup berdaun dua). Cara kerja jantung Pada saat berdenyut setiap ruang jantung mengendur dan darah masuk ke jantung (disebut 'diastol'). Selanjutnya jantung berkontraksi dan memompa darah keluar dari ruang jantung (disebut 'sistol'). Kedua serambi berkontraksi dan berelaksasi secara bersamaan, dan kedua bilik juga mengendur dan berkontraksi secara bersamaan. Darah yang sudah mengandung sedikit oksigen dan mengandung banyak karbondioksida (darah kotor) dari seluruh tubuh mengalir melalui dua vena berbesar (vena kava) menuju ke dalam atrium kanan. Setelah atrium kanan terisi darah, ia akan mendorong darah ke dalam ventrikel kanan melalui katup trikuspidalis. Darah dari ventrikel kanan akan dipompa melalui [katup pulmoner] ke dalam [arteri pulmonalis] menuju ke [paru-paru]. Darah akan mengalir melalui pembuluh yang sangat kecil (pembuluh kapiler) yang mengelilingi kantong udara di paru-paru, menyerap oksigen, melepaskan karbondioksida dan selanjutnya dialirkan kembali ke jantung. Darah yang kaya akan oksigen mengalir di dalam vena pulmonalis menuju ke atrium sinistra. Peredaran darah di antara bagian kanan jantung, paru-paru dan atrium kiri disebut sirkulasi pulmoner karena darah dialirkan ke paru-paru. Darah dalam atrium sinistra akan didorong menuju ventrikel sinistra melalui katup bikuspidalis/mitral, yang selanjutnya akan memompa darah bersih ini melewati [katup aorta] masuk ke dalam [aorta] (arteri terbesar dalam tubuh). Darah kaya oksigen ini disirkulasikan ke seluruh tubuh, kecuali paru-paru. dan sebagainya. Seputar kesehatan jantung Jantung merupakan salah satu organ vital penting bagi tubuh, kelainan pada jantung dapat berisiko kematian. Penyakit jantung Penyakit jantung adalah sebuah kondisi gangguan jantung yang menyebabkan Jantung tidak dapat melaksanakan tugasnya dengan baik. Hal-hal tersebut antara lain: Kardiomiopati. kelainan jantung yang membuat kemampuan jantung dalam memompa darah berkurang. Aritmia. kondisi gangguan irama jantung yang membuat irama jantung terlalu cepat, terlalu lambat, atau tidak teratur. Penyakit jantung koroner. penyempitan arteri koroner yang membuat kurangnya pasokan oksigen ke otot-otot jantung koroner. Infeksi jantung. infeksi yang penyebabnya adalah bakteri, virus, atau parasit. Makanan juga menjadi penyebab utama terjadinya serangan jantung, terutama makanan cepat saji (junk food). Para penelti dari McMaster University, Kanada, menemukan hasil bahwa orang yang banyak mengonsumsi makanan yang digoreng, camilan bergaram, dan daging memiliki risiko serangan jantung lebih dari 35 persen lebih besar dibandingkan dengan orang yang mengonsumsi sedikit atau tidak mengonsumsinya. Pencegahan Penyakit jantung dapat di cegah dengan menghindari faktor-faktor risiko terjadinya penyakit jantung yaitu tidak merokok, rutin berolahraga, mengonsumsi makanan bergizi seimbang, dan menjalani gaya hidup yang sehat. mengurangi konsumsi makanan tinggi garam dan berminyak serta mengurangi konsumsi daging merah juga merupakan upaya pencegahan penyakit jantung Penelitian Beberapa peneliti menyebutkan bahwa zat allicin di dalam bawang putih ternyata dapat membantu menjaga kesehatan jantung. Penelitian tersebut menunjukkan bahwa oleh khasiat zat allicin dapat mengurangi ketegangan pembuluh darah berkurang 72%. Namun beberapa peneliti lain ada juga menyatakan bahwa tidak ada hubungan antara bawang putih dengan kesehatan jantung. Dalam studi yang dilakukan pada 90 perokok berbadan gemuk, para peneliti Eropa mendapati bahwa tambahan bubuk bawang putih selama 3 bulan tak memperlihatkan perubahan dalam kadar kolesterol mereka atau beberapa tanda lain risiko penyakit jantung. Studi membuktikan bahwa mengurangi merokok tidak mengurangi risiko penyakit jantung. Untuk benar-benar mengurangi risiko penyakit jantung, seseorang harus benar-benar berhenti merokok. Penemuan yang diterbitkan dalam Journal of the American College of Cardiology mengungkapkan konsumsi suplemen Vitamin C dapat mengurangi risiko penyakit jantung. Penelitian menunjukkan, mengurangi konsumsi garam dapat mengurangi risiko penyakit jantung. Konsumsi garam secara berlebihan dapat meningkatkan tekanan darah. Pada percobaan diet rendah garam menunjukkan risiko penyakit jantung meningkat hingga 25% dan risiko serangan jantung meningkat hingga 20% Makanan juga menjadi penyebab utama terjadinya serangan jantung, terutama makanan cepat saji (junk food). Para penelti dari McMaster University, Kanada, menemukan hasil bahwa orang yang banyak mengonsumsi makanan yang berminyak, camiilan tinggi garam, dan daging merah secara berlebihan memiliki risiko serangan jantung meningkat lebih dari 35 persen lebih besar dibandingkan dengan orang yang mengonsumsi dengan batasan yang normal. Lihat pula Atrium Ventrikel Kardiologi Patologi kardiovaskular Penyakit kardiovaskular Sistem peredaran Tekanan darah Haemodinamik Catatan Referensi Pranala luar Metode PCI (Pelebaran pembuluh darah yang menyempit) Free 3D Heart Images Anatomi Sistem kardiovaskular


text: Sistem Operasi Android yang notabene masih keluarga Linux membuka kemungkinan bagi para penggunanya memiliki keleluasaan akses sebagai Super User. Kisanak sudah pasti mengetahui, bahwa sistem operasi moderen seperti keluarga Windows 2000 keatas dan Linux mempunyai dua jenis keleluasaan akses, yaitu sebagai user biasa dan Admin-atau sering disebut juga Super User. Bila sebagai user biasa, rata-rata kita tidak bisa melakukan perubahan-perubahan pada sistem yang sifatnya kritikal, atau bahkan tidak bisa menginstal software pada komputer tersebut. Namun pada akses Admin atau Super User, kita ibaratnya seperti penguasa komputer tersebut, dan bisa melakukan perubahan apa saja pada sistem. Begitu juga pada smartphone berbasis Android. Karena pada dasarnya Android adalah Linux, maka pada Android juga berlaku dua jenis keleluasaan akses. Namun smartphone Android keluaran standar pabrik tidak memiliki keleluasaan akses sebagai Admin, karena tanpa akses Admin pun, pengguna biasa tetap dapat mengoperasikan smartphonenya tanpa ada masalah. Lalu untuk apa kita repot-repot membuka akses Admin pada Android? Ada beberapa keuntungan yang bisa didapat setelah kita mendapatkan akses penuh sebagai Admin pada smartphone Android, yaitu diantaranya: 1. Mempunyai akses penuh untuk mengubah file-file sistem 2. Dapat mengubah logo atau image saat boot 3. Memblokir atau menghapus iklan-iklan pada aplikasi yang terinstal 4. Mengubah font sistem 5. Overclock atau underclock prosesor (dengan kernel yang mendukung tentunya) 6. Menjalankan aplikasi tertentu yang memerlukan akses Admin. – Namun selain keuntungan, ada beberapa kerugian, atau resiko yang harus kisanak waspadai: 1. Garansi produk dengan seketika menjadi tidak berlaku 2. Kemungkinan virus atau malware masuk menjadi lebih besar karena akses Admin telah terbuka 3. Bisa jadi performa smartphone menjadi tidak lebih baik daripada sebelum akses Admin terbuka 4. Kegagalan proses membuka akses Admin bisa jadi membuat smartphone kisanak menjadi rusak alias cukuplah menjadi ganjal pintu saja he he he. – Nah, bagaimana kisanak? Berani mencoba? Silakan diikuti langkah berikut: Catatan penting: Membuka akses admin disebut juga Rooting, karena pada dasarnya akses admin adalah membuka akses ke root sistem operasi. Saya tidak bertanggungjawab atas resiko yang ditimbulkan artikel ini. Sebelum proses rooting dimulai, ada baiknya kisanak mem-backup dulu semua data penting di smartphone, dan baterai minimal 90% terisi. Untuk contoh perangkat, saya gunakan smartphone saya, Samsung Galaxy Y GT S5360 Langkah-langkah Rooting: 1. Download file pembuka akses root disini. File ini spesifik untuk Samsung Galaxy Y GT S-5360. Untuk smartphone lain, silakan kisanak cari-cari di warung terdekat. 2. Salin file .ZIP hasil download ke posisi root kartu memori smartphone (tidak di dalam folder apapun), dan file .ZIP jangan di unzip. 3. Matikan smartphone kisanak, dan nyalakan kembali dalam modus RECOVERY, caranya, tekan tombol POWER, tombol volume UP, dan tombol HOME secara berbarengan, dan tunggu beberapa saat. 4. Dengan tombol volume UP dan DOWN, arahkan menu recovery pada pilihan Apply Update from SDCard 5. Pilih file Update.zip yang telah di salin sebelumnya (tekan tombol HOME) 6. Biarkan proses rooting berjalan. 7. Reboot smartphone. – Bila proses rooting berhasil, akan muncul icon SuperUser di list aplikasi. Sampai titik ini, maka kisanak telah berhasil me-rooting smartphone kisanak! Sampai jumpa lagi dalam artikel Go....!!!!BLOG lainnya yang pasti nggak bikin kisanak GoBlog


text: Fiksi atau cerkan (cerita rekaan) adalah cerita atau latar yang berasal dari imajinasi—dengan kata lain, tidak secara ketat berdasarkan sejarah atau fakta. Fiksi bisa diekspresikan dalam beragam format, termasuk tulisan, pertunjukan langsung, film, acara televisi, animasi, permainan video, dan permainan peran. Walaupun istilah fiksi ini awalnya lebih sering digunakan untuk bentuk sastra naratif, termasuk novel, novela, cerita pendek, dan sandiwara. Fiksi biasanya digunakan dalam arti paling sempit untuk segala "narasi sastra". Karya fiksi merupakan hasil dari imajinasi kreatif, jadi kecocokannya diasumsikan oleh audiensnya. Kebenaran dalam karya fiksi tidak harus sejalan dengan kebenaran yang berlaku di dunia nyata, misalnya kebenaran dari segi hukum, moral, agama, logika, dan sebagainya meski tetap harus logis. Dengan demikian, fiksi umumnya tidak diharapkan hanya menampilkan tokoh nyata atau deskripsi yang akurat secara faktual. Konteks fiksi dipahami sebagai sesuatu yang lebih terbuka terhadap penafsiran. Tokoh dan peristiwa di dalam dunia fiksi mungkin berlatar di dalam konteks mereka sendiri yang sepenuhnya terpisah dari dunia nyata: suatu semesta fiksi yang mandiri. Fiksi merupakan lawan kata untuk nonfiksi, yang tokoh-tokohnya memegang tanggung jawab untuk menampilkan fakta sejarah dan faktual; akan tetapi, perbedaan antara fiksi dan nonfiksi bisa menjadi tidak jelas, misalnya dalam sastra pascamodern. Format Secara tradisional, fiksi termasuk novel, cerita pendek, fabel, legenda, mitos, dongeng, epik dan puisi naratif, sandiwara (termasuk opera, teater musikal, drama, permainan boneka, dan berbagai jenis tarian teatrikal). Namun, fiksi juga dapat mencakup buku komik, berbagai kartun animasi, stop motion, anime, manga, film, permainan video, program radio, program televisi (komedi dan drama), dan lain sebagainya. Jenis fiksi sastra dalam prosa termasuk: Cerita pendek: Karya dengan setidaknya 2,000 kata namun di atas 7,500 kata. Novella: Karya dengan setidaknya 17,500 kata namun di bawah 50,000 kata. Karya Joseph Conrad bertajuk Heart of Darkness (1899) adalah contoh dari novella. Novel: Karya dengan 50,000 kata atau lebih. Cerita pendek Cerita pendek atau cerpen adalah suatu bentuk prosa naratif fiktif yang cenderung padat dan langsung pada tujuannya. Cerpen merupakan salah satu karya sastra fiksi non-faktual. Fiksi cerpen sangatlah mengandalkan teknik-teknik sastra seperti tokoh, plot, tema bahasa, dan sudut pandang secara luas dibandingkan dengan karya fiksi yang lebih panjang. Ciri sebuah cerpen dapat dibaca sekali duduk, plot diarahkan hanya pada sebuah insiden atau peristiwa tunggal, watak tokoh tidak dikembangkan secara penuh, dimensi ruang dan waktu terbatas, cerita lebih padat, memusat, mendalam, dan mencapai keutuhan secara eksklusi (terpisah atau khusus). Novel Novel adalah sebuah karya fiksi prosa yang tertulis dan naratif. Umumnya sebuah novel bercerita tentang tentang tokoh-tokoh dan kelakuan mereka dalam kehidupan sehari-hari, dengan menitik beratkan pada sisi-sisi yang dipilih penulis dari naratif tersebut. Kata novel berasal dari Bahasa Italia, novella yang berarti “sebuah kisah, sepotong berita” dan novel memiliki cerita yang lebih kompleks dari cerpen. Ciri sebuah novel adalah tidak dibaca sekali duduk, plot diarahkan pada insiden atau peristiwa jamak, watak tokoh dikembangkan secara penuh, dimensi ruang dan waktu yang lebih meluas, cerita lebih luas, dan mencapai keutuhan secara inklusi. Internet Internet memberikan pengaruh besar terhadap pembuatan dan penyebaran fiksi, menyebabkan munculnya keraguan pada kemampuan hak cipta sebagai cara untuk memastikan bahwa royalti dibayarkan kepada pemegang hak cipta. Selain itu, perpustakaan digital seperti Project Gutenberg membuat naskah-naskah domain umum menjadi lebih tersedia. Gabungan dari komputer rumahan yang tidak mahal, internet, dan kreativitas para penggunanya juga menghasilkan bentuk fiksi baru, misalnya permainan komputer interaktif atau komik yang dibuat melalui komputer. Banyak sekali forum untuk fiksi penggemar yang bisa dicari secara daring, di mana para pengikut setia dunia fiksi tertentu membuat dan menyebarkan cerita turunan. Internet juga digunakan untuk mengembangkan fiksi blog, di mana cerita ditampilkan melalui blog baik sebagai fiksi kilat atau blog serial, dan fiksi kolaboratif, di mana cerita ditulis dalam banyak bagian oleh para penulis berbeda, atau seluruh teksnya bisa direvisi oleh siapapun menggunakan suatu wiki. Genre Fiksi pada umumnya terbagi dalam sejumlah genre: bagian-bagian dari fiksi, masing-masingnya dibedakan oleh gaya, teknik naratif, isi media, atau kriteria yang didefinisikan secara populer. Meskipun sebuah karya tergolong imajiner tetapi ia memiliki golongan yang disebut Fiksi Non-fiksi (Nonfiction Fiction), yakni sebuah bentuk karya fiksi yang dasar ceritanya merupakan sebuah fakta. Yang termasuk kedalam Fiksi Non-fiksi adalah: Fiksi sejarah (Historical fiction), adalah fiksi yang dasar penulisannya merupakan sejarah. Novel ini terikat oleh fakta-fakta sejarah, tetapi fiksi ini memberikan ruang gerak untuk fiksionalitas, misalnya dengan memberitakan pikiran dan perasaan tokoh lewat percakapan. Sebagai contoh adalah Bendera Hitam dari Kurasan dan Tentara Islam di Tanah Galia karya Darji Zaidan. Fiksi ilmiah (Science fiction), adalah fiksi yang dasar penulisannya adalah fakta ilmu pengetahuan. Sebagai contoh novel ini adalah 1984, karya George Orwell. Genre ini misalnya, memprediksi atau mengandaikan teknologi yang bukan realita pada saat penciptaan karya tersebut: novel Jules Verne From the Earth to the Moon diterbitkan pada tahun 1865 dan pada tahun 1969, astronaut Neil Armstrong pertama kali mendarat di bulan. Fiksi biografis (Biographical fiction), adalah fiksi yang dasar penulisannya adalah fiksi biografis. Karya biografis juga memberikan ruang bagi fiksionalitas, misalnya yang berupa sikap yang diberikan oleh penulis, di samping juga munculnya bentuk-bentuk dialog. Sebagai contoh karya biografis adalah Bung Karno Penyambung Lidah Rakyat karya Cindy Adams, Kuantar Kau ke Gerbang dan Tahta untuk Rakyat. Beberapa karya fiksi sedikit atau sangat digambarkan ulang berdasarkan pada beberapa kisah asli yang sebenarnya, atau sebuah biografi yang direkonstruksi. Seringkali, bahkan ketika cerita fiksi didasarkan pada fakta, mungkin terdapat penambahan dan pengurangan dari kisah nyata untuk membuatnya lebih menarik. Contohnya adalah The Things They Carried karya Tim O'Brien, serial cerita pendek mengenai Perang Vietnam. Karya fiksi yang secara eksplisit melibatkan unsur-unsur supernatural, magis, atau secara ilmiah tidak mungkin sering diklasifikasikan dalam genre fantasi, termasuk novel karya Lewis Carroll Alice In Wonderland, seri Harry Potter karya J. K. Rowling, dan The Lord of the Rings karya J. R. R. Tolkien. Pencipta fantasi terkadang memperkenalkan makhluk imajiner dan tokoh-tokoh seperti naga dan peri. Realisme Fiksi realistis biasanya melibatkan cerita yang latar dasarnya (waktu dan lokasi di dunia) adalah nyata dan kejadian-kejadiannya dapat terjadi secara layak dalam pengaturan dunia nyata; fiksi non-realistik melibatkan cerita yangterjadi pada latar sebaliknya, sering kali berlatar pada alam semesta yang sepenuhnya imajiner, sejarah alternatif dunia selain yang saat ini dipahami sebagai benar, atau lokasi atau waktu lain yang tidak nyata. Terkadang bahkan menghadirkan teknologi yang tidak mungkin atau pembangkangan terhadap hukum alam yang dipahami saat ini. Namun, semua jenis fiksi boleh jadi mengundang audiens mereka untuk mengeksplorasi ide-ide, masalah, atau kemungkinan yang nyata dalam latar imajiner. Kritikus sastra James Wood, berpendapat bahwa "fiksi adalah baik kecerdasan dan hal yang terlihat seakan-akan benar", yang berarti bahwa fiksi membutuhkan baik penemuan kreatif maupun tingkat kepercayaan yang dapat dipercaya, sebuah gagasan yang sering dikemas dalam istilah penyair Samuel Taylor Coleridge: penangguhan ketidakpercayaan. Juga, kemungkinan-kemungkinan fiktif yang tak terbatas itu sendiri menandakan ketidakmungkinan mengetahui realitas secara penuh, secara provokatif menunjukkan bahwa tidak ada kriteria untuk mengukur konstruksi realitas. Fiksi sastra Fiksi sastra diartikan sebagai karya fiksi yang dianggap memiliki nilai sastra, berbeda dari fiksi "genre" yang lebih komersial. Perbedaan ini bisa menjadi kontroversial di antara para kritikus dan cendekiawan. Neal Stephenson berpendapat bahwa walaupun definisi apapun adalah sederhana, tapi pada masa kini ada perbedaan budaya umum antara fiksi sastra dan genre. Di satu pihak, para penulis sastra saat ini sering disokong oleh pola, dengan dipekerjakan di universitas atau lembaga serupa, dan dengan keberlanjutan posisinya ditentukan tidak hanya oleh penjualan buku tetapi juga oleh kritik dari penulis sastra ternama lain serta kritikus. Di pihak lain, menurutnya, penulis fiksi genre cenderung menyokong diri mereka sendiri melalui penjualan buku. Akan tetapi, dalam suatu wawancara, John Updike mengeluhkan bahwa "kategori 'fiksi sastra' baru-baru ini muncul untuk menyiksa orang sepertiku yang hanya ingin menulis buku, dan jika ada yang mau membacanya, itu bagus, semakin banyak semakin meriah. ... Aku semacam penulis genre. Aku menulis fiksi sastra, yang mana seperti fiksi mata-mata atau chick lit". Perkembangan karya fiksi di Indonesia Pertama kali sebuah karya fiksi yang masuk ke Indonesia adalah karya novel terjemahan,masa ini dinamakan Sastra Melayu Lama sekitar tahun 1870-an. Pada tahun 1920 terbitlah karya sastra berupa prosa seperti novel, cerpen, drama dan lain sebagainya. Angkatan ini dikenal dengan Angkatan Balai Pustaka, karya karya novelis Indonesia yang terkenal pada masa ini adalah Siti Nurbaya, Salah Asuhan, dan Si Cebol Merindukan Bulan. Pada masa berikutnya muncullah angkatan Pujangga Baru sebagai reaksi keras atas banyak sensor oleh Penerbit Balai Pustaka. Karya-karya yang terkenal pada masa ini adalah Tenggelamnya Kapal Van der Wijck, Belenggu dan Di Bawah Lindungan Ka'bah. Lalu muncullah Angkatan '45, angkatan ini lebih realistik dibanding angkatan sebelumnya. Sastrawan yang terkenal pada masa ini adalah: Chairil Anwar, Idrus, dan Trisno Sumardjo. Angkatan berikutnya adalah Angkatan 1950-1960. Ciri karya sastra dari angkatan ini di dominasi oleh cerpen dan puisi. Pada angkatan ini muncul gerakan komunis dikalangan sastrawan, yang bergabung dalam Lembaga Kebudajaan Rakjat (Lekra) yang berkonsep sastra realisme-sosialis. Karya yang terkenal pada masa ini adalah Mochtar Loebis, Ramadhan K.H, dan W.S. Rendra. Dan berikutnya datanglah Angkatan 1966-1970 yang karya sastranya menganut aliran surealis, arketipe dan absurd. Sastrawan terkenal pada masa ini adalah: Taufik Ismail, Umar Kayam, dan Titis Basino. Kemudian pada dekade berikutnya karya sastra lebih di dominasi oleh roman, angkatan ini dinamakan angkatan 1980-1990. Sastrawan terkenal pada zaman ini adalah Nh. Dini. dan berikutnya adalah Angkatan Reformasi. Pada masa ini banyaknya karya sastra berupa novel, cerpen dan puisi yang bertemakan sosial dan politik. Dan terakhir adalah Angkatan 2000-an. Novelis terkenal pada masa ini adalah Andrea Hirata Lihat pula Kartunis Karakter Sandiwara Catatan Referensi Bibliografi Eco, Umberto 2009. On the ontology of fictional characters: A semiotic approach . Sign Systems Studies 37(1/2): 82–98. Pranala luar Kate Colquhoun pada batas-batas kabur antara fiksi dan non-fiksi Contoh Majalah Serial Blog/Cerita Pendek Subhasis Chattopadhyay, 'Claiming the Domain of the Literary: Mourning the Death of Reading Fiction, Prabuddha Bharata or Awakened India 121 (6) (Juni 2016): 505-11 Sastra


Jual Meja Kantor Indachi DD 200 CT harga murah - Manara Furniture Beranda » Brand » Meja Kantor Indachi DD 200 CT Kode : DD 200 CT Ready Stock / DD 200 CT Bagikan informasi tentang Meja Kantor Indachi DD 200 CT kepada teman atau kerabat Anda. Deskripsi Meja Kantor Indachi DD 200 CT Type : DD 200 CT Ukuran : w. 2000 x d. 750 x h. 750 Belum ada ulasan untuk produk Meja Kantor Indachi DD 200 CT Produk Terkait Meja Kantor Indachi DD 200 CT / XO-Glazed