Desain Analisa Algoritma : Efisiensi Algoritma
Desain Analisa Algoritma : Efisiensi Algoritma
Elsen Ronando, S.Si.,M.Si.,M.Sc.Teknik Informatika Fakultas Teknik
Universitas 17 Agustus 1945 Surabaya 2016
1
2
Pendahuluan
Analisa Algoritma → ada kaitannya dengan investigasi efisiensi algoritma. Efisiensi Algoritma → berkaitan dengan waktu eksekusi dan ruang memori. Tujuan : Efisiensi dipelajari secara kuantitas dengan rinci.
Efisiensi memperhatikan pentingnya keterkaitan dengan kecepatan dan memori komputer. Pendahuluan
Analisa Algoritma → ada kaitannya dengan investigasi efisiensi algoritma. Efisiensi Algoritma → berkaitan dengan waktu eksekusi dan ruang memori. Tujuan : Efisiensi dipelajari secara kuantitas dengan rinci.
Efisiensi memperhatikan pentingnya keterkaitan dengan kecepatan dan memori komputer.
Saat ini, spesifikasi komputer sangat optimal dalam hal kecepatan maupun memori
Analisa Ruang Kerja
Efisiensi → efisiensi waktu (kompleksitas waktu) dan efisiensi ruang (kompleksitas ruang).
Kompleksitas waktu → kecepatan algoritma dalam eksekusi.
Kompleksitas ruang → kebutuhan memori yang diperlukan oleh algoritma
Kecepatan waktu dan kebutuhan ruang → menjadi fokus utama. Kecepatan waktu → lebih difokuskan daripada kebutuhan ruang.
Analisa Ruang Kerja(Lanjutan)
Mengukur Besaran Input Permasalahan utama → lambatnya eksekusi algoritma berdasarkan pada besarnya input, seperti besarnya ukuran array dan matrik.
Contoh : Algoritma untuk menyelesaikan permasalahan prima, dimana memiliki nilai positif integer n. Artinya, nilai inputnya adalah satu bilangan, dimana besar ukuran dari bilangan b dalam representasi biner : b = [log n ] + 1.
2 Analisa Ruang Kerja(Lanjutan)
Bagian untuk Mengukur Waktu Eksekusi Ukuran standar waktu eksekusi → sekon atau milisekon.
Ukuran waktu eksekusi bergantung pada: Kecepatan komputer.
Kualitas penerapan algoritma dalam program. Penggunaan kompiler dalam menghasilkan kode mesin. Kesulitan waktu eksekusi aktual dalam program.
Operasi dasar → identifikasi operasi algoritma secara menyeluruh Total waktu eksekusi.
Menghitung jumlah waktu
Contoh : Algoritma untuk menyelesaikan permasalahan perhitungan matematika : penambahan, pengurangan, perkalian, dan pembagian.
Menurut Saudara, operasi apa yang membutuhkan konsumsi waktu sangat banyak ? Analisa Ruang Kerja(Lanjutan)
Fungsi Pertumbuhan Fungsi pertumbuhan → berpengaruh pada proses efisiensi algoritma. n log
10
12
10
8
10
5
10
1 .3 ×
4
13
5
4
10
9
10
6
10
4
10
1 .0 ×
10
17
10
20
18 Coba Saudara perhatikan Tabel diatas, Bagaimana menurut
10
12
10
7
10
2 .0 ×
6
10
6
10
10
15
10
10
10
6
10
1 .7 ×
5
3
10
2
3 .3
3
10
2
10
1
10
3 .3 ×
1
10
10
3
n !
n
2
3
n
2
n n
2
n n nlog
10
3 .6 ×
3
4
10
157
10
9 .3 ×
30
10
1 .3 ×
6
10
10
10
2
10
6 .6 ×
2
10
6 .6
2
10
6
Saudara ? Analisa Ruang Kerja(Lanjutan)
Keadaan Terburuk, Terbaik, dan Rata-rata (Algoritma Pencarian Sequential)
Input : sebuah array A[0..n − 1] dan pencarian K Output : elemen index A yang sesuai dengan K atau −1 jika tidak ditemukan begin
← 0 i while i < n dan A[i] 6= K do i ← i + 1 if i < n then return i end else return −1 end end end
Analisa Ruang Kerja(Lanjutan)
Keadaan Terburuk, Terbaik, dan Rata-rata (Lanjutan) Keadaan Terburuk → berkaitan lambatnya algoritma berjalan dalam banyaknya input n.
Keadaan Terbaik → berkaitan cepatnya algoritma berjalan dalam banyaknya input n. Jika tidak keduanya (random) → keadaan rata-rata. Notasi Asimtotik dan Dasar Kelas Efisiensi berkaitan erat dengan fungsi pertumbuhan yang dipengaruhi n.
Jenis Notasi: O (big oh) → keadaan terburuk (worst-case)
Ω (big omega) → keadaan terbaik (best-case). Θ (big theta) → keadaan rata-rata (average-case). Notasi Asimtotik dan Dasar Kelas Efisiensi berkaitan erat dengan fungsi pertumbuhan yang dipengaruhi n.
Jenis Notasi: O (big oh) → keadaan terburuk (worst-case).
Ω (big omega) → keadaan terbaik (best-case). Θ (big theta) → keadaan rata-rata (average-case).
Kinerja algoritma biasanya berpatokan pada keadaan terburuk (worst-case) yang dinyatakan dengan (big oh)
Notasi Asimtotik dan Dasar Kelas Efisiensi(Lanjutan)
Definisi Waktu Terburuk (O) f (n) = O(g (n))
Jika ada dua bilangan konstanta c dan n maka kf (n)k ≤ ckg (n)k, ∀n ≥ N Contoh : Tentukan nilai c dan N
3n + 2 ∈ O(n)
2
2 10n + 4n + 2 ∈ O(n )
Notasi Asimtotik dan Dasar Kelas Efisiensi(Lanjutan)
Definisi Waktu Terbaik (Ω) f (n) = Ω(g (n))
Jika ada dua bilangan konstanta c dan n maka kf (n)k ≥ ckg (n)k, ∀n ≥ N Contoh : Tentukan nilai c dan N
3n + 2 ∈ Ω(n)
2
2 10n + 4n + 2 ∈ Ω(n ) Notasi Asimtotik dan Dasar Kelas Efisiensi(Lanjutan)
Definisi Waktu Rata-Rata (Θ) f (n) = Θ(g (n)) Jika ada dua bilangan konstanta c 1 , c 2 , dan n maka c kg (n)k ≤ kf (n)k ≤ c kg (n)k, ∀n ≥ N
1
2 Contoh : Tentukan nilai c 1 , c 2 dan N 3n + 2 ∈ Θ(n)
2
2 10n + 4n + 2 ∈ Θ(n )
Analisa Matematis Algoritma Nonrekrusif Permasalahan. Mencari elemen nilai terbesar dalam sebuah deret n bilangan
Input : sebuah array A[0..n − 1] bilangan real Output : Elemen nilai terbesar di A begin maxval ← A[0] for i ← 1 to n − 1 do if A[i] > maxval then maxval ← A[i] end return maxval end end
Banyaknya eksekusi dilakukan (C (n))
n−1
X C (n) = 1 = n − 1 ∈ Θ(n)
i =1
Analisa Matematis Algoritma Nonrekrusif(Lanjutan) Permasalahan. Mencari elemen berbeda dalam n elemen
Input : sebuah array A[0..n − 1] Output : Return ”benar” jika seluruh elemen A berbeda dan ”salah jika sebaliknya” begin for i ← 0 to n − 2 do for j ← i + 1 to n − 1 do if A[i] = A[j] then return salah end end return benar end end
Banyaknya eksekusi dilakukan (C (n))
n−2 n−1
X X (n − 1)n
1
2
2
≈ ∈ C worst n
(n) = 1 = Θ(n )
2
2
i j =0 =i+1
Analisa Matematis Algoritma Rekrusif Permasalahan. Mencari nilai faktorial n bilangan
Input : Bilangan bulat taknegatif n Output : Hasil n! begin if n=0 then return 1 end else return F (n − 1) ∗ n end end
Banyaknya eksekusi dilakukan (M(n)) M
(n) = M(n − 1) + 1 = M(n − i) + i = M(n − n) + n = n Contoh Bilangan Fibonacci
Deret Bilangan Fibonaci : 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...
Rumus rekrusif bilangan fibonacci : F
(n) = F (n − 1) + F (n − 2) untuk n > 1 dengan kondisi awal
F
(0) = 0, F (1) = 1 → banyak diterapkan dalam bidang ilmu komputer. → banyak digunakan untuk memprediksi stok dan komoditas. Contoh Bilangan Fibonacci(Lanjutan)
Algoritma Rekrusif Bilangan Fibonacci
Input n : bilangan integer tak negatif Output Bilangan Fibonacci ke-n begin if n ≤ 1 then return n end else return F (n − 1) + F (n − 2) end end Contoh Bilangan Fibonacci(Lanjutan)
Algoritma Bilangan Fibonacci
Input n : bilangan integer tak negatif Output Bilangan Fibonacci ke-n begin F [0] ← 0
F [1] ← 1 for i ← 2 to n do F [i] ← F [i − 1] + F [i − 2] end return F [n] end
Θ(log n) yang memiliki kesamaan dan efisien matriks power berikut ini: "
F (n − 1)
F (n)
F (n)
F (n + 1)
# =
" 0 1 1 1
# n untuk n ≥ 1 Seluruh materi presentasi dapat didownload pada SIAKAD masing-masing atau link berikut :
.
Apabila ada pertanyaan mengenai desain analisa algoritma dapat mengirim ke alamat email berikut :
Terimakasih Atas Perhatiaanya