Apa beberapa masalah di mana kita tahu kita memiliki algoritma yang optimal?

15

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?

sture
sumber
11
Mesin turing adalah model yang rumit untuk batas bawah. Mengubah defn dapat mengubah polinomial dalam waktu berjalan, jadi Anda harus sedikit lebih spesifik.
Suresh Venkat
Bagaimana Anda mendefinisikan non-sepele?
funkstar
1
Seperti kata Suresh, jenis TM yang Anda gunakan memiliki pengaruh. Saya kira bahwa untuk bahasa palindrom (kata-kata yang dapat Anda baca mundur), kami memiliki TM 1-pita optimal yang mengambil langkah-langkah untuk menentukan bahasa. Dan untuk TM 2-tape, dapat dipilih dalam waktu linier, sehingga cukup optimal juga. O(n2)
Bruno
Lihat juga mathoverflow.net/questions/31448/…
BlueRaja - Danny Pflughoeft

Jawaban:

18

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.

Maks
sumber
10
Demikian pula, algoritma apa pun yang runtime-nya memiliki urutan yang sama dengan ukuran output yang optimal.
Raphael
9
Saya percaya jawaban ini dan komentar yang mengikutinya adalah seni yang lengkap.
Jeffε
9
Yah ini mengecewakan
sture
1
Sebagai catatan, komentar Jɛ ff E sepertinya merujuk pada jawaban Shir di bawah ini.
András Salamon
1
Aku merujuk pada jawaban Max, bukan jawaban Shir, dan komentar Raphael tentang jawaban Max.
Jeffε
8

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,,xnixi=ni . Klasik (tanpa komputer kuantum), algoritma paling sepele adalah optimal: Anda perlu query string ini kali rata-rata untuk menemukann/2i . Grover menyediakan algoritma kuantum yang melakukannya di permintaan ke string. Ini juga telah terbukti optimal.O(n)

Philippe Lamontagne
sumber
2
Memang, kompleksitas kueri adalah dasar yang mendasari jawaban Max. Untuk sebagian besar masalah, algoritma apa pun yang terbukti "harus membaca seluruh input" atau setidaknya sebagian kecil dari input.
Jeffε
6
  • Jika Anda bersedia mengubah model Anda, beberapa batas bawah dalam struktur data ketat. Lihat Batas Bawah untuk Struktur Data untuk petunjuk ke referensi yang baik untuk batas bawah dalam struktur data.
  • Dari terikat untuk menyortir dalam model perbandingan bahwa beberapa orang telah disebutkan di sini, Anda dapat memperoleh serupa terikat untuk masalah convex hull dengan mempertimbangkan kasus di mana input terdiri dari titik sepanjang grafik fungsi yang meningkat di kuadran pertama pesawat.Ω(nlogn)
Abel Molina
sumber
2
+1 untuk menyebutkan struktur data. Tapi saya tidak berpikir itu mungkin untuk mendapatkan batas bawah yang berguna untuk lambung cembung melalui perbandingan batas bawah untuk penyortiran. Alasannya adalah bahwa model perbandingan tidak cukup kuat untuk menghitung lambung cembung sama sekali. Yang berhasil adalah menggunakan model yang lebih kuat seperti pohon keputusan aljabar di mana lambung dapat dihitung, dan kemudian untuk menyesuaikan batas bawah untuk menyortir ke model yang lebih kuat ini.
David Eppstein
Masuk akal, terima kasih atas klarifikasi!
Abel Molina
3
  1. Penyortiran perbandingan menggunakan perbandingan (menggabungkan jenis, untuk satu nama) adalah optimal, buktinya melibatkan hanya menghitung ketinggian pohon dengan n ! Daun-daun.O(nlogn)n!

  2. 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 ).PNP

  3. 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.

Shir
sumber
2
Apakah item 2 menjawab pertanyaan atau tidak tergantung pada apa yang dimaksud oleh penanya dengan "optimal," meskipun saya ragu bahwa penanya bertanya dalam pengertian itu (jika tidak ada banyak, banyak hasil perkiraan yang ketat yang bahkan tidak memerlukan UGC). Selain itu, saya tidak berpikir bahwa item 1 atau 3 menjawab pertanyaan.
Tsuyoshi Ito
@TsuyoshiIto, sulit untuk menebak apa sebenarnya yang dimaksud si penanya, yang membuat saya mencoba jawaban dari berbagai arah dengan harapan bisa memukul sesuatu yang berguna baginya. Apa yang membuat Anda mengatakan bahwa (1) bukan jawaban yang valid?
Shir
2
Penanya secara khusus menanyakan algoritma yang optimal untuk mesin Turing .
Tsuyoshi Ito
6
Apakah "penyortiran perbandingan" sebenarnya merupakan "masalah"? Atau apakah itu masalah dan pembatasan pada model perhitungan?
Jeffε
3

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,tMxtM(x)tO(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(|θ|)

David Harris
sumber
3

L={02k|k0}Ω(nlogn)

aelguindy
sumber
3

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.

A[1],,A[n], and the goal is to keep a data structure that allows the following operations:

  • Add Δ to A[i], given i and Δ
  • Compute the prefix sum j=1iA[i], given i

You can easily support both operations in O(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:

  • Union: given i and j, replace the part containing i and the part containing j with their union
  • Find: given i, output a canonical element from the part containing i

Tarjan showed that the classical disjoint set forest data structure with the union by rank and path compression heuristics takes O(α(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.

Sasho Nikolov
sumber
1

Many streaming algorithms have upper bounds matching their lower bounds.

Bin Fu
sumber
0

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.

vzn
sumber
-1

Many sublinear time algorithms have upper bounds matching their lower bounds.

Bin Fu
sumber
3
Flagged as a duplicate.
Jeffε
Sublinear time algorithm and streaming algorithm are different areas.
Bin Fu
1
That's true, but you should combine the answers into one.
Suresh Venkat
Some examples of optimal sublinear time algorithms can be
Bin Fu
1
it is also not clear why this is not a duplicate of the query complexity answer.
Artem Kaznatcheev