Apa saja beberapa algoritma utilitas yang sah yang terlalu rumit untuk diterapkan?
Biarkan saya menjadi jelas: Saya tidak mencari algoritma seperti algoritma multiplikasi matriks optimal asimptotik saat ini (Coppersmith-Winograd), yang masuk akal untuk diimplementasikan tetapi memiliki konstanta yang membuatnya tidak berguna dalam praktiknya. Saya mencari algoritma yang mungkin memiliki nilai praktis, tetapi sangat sulit untuk dikodekan sehingga tidak pernah diimplementasikan, hanya diimplementasikan dalam pengaturan yang sangat buatan, atau hanya diimplementasikan untuk aplikasi dengan tujuan khusus yang luar biasa.
Selamat datang juga hampir tidak mungkin untuk mengimplementasikan algoritma yang memiliki asimptotik yang baik tetapi kemungkinan akan memiliki kinerja nyata yang buruk.
sumber
Jawaban:
Chazelle memberikan algoritma waktu linier untuk melakukan triangulasi poligon sederhana . Skiena menulis (hal.575, Manual Desain Algoritma) bahwa "tidak ada harapan untuk mengimplementasikannya sehingga lebih memenuhi syarat sebagai bukti keberadaan"
sumber
The algoritma Risch untuk menghitung antiturunan SD. Menurut Wikipedia, tidak ada paket perangkat lunak yang diketahui mengimplementasikan algoritma penuh karena kerumitannya.
sumber
Algoritme apa pun yang menggunakan hasil Robertson-Seymour untuk menyimpulkan algoritma "polytime" untuk hal-hal yang melibatkan grafik yang mengecualikan minor tetap meminta masalah. Konstanta yang tersembunyi dalam hasilnya adalah "galaksi".
sumber
Dan Willard "Algoritma kontrol kerapatan untuk melakukan penyisipan dan penghapusan dalam file berurutan dalam waktu kasus terburuk yang baik" menjelaskan algoritma untuk mempertahankan kumpulan yang diatur dalam array ukuran dengan penyisipan dan penghapusan terburuk, di mana adalah ukuran halaman.O(n) O(log2nB) B
Makalah ini panjangnya 55 halaman, dan kesimpulannya mencatat beberapa perbaikan pada konstanta yang tidak dijelaskan oleh penulis karena alasan ruang. Ini membuat saya curiga bahwa konstanta mungkin tidak begitu galaksi, dan bahwa struktur data ini akan menjadi "utilitas yang sah", terutama karena telah dikutip berulang kali.
sumber
Algoritma unifikasi pola orde tinggi waktu linier oleh Qian tidak pernah diterapkan karena kompleksitasnya AFAIK.
sumber
Algoritma linear waktu untuk memeriksa apakah grafik dapat disematkan pada permukaan yang tetap.
Ken-ichi Kawarabayashi, Bojan Mohar, Bruce A. Reed: Algoritma Waktu Linear yang Lebih Sederhana untuk Memasukkan Grafik ke Permukaan Sewenang-wenang dan Genus Grafik dari Lebar Pohon yang Dibatasi. FOCS 2008: 771-780.
Bojan Mohar: Algoritma Waktu Linear untuk Menanamkan Grafik di Permukaan Sewenang-wenang. SIAM J. Discrete Math. 12 (1): 6-26 (1999)
sumber
Saya tidak yakin seberapa berguna itu dalam praktek (walaupun saya berpikir tentang pelipatan protein dan perbandingan, serta prediksi struktur sekunder RNA), tetapi Wolfgang Haken memberikan algoritma
waktu polinomialpertama untuk memutuskan apakah simpul adalah suatu loop sederhana ( Theorie der Normalflächen. Acta Math. 105, 1961, hlm. 245--75). Seingat saya, masih terlalu rumit untuk diimplementasikan beberapa dekade kemudian.Jika Wikipedia dapat dipercaya, beberapa algoritma lain kemudian diberikan, dan "Memahami kompleksitas algoritma ini adalah bidang studi aktif.".
sumber
Dekomposisi pohon
, dan mungkin tumpukan Fibonacci.sumber
Konstruksi hash yang sempurna ( https://en.wikipedia.org/wiki/Perfect_hash_function#Construction ) akan berlaku untuk setiap kasus penggunaan dengan kunci statis atau yang jarang berubah (misalnya nama domain tingkat atas pada router, kata kunci dalam kompiler, atau nama fungsi di perpustakaan standar) tetapi terakhir kali saya melihat saya tidak dapat menemukan implementasi.
Pencarian parametrik dapat menyelesaikan banyak masalah optimasi yang sulit, termasuk beberapa yang mungkin terlihat seperti NP-hard, dalam waktu polinomial. Makalah bernama Pencarian parametrik yang dibuat membuat implementasi praktis varian pencarian parametrik, tetapi saya masih berpikir itu tidak diimplementasikan dalam perangkat lunak praktis.
The algoritma optimal untuk simpang segmen garis dengan Chazelle dan Edelsbrunner menemukan semua persimpangan dari segmen garis di waktu, tetapi kompleks. CGAL adalah pustaka algoritma geometri yang canggih, tetapi mengimplementasikan algoritma yang lebih sederhana yaitu .n O ( n log n + k ) O ( ( n + k ) log n )k n O(nlogn+k) O((n+k)logn)
sumber