Di sini , Dave Clarke mengusulkan bahwa untuk membandingkan pertumbuhan asimptotik, Anda harus merencanakan fungsinya. Sebagai ilmuwan komputer yang secara teori cenderung, saya menyebut (ed) vodoo ini sebagai plot tidak pernah menjadi bukti. Setelah dipikir-pikir, saya harus setuju bahwa ini adalah pendekatan yang sangat berguna yang bahkan kadang kurang dimanfaatkan; plot adalah cara yang efisien untuk mendapatkan ide pertama, dan terkadang hanya itu yang Anda butuhkan.
Saat mengajar TCS, selalu ada siswa yang bertanya: "Apa yang saya butuhkan bukti formal jika saya bisa melakukan X yang selalu berhasil?" Terserah gurunya untuk menunjukkan dan mengilustrasikan kesalahan tersebut. Ada serangkaian contoh pola yang jelas yang akhirnya gagal di matematika. SE, tetapi itu adalah skenario yang cukup matematis.
Jadi, bagaimana Anda menipu heuristik inspeksi plot? Ada beberapa kasus di mana perbedaan sulit untuk dijelaskan, misalnya
[ sumber ]
Buat tebakan, lalu periksa sumber untuk fungsi yang sebenarnya. Tapi itu tidak spektakuler seperti yang saya harapkan, khususnya karena hubungan sebenarnya mudah dikenali dari fungsinya sendiri, bahkan untuk pemula.
Apakah ada contoh pertumbuhan asimptotik (relatif) di mana kebenaran tidak jelas dari definisi fungsi dan inspeksi plot untuk yang cukup besar memberi Anda ide yang sepenuhnya salah? Fungsi matematika dan set data nyata (misalnya runtime dari algoritma tertentu) keduanya diterima; tolong jangan melakukan fungsi yang didefinisikan sedikit demi sedikit.
sumber
Jawaban:
[ sumber ]
sumber
Berikut adalah contoh lain (memang agak dibangun), tetapi saya masih menemukan yang luar biasa. Hal ini dimaksudkan untuk menunjukkan bahwa plot bisa sangat menyesatkan untuk menilai pertumbuhan asimptotik.
Bisakah Anda menebak fungsi mana yang tumbuh (asimptotik) lebih cepat?
Jadi pada dasarnya , yaitu sama dengan , tetapi turunan keduanya tidak seragam , tetapi terombang-ambing antara dan dengan periode pertumbuhan eksponensial. Osilasi ini tidak terlihat dalam plot biasa.g x2 f 2 0 4
Untuk contoh ini , kita dapat melakukan demos osilasi dengan mempertimbangkan log-log-plot:
Tentu saja, ini tidak membantu, secara umum; misalnya, kita mungkin memiliki periode eksponensial ganda ...
sumber
Contoh yang bagus adalah algoritma DFA minimal yang sangat ajaib dari Brzozowski. Diberi otomat terbatas , kita dapat menghitung otomat terbatas deterministik minimal darinya:N=(Q,S⊆Q,F⊆Q,R⊆Q×Σ×Q)
Ini jelas merupakan algoritma waktu eksponensial kasus terburuk, karena dapat mengambil otomat non-deterministik dan memberi Anda yang deterministik (atau lebih jelas lagi, ia menyebut konstruksi himpunan bagian dua kali).
Namun, jika Anda memberikan DFA sebagai algoritme Brzozowski sebagai input, pada banyak jenis input yang sama, ia dapat bersaing dengan dan seringkali mengungguli algoritme minimalisasi DFA khusus (yang biasanya , atau jika Anda hard-core dan mengimplementasikan algoritma Hopcraft).O ( n log ( n ) )O(n2) O(nlog(n))
Ini menyentuh bagian "plot" dari "heuristik inspeksi plot" --- kita harus memilih titik mana yang akan diambil sampel saat menggambar plot, dan Anda dapat menipu plot naif jika Anda tidak memilih poin dengan hati-hati. Ini juga berlaku untuk contoh lain, seperti Quicksort dan algoritma Simplex, tetapi untuk pedagogi saya lebih suka algoritma ini daripada keduanya.
Perbedaan Quicksort adalah "hanya" kuadrat versus log-linear, yang kurang spektakuler daripada perbedaan polinomial / eksponensial. Algoritma simpleks memang memiliki perbedaan yang sama spektakulernya, tetapi analisisnya jauh lebih rumit daripada algoritma Brzozowski.
(Juga, saya merasa bahwa algoritma minimisasi DFA Brzozowski jauh kurang dikenal daripada yang seharusnya, tetapi tentu saja itu masalah selera.)
sumber
Teknik matematika dari fitting curve dapat digunakan untuk memberikan jumlah jawaban yang tidak terbatas untuk pertanyaan Anda. Diberikan kurva dan rentang, orang dapat dengan mudah menemukan polinomial yang sesuai dengan kurva dengan tingkat akurasi apa pun. Contoh dari wikipedia ini menunjukkan bagaimana gelombang dosa dapat cukup akurat dipasangkan dengan polinomial orde keempat (kurva biru).
Saya dapat menggunakan polinomial orde tinggi, dan mengelabui heuristik inspeksi plot bahkan lebih baik daripada grafik ini.
sumber