Apakah Analisis Lancar digunakan di luar akademisi?

24

Apakah analisis yang dihaluskan menemukan jalannya ke dalam analisis aliran utama dari algoritma? Apakah biasa bagi perancang algoritma untuk menerapkan analisis yang diperhalus pada algoritme mereka?

Gilles 'SANGAT berhenti menjadi jahat'
sumber
11
Apakah orang-orang menerapkan segala jenis analisis kompleksitas pada algoritme mereka di luar akademisi?
Dave Clarke
2
Apa yang dikatakan @DaveClarke; mungkin dia harus meminta analisis yang ketat (atau non-sepele). Saya berharap banyak praktisi melihat algoritma mereka, menghitung kedalaman nesting loop dan berkata: "Ini !". O(n3)
Raphael
3
Sambil mencari setiap penggunaan analisis merapikan selain Simplex saya menemukan daftar dikuratori oleh salah satu orang yang menemukan teknik ini.
Raphael
1
@DaveClarke bagaimana dengan orang yang bekerja di IBM atau HP atau NTT? Bukankah seharusnya mereka menggunakan analisis semacam itu?
Marcos Villagra
1
@DaveClarke saya lakukan.
Kevin

Jawaban:

12

Saya bisa saja salah, tetapi saya melihat analisis yang lancar sebagai cara untuk menjelaskan perilaku dalam praktik algoritma yang memiliki jaminan teoritis yang buruk (simpleks, k-means, dan sebagainya). Saya tidak yakin apa artinya menggunakan analisis yang dihaluskan dalam praktik, kecuali untuk membenarkan penggunaan heuristik tertentu dengan kinerja kasus terburuk yang buruk ("Heuristik saya memiliki bla-bla perilaku terburuk, tetapi analisis yang diperhalus menunjukkan bahwa itu akan lakukan dengan baik dalam latihan dll dll ")

Suresh
sumber
2
Masalahnya adalah sejauh ini, keberhasilan besar untuk analisis yang lancar telah menjelaskan praktik saat ini, sehingga para praktisi mungkin hanya bereaksi dengan mengatakan "baik itu bagus bahwa semua yang telah saya lakukan dapat terbukti masuk akal" :). Saya tidak tahu apakah seseorang memutuskan untuk menggunakan heuristik yang sebelumnya kurang dikenal KARENA analisis yang dihaluskan.
Suresh
Analisis perataan formal sangat sulit, tidak ada alasan siapa pun dalam teori tidak boleh mempraktikkannya secara berlebihan. Di sisi lain, jika Anda menganggapnya sebagai heuristik yang digunakan untuk menganalisis suatu algoritma (yaitu, inputnya semi-acak), maka itu mungkin digunakan sepanjang waktu.
Yuval Filmus
3

Cara orang menganalisis algoritma di dunia nyata sangat berbeda dari akademisi. Sementara di dunia akademis tujuannya adalah untuk menemukan batas atas yang terbukti dapat dibuktikan pada waktu berjalan, dalam kehidupan nyata tujuannya adalah untuk memahami bagaimana algoritma bekerja, dan perubahan apa yang dapat meningkatkan waktu berjalan. Ada dua metode utama yang dilarang di dunia akademis tetapi digunakan dalam praktik:

  • Metode aproksimasi. Di sini Anda menggunakan banyak asumsi penyederhanaan untuk mencoba memperkirakan waktu berjalan suatu algoritma. Mirip dengan apa yang dilakukan oleh fisikawan teoritis.
  • Percobaan. Anda menjalankan algoritme Anda dan mengukur beberapa statistik - berapa banyak waktu yang digunakan untuk setiap bagian, berapa kali setiap fungsi dipanggil, seberapa sering setiap cabang dijalankan, dan sebagainya. Informasi ini dapat digunakan untuk mengoptimalkan algoritma. Eksperimen juga digunakan untuk mengetahui apakah beberapa perkiraan dilakukan saat menganalisis kerja algoritma dalam praktik atau tidak.

Yang mengatakan, saya tidak berpikir bahwa itu sangat umum untuk menganalisis suatu algoritma dalam praktek, selain untuk menambahkan beberapa teks pengisi dalam publikasi akademik terkait. Fokusnya adalah pada rekayasa perangkat lunak atau pada optimasi tingkat rendah, tergantung pada subjeknya.

Akhirnya, analisis yang dihaluskan adalah heuristik yang dapat digunakan untuk menjelaskan mengapa algoritma bekerja lebih baik dalam praktik daripada yang disarankan oleh kasus terburuk mereka - yaitu karena beberapa input "acak" dalam arti tertentu. Heuristik ini dapat digunakan untuk memperkirakan perilaku algoritma jika seseorang menggunakan metode aproksimasi.

Yuval Filmus
sumber
"Sementara dalam dunia akademis tujuannya adalah untuk menemukan provably-benar atas terikat pada waktu berjalan" - yaitu suatu tujuan, bukan yang tujuan. Ada juga banyak pekerjaan pada analisis kasus rata-rata, meskipun rata-rata siswa CS mungkin tidak melihat banyak (karena itu relatif sulit). "Untuk memahami cara kerja algoritma", bisa dibilang, adalah dasar dari semua algoritme di dunia akademis.
Raphael