ANALISIS
ALGORITMA
Sering
orang mencari dan mengatakan apa nama program yang paling mudah
digunakan, jika dilihat dari sisi postifnya bahwa semua program itu
sama saja hanya saja bagaimana cara mempergunakanya sebenarnya.
mungkin programing go memang lebih mudah di pergunakanya tetapi
semuanya itu tergantung dari kita juga hehehe..
Algoritma
merupakan hal yang penting dalam pemrograman, karena dengan analisa
algoritma, kita dapat mengestimasi requirement dan kemungkinan
bottleneck dari sebuah program, baik kebutuhan memori (space
complexity) ataupun durasi (time complexity) . Pengukuran worst case
timecomplexity biasanya menggunakan notasi bigO, yang merupakan
bagian dari asymptotic notation,yaitu cara penulisan cost of main
component dari suatu algoritma. BigO menunjukkan batas terbesar
(≤ n), yang artinya untuk input sejumlah n, performa terburuknya
adalah n, disimbolkan dengan O(n).
| Letter | Algoritma | prestasi |
| (Smal-oh) O | O(n) | <n |
| (bigoh) O | O(n) | ≤n |
| (theta)Θ | Θ(n) | .=n |
| (big omega) | Ω(n) | ≥n |
| (small omega) | ω(n) | >n |
Algoritma
digunakan untuk memecahkan masalah dengan ukuran tertentu: biasanya
memecahkan masalah dengan menggunakan sebuah array berukuran N atau
daftar dihubungkan dengan N node di dalamnya. Selain itu, kita akan
sebagian besar berpengaruh dengan
"worct-case"
kinerja; kemungkinan lain adalah "best-case"
(informasi yang berguna yang sederhana, tapi tidak banyak di sini),
dan "rata-rata kasus" (terlalu rumit matematis untuk
mengejar dalam sebuah pengantar saja). Akhirnya, kita akan sebagian
besar peduli dengan kecepatan (waktu, sebagai sumber daya) dari
algoritma, meskipun kita kadang-kadang akan membahas jumlah
penyimpanan.
Untuk
memulai pendekatan dengan
konkret maka menganalisis
algoritma dapat
dilakjukan dengan melihat bagaimana Java
mengkompilasi kode tersebut ke mesin ]dan
kemudian menggeneralisasi ke ilmu yang independen dari teknologi
tersebut. Pertama kita menemukan fungsi matematika (N) yang
menghitung jumlah instruksi kode mesin dan
dieksekusi oleh algoritma, ketika
dijalankan terdapat
masalah terburuk ukuran N. fungsi tersebut mengambil integer sebagai
parameter (N, masalah ukuran) dan mengembalikan sebuah integer
sebagai hasilnya.
for(int i=0; i<a.length; i++)
if(a[i] > max)
max= a[i];
Untuk
mengukur bigO, umumnya sebuah source code fungsi diubah dulu
menjadi fungsi matematika, dengan aturan umum: sequence dan decision
adalah penjumlahan pemanggilan fungsi (rekursi) dan looping adalah
perkalian inisialisasi/akses variabel dan pemanggilan fungsi lain
adalah konstan konstanta selain pangkat tidak diperhitungkan
(dihapus) hanya nilai yang terbesar komponen utama) yang dipakai
untuk bigO.
Contoh
programnya adalah
void
test1(int v[],int n) {
for(int
z=0;z<n;++z) { // 1 + 2 * n
for(int
y=0;y<n;++y) // 1 + 2 * n
if(z
!= y) swap(v[z],v[y]); // 3 + 1 + 2 + 2 = 7
}
for(int
z=0;z<n;++z) // 1 + 2 * n
cout
<< v[z] << ' '; // 2 + 2 = 4
cout
<< endl; // 1
}
Untuk lebih lengkapnya kunjungin link berikut
http://www.cs.cmu.edu/~pattis/15-1XX/15-200/lectures/aa/
Tidak ada komentar:
Posting Komentar