Apa itu algoritma?
Algoritme
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.
Algoritme
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.
Algoritme
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.
Radio digital
CODEC algoritme sangat membantu konsep ini dengan memisahkan dan tidak memancarkan suara-suara yang tidak diperlukan tanpa mengurangi kualitas suara audio yang telah disandikan ("decode") menjadi informasi analog pada pesawat penerima. Proses pengurangan bit ini dikenal dengan istilah kompresi. Kompresi akan mengurangi sinyal yang masuk menjadi komponen-komponen penting sedemikian rupa yang berkibat pada berkurangnya lebar pita saluran transmisi. Kompresi sinyal audio ini menjadi sangat penting untuk mengurangi lebar pita transmisi siaran digital. Beberapa jenis kompresi algoritme sistem pengolahan sinyal audio secara digital yang kita kenal adalah AAC, PAC, MP-3 atau HDC. Ini semua merupakan nama dagang dari sistem kompresi informasi audio digital dan untuk menyatakan hak cipta intelektual dan sekaligus untuk membedakan masing-masing cara kodefikasi algoritme di antara beberapa sistem tadi. Dengan menggunakan HD-Radio secara digital sinyal yang telah dimodulasikan pada frekuensi yang sama dengan frekuensi analog yang ada.
Algoritme
Salah satu cara mengklasifikasikan algoritme yaitu dengan cara implementasi.
Pemelajaran mesin
Pemelajaran mesin, cabang dari kecerdasan buatan, adalah disiplin ilmu yang mencakup perancangan dan pengembangan algoritme yang memungkinkan komputer untuk mengembangkan perilaku yang didasarkan pada data empiris, seperti dari sensor data basis data. Sistem pembelajar dapat memanfaatkan contoh (data) untuk menangkap ciri yang diperlukan dari probabilitas yang mendasarinya (yang tidak diketahui). Data dapat dilihat sebagai contoh yang menggambarkan hubungan antara variabel yang diamati. Fokus besar penelitian pemelajaran mesin adalah bagaimana mengenali secara otomatis pola kompleks dan membuat keputusan cerdas berdasarkan data. Kesukarannya terjadi karena himpunan semua peri laku yang mungkin, dari semua masukan yang dimungkinkan, terlalu besar untuk diliput oleh himpunan contoh pengamatan (data pelatihan). Karena itu pembelajar harus merampatkan (generalisasi) perilaku dari contoh yang ada untuk menghasilkan keluaran yang berguna dalam kasus-kasus baru.
Algoritme
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").
Algoritme
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
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):
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.
Algoritme
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.
Matematika
Aksioma menurut pemikiran tradisional adalah "kebenaran yang menjadi bukti dengan sendirinya", tetapi konsep ini memicu persoalan. Pada tingkatan formal, sebuah aksioma hanyalah seutas dawai lambang, yang hanya memiliki makna tersirat di dalam konteks semua rumus yang terturunkan dari suatu sistem aksioma. Inilah tujuan program Hilbert untuk meletakkan semua matematika pada sebuah basis aksioma yang kokoh, tetapi menurut Teorema ketaklengkapan Gödel tiap-tiap sistem aksioma (yang cukup kuat) memiliki rumus-rumus yang ; dan oleh karena itulah suatu aksiomatisasi terakhir di dalam matematika adalah mustahil. Meski demikian, matematika sering dibayangkan (di dalam konteks formal) tidak lain kecuali teori himpunan di beberapa aksiomatisasi, dengan pengertian bahwa tiap-tiap pernyataan atau bukti matematika dapat dikemas ke dalam rumus-rumus teori himpunan.
Basis data kimia
Kimiawan dapat mencari basis data dengan menggunakan bagian-bagian struktur, bagian dari nama IUPAC mereka dan juga berdasarkan pada batasan pada sifatnya. Basis data kimia sangat berbeda dengan basis data tujuan umum lainnya dalam dukungan mereka untuk pencarian sub-struktur. Jenis pencarian ini dicapai dengan mencari subgrafik isomorfisme (terkadang juga disebut monomorfisme) dan merupakan aplikasi teori graf yang banyak dipelajari. Algoritme untuk pencarian bersifat komputasi intensif, seringkali O ("n") atau O ("n") kali kompleksitas (di mana "n" adalah jumlah atom yang terlibat). Komponen pencarian yang intensif disebut "atom-by-atom-searching" (ABAS), di mana pemetaan pencarian substruktur atom dan ikatan dengan molekul target dicari. Pencarian ABAS biasanya menggunakan algoritme Ullman atau variasinya ("mis." SMSD). Percepatan dicapai dengan amortisasi waktu, yaitu beberapa saat pada tugas pencarian disimpan dengan menggunakan informasi prakomputasi. Perhitungan awal ini biasanya melibatkan pembuatan bitstring yang mewakili ada tidaknya fragmen molekul. Dengan melihat fragmen yang ada dalam struktur pencarian, dimungkinkan untuk menghilangkan kebutuhan perbandingan ABAS dengan molekul target yang tidak memiliki fragmen yang ada dalam struktur pencarian. Penghapusan ini disebut skrining/ penyaringan (jangan dikelirukan dengan prosedur penyaringan yang digunakan dalam penemuan obat terlarang). Bit-string yang digunakan untuk aplikasi ini juga disebut kunci struktural. Kinerja tombol seperti itu tergantung pada pilihan fragmen yang digunakan untuk membangun kunci dan probabilitas kehadiran mereka dalam basis data molekul. Jenis kunci lainnya menggunakan hash-code berdasarkan fragmen yang diturunkan secara komputasi. Hal ini disebut 'sidik jari' meski istilahnya kadang-kadang digunakan secara sinonim dengan kunci struktural. Jumlah memori yang dibutuhkan untuk menyimpan kunci struktural dan sidik jari ini dapat dikurangi dengan 'lipat', yang dicapai dengan menggabungkan bagian-bagian kunci dengan menggunakan operasi bitwise dan dengan demikian mengurangi keseluruhan panjangnya.
Kriptografi
Algoritme kunci-publik didasari pada kesulitan komputasional pada masalah yang beragam. Kesulitan yang paling terkenal ialah [[faktorisasi integer]] (seperti algoritme RSA yang didasari pada masalah yang berhubungan dengan faktor integer), namun masalah [[logaritma diskrit]] juga penting. Banyak kriptanalisis kunci-publik berhubungan dengan algoritme numerikal untuk menyelesaikan masalah komputasional ini, dan beberapa darinya, efisien (contoh dalam waktu pengerjaan). Sebagai contoh, algoritme yang paling dikenal untuk menyelesaikan kriptografi kurva eliptik versi logaritma diskrit sangat menghabiskan banyak waktu ketimbang algoritme yang paling dikenal untuk faktorisasi, paling tidak untuk masalah dengan besar yang lebih kurang sama. Oleh karena itu, segala hal harus sama, untuk mencapai kekuatan menahan serangan yang sama, teknik enkripsi berbasis faktor harus menggunakan kunci yang lebih besar dari teknik kurva eliptik. Untuk alasan ini, kriptosistem kunci-publik yang didasari pada kurva eliptik telah menjadi lebih dikenal sejak penemuannya pada pertengahan tahun 1990an.
Algoritme gabung
Pada umumnya algoritme gabung berjalan dalam waktu proposional untuk penjumlahan pada panjangnya daftar; Algoritme gabung beroperasi pada bilangan besar dalam daftar yang akan segera mengalikan penjumlahan panjangnya daftar pada saat itu untuk keluaran gambar "pointers points" yang mana menunjuk pada item yang paling rendah, yang dapat terpengaruhi dengan suatu "heap(tumpukan)" yang didasarkan prioritas antrian dalam O(lg n) waktu, untuk O("m" lg "n") waktu (di mana "n" adalah bilangan pada daftar yang digabungkan, "m" adalah penjumlahan panjangnya daftar, dan "lg" adalah "log" basis 2). Ketika menggabungkan panjang m dua daftar, terdapat suatu perbandingan lompatan yang lebih rendah 2"m"-1 yang ada dalam kasus terburuk.
Algoritme
Kata algoritme datang dari nama matematikawan Persia abad ke-9 Abu Abdullah Muhammad ibnu Musa Al-Khwarizmi, yang hasil kerjanya dibangun dari matematikawan India abad ke-7 Brahmagupta.
Kata algorisma awalnya mengacu hanya pada aturan-aturan dalam melakukan aritmetika menggunakan bilangan Hindu-Arab namun berkembang lewat penerjemahan Latin Eropa dari nama Al-Khwarizmi menjadi algoritme pada abad ke-18.
Penggunaan kata tersebut berkembang mengikutkan semua prosedur untuk menyelesaikan masalah atau melakukan unit kegiatan.
Asam deoksiribonukleat
Riset dalam algoritme pencarian string, yang menemukan kejadian dari urutan huruf di dalam urutan huruf yang lebih besar, dimotivasi sebagian oleh riset DNA, dimana algoritme ini digunakan untuk mencari urutan tertentu dari nukleotida dalam sebuah urutan yang besar. Dalam aplikasi lainnya seperti editor text, bahkan algoritme sederhana untuk masalah ini biasanya mencukupi, tetapi urutan DNA menyebabkan algoritme-algoritme ini untuk menunjukkan sifat kasus-mendekati-terburuk dikarenakan jumlah kecil dari karakter yang berbeda.
Boosting
Boosting adalah pembelajaran "metode ensemble" meta algoritma untuk terutama mengurangi bias, dan juga varians. Berbeda halnya dengan bagging dan random forest yang mendapatkan hasil prediksi dari proses "bootstrap", Boosting mengacu pada kumpulan algoritma yang dapat mengkonversi "weak learners" untuk "strong learners". Prinsip utama dari boosting adalah menyesuaikan urutan "weak learners" hanya sedikit lebih baik daripada "tebakan acak", sementara "strong learners" dekat dengan kinerja sempurna seperti pohon keputusan kecil. Setiap kali pembuatan pohon, data yang digunakan tetap seperti semula tetapi memiliki sebaran bobot yang berbeda dalam tiap iterasi. Penggunaan bobot juga dilakukan pada saat proses penggabungan prediksi akhir dari banyak pohon yang dihasilkan melalui klasifikasi atau penjumlahan regresi. Boosting juga dikanal dengan sebutan AdaBoost.
Daftar algoritme
"Lihat juga daftar struktur data, daftar topik umum algoritme, dan daftar istilah yang berhubungan dengan algoritme dan struktur data."
Algoritme pencarian
Terdapat beberapa algoritme pencarian list "informed" yang dikenali. Salah satu anggota dari algoritme tersebut adalah sebuah tabel hash dengan sebuah fungsi "hashing", yaitu algoritme dengan heuristik yang berdasarkan pada permasalahan yang dihadapi. Sebagian besar algoritme "informed" adalah mengeksplore pohon. Termasuk di dalamnya adalah pencarian Breadth-first, dan A*. Sebagaimana algoritme "uninformed", algoritme "informed" dapat dikembangkan untuk bekerja pada graf.
Ilmu komputer
Ilmu Komputer mempelajari apa yang bisa dilakukan oleh beberapa program, dan apa yang tidak (komputabilitas dan intelegensia buatan), bagaimana program itu harus mengevaluasi suatu hasil (algoritme), bagaimana program harus menyimpan dan mengambil bit tertentu dari suatu informasi (struktur data), dan bagaimana program dan pengguna berkomunikasi (antarmuka pengguna dan bahasa pemrograman).
Algoritme
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.
Daftar algoritme
Berikut adalah daftar algoritme.
Teori komputasi
Teori komputasi adalah cabang ilmu komputer dan matematika yang membahas apakah dan bagaimanakah suatu masalah dapat dipecahkan pada model komputasi, menggunakan algoritme. Bidang ilmu ini terutama membahas hal terkait komputabilitas dan kompleksitas, dalam kaitannya dengan formalisme komputasi.
Analisis numeris
Sejak akhir abad keduapuluh, algoritme kebanyakan diimplementasikan dalam berbagai bahasa pemrograman. Netlib memiliki berbagai daftar perangkat lunak yang banyak digunakan di bidang numerik, kebanyakan bahasa pemrograman yang digunakan dalam Fortran dan C. Untuk produk perangkat lunak yang komersial menerapkan algoritme numerik yang lebih beragam termasuk IMSL dan NAG "libraries", sedangkan untuk alternatif yang gratis adalah GNU "Scientific Library."
Pencarian biner
Sebuah algoritme pencarian biner (atau pemilahan biner) adalah sebuah teknik untuk menemukan nilai tertentu dalam sebuah larik ("array") linear, dengan menghilangkan setengah data pada setiap langkah, dipakai secara luas tetapi tidak secara ekslusif dalam ilmu komputer. Sebuah pencarian biner mencari nilai tengah (median), melakukan sebuah pembandingan untuk menentukan apakah nilai yang dicari ada sebelum atau sesudahnya, kemudian mencari setengah sisanya dengan cara yang sama. Sebuah pencarian biner adalah salah satu contoh dari algoritme divide and conquer (atau lebih khusus algoritme decrease and conquer) dan sebuah pencarian dikotomi (lebih rinci di Algoritme pencarian).
Unit Pemroses Sentral
Saat sebuah program dieksekusi, data mengalir dari RAM ke sebuah unit yang disebut dengan bus, yang menghubungkan antara CPU dengan MAA. Data kemudian didekode dengan menggunakan unit proses yang disebut sebagai "pendekoder instruksi" yang sanggup menerjemahkan instruksi. Data kemudian berjalan ke unit aritmetika dan logika (ALU) yang melakukan kalkulasi dan perbandingan. Data bisa jadi disimpan sementara oleh ALU dalam sebuah lokasi memori yang disebut dengan "register" supaya dapat diambil kembali dengan cepat untuk diolah. ALU dapat melakukan operasi-operasi tertentu, meliputi penjumlahan, perkalian, pengurangan, pengujian kondisi terhadap data dalam register, hingga mengirimkan hasil pemrosesannya kembali ke memori fisik, media penyimpan, atau register apabila akan mengolah hasil pemrosesan lagi. Selama proses ini terjadi, sebuah unit dalam CPU yang disebut dengan "penghitung program" akan memantau instruksi yang sukses dijalankan supaya instruksi tersebut dapat dieksekusi dengan urutan yang benar dan sesuai.
Algoritme Euklidean
Euklid pada mulanya merumuskan masalah ini secara geometri, sebagai masalah untuk mencari "satuan" yang dapat dipakai untuk panjang dari dua buah garis, dan algoritmanya berlangsung dengan mengulangi pengurangan dari sisi yang lebih pendek dari sisi yang lebih panjang. Implementasi ini sama dengan implementasi berikut ini, yang cukup tidak efisien dibandingkan dengan cara yang telah dijelaskan di atas:
Algoritme perambatan mundur
Algoritme Perambatan Mundur atau backpropagation merupakan algoritme untuk melakukan proses pembelajaran terarah ("supervised learning") pada jaringan saraf tiruan (JST) untuk mencari beban ("weight") pada setiap neuron yang menghasilkan nilai kesalahan seminimal mungkin melalui data pembelajaran ("training data") yang diberikan. Metode ini memanfaatkan teknik optimasi berdasarkan penurunan gradien. Metode ini dilakukan setelah proses perambatan maju yang merambatkan data dari data masukan ke keluaran melalui koleksi neuron dan lapisan JST untuk kemudian dirambatkan balik ke belakang dari lapis keluaran ke lapis masukan untuk menghitung nilai kesalahan pada masing-masing neuron dibandingkan dengan nilai keluaran yang seharusnya (nilai target).
Komputasi
Komputasi sebetulnya bisa diartikan sebagai cara untuk menemukan pemecahan masalah dari data input dengan menggunakan suatu algoritme. Hal ini ialah apa yang disebut dengan "teori komputasi", suatu sub-bidang dari ilmu komputer dan matematika. Selama ribuan tahun, perhitungan dan komputasi umumnya dilakukan dengan menggunakan pena dan kertas, atau kapur dan batu tulis, atau dikerjakan secara mental, kadang-kadang dengan bantuan suatu tabel. Namun sekarang, kebanyakan komputasi telah dilakukan dengan menggunakan komputer.
Algoritme
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.
Aritmetika
Operasi dasar aritmetika adalah penjumlahan, pengurangan, perkalian dan pembagian, walaupun operasi-operasi lain yang lebih canggih (seperti persentase, akar kuadrat, pemangkatan, dan logaritma) kadang juga dimasukkan ke dalam kategori ini. Perhitungan dalam aritmetika dilakukan menurut suatu urutan operasi yang menentukan operasi aritmetika yang mana lebih dulu dilakukan.
Algoritme semut
Oleh karena itu, ketika seekor semut menemukan jalur yang bagus (jalur yang pendek) dari koloni ke sumber makanan, semut lainnya akan mengikuti jalur tersebut, dan akhirnya semua semut akan mengikuti sebuah jalur tunggal. Ide algoritme koloni semut adalah untuk meniru perilaku ini melalui 'semut tiruan' berjalan seputar grafik yang menunjukkan masalah yang harus diselesaikan.
Memetika
Definisi lain diberikan oleh Hokky Situngkir, mencoba menawarkan formalisme yang lebih ketat untuk meme, memeplexes, dan deme, dengan melihat meme sebagai unit budaya dalam sistem kompleks budaya. Hal ini didasarkan pada algoritme genetika Darwin yang telah dimodifikasi untuk menjelaskan pola evolusi berbeda yang terlihat pada gen dan meme. Dalam metode memetika sebagai cara untuk melihat kebudayaan sebagai sistem adaptif yang kompleks, ia menjelaskan cara untuk melihat memetika sebagai metodologi alternatif evolusi budaya. Namun, ada banyak definisi mungkin yang dikaitkan dengan kata "meme”. Sebagai contoh, dalam bidang simulasi komputer, istilah "memetic algorithm" digunakan untuk mendefinisikan sudut pandang komputasi tertentu.
Algoritme
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.
Algoritme Dijkstra
Misalnya, bila "vertices" dari sebuah graf melambangkan kota-kota dan bobot sisi ("edge weights") melambangkan jarak antara kota-kota tersebut, maka algoritme Dijkstra dapat digunakan untuk menemukan jarak terpendek antara dua kota.
Fungsi (matematika)
Fungsi dalam istilah matematika merupakan pemetaan setiap anggota sebuah himpunan (dinamakan sebagai domain) kepada anggota himpunan yang lain (dinamakan sebagai kodomain). Istilah ini berbeda pengertiannya dengan kata yang sama yang dipakai sehari-hari, seperti “alatnya ber"fungsi" dengan baik.” Konsep fungsi adalah salah satu konsep dasar dari matematika dan setiap ilmu kuantitatif. Istilah ""fungsi"", ""pemetaan"", ""peta"", ""transformasi"", dan ""operator"" biasanya dipakai secara sinonim.
Algoritme seleksi
Kasus terburuk algoritme linear untuk menemukan minimum atau maksimum adalah sangat jelas; kita menyimpan dua peubah, satu mengacu ke indeks dari elemen minimum/maksimum yang didapatkan sementara, dan satu lagi menyimpan nilainya. Bersamaan dengan kita memindai list tersebut, kita perbarui kedua peubah tersebut jika kita menemukan sebuah elemen yang sesuai:
Algoritme pencari-siklus Floyd
Algoritme pencari-siklus Floyd adalah algoritme untuk mencari siklus dalam barisan bilangan (disebut juga sekuens). Sekuens yang dimaksud bisa berupa yang tersimpan dalam struktur data ataupun dibuat sesuai kebutuhan (berupa rumus). Algoritme ini ditemukan Robert W. Floyd pada tahun 1967[1]. Nama lainnya ialah algoritme "tortoise and the hare" (istilah ini serupa dengan "kura-kura dan kancil").
Algoritme
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.
Algoritme
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):
Pi
Algoritme paling awal yang tercatat secara cermat menghitung nilai adalah pendekatan geometri menggunakan poligon. Algoritme ini ditemukan sekitar 250 SM oleh matematikawan Yunani Archimedes. Algoritme poligon ini mendominasi selama 1.000 tahun, dan karenanya kadang-kadang dirujuk juga sebagai "konstanta Archimedes". Archimedes menghitung batas atas dan bawah dengan menggambar poligon di luar dan di dalam sebuah lingkaran, dan secara perlahan melipatgandakan sisi-sisi poligon tersebut hingga mencapai 96-gon. Dengan menghitung keliling poligon-poligon tersebut, Archimedes membuktikan bahwa  Ptolemaeus dalam Almagest-nya, memberikan nilai sebesar 3,1416. Hasil ini kemungkinan dia dapatkan dari Archimedes ataupun dari Apollonius dari Perga. Para matematikawan kemudian menggunakan algoritme ini dan mencapai rekor 39 digit pada tahun 1630 sebelum dipecahkan pada tahun 1699 menggunakan deret tak terhingga.
Gelembung tersaring
Meskipun algoritma membatasi keragaman politik, beberapa gelembung filter adalah hasil dari pilihan pengguna. Dalam sebuah studi oleh para ilmuwan data di Facebook, mereka menemukan bahwa untuk setiap empat teman Facebook yang berbagi ideologi, pengguna memiliki satu teman dengan pandangan yang kontras. Tidak peduli apa pun algoritme Facebook untuk Pemberian Kabar Berita, orang lebih cenderung berteman / mengikuti orang yang memiliki keyakinan serupa. Sifat dari algoritmanya adalah ia memeringkat cerita berdasarkan riwayat pengguna, yang menghasilkan pengurangan "konten lintas sektor politik sebesar 5 persen untuk kalangan konservatif dan 8 persen untuk kaum liberal". Namun, bahkan ketika orang diberi opsi untuk mengeklik tautan yang menawarkan tampilan yang kontras, mereka tetap menggunakan sumber yang paling banyak dilihat. "[U] ser pilihan mengurangi kemungkinan mengklik pada link lintas sektor oleh 17 persen untuk konservatif dan 6 persen untuk kaum liberal." Tautan lintas sektoral adalah tautan yang memperkenalkan sudut pandang yang berbeda dari sudut pandang yang diduga pengguna, atau apa yang dipatok sebagai keyakinan pengguna oleh situs web.
Algoritme
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.
Algoritme pencarian
Ini adalah satu jenis pencarian yang memecahkan permasalahan pemenuhan kendala dimana, bukan dengan melihat sebuah jalur, solusinya adalah sebuah himpunan nilai yang diberikan pada sebuah himpunan peubah. Karena peubah-peubah dapat diproses dengan urutan apa saja, algoritme pencarian pohon biasa adalah tidak efisien. Metode pemecahan permasalahan kendala memuat pencarian kombinatorial dan lacak balik, keduanya mengambil keuntungan dari kebebasan yang diasosiasikan dengan permasalahan kendala.
Algoritme
Walaupun "algorism"-nya al-Khawarizmi dirujuk sebagai aturan-aturan melakukan aritmetika menggunakan bilangan Hindu-Arab dan solusi sistematis dan persamaan kuadrat, sebagian formalisasi yang nantinya menjadi "algoritme" modern dimulai dengan usaha untuk memecahkan permasalahan keputusan ("Entscheidungsproblem") yang diajukan oleh David Hilbert pada tahun 1928.
Formalisasi selanjutnya dilihat sebagai usaha untuk menentukan "penghitungan efektif"
Deret (matematika)
Elemen-elemen dalam suatu deret sering diproduksi menurut kaidah tertentu, misalnya dengan suatu rumus, atau melalui suatu algoritme. Mengingat tidak terbatasnya jumlah elemen, hasilnya sering disebut deret tak terhingga ("infinite series"). Berbeda dengan finite summations, deret tak terhingga membutuhkan bantuan dari analisis matematika, dan secara khusus limit, untuk dapat dipahami dan dimanipulasi secara penuh. Selain jumlahnya yang banyak dalam matematika, deret tak terhingga juga sering digunakan dalam bidang-bidang kuantitatif lain seperti fisika, sains komputer, dan finansial.
Algoritme
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
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.
Algoritme penyortiran
Algoritme penyortiran digunakan pada Ilmu Komputer sering diklasifikasikan dengan:Algoritme pembanding yang stabil menjaga urutan relatif dari rekord dengan indeks yang sama. (Indeks merupakan porsi dari rekors yang menjadi basis dari penyortiran; yang mungkin ataupun tidak termasuk dalam rekord tersebut.) Jika seluruh indeks berbeda maka perbedaan ini tidak dibutuhkan. Tetapi jika terdapat indeks yang sama, maka algoritme sorting itu stabil walaupun terdapat dua rekord (misalkan R dan S) dengan indeks yang sama, dan R muncul sebelum S pada list aslinya, kemudian R akan selalu muncul sebelum S pada list yang terurut.
Ketika elemen yang sama tak dapat dibedakan, seperti dengan integer, atau secara umumnya, setiap data dimana seluruh elemen ialah nilai, tingkat kestabilannya tidak dipermasalahkan. Walaupun, asumsikan bahwa setiap angka yang ganda diurutkan berdasarkan komponen pertama mereka:
PageRank
PageRank adalah sebuah algoritme yang telah dipatenkan yang berfungsi menentukan situs web mana yang lebih penting/populer. PageRank merupakan salah satu fitur utama mesin pencari Google dan diciptakan oleh pendirinya, Larry Page dan Sergey Brin yang merupakan mahasiswa Ph.D. Universitas Stanford.
Algoritme
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.
Algoritme
Apakah algoritme berjalan seperti yang penulis inginkan?
Beberapa kasus uji cukup menentukan fungsi inti.
Sumber pertama
Algoritme
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).
Algoritme pencarian
Algoritme pencarian list mungkin adalah algoritme pencarian paling dasar. Tujuannya adalah mencari sebuah elemen dari sebuah himpunan dengan suatu kunci (kemungkinan memuat informasi yang terkait dengan kunci). Oleh karena hal ini adalah masalah yang lazim dalam ilmu komputer, kompleksitas komputasi algoritme-algoritme tersebut telah dipelajari dengan baik. Algoritme paling sederhana adalah pencarian linear, yang secara sederhana melihat setiap elemen dari list secara berurutan. Waktu pengerjaan algoritme ini adalah O("n"), dimana "n" adalah banyaknya elemen dalam list, dan dapat digunakan langsung pada list yang belum diproses. Algoritme pencarian list yang lebih canggih adalah pencarian biner; waktu pengerjaannya adalah O(log "n"). Waktu pengerjaannya jauh lebih baik daripada pencarian linear untuk list yang memiliki data banyak, tetapi sebelum dilakukan pencarian list terlebih dahulu harus terurut (lihat algoritme pengurutan) dan juga harus dapat diakses secara acak (pengaksesan acak). Pencarian interpolasi adalah lebih baik dari pencarian biner untuk list terurut yang sangat besar dan terdistribusi merata. Algoritme Grover adalah sebuah algoritme kuantum yang menawarkan percepatan kuadrat dibandingkan pencarian linear klasik untuk list tak terurut.
Algoritme
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.
Algoritme penyortiran
Pada tabel ini, "n" merupakan angka dari rekord yang akan diurut. Kolom "Average" dan "Worst" memberikan kompleksitas waktu pada setiap case, dengan asumsi panjang setiap nilai merupakan konstan, dan oleh karena segala perbandingannya, penukarannya, dan segala operasi yang dibutuhkan dapat diproses pada waktu konstan. "Memori" menunjukkan jumlah dari simpanan tambahan dibutuhkan yang digunakan oleh list ini sendiri. Segala Sorting Pembangding ini. Waktu kalkulasi dan memori dari algoritme dapat diukur menggunakan notasi beragam seperti theta, omega, Big-O, small-o, dll. Memori dan waktu kalkulasi dibawah dapat diaplikasikan pada semua dari 5 notasi dibawah.
Algoritme
Hanya beberapa "tipe" instruksi yang dibutuhkan untuk mengeksekusi algoritme—beberapa tes logika (GOTO bersyarat), GOTO tak bersyarat, penetapan (penggantian), dan pengurangan.
Divide and Conquer
Di dalam ilmu komputer, algoritme divide and conquer merupakan algoritme yang sangat populer. Prinsip dari algoritme ini adalah memecah-mecah masalah yang ada menjadi beberapa bagian kecil sehingga lebih mudah untuk diselesaikan.
Unit aritmatika dan logika
ALU, singkatan dari "Arithmetic Logic Unit" (Bahasa Indonesia: Unit Aritmetika dan Logika), adalah salah satu bagian dalam dari sebuah mikroprosesor yang berfungsi untuk melakukan operasi hitungan aritmetika dan logika. Contoh operasi aritmetika adalah operasi penjumlahan dan pengurangan, sedangkan contoh operasi logika adalah logika AND dan OR.
Algoritme
"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".
Algoritme
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?
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.
Algoritme Dijkstra
Algoritme Dijkstra, (dinamai menurut penemunya, seorang ilmuwan komputer, Edsger Dijkstra), adalah sebuah algoritme rakus ("greedy algorithm") yang dipakai dalam memecahkan permasalahan jarak terpendek ("shortest path problem") untuk sebuah graf berarah ("directed graph") dengan bobot-bobot sisi ("edge weights") yang bernilai tak-negatif.
Pi
Algoritme iteratif digunakan secara meluas setelah tahun 1980 karena algoritme ini lebih cepat daripada algoritme deret tak terhingga. Manakala algoritme deret tak terhingga meningkatkan jumlah digit yang benar setiap suku, algoritme iteratif pada umumnya melipatgandakan jumlah digit yang benar pada setiap iterasi. Sebagai contohnya, algoritme Brent-Salamin menggandakan jumlah digit yang benar pada tiap iterasi. Pada tahun 1984, John dan Peter Borwein berhasil menemukan algoritme iteratif yang menggandaempatkan jumlah digit pada tiap iterasi; dan pada tahun 1987 berhasil menggandalimakan jumlah digit pada tiap iterasi. Metode iteratif digunakan oleh matematikawan Yasumasa Kanada untuk memecahkan beberapa rekor komputasi antara tahun 1995 sampai dengan tahun 2002. Konvergensi yang sangat cepat ini memiliki kelemahannya sendiri, yakni memerlukan memori komputer yang jauh lebih besar daripada yang diperlukan oleh deret tak terhingga.
Quicksort
Kebenaran dari keseluruhan algortima dapat dibuktikan dengan penyederhanaan fakta: untuk elemen nol atau satu, algoritme tidak akan mengubah data; untuk jumlah data yang lebih besar, algoritme akan menghasilkan dua bagian, elemen yang kurang dari pivot dan elemen yang lebih besar dari nya, data ini sendiri akan diurutkan secara hipotesis rekursif.
Kimia komputasi
Dalam kimia teori, kimiawan dan fisikawan secara bersama mengembangkan algoritme dan program komputer untuk memungkinkan peramalan sifat-sifat atom dan molekul, dan/atau lintasan reaksi untuk reaksi kimia, serta simulasi sistem makroskopis. Kimiawan komputasi kebanyakan “sekadar” menggunakan program komputer dan metodologi yang ada dan menerapkannya untuk permasalahan kimia tertentu. Di antara sebagian besar waktu yang digunakan untuk hal tersebut, kimiawan komputasi juga dapat terlibat dalam pengembangan algoritme baru, maupun pemilihan teori kimia yang sesuai, agar diperoleh proses komputasi yang paling efisien dan akurat.
Algoritme Ostrich
Dalam ilmu komputer, algoritme ostrich adalah strategi mengabaikan masalah yang mungkin terjadi atas dasar bahwa masalah itu mungkin sangat jarang terjadi - "menempel kepala di pasir dan berpura-pura bahwa tidak ada masalah". Dengan mengasumsikan bahwa lebih efektif untuk memungkinkan masalah itu terjadi dibandingkan upaya pencegahannya.
Algoritme
Algoritme adalah metode efektif diekspresikan sebagai rangkaian terbatas
dari instruksi-instruksi yang telah didefinisikan dengan baik
untuk menghitung sebuah fungsi.
Dimulai dari sebuah kondisi awal dan input awal (mungkin kosong),
instruksi-instruksi tersebut menjelaskan sebuah komputasi yang, bila dieksekusi, diproses lewat sejumlah urutan kondisi terbatas
yang terdefinisi dengan baik, yang pada akhirnya menghasilkan "keluaran"
dan berhenti di kondisi akhir.
Transisi dari satu kondisi ke kondisi selanjutnya tidak harus deterministik;
beberapa algoritme, dikenal dengan algoritme pengacakan, menggunakan masukan acak.
Muḥammad bin Mūsā al-Khawārizmī
Kontribusinya tak hanya berdampak besar pada matematika, tapi juga dalam kebahasaan. Kata "aljabar" berasal dari kata al-Jabr, satu dari dua operasi dalam matematika untuk menyelesaikan notasi kuadrat, yang tercantum dalam bukunya. Kata algorisme dan algoritme diambil dari kata "algorismi", Latinisasi dari namanya. Namanya juga di serap dalam bahasa Spanyol, "guarismo", dan dalam bahasa Portugis, "algarismo" bermakna digit.
Pi
Kalkulator modern tidak menggunakan algoritme iteratif secara eksklusif. Deret tak terhingga baru yang ditemukan pada tahun 1980-an dan 1990-an mampu berkonvergen secepat algoritme iteratif, namun lebih sederhana dan memerlukan memori yang lebih sedikit. Penemuan algoritme iteratif cepat terdahului oleh penemuan deret konvergen cepat pada tahun 1914, ketika matematikawan India Srinivasa Ramanujan mempublikasikan lusinan rumus-rumus baru untuk yang berkonvergen sangat cepat. Salah satu rumusnya yang didasarkan pada persamaan modular adalah sebagai berikut:
Deret ini berkonvergen lebih cepat daripada kebanyakan deret-deret arctan, meliputi rumus Machin. Bill Gosper adalah orang yang pertama kali menggunakan rumus ini untuk menghitung dan memecahkan rekor 17 juta digit pada tahun 1985. Penemuan rumus-rumus Ramanjuan mendahului penemuan algoritme-algoritme modern yang dikembangkan Borwein bersaudara dan Chudnovsky bersaudara. Rumus Chudnovsky yang dikembangkan pada tahun 1987 adalah sebagai berikut
Rumus ini menghasilkan 14 digit setiap sukunya, dan telah digunakan dalam berbagai perhitungan yang memecahkan rekor, meliputi yang pertama kali memecahkan 10 digit pada tahun 1989 oleh Chudnovsky bersaudara, 2,7 triliun (2.7×10) digit oleh Fabrice Bellard pada tahun 2009, dan 10 triliun (10) digit pada tahun 2011 oleh Alexander Yee dan Shigeru Kondo.
Pi
Perkembangan lebih jauh sekitar tahun 1980 kemudian mempercepat kemampuan komputasi . Pertama, penemuan algoritme iteratif baru yang lebih cepat daripada deret tak terhingga; dan kedua, penemuan algoritme perkalian cepat yang mampu mengalikan bilangan besar dengan sangat cepat. Algoritme ini sangat penting karena waktu yang dihabiskan oleh komputasi komputer kebanyakan berkutat pada perkalian. Algoritme seperti ini contohnya algoritme Karatsuba, perkalian Toom-Cook, dan metode berbasis transformasi Fourier.
Algoritme
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:
Penghitungan
Istilah ini dapat digunakan dalam berbagai konteks, dari kalkulasi aritmetika pasti menggunakan algoritme hingga heuristik samar untuk mengkalkulasi strategi dalam kompetisi atau kesempatan dari hubungan yang berhasil antara 2 orang.
Algoritme
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".
Pemelajaran mesin
Dari definisi diatas dapat disimpulkan bahwa pada pemelajaran mesin berkaitan dengan studi, desain dan pengembangan dari suatu algoritme yang dapat memungkinkan sebuah komputer dapat belajar tanpa harus diprogram secara eksplisit. Sedangkan pada "data mining" dilakukan proses yang dimulai dari data yang tidak terstruktur lalu diekstrak agar mendapatkan suatu pengetahuan ataupun sebuah pola yang belum diketahui. Selama proses "data mining" itulah algoritme dari pemelajaran mesin digunakan.
Aritmetika dasar
Tidak ada digit (dan tidak ada kolom) yang belum dijumlahkan, sehingga algoritme ini selesai, dan hasilnya
Algoritme
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.
Algoritme
Beberapa tahun kemudian, Turing mengembangkan analisanya (tesis, secara definisi) dengan ekspresi kuat berikut:
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 . . . .
Gelembung tersaring
Bagaimana gelembung dan algoritme filter bekerja sesuai dengan Studi Wall Street Journal adalah, "50 situs Internet teratas menginstal 64 cookie dan lacak pelacakan data atau pelacakan algoritme data yang disebutkan di atas." Google secara khusus memiliki 57 algoritme untuk tujuan menyesuaikan pencarian Anda. Misalnya, mencari kata seperti "depresi" di Dictionary.com memungkinkan situs memasang lebih dari 200 algoritme pelacakan di komputer Anda sehingga situs web dapat menargetkan Anda dengan antidepresan.
Pemrograman
Pemrograman adalah proses menulis, menguji dan memperbaiki ("debug"), dan memelihara kode yang membangun suatu program komputer. Kode ini ditulis dalam berbagai bahasa pemrograman. Tujuan dari pemrograman adalah untuk memuat suatu program yang dapat melakukan suatu perhitungan atau 'pekerjaan' sesuai dengan keinginan si pemrogram. Untuk melakukan pemrograman, diperlukan keterampilan dalam algoritme, logika, bahasa pemrograman, dan pada banyak kasus, pengetahuan-pengetahuan lain seperti matematika.
Algoritme pencarian
Dalam ilmu komputer, sebuah algoritme pencarian dijelaskan secara luas adalah sebuah algoritme yang menerima masukan berupa sebuah masalah dan menghasilkan sebuah solusi untuk masalah tersebut, yang biasanya didapat dari evaluasi beberapa kemungkinan solusi. Sebagian besar algoritme yang dipelajari oleh ilmuwan komputer adalah algoritme pencarian. Himpunan semua kemungkinan solusi dari sebuah masalah disebut ruang pencarian. Algoritme pencarian brute-force atau pencarian naif/"uninformed" menggunakan metode yang sederhana dan sangat intuitif
pada ruang pencarian, sedangkan algoritme pencarian "informed" menggunakan heuristik untuk menerapkan pengetahuan tentang struktur dari ruang pencarian untuk berusaha mengurangi banyaknya waktu yang dipakai dalam pencarian.
Kode palsu
Seorang programer yang akan mengimplementasikan suatu algoritme yang bersifat spesifik, utamanya algoritme yang masih belum begitu dikenalinya, umumnya menggunakan kode palsu sebagai penjelasan, kemudian ia akan dengan mudah "menerjemahkan" penjelasan tersebut ke dalam bahasa pemrograman dan mengubahsuai agar dapat berinteraksi secara benar dalam program secara keseluruhan. Programer dapat pula memulai sebuah proyek dengan membuat sketsa kode dengan menggunakan kode palsu di atas kertas sebelum menulisnya dalam bahasa pemrograman yang sesungguhnya, sebagai mana dilakukan dalam pendekatan "top-down".
Algoritme
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.
Komputer
Unit Aritmetika dan Logika, atau Arithmetic Logic Unit (ALU), adalah alat yang melakukan pelaksanaan dasar seperti pelaksanaan aritmetika (tambahan, pengurangan, dan semacamnya), pelaksanaan logis (AND, OR, NOT), dan pelaksanaan perbandingan (misalnya, membandingkan isi sebanyak dua slot untuk kesetaraan). Pada unit inilah dilakukan "kerja" yang sebenarnya.
Algoritme Strassen
Algoritme Strassen dalam matematika, khususnya aljabar linear adalah sebuah algoritme yang dinamakan oleh Volker Strassen yang merupakan sebuah algoritme yang digunakan untuk perkalian matriks yang secara asimtot lebih cepat daripada algoritme perkalian matriks standar dan sangat berguna dalam penggunaanya untuk matriks yang berukuran besar.
Algoritme pencarian
Sebuah algoritme pencarian "uninformed" adalah algoritme yang tidak mempertimbangkan sifat alami dari permasalahan. Oleh karena itu algoritme tersebut dapat diimplementasikan secara umum, sehingga dengan implementasi yang sama dapat digunakan pada lingkup permasalahan yang luas, hal ini berkat abstraksi. Kekurangannya adalah sebagian besar ruang pencarian adalah sangat besar, dan sebuah pencarian "uninformed" (khususnya untuk pohon) membutuhkan banyak waktu walaupun hanya untuk contoh yang kecil. Sehingga untuk mempercepat proses, kadang-kadang hanya pencarian "informed" yang dapat melakukannya.
Algoritme
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"
Reverb (musik)
Parameter algorithm adalah model algoritme komputer untuk mensimulasikan reverb dalam ruang-ruang yang berbeda. Setiap paramter dari algorithm akan terdengar berbeda dari satu ke yang lainnya dan memiliki karakter unik masing-masing. Pilihan pada parameter algorithm yang umum seperti Hall, Church, Ambient, Plate.
Program komputer
Pemrograman komputer merupakan suatu proses iteratif penulisan dan penyuntingan kode sumber sehingga membentuk sebuah program. Penyuntingan kode sumber meliputi proses pengetesan, analisis, pembetulan kesalahan, pengoptimasian algoritme, normalisasi kode, dan kadang-kadang pengkoordinasian antara satu programmer dengan programmer lainnya jika sebuah program dikerjakan oleh beberapa orang dalam sebuah tim. Seorang praktisi yang memiliki keahlian untuk melakukan penulisan kode dalam bahasa pemrograman disebut sebagai programmer komputer atau programmer, pengembang perangkat lunak, atau koder. Istilah rekayasa perangkat lunak () seringkali digunakan karena proses penulisan program tersebut dipandang sebagai suatu disiplin ilmu perekayasaan.
Algorisma
Kata "algorism" berasal dari nama al-Khwarizmi, seorang matematikawan di awal abad ke-9. Nama tersebut juga menjadi asal kata algoritme.
Algoritme semut
Algoritme semut diperkenalkan oleh Moyson dan Manderick dan secara meluas dikembangkan oleh Marco Dorigo, merupakan teknik probabilistik untuk menyelesaikan masalah komputasi dengan menemukan jalur terbaik melalui grafik. Algoritme ini terinspirasi oleh perilaku semut dalam menemukan jalur dari koloninya menuju makanan.
Olimpiade Internasional dalam Informatika
Kompetisi berlangsung selama dua hari untuk tes pemrograman komputer dan pemecahan masalah alam algoritmik. Untuk menangani masalah yang melibatkan data yang sangat banyak, tidak hanya diperlukan pemrogram, "tetapi juga pengkode yang kreatif, yang bisa memimpikan apa yang pemrogram perlu memberitahu komputer untuk melakukan sesuatu... bagian yang sulit bukanlah pemrograman, tetapi matematika di bawahnya." Siswa di IOI bersaing secara perseorangan, dengan jumlah sampai dengan empat siswa dari masing-masing negara peserta (dengan 84 negara pada tahun 2014). Siswa dalam tim nasional dipilih melalui kontes komputasi nasional, seperti Olimpiade Informatika Australia, Olimpiade Informatika Inggris, Olimpiade Komputasi India, Bundeswettbewerb Informatik (Jerman), dan Olimpiade Sains Nasional bidang Komputer (Indonesia).
Algorisma
Algorisma adalah sebutan untuk sistem desimal Indo-Arab untuk penulisan bilangan, di mana simbol (angka 0-9) digunakan untuk mendeskripsikan nilai dengan menggunakan sistem nilai-tempat (notasi posisi), di mana setiap simbol berbobot 10 kali lipat dibandingkan simbol yang berada di sebelah kanannya.
Algoritme Strassen
dengan
Algoritme
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).
Variabel (matematika)
Jadi, dalam contoh ini, variabel x adalah "pengganti" untuk setiap bilangan. Satu hal yang penting yang kita asumsikan adalah bahwa nilai x tidak berubah, meskipun kita tidak tahu bilangan apakah x itu. Tetapi dalam beberapa algoritme, jelas, akan mengubah x, dan terdapat beraneka cara untuk melambangkannya jika kita maksudkan sebagai nilai-lama, nilai-baru (dan seterusnya), pada umumnya tidak diketahui, tetapi mungkin (misalnya) bilangan yang lebih kecil daripada yang lain.
Komputasi evolusioner
Pemrograman evolusioner diperkenalkan oleh Lawrence J. Fogel di Amerika Serikat, sementara John Henry Holland menyebut metodenya sebagai algoritme genetika. Di Jerman Ingo Rechenberg dan Hans-Paul Schwefel memperkenalkan strategi evolusi. Area ini dikembangkan secara terpisah selama sekitar 15 tahun. Dari awal tahun sembilan puluhan, mereka disatukan sebagai perwakilan yang berbeda ("dialek") dari satu teknologi, yang disebut komputasi evolusioner. Juga di awal tahun sembilan puluhan, arus keempat mengikuti gagasan umum telah muncul - pemrograman genetik. Sejak tahun 1990an, algoritme yang terinspirasi alam menjadi bagian perhitungan evolusioner yang semakin penting.
Algoritme
'Algoritme' muncul dari 'Algoritmi', bentuk Latin dari al-Khwarizmi, matematikawan, ahli astronomi, dan ahli geografi dari Persia.
Pemelajaran mesin
Algoritme dalam pemelajaran mesin dapat dikelompokkan berdasarkan masukan dan keluaran yang diharapkan dari algoritme.
Misalnya sebuah sistem yang dapat menebak umur seseorang berdasarkan foto orang tersebut. Sistem tersebut membutuhkan beberapa contoh, misalnya yang didapatkan dengan mengambil foto seseorang dan menanyakan umurnya (pemelajaran terarah). Akan tetapi, pada kenyataannya beberapa orang sering kali berbohong tentang umur mereka sehingga menimbulkan "noise" pada data. Oleh karena itu, digunakan juga pemelajaran tak terarah agar dapat saling menutupi kelemahan masing-masing, yaitu "noise" pada data dan ketiadaan contoh masukan-keluaran .
Adalah sebuah algoritme pemelajaran yang diterapkan pada agen cerdas agar ia dapat menyesuaikan dengan kondisi dilingkungannya, hal ini dicapai dengan cara memaksimalkan nilai dari
hadiah ‘"reward"’ yang dapat dicapai. Suatu hadiah didefinisikan sebuah tanggapan balik ‘"feedback"’ dari tindakan agen bahwa sesuatu baik terjadi .Sebagai contoh, sangatlah sulit untuk memrogram sebuah agen untuk menerbangkan sebuah helikopter, tetapi dengan memberikan beberapa nilai negatif untuk menabrak, bergoyang-goyang, serta melenceng dari jalur tujuan perlahan-lahan agen tersebut dapat belajar menerbangkan helikopter dengan lebih baik .
Pemrograman
Apapun pendekatan pengembangan perangkat lunak mungkin, program akhir harus memenuhi beberapa sifat mendasar. Properti berikut adalah di antara yang paling relevan:Bidang akademik dan praktik teknik pemrograman komputer yang baik terutama berkaitan dengan menemukan dan menerapkan algoritme yang paling efisien untuk suatu masalah kelas. Untuk tujuan ini, algoritme diklasifikasikan menjadi perintah dengan menggunakan apa yang disebut notasi Big O, O (n), yang mengungkapkan penggunaan sumber daya, seperti waktu eksekusi atau pemakaian memori, dalam hal ukuran sebuah input. Ahli programmer yang akrab dengan berbagai mapan algoritme dan kompleksitas masing-masing dan menggunakan pengetahuan ini untuk memilih algoritme yang paling cocok dengan keadaan.
Langkah pertama dalam sebagian besar proyek-proyek pengembangan perangkat lunak formal adalah analisis persyaratan, diikuti dengan pengujian untuk menentukan model nilai, pelaksanaan, dan kegagalan penghapusan (debug). Terdapat banyak pendekatan yang berbeda untuk masing-masing tugas. Salah satu pendekatan yang populer untuk analisis kebutuhan adalah Kasus Gunakan analisis.
Unit aritmatika dan logika
Tugas utama dari ALU (Arithmetic Logic Unit) adalah melakukan semua perhitungan aritmetika atau matematika yang terjadi sesuai dengan instruksi program. ALU melakukan operasi aritmetika dengan dasar pertambahan, sedang operasi aritmetika yang lainnya seperti pengurangan, perkalian, dan pembagian dilakukan dengan dasar penjumlahan. sehingga sirkuit elektronik di ALU yang digunakan untuk melaksanakan operasi aritmatika ini disebut "adder". Tugas lain dari ALU adalah melakukan keputusan dari operasi logika sesuai dengan instruksi program. Operasi logika ("logical operation") meliputi perbandingan dua buah elemen logika dengan menggunakan operator logika, yaitu:Fungsi-fungsi yang didefinisikan pada ALU adalah "Add" (penjumlahan), "Addu" (penjumlahan tidak bertanda), "Sub" (pengurangan), "Subu" (pengurangan tidak bertanda), and, or, xor, sll ("shift left logical"), srl ("shift right logical"), sra ("shift right arithmetic"), dan lain-lain.
Algoritme Euklidean
Algoritme Euklidean muncul dalam buku "Elemen" Euklides sekitar tahun 300 SM, menjadikannya salah satu algoritme numerik yang tertua dan masih digunakan secara luas.