Kami biasanya menyebut algoritma "algoritma yang baik" jika waktu runnning adalah polinomial dalam kasus terburuk. Tetapi dalam beberapa kasus (misalnya algoritma Simplex), meskipun kasus terburuk dari algoritma adalah eksponensial, itu bisa bekerja dengan sangat baik dalam praktiknya.
Adakah contoh (deterministik) untuk situasi ini selain dari algoritma Simplex?
ds.algorithms
Arman
sumber
sumber
Jawaban:
Algoritma pemecahan SAT modern mampu memecahkan sebagian besar instance dengan cukup cepat, meskipun waktu terburuknya adalah eksponensial. Namun, dalam hal ini, kecepatan praktis lebih merupakan hasil dari rekayasa algoritma selama bertahun-tahun, bukan pada algoritma tunggal yang elegan. Meskipun saya telah memahami bahwa pembelajaran klausa yang didorong oleh konflik menyebabkan lompatan besar dalam kinerja pemecah SAT, peningkatan selanjutnya sering kali dicapai dengan penggunaan berbagai heuristik dalam algoritma secara cerdas.
sumber
The algoritma -means untuk clustering provably eksponensial bahkan dalam pesawat, tetapi bekerja sangat baik dalam praktek.k
sumber
Inferensi tipe Hindley-Milner adalah EKSPTIM-lengkap, tetapi pada program orang biasanya menulisnya cukup dekat dengan linear.
sumber
let z = (let y = e in e') in e''
sebagai lawan darilet y = e in let z = e' in e''
.Program Brendan McKay nauty (No AUTomorphisms, Yes?) Memecahkan masalah pelabelan kanonik grafik (sekaligus memecahkan masalah Graph Isomorphism dan Graph Automorphism) dan memiliki kinerja kasus terburuk yang eksponensial (Miyazaki, 1996). Namun, ini bekerja sangat cepat untuk sebagian besar grafik, terutama yang memiliki beberapa otomorfisme.
Secara khusus, algoritma dimulai dengan mempartisi simpul dengan derajat, kemudian dengan derajat antara masing-masing bagian. Ketika proses ini stabil, pilihan harus dibuat untuk membedakan simpul di bagian non-sepele, dan ini mengarah pada perilaku eksponensial. Di sebagian besar grafik, kedalaman prosedur percabangan ini kecil.
sumber
Beberapa algoritma untuk permainan stokastik sederhana bekerja dengan baik dalam praktiknya, meskipun mereka memiliki waktu berjalan terburuk secara eksponensial. Tentu saja, masalah ini dalam beberapa hal terkait dengan pemrograman linier, meskipun tidak diketahui dalam waktu polinomial.
sumber
Ada algoritma untuk menemukan kesetimbangan Nash campuran yang mirip dengan algoritma simpleks untuk piringan hitam. (Saya lupa namanya.) Ia memiliki kompleksitas kasus terburuk yang eksponensial, tetapi saya memiliki ingatan yang samar bahwa sering berperilaku baik dalam praktik.
sumber
Tempat sampah (banyak varian) adalah masalah yang kerumitannya dikenal sebagai NP-hard:
http://en.wikipedia.org/wiki/Bin_packing_problem
Namun, banyak heuristik ketika diterapkan pada versi "praktis" sangat baik. Untuk pengemasan bin 1 dimensi beberapa heuristik ini, seperti first-fit; penurunan fit pertama; paling cocok; penurunan paling cocok sangat menarik sebagai topik untuk ditunjukkan kepada siswa. Siswa sering dapat menemukan beberapa heuristik dasar untuk diri mereka sendiri.
sumber
Algoritma kegigihan (berasal dari Edelsbrunner-Letscher-Zomorodian, dengan banyak variasi sejak itu) adalah kasus kubik terburuk, tetapi tampaknya dari eksperimen biasanya berjalan dalam waktu linier.
sumber