Paradigma untuk analisis kompleksitas algoritma


16

Analisis kasus terburuk dan rata-rata adalah ukuran yang terkenal untuk kompleksitas suatu algoritma. Baru-baru ini analisis yang lebih lancar telah muncul sebagai paradigma lain untuk menjelaskan mengapa beberapa algoritma yang eksponensial dalam kasus terburuk bekerja dengan sangat baik dalam praktiknya, misalnya algoritma simpleks.

Pertanyaan saya adalah - apakah ada paradigma lain untuk mengukur kompleksitas suatu algoritma? Saya khususnya tertarik pada yang mencoba menjelaskan mengapa beberapa algoritma yang memiliki kompleksitas kasus terburuk bekerja dengan baik dalam praktiknya.

Jawaban:


21

Ada varian alami dari analisis kasus terburuk yang juga berguna. Mungkin yang paling terkenal adalah kompleksitas parametrized. Di sini, kami mempertimbangkan ukuran "dua dimensi": panjang input biasa dan beberapa bilangan bulat non-negatif k , parameter. Meskipun suatu algoritma dapat berjalan sangat buruk dalam kasus terburuk (untuk semua nilai n dan k ), bisa jadi semua kasus dalam aplikasi seseorang yang perlu dipecahkan, parameter k ini kebetulan rendah, sehingga algoritme berjalan dengan baik pada contoh-contoh itu.nknkk

Misalnya, Anda ingin menyelesaikan Set Independen Maksimum pada beberapa kelas grafik, dan kembangkan algoritma yang menarik yang ternyata sangat cepat. Menyelidiki lebih jauh ke dalam kelas grafik sendiri, Anda menemukan bahwa semua grafik yang Anda periksa kebetulan memiliki paling banyak grafik . Nah, Bodlaender (lih. Neidermeier [1]) menunjukkan bahwa ketika treewidth adalah k, Max Independent Set adalah parameter tetap yang dapat ditelusur : dapat diselesaikan dalam waktu O ( 2 k ( | E | + | V | ) ) waktu. Ini memberikan beberapa penjelasan mengapa algoritma Anda bekerja dengan baik.10HAI(2k(|E|+|V|))

[1] R. Niedermeier, Undangan untuk algoritma parameter-tetap. Seri Kuliah Oxford dalam Matematika dan Penerapannya, Oxford University Press, Oxford, 2006.


15

Ada kerumitan yang diamortisasi - mengapa beberapa operasi bisa mahal dalam kasus terburuk, tetapi jika Anda mempertimbangkan banyak operasi, biaya rata-rata per operasi adalah baik.

Contoh klasik adalah struktur data yang mengosongkan dirinya sendiri ketika sudah penuh dengan menyalin semua elemennya ke penyimpanan. Operasi penyalinan bisa mahal, tetapi itu tidak sering terjadi - Anda harus memasukkan cukup elemen ke struktur data untuk memprovokasi itu.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.