Secara longgar, kompleksitas waktu adalah cara meringkas bagaimana jumlah operasi atau run-time dari suatu algoritma bertambah ketika ukuran input bertambah.
Seperti kebanyakan hal dalam hidup, pesta koktail dapat membantu kita memahami.
DI)
Ketika Anda tiba di pesta, Anda harus menjabat tangan semua orang (melakukan operasi pada setiap item). Karena jumlah peserta N
meningkat, waktu / pekerjaan yang Anda perlukan untuk menjabat tangan semua orang akan bertambah O(N)
.
Kenapa O(N)
dan tidak cN
?
Ada variasi dalam jumlah waktu yang diperlukan untuk berjabatan tangan dengan orang-orang. Anda bisa meratakan ini dan menangkapnya dalam konstanta c
. Tetapi operasi mendasar di sini --- berjabat tangan dengan semua orang --- akan selalu proporsional dengan O(N)
, tidak peduli apa c
itu. Ketika memperdebatkan apakah kita harus pergi ke pesta koktail, kita sering lebih tertarik pada kenyataan bahwa kita harus bertemu semua orang daripada detail menit seperti apa pertemuan itu.
O (N ^ 2)
Tuan rumah pesta koktail ingin Anda memainkan permainan konyol di mana semua orang bertemu orang lain. Karena itu, Anda harus bertemu N-1
orang lain dan, karena orang berikutnya sudah bertemu Anda, mereka harus bertemu N-2
orang lain, dan seterusnya. Jumlah dari seri ini adalah x^2/2+x/2
. Dengan bertambahnya jumlah peserta, x^2
istilah menjadi besar dengan cepat , jadi kami hanya membatalkan yang lainnya.
O (N ^ 3)
Anda harus bertemu orang lain dan, selama setiap pertemuan, Anda harus berbicara tentang orang lain di ruangan itu.
O (1)
Tuan rumah ingin mengumumkan sesuatu. Mereka membawa gelas anggur dan berbicara dengan keras. Semua orang mendengarnya. Ternyata tidak masalah berapa banyak peserta yang hadir, operasi ini selalu memakan waktu yang sama.
O (log N)
Tuan rumah telah meletakkan semua orang di meja dalam urutan abjad. Dimanakah Dan? Anda beralasan bahwa dia pasti berada di suatu tempat antara Adam dan Mandy (tentu saja bukan antara Mandy dan Zach!). Mengingat itu, apakah dia antara George dan Mandy? Tidak. Dia pasti antara Adam dan Fred, dan antara Cindy dan Fred. Dan seterusnya ... kita dapat menemukan Dan dengan efisien dengan melihat setengah dari set dan kemudian setengah dari set itu. Pada akhirnya, kita melihat O (log_2 N) individu.
O (N log N)
Anda bisa menemukan tempat duduk di meja menggunakan algoritma di atas. Jika sejumlah besar orang datang ke meja, satu per satu, dan semua melakukan ini, itu akan membutuhkan waktu O (N log N) . Ini ternyata menjadi berapa lama yang dibutuhkan untuk mengurutkan koleksi barang ketika mereka harus dibandingkan.
Kasus Terbaik / Terburuk
Anda tiba di pesta dan perlu menemukan Inigo - berapa lama? Itu tergantung kapan Anda tiba. Jika semua orang berkeliaran di sekitar Anda telah mencapai yang terburuk: itu akan memakan O(N)
waktu. Namun, jika semua orang duduk di meja, itu hanya akan memakan O(log N)
waktu. Atau mungkin Anda dapat memanfaatkan kekuatan berteriak gelas anggur tuan rumah dan itu hanya akan memakan O(1)
waktu.
Dengan asumsi tuan rumah tidak tersedia, kita dapat mengatakan bahwa algoritma pencarian Inigo memiliki batas bawah O(log N)
dan batas atas O(N)
, tergantung pada keadaan pesta ketika Anda tiba.
Ruang & Komunikasi
Gagasan yang sama dapat diterapkan untuk memahami bagaimana algoritma menggunakan ruang atau komunikasi.
Knuth telah menulis makalah yang bagus tentang mantan berjudul "The Complexity of Songs" .
Teorema 2: Ada banyak lagu kompleksitas O (1) yang sewenang-wenang.
BUKTI: (karena Casey dan Sunshine Band). Pertimbangkan lagu Sk ditentukan oleh (15), tetapi dengan
V_k = 'That's the way,' U 'I like it, ' U
U = 'uh huh,' 'uh huh'
untuk semua k.