Bisakah seseorang menjelaskan perbedaan antara algoritma waktu polinomial, waktu bukan polinomial, dan waktu eksponensial?
Misalnya, jika suatu algoritme membutuhkan O (n ^ 2) waktu, lalu masuk dalam kategori apa?
Bisakah seseorang menjelaskan perbedaan antara algoritma waktu polinomial, waktu bukan polinomial, dan waktu eksponensial?
Misalnya, jika suatu algoritme membutuhkan O (n ^ 2) waktu, lalu masuk dalam kategori apa?
Jawaban:
Lihat ini .
Eksponensial lebih buruk dari polinomial.
O (n ^ 2) termasuk dalam kategori kuadrat, yang merupakan jenis polinomial (kasus khusus eksponen sama dengan 2) dan lebih baik daripada eksponensial.
Eksponensial jauh lebih buruk daripada polinomial. Lihatlah bagaimana fungsinya berkembang
n = 10 | 100 | 1000
n^2 = 100 | 10000 | 1000000
k^n = k^10 | k^100 | k^1000
k ^ 1000 sangat besar kecuali k lebih kecil dari sesuatu seperti 1.1. Seperti, sesuatu seperti setiap partikel di alam semesta harus melakukan 100 miliar miliar miliar operasi per detik selama triliunan miliar miliar tahun untuk menyelesaikannya.
Saya tidak menghitungnya, tapi ITU BESAR.
Berikut adalah beberapa fungsi Big-O umum saat menganalisis algoritme.
(n = ukuran input, c = beberapa konstanta)
Berikut adalah grafik model yang mewakili kompleksitas Big-O dari beberapa fungsi
Bersulang :-)
kredit grafik http://bigocheatsheet.com/
O (n ^ 2) adalah waktu polinomial. Polinomialnya adalah f (n) = n ^ 2. Di sisi lain, O (2 ^ n) adalah waktu eksponensial, di mana fungsi eksponensial yang tersirat adalah f (n) = 2 ^ n. Perbedaannya adalah apakah fungsi dari n menempatkan n di basis eksponen, atau dalam eksponen itu sendiri.
Fungsi pertumbuhan eksponensial apa pun akan tumbuh secara signifikan lebih cepat (jangka panjang) daripada fungsi polinomial apa pun, jadi perbedaannya relevan dengan efisiensi algoritme, terutama untuk nilai n yang besar.
Waktu polinomial.
Polinomial adalah jumlah suku yang terlihat seperti Constant * x^k
Eksponensial artinyaConstant * k^x
(dalam kedua kasus, k adalah konstanta dan x adalah variabel).
Waktu eksekusi algoritme eksponensial tumbuh jauh lebih cepat daripada waktu eksekusi algoritme polinomial.
Eksponensial (Anda memiliki fungsi eksponensial jika MINIMAL ONE EXPONENT bergantung pada parameter):
Polinomial (Anda memiliki fungsi polinomial jika NO EXPONENT bergantung pada beberapa parameter fungsi):
o (n sequre) adalah kompleksitas waktu polinimal sedangkan o (2 ^ n) adalah kompleksitas waktu eksponensial jika p = np ketika kasus terbaik, dalam kasus terburuk p = np tidak sama karena ukuran input n bertambah panjang atau input sizer bertambah begitu Semakin lama semakin buruk penanganannya sehingga kompleksitas laju pertumbuhan meningkat dan bergantung pada n ukuran masukan bila masukan kecil itu polynimal bila ukuran masukan besar dan besar jadi p = np tidak sama artinya tingkat pertumbuhan bergantung pada ukuran masukan "N ". optimasi, sat, klik, dan himpunan independen juga bertemu secara eksponensial hingga polynimal.