Saya bertanya-tanya, apakah ada metode untuk analisis runtime otomatis yang berfungsi setidaknya pada subset algoritma yang relevan (algoritma yang dapat dianalisis)?
Saya googled "Analisis algoritma otomatis" yang memberi saya ini tetapi terlalu matematika. Saya hanya ingin contoh sederhana dalam psuedocode yang bisa saya mengerti. Mungkin terlalu spesifik, tapi saya pikir itu layak dicoba.
Jawaban:
Alat COSTA melakukan hal ini, meskipun gagal dalam banyak kasus, seperti yang dapat Anda bayangkan, karena masalah komputabilitas . Ada banyak makalah tentang ini; Analisis Biaya Java Bytecode oleh E. Albert, P. Arenas, S. Genaim, G. Puebla, D. Zanardini adalah titik awal yang baik.
Pendekatan yang diambil adalah untuk menyimpulkan pengulangan run-time dari kode Javabyte, mengubahnya menjadi bentuk tertutup. Alat ini juga menghitung batas penggunaan ruang.
sumber
Tidak ada algoritma yang dapat memutuskan apakah algoritma yang diberikan pernah berhenti atau tidak, jadi khususnya tidak ada algoritma yang dapat menganalisis kompleksitas algoritma yang diberikan dengan ketat.
sumber
Saya tahu satu pendekatan untuk analisis kasus rata-rata (semi-) otomatis, yaitu MaLiJAn ¹. Ini sangat mirip dengan jenis analisis yang digunakan Knuth di TAoCP. Gagasan intinya adalah untuk
Perhatikan bahwa hanya pengukuran biaya tambahan (mis. Perbandingan, "waktu") yang berfungsi dan hanya nilai yang diharapkan yang akurat (dengan asumsi fungsi probabilitas sempurna), momen yang lebih tinggi tidak dapat diturunkan.
Semua langkah kecuali ekstrapolasi sangat ketat [2] dan metode ini telah ditunjukkan untuk mereproduksi hasil yang terkenal dengan presisi tinggi - tentu saja, memberikan input sampel acak yang sesuai. Meskipun tidak ada bukti atau bahkan jaminan perkiraan pada hasil (langkah ekstrapolasi, sejauh ini, murni heuristik) hasil yang diperoleh dengan alat berfungsi dengan baik untuk bereksperimen dengan algoritma yang sulit dianalisis dan merumuskan hipotesis [3,4].
sumber
Tentu saja, seperti dicatat oleh Yuval Filmus, orang seharusnya tidak mengharapkan solusi umum untuk masalah seperti itu. Tetapi seperti biasanya, solusi dapat ditemukan untuk himpunan bagian yang menarik dari kasus umum.
Saya sama sekali tidak ahli, atau bahkan berpengetahuan luas di bidang ini, oleh karena saya tahu beberapa pekerjaan semacam itu. Ini menyangkut analisis kompleksitas rata-rata otomatis, dan pekerjaan itu dilakukan oleh Philippe Flajolet dan rekan-rekannya.
Satu makalah yang saya temukan di web adalah makalah tahun 1990: Analisis algoritme kasus rata-rata otomatis oleh Philippe Flajolet, Paul Zimmermann, dan Bruno Salvy .
Saya berharap bahwa makalah-makalah selanjutnya akan memperpanjang pekerjaan ini, tetapi saya tidak benar-benar tahu. Karya itu cukup banyak dikutip, dan mencari di web untuk itu harus menghasilkan lebih banyak karya terbaru tentang topik yang sama.
Sekarang, saya takut bahwa karya Flajolet dan rekan-rekannya sangat matematis, dan saya tidak berharap banyak membaca dengan mudah.
sumber