Untuk mengukur kompleksitas suatu algoritma, apakah itu kompleksitas waktu, atau kompleksitas komputasi? Apa perbedaan di antara mereka?
Saya biasa menghitung jumlah maksimum (terburuk) operasi dasar (paling mahal) dalam algoritma.
complexity-theory
terminology
algorithm-analysis
time-complexity
Median Hilal
sumber
sumber
Jawaban:
Kompleksitas komputasi hanyalah istilah yang lebih umum, karena waktu bukanlah satu-satunya sumber yang ingin kita pertimbangkan. Yang paling jelas berikutnya adalah ruang yang digunakan algoritma, dan karenanya kita dapat berbicara tentang kompleksitas ruang , juga sebagai bagian dari kompleksitas komputasi. Memang kita bisa melakukan ini untuk ukuran apa pun yang Anda inginkan Anda gunakan, tentu saja beberapa tindakan lebih berguna daripada yang lain.
Jadi menghitung jumlah langkah yang diambil algoritma dalam kasus terburuk memberikan kompleksitas waktu terikat untuk masalah yang dipecahkannya, menghitung berapa banyak memori / berapa banyak sel sel yang digunakannya memberikan kompleksitas ruang terikat dll. Dll.
sumber
Kompleksitas siklomatik sering digunakan sebagai ukuran kompleksitas komputasi, contoh yang berguna disediakan di /programming/9097987/calculation-of-cyclomatic-complexity
Mungkin ada banyak jalur (mungkin bersarang) yang berbeda melalui algoritma yang memberikannya kompleksitas siklomatik yang tinggi, tetapi tidak ada loop yang memberikan kompleksitas waktu yang rendah. Suatu program dengan satu loop akan memiliki kompleksitas siklomatik yang rendah tetapi mungkin kompleksitas waktu yang tinggi.
Kompleksitas siklus sering digunakan sebagai ukuran pemeliharaan yang diperlukan untuk kode. Diskusi yang lebih terperinci disediakan di http://docs.sonarqube.org/display/SONAR/Bad+Distribution+of+Complexity . Ini berbeda dengan kompleksitas waktu yang menjalankan pengukuran waktu dari kode dan dapat digunakan untuk menilai persepsi pengguna tentang efektivitas sistem.
sumber