Analisis Kompleksitas
Penulis : Benedict_p
Last updated
Penulis : Benedict_p
Last updated
Dalam dunia pemrograman, sering sekali kita harus memperkirakan kecepatan suatu program atau memori yang diperlukan untuk menjalankan suatu program. Terdapat beberapa cara untuk merepresentasikan perkiraan tersebut. Cara yang paling sering digunakan dalam pemrograman kompetitif adalah dengan menggunakan Big O Notation. Di bab ini kita akan membahas cara melakukan analisis kompleksitas dengan Big O Notation.
Notasi O besar atau Big O Notation dalam pemrograman kompetitif adalah suatu notasi yang memperkirakan banyaknya operasi yang perlu dilakukan oleh suatu program dari awal sampai akhir bergantung pada inputnya. Banyaknya operasi yang dapat dilakukan oleh komputer pada umumnya dengan bahasa C++ adalah sekitar operasi tiap detik. Dengan informasi ini dan notasi O besar, kita bisa memperkirakan waktu berjalannya suatu program. Selanjutnya kita akan membahas pembagian Big O Notation.
Gambar:
menyatakan bahwa waktu yang diperlukan untuk menjalankan suatu program tidak tergantung pada variabel apapun, disebut juga konstan. Perhatikan contoh di bawah.
Untuk x
bernilai apapun, program tetap hanya menjalankan 2 operasi, yaitu menghitung x % 2
kemudian mengecek apakah nilainya sama dengan 1. Maka program di atas disebut memiliki kompleksitas konstan dan dinotasikan dengan .
Jika suatu program menjalankan buah operasi untuk suatu input , program tersebut memiliki kompleksitas . Disebut juga memiliki kompleksitas linear. Perhatikan contoh di bawah.
Program melakukan perulangan sebanyak kali dan menjalankan 1 operasi pada tiap perulangan, sehingga program melakukan buah operasi. Kita dapat menuliskan kompleksitas program sebagai . Meskipun nantinya program menjalankan lebih dari 1 operasi pada tiap perulangan, kita tetap menuliskan kompleksitas program sebagai . Hal ini dikarenakan Big O Notation, tidak mempertimbangkan faktor konstan. Contoh,
Meskipun program melakukan perulangan terjadi sebanyak kali dan pada tiap perulangan melakukan 3 operasi, kompleksitas program tetap dituliskan dan bukan .
Jika suatu program menjalankan sekitar operasi untuk suatu input , maka program memiliki kompleksitas . Contoh,
Program di atas melakukan kali perulangan, kemudian pada tiap perulangan melakukan kali perulangan lagi. Kompleksitas program adalah atau .
Program di atas melakukan kali perulangan. Pada perulangan pertama terjadi 1 kali perulangan, pada perulangan kedua terjadi 2 kali perulangan, pada perulangan ketiga terjadi 3 kali perulangan, dan selanjutnya. Total operasi yang terjadi adalah . Kita tetap menuliskan kompleksitasnya sebagai . Ingat bahwa notasi O besar tidak mempertimbangkan faktor konstan, sehingga kita tidak perlu menuliskan Kemudian jika kita jabarkan . Perhatikan untuk yang besar, nilai tidak signifikan karena ukuran jauh lebih besar.
Program menjalankan sekitar untuk input dan. Contoh,
Jika suatu program menjalankan sekitar operasi, maka program tersebut memiliki kompleksitas . Contohnya adalah pada persoalan mencetak semua permutasi untuk bilangan sampai . (Lihat rekursi)
Program di atas mencetak semua permutasi untuk bilangan sampai . Karena terdapat permutasi, maka program di atas memiliki kompleksitas .