Algoritma mana yang paling sering digunakan?
Harap tulis satu algoritme per jawaban, usahakan agar jawaban Anda singkat (satu atau dua baris).
ds.algorithms
big-list
Kaveh
sumber
sumber
Jawaban:
Apakah Fast Fourier Transform masalah algoritmik yang paling sering diselesaikan per hari oleh sistem komputer nyata? Itu harus dekat. Jadi saya akan mencalonkan algoritma FFT Cooley-Tukey .
sumber
Perkalian.
Mungkin salah satu algoritma tertua yang tidak sepenuhnya sepele, dan masalah yang lebih sering diselesaikan daripada FFT.
sumber
Algoritma jalur terpendek Dijkstra dan Bellman-Ford . Ada setidaknya 35.000 Sistem Otonomi (AS) aktif di Internet pada tahun 2010. Setiap AS berjalan baik link-state protokol routing (Dijkstra) atau jarak-vector routing yang protokol (Bellman-Ford). Router dalam satu AS biasanya memperbarui tabel mereka secara berkala setiap beberapa menit, misalnya 10.
Dengan demikian, jumlah eksekusi Dijkstra & Bellman-Ford per hari mencapai setidaknya 5 juta. Dan itu hanya dari router.
Kami belum menghitung perhitungan jalur terpendek dari Google Maps dan sejenisnya yang seharusnya dengan mudah diperhitungkan 10 kali lipat. Setengah miliar eksekusi sehari tidak dibuat-buat.
sumber
Quicksort
sumber
Pencarian Biner
sumber
Saya pikir algoritma yang paling banyak digunakan adalah Parity Check (atau mungkin CRC atau semacam kode koreksi kesalahan), karena mereka muncul di setiap akses RAM.
sumber
Algoritma Simplex - bukankah ini masih bersaing dengan metode titik interior terbaik? Jika demikian itu harus banyak digunakan.
sumber
Secara umum, Anda harus melihat pemenang hadiah Kanellakis untuk ide-ide yang memiliki bobot teoritis dan praktis.
sumber
Pencocokan ekspresi reguler dengan konversi ke automata terbatas - Saya percaya fungsi grep di sepanjang baris ini.
sumber
Pencarian Pertama Kedalaman (DFS)
sumber
Sulit memikirkan algoritma yang lebih banyak digunakan daripada yang ada dalam implementasi modern TCP : yaitu penghindaran kemacetan , transmisi ulang yang cepat . Meskipun itu tergantung pada bagaimana seseorang menentukan apa yang memenuhi kriteria untuk suatu algoritma ...
sumber
Eliminasi Gaussian Ini masih digunakan dalam praktek kan? Jika tidak diganti dengan apa pun yang paling sering digunakan untuk menyelesaikan sistem linier ...
sumber
SHA-1 (dan fungsi hash secara umum). Mungkin mengalahkan sebagian besar algoritma lain dalam hal jumlah eksekusi.
sumber
Algoritma terkait B + tree digunakan dalam untuk hal-hal basis data
sumber
Algoritma penjadwalan. Mereka digunakan oleh setiap perangkat pengguna dan server di seluruh dunia. Sejumlah variasi sedang digunakan, saya menemukan banyak referensi untuk "antrean umpan balik bertingkat"
sumber
Respons ini menafsirkan "paling sering" dalam hal siklus CPU aktual.
Ketika saya belajar komputasi di tahun 70-an, saya ingat pernah membaca bahwa sebagian besar siklus komputer (baca: mainframe) dikhususkan untuk menyortir. Aplikasi bisnis membutuhkan penyortiran yang luas untuk analisis dan pelaporan. Saya tidak membayangkan itu telah banyak berubah, tetapi tentu saja munculnya aplikasi lain - e-mail, pengolah kata, dll .-- harus mengubah campuran. Jenis-jenis itu biasanya jenis yang stabil (bukan Quicksort) karena kebutuhan untuk mengurutkan pada suksesi bidang untuk membuat subsort.
Sebenarnya, algoritma yang paling sering digunakan adalah, tanpa keraguan, apa pun yang dijalankan oleh sistem Windows menunggu proses ketika tidak ada hal lain yang terjadi ;-).
sumber
Sprase Matrix Vector Multiply
... adalah pekerja keras komputasi di balik solusi dari hampir semua sistem linier. Akibatnya dijalankan setiap kali
Sebagian besar FLOP pada superkomputer atau cluster dihabiskan di dalam vv tikar jarang.
sumber
Metode Newton. Ini digunakan untuk menghitung akar kuadrat, untuk divisi komputasi. Dapat digunakan untuk melakukan pemrograman linier. Lebih umum itu adalah kerja keras optimasi (cembung). Ini dapat digunakan untuk menyelesaikan persamaan diferensial dalam Fisika dengan meminimalkan aksi / energi.
sumber
Hashing dan pohon merah-hitam.
Mereka sudah diimplementasikan dalam STL (hash_map, map), dan setiap programmer tahu bahwa wadah seperti itu sangat nyaman setiap kali Anda ingin menyimpan beberapa informasi yang diindeks oleh tipe data yang arbitrer.
sumber
Algoritma koreksi kesalahan, seperti Reed-Solomon.
http://en.wikipedia.org/wiki/Error-correcting_code#List_of_error-correcting_codes http://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction
sumber
Pemrograman Dinamis .
Saya pikir DP digunakan "lebih sering" daripada algoritma lain yang dikutip dalam survei sejauh ini. Saya menyimpulkan "lebih sering" dalam arti seberapa sering konsep algoritma non-sepele diimplementasikan oleh programmer dalam kehidupan nyata, daripada berapa kali implementasi algoritma tertentu dalam dipanggil.
DP serba guna, dan memiliki banyak wajah. Terkadang saya menggunakannya secara tidak sadar dan kemudian menyadari kemudian saya melakukan DP.
Tentu saja, ada hal-hal yang bahkan lebih umum daripada Program Dinamis, tetapi kebanyakan adalah struktur data (array, daftar tertaut, hash).
sumber
Pencocokan String, digunakan sepanjang waktu dalam perangkat lunak aplikasi dan pada tingkat basis data.
Dalam kasus yang tepat, ada beberapa algoritma yang cukup terlibat (KMP, Boyer-Moore) dengan beberapa yang mencapai runtime yang diharapkan sublinear. Mereka juga menarik untuk dipelajari dari sudut pandang CS.
Pencocokan string perkiraan, yaitu penyelarasan, mungkin bahkan lebih menarik. Anda tahu fitur "koreksi otomatis"? Juga, pencarian dalam data string berisik (mis. DNA) dilakukan dengan menggunakan keberpihakan.
sumber