Elsen Ronando, S.Si.,M.Si.,M.Sc.
elsen.ronando@untag-sby.ac.id
Teknik Informatika Fakultas Teknik
Universitas 17 Agustus 1945 Surabaya
2016
1 Efisiensi Algoritma
Analisa Ruang Kerja
Notasi Asimtotik dan Dasar Kelas Efisiensi Analisa Matematis Algoritma Nonrekrusif Analisa Matematis Algoritma Rekrusif Contoh Bilangan Fibonacci
Pendahuluan
Analisa Algoritma→ ada kaitannya dengan investigasi efisiensi
algoritma.
Efisiensi Algoritma →berkaitan dengan waktu eksekusi danruang
memori. Tujuan :
Efisiensi dipelajari secara kuantitas dengan rinci.
Efisiensi memperhatikan pentingnya keterkaitan dengankecepatan danmemorikomputer.
Pendahuluan
Analisa Algoritma→ ada kaitannya dengan investigasi efisiensi
algoritma.
Efisiensi Algoritma →berkaitan dengan waktu eksekusi danruang
memori. Tujuan :
Efisiensi dipelajari secara kuantitas dengan rinci.
Efisiensi memperhatikan pentingnya keterkaitan dengankecepatan danmemorikomputer.
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 integern. Artinya, nilai inputnya adalah satu bilangan,
dimana besar ukuran dari bilangan b dalam representasi biner :
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 log2n n nlog2n n2 n3 2n n!
Analisa Ruang Kerja(Lanjutan)
Keadaan Terburuk, Terbaik, dan Rata-rata
(Algoritma Pencarian Sequential)
Input: sebuah arrayA[0..n−1] dan pencarianK Output: elemen indexAyang sesuai denganK
atau−1 jika tidak ditemukan
begin
Analisa Ruang Kerja(Lanjutan)
Keadaan Terburuk, Terbaik, dan Rata-rata (Lanjutan)
Keadaan Terburuk → berkaitan lambatnya algoritma berjalan dalam
banyaknya inputn.
Keadaan Terbaik → berkaitan cepatnya algoritma berjalan dalam
banyaknya inputn.
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).
Notasi Asimtotik dan Dasar Kelas Efisiensi(Lanjutan) Definisi Waktu Terburuk (O)
f(n) =O(g(n))
Jika ada dua bilangan konstanta c dan n0 maka
kf(n)k ≤ckg(n)k,∀n≥N
Contoh : Tentukan nilai c dan N
3n+ 2∈O(n)
10n2+ 4n+ 2∈O(n2)
Notasi Asimtotik dan Dasar Kelas Efisiensi(Lanjutan) Definisi Waktu Terbaik (Ω)
f(n) = Ω(g(n))
Jika ada dua bilangan konstanta c dan n0 maka
kf(n)k ≥ckg(n)k,∀n≥N
Contoh : Tentukan nilai c dan N
3n+ 2∈Ω(n)
Notasi Asimtotik dan Dasar Kelas Efisiensi(Lanjutan) Definisi Waktu Rata-Rata (Θ)
f(n) = Θ(g(n))
Jika ada dua bilangan konstanta c1,c2, dann0 maka
c1kg(n)k ≤ kf(n)k ≤c2kg(n)k,∀n≥N
Contoh : Tentukan nilai c1, c2 dan N
3n+ 2∈Θ(n)
10n2+ 4n+ 2∈Θ(n2)
Permasalahan. Mencari elemen nilai terbesar dalam sebuah deretnbilangan.
Input: sebuah arrayA[0..n−1] bilangan real
Output: Elemen nilai terbesar diA
begin
Banyaknya eksekusi dilakukan (C(n))
C(n) =
n−1
X
Analisa Matematis Algoritma Nonrekrusif(Lanjutan)
Permasalahan. Mencari elemen berbeda dalamnelemen.
Input: sebuah arrayA[0..n−1]
Output: Return ”benar” jika seluruh elemen A berbeda dan ”salah jika sebaliknya”
begin
Banyaknya eksekusi dilakukan (C(n))
Cworst(n) =
Analisa Matematis Algoritma Rekrusif
Permasalahan. Mencari nilai faktorialnbilangan.
Input: Bilangan bulat taknegatifn
Output: Hasiln!
Banyaknya eksekusi dilakukan (M(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) untukn >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
Inputn : bilangan integer tak negatif
OutputBilangan Fibonacci ke-n
begin
if n≤1then returnn end
else
returnF(n−1) +F(n−2)
Contoh Bilangan Fibonacci(Lanjutan) Algoritma Bilangan Fibonacci
Inputn : bilangan integer tak negatif
OutputBilangan Fibonacci ke-n
begin
Θ(log n) yang memiliki kesamaan dan efisien matriks power berikut ini:
"
Seluruh materi presentasi dapat didownload pada SIAKAD masing-masing atau link berikut :
https://sites.google.com/site/elsenronandosite/teaching Klik .
Apabila ada pertanyaan mengenai desain analisa algoritma dapat