Kamis, 11 Desember 2014

ANALISIS ALGORITMA


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 big­O, yang merupakan bagian dari asymptotic notation,yaitu cara penulisan cost of main component dari suatu algoritma. Big­O 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.

int max = Integer.MIN_VALUE;
  for(int i=0; i<a.length; i++)
    if(a[i] > max)
      max= a[i];
Untuk mengukur big­O, 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 big­O.
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