Apa beberapa masalah non-sepele di mana kita tahu algoritma saat ini yang kita miliki adalah yang optimal asimptotik? (Untuk mesin turing)
Dan bagaimana ini terbukti?
Apa beberapa masalah non-sepele di mana kita tahu algoritma saat ini yang kita miliki adalah yang optimal asimptotik? (Untuk mesin turing)
Dan bagaimana ini terbukti?
Jawaban:
Algoritma apa pun yang membutuhkan waktu linier dan harus membaca seluruh inputnya harus optimal asimtotik. Demikian pula, seperti komentar Raphael, algoritma apa pun yang runtime-nya berurutan sama dengan ukuran output optimal.
sumber
Jika ukuran kompleksitas yang Anda pertimbangkan adalah kompleksitas kueri, yaitu, berapa kali mesin harus melihat input untuk memecahkan masalah tertentu, maka ada banyak masalah yang kami miliki algoritma optimalnya. Alasan untuk ini adalah bahwa batas bawah untuk kompleksitas kueri lebih mudah dicapai daripada batas bawah untuk kompleksitas ruang atau waktu, berkat beberapa teknik populer termasuk metode permusuhan .
The downside, bagaimanapun, adalah bahwa ukuran kompleksitas ini hampir secara eksklusif digunakan dalam pemrosesan informasi kuantum karena memberikan cara mudah untuk membuktikan kesenjangan antara kuantum dan kekuatan komputasi klasik. Algoritma kuantum yang paling terkenal dalam kerangka kerja ini adalah algoritma Grover . Diberikan string biner yang di dalamnya terdapat satu i sedemikian rupa sehingga x i = n , Anda harus menemukan i ix1,…,xn i xi=n i . Klasik (tanpa komputer kuantum), algoritma paling sepele adalah optimal: Anda perlu query string ini kali rata-rata untuk menemukann/2 i . Grover menyediakan algoritma kuantum yang melakukannya di permintaan ke string. Ini juga telah terbukti optimal.O(n−−√)
sumber
sumber
Penyortiran perbandingan menggunakan perbandingan (menggabungkan jenis, untuk satu nama) adalah optimal, buktinya melibatkan hanya menghitung ketinggian pohon dengan n ! Daun-daun.O(nlogn) n!
Dengan asumsi Dugaan Permainan Unik, Khot, Kindler, Mossel dan O'donnell menunjukkan bahwa NP-complete untuk memperkirakan Max-Cut lebih baik daripada algoritma Goemans dan Williamson. Jadi dalam hal itu G&W optimal (dengan asumsi juga bahwa ).P≠NP
Beberapa algoritma terdistribusi dapat terbukti optimal sehubungan dengan beberapa kondisi (misalnya, proporsi prosesor permusuhan), tetapi karena Anda menyebutkan mesin Turing, saya rasa itu bukan jenis contoh yang Anda cari.
sumber
Misalkan Anda diberi masukan dan diminta untuk memutuskan apakah mesin RAM M berakhir pada masukan x setelah t langkah. Dengan teorema hierarki waktu, algoritma optimal untuk memutuskan ini adalah dengan mensimulasikan eksekusi M ( x ) untuk langkah t , yang dapat dilakukan dalam waktu O ( t )w=⟨M,x,t⟩ M x t M(x) t O(t) .
(Catatan: untuk mesin Turing, simulasi pelaksanaan membutuhkan O ( t log tM ; kita hanya tahu batas bawah Ω ( t ) . Jadi, ini tidak cukup optimal untuk mesin Turing secara khusus).O(tlogt) Ω(t)
Ada beberapa masalah lain yang berisi versi masalah terputus-putus sebagai sub-kasus. Misalnya, memutuskan apakah kalimat merupakan konsekuensi dari WS1S membutuhkan waktu 2 ↑ ↑ O ( | θ | ) dan ini optimal.θ 2↑↑O(|θ|)
sumber
sumber
Jika Anda mengizinkan masalah struktur data dinamis, kami mengetahui beberapa algoritma optimal waktu super-linear. Ini ada dalam model probe sel, yang sekuat kata RAM, artinya tidak model terbatas seperti pohon keputusan aljabar.
You can easily support both operations inO(logn) time with a data structure based on an augmented binary tree with A[i] at the leaves. Patrascu and Demaine showed this is optimal: for any data structure there is a sequence of n additions and prefix sum queries that must take Ω(nlogn) time total.
Another example is union find: start with a partition of{1,…n} into singletons, and keep a data structure that allows the two operations:
Tarjan showed that the classical disjoint set forest data structure with the union by rank and path compression heuristics takesO(α(n)) time per operation, where α is the inverse Ackermann function. Fredman and Saks showed this is optimal: for any data structure there exists a sequence of n union and find operations which must take Ω(nα(n)) time.
sumber
Many streaming algorithms have upper bounds matching their lower bounds.
sumber
there are two somewhat similar search algorithms that [my understanding is] are optimal based on a particular constraints on the input ordering/distribution. however presentations of the algorithms do not typically emphasize this optimality.
golden section search for finding the maximum or minimum (extremum) of a unimodal function. assumes input is a unimodal function. finds it in logarithmic time on average. as I recall there may have been a proof of optimality in the book Structure & Interpretation of computer programs by abelson & sussman.
binary search finds a point in logarithmic time on average in a sorted list, but requires input to be sorted.
am citing wikipedia above but it does not have the proofs that they are optimal, maybe some other references that prove optimality can be found by the audience.
sumber
Many sublinear time algorithms have upper bounds matching their lower bounds.
sumber