Video: Dealing with Difficult Developers 2024
Bagian Algoritma For Dummies Cheat Sheet
Anda sudah tahu bahwa algoritma itu rumit. Namun, Anda perlu tahu seberapa rumit sebuah algoritma karena yang lebih rumit adalah, semakin lama waktu yang dibutuhkan untuk berlari. Tabel berikut membantu Anda memahami berbagai tingkat kompleksitas yang disajikan dalam urutan waktu berjalan (dari yang tercepat sampai yang paling lambat).
Kompleksitas | Deskripsi |
Kompleksitas konstan O (1) | Menyediakan waktu eksekusi yang tidak sesuai, tidak peduli berapa banyak masukan yang Anda berikan. Setiap input membutuhkan satu unit waktu eksekusi. |
Kompleks logaritma O (log n) | Jumlah operasi tumbuh pada tingkat yang lebih lambat dari pada input, membuat algoritma kurang efisien dengan input kecil dan lebih efisien dengan yang lebih besar. Algoritma khas kelas ini adalah pencarian biner. |
Kompleksitas linier O (n) | Operasi tumbuh dengan input dalam rasio 1: 1. Algoritma yang khas adalah iterasi, saat Anda memindai input sekali dan menerapkan operasi ke setiap elemennya. |
Kompleksitas linier O (n log n) | Kompleksitas adalah perpaduan antara kompleksitas logaritmik dan linier. Ini adalah tipikal dari beberapa algoritma cerdas yang digunakan untuk memesan data, seperti Mergesortsort, Heapsort, dan Quicksort. |
Kompleksitas kuadrat O (n 2 ) | Operasi tumbuh sebagai kuadrat dari jumlah input. Bila Anda memiliki satu iterasi di dalam iterasi lain (disebut nested iterasi dalam ilmu komputer), Anda memiliki kompleksitas kuadrat. Misalnya, Anda memiliki daftar nama dan, untuk menemukan yang paling mirip, Anda membandingkan setiap nama dengan semua nama lainnya. Beberapa algoritma pemesanan yang kurang efisien menyajikan kompleksitas seperti itu: sort bubble, sort sort selection, dan insertion sort. Tingkat kompleksitas ini berarti bahwa algoritma Anda dapat berjalan berjam-jam atau bahkan berhari-hari sebelum mencapai solusi. |
Kompleksitas kubus O (n 3 ) | Operasi tumbuh lebih cepat daripada kompleksitas kuadrat karena sekarang Anda memiliki beberapa iterasi bersarang. Ketika sebuah algoritma memiliki urutan kompleksitas ini dan Anda perlu mengolah sejumlah data sederhana (100, 000 elemen), algoritme Anda dapat berjalan selama bertahun-tahun. Bila Anda memiliki sejumlah operasi yang merupakan kekuatan input, adalah umum untuk merujuk ke algoritma seperti berjalan pada waktu polinomial. |
Kompleksitas eksponensial O (2 n ) | Algoritma membutuhkan dua kali jumlah operasi sebelumnya untuk setiap elemen baru ditambahkan. Ketika sebuah algoritma memiliki kompleksitas ini, masalah kecil mungkin akan terjadi selamanya. Banyak algoritma yang melakukan pencarian menyeluruh memiliki kompleksitas eksponensial. Namun, contoh klasik untuk tingkat kerumitan ini adalah perhitungan angka Fibonacci.Kompleksitas Faktorial O (n!) |
Algoritma ini menyajikan mimpi buruk yang nyata karena sejumlah besar kemungkinan kombinasi antara elemen. Bayangkan saja: Jika input Anda adalah 100 objek, dan operasi di komputer Anda membutuhkan 10 | -6 detik (kecepatan yang masuk akal untuk setiap komputer saat ini), Anda memerlukan sekitar 10 140 tahun untuk menyelesaikan tugas dengan sukses (jumlah waktu yang tidak mungkin karena usia alam semesta diperkirakan berusia 10 14 tahun). Masalah kompleksitas faktorial yang terkenal adalah masalah salesman keliling, di mana seorang salesman harus menemukan rute terpendek untuk mengunjungi banyak kota dan kembali ke kota awal.
|