Algoritma dan Struktur Data
-
Upload
aminah-rahmansyah -
Category
Documents
-
view
21 -
download
3
description
Transcript of Algoritma dan Struktur Data
-
Tugas
Algoritma dan Struktur Data
Resume Pengantar Algoritma
Di tulis oleh :
H12113319 St. Aminah Rahmansyah
Program Studi Statistika
Jurusan Matematika
Fakultas Matematika dan Ilmu Pengetahuan Alam
Universitas Hasanuddin
Makassar
2014/2015
-
Deklarasi
Jika indeks length [A] and ada = false benar
maka program akan berlanjut ke tahap
selanjutnya (tahap ke-5), tapi apabila ada salah
satu yang salah maka akan berlanjut ke tahap 8.
Jika key telah di temukan (ada = True), maka pencarian
terhenti dan akan berlanjut ke tahap 8. Apabila tidak di
temukan program akan terus berjalan hingga unsur terakhir
Akan menghentikan program
Kembali ke awal program
Deklarasi
Untuk indeks dari 1 sampai panjang unsur
Jika key di temukan (ada = True), maka pencarian terhenti
dan akan berlanjut ke tahap 6.
Selasa, 02/09/2014
Pengantar algoritma
Algoritma adalah prosedur komputasional yang terdefinisi dengan baik yang
membutuhkan nilai sebagai input dan menghasilkan nilai sebagai output.
Desain dan analisis algoritma
Pseudocode yaitu kode untuk memudahkan pemahaman algoritma yang dapat
ditransformasi kedalam berbagai bahasa pemrograman.
Contoh masalah komputasional
- Masalah pencarian data (searching problem)
Merancang algoritma sederhana
- Algoritma linear searching (naive)
Pseudo-code Algoritma
Linear-Search (A,Key)
1. Indeks 1;
2. Ada false;
3. Mengecek key dalam A [1 ... length [A]]
4. While indeks length [A] and ada = false
5. If A[Indeks] = key
6. Then ada = True;
7. Indeks indeks + 1;
8. If ada = false
9. Then indeks length [A] + 1;
10. Return indeks
Implementasi Pseudo-code Lain
Linear-Search 1 (A,Key)
1. Ada false
2. for indeks 1 to length [A]
3. if A[indeks] = key
4. then ada = True;
5. break;
-
Akan menghentikan program
Kembali ke awal program
Untuk indeks dari 1 sampai panjang unsur
Jika key di temukan, maka pencarian terhenti.
Jika indeks besar dari panjang unsur,maka
indeks tertentu = key
Kembali ke awal program
Untuk indeks dari 2 sampai panjang unsur
Key = unsur ke-j (tentukan key)
i = j -1
Jika i > 0 A[i] > key benar, maka akan ke-tahap selanjutnya (tahap 6).
Unsur [ i + 1 ] = Unsur i
Unsur [ i + 1 ] = key
Jadi i = i - 1
6. if ada = false
7. then A[Indeks] key;
8. Return indeks
Linear-Search 2(A,Key)
1. for indeks 1 to length [A]
2. if A[Indeks] = key
3. then break;
4. if indeks > length[A]
5. then A[indeks] key;
6. return indeks
Loop Invariant and Correctness
Inisialisasi (initialization)
Pemeliharaan (maintenance)
Penghentian (termination)
Contoh masalah lain :
- Masalah pengurutan data (sorting problem)
Algoritma Insertion-Sort
Insertion-Sort (A)
0 perulangan untuk patokan
1 for j 2 to length [A]
2 key A[j]
3 sisip A[j] kedalam barisan terurut A[1 ... j 1]
4 i j 1
5 while ( i > 0 A[i] > key)
6 A [ i + 1 ] A [i]
7 i i 1
8 A [ i + 1 ] key
-
Selasa, 09/09/2014
Pengantar Algoritma
Cost Times
1 for j 2 to lenght (A) C1 n
2 key A[j] C2 n-1
3 sisipkan Aj kedalam barisan terurut A[1...j-1] 0 n-1
4 i j-1 C4 n-1
5 While (i>0 A[i] > key) C5
=2
6 A[i+1] A[i] C6 (
=2 1)
7 i i-1 C7 ( 1)
=2
8 A[i+1] key C8 n-1
Waktu komputasi tidak hanya tergantung pada jumlah data, tetapi juga tergantung pada
bagaimana barisan terurut.
Kasus terbaik
() = 1
=2
+ 2 + 3 = (1 + 2) + (3 1)
Laju waktu komputasi dalam fungsi linear.
Kasus terburuk
() = 1
=2
+ 2 + 3 =12
2 + (1
21 + 2) + (3 1)
Laju waktu komputasi dalam fungsi kuadratik.
Ingat =2 =(+1)
2 1
-
Perancangan Algoritma dan Stuktur Data
Pencarian Biseksi (Bagi dua)
BISECTION-SEARCH (A,key) Cost Times
1 ada false C1 1
2 for i 1 to [lenght [A]/2] C2 1
2n+1
3 if A[i] = key then C3 1
2n
4 posisi i C4
2
=1
5 ada true C5
2
=1
6 if A[n-i+1] = key then C6 1
2n
7 posisi n-i+1 C7
2
=1
8 ada true C8
2
=1
9 If not(ada) then C9 1
10 posisi length[A]+1 C10 S
11 A[posisi] data C11 S
() =3
2 + 2
2
=1
+ 2
2
=1
+ (2 + 3)
Simulasi A= (26,28,28,23)
1. ada = F
2. for i = 1
2.1 if (A[1] = key) F
2.2 if (A[4] = key) F
3. for i = 2
3.1 if (A[2] = key) T
3.1.1 posisi = 2
3.1.2 ada = True
-
3.2 if (A[3] = key) T
3.2.1 posisi = 3
3.2.2 ada = True
4. for i=3 (False)
5. if not(ada) = 3
Binary Search Tree (BST)
Struktur Data : Prosedur penyimpanan data dalam bentuk tertentu sedemikian
sehingga operasi dasar pada algoritma menjadi lebih efisien atau optimal.
Binary search tree (BST) : struktur data yang memenuhi sifat :
o Left (i) root (i)
o Right (i) > root (i)
Posisi
-
Selasa, 16/09/2014
Kompleksitas Algoritma
Kompleksitas Algoritma : Perubahan laju pertumbuhan input terhadap perubahan/
penambahan output. (Masalah pencarian : Laju pertumbuhan running time T(n) terhadap
penambahan jumlah data n).
Batas Atas (Upper Bound)
O(g(n)) = {f(n) : Terdapat konstanta c dan no sedemikian sehingga 0f(n)cg(n),
}
O(g(n)) (baca : big-oh g(n))
Menyatakan batas atas dari laju kompleksitas sebuah algoritma. Kasus
terburuk!
Batas Bawah
(g(n)) = {f(n):Terdapat konstanta c dan no sedemikian sehingga 0cg(n)f(n),
}
Cg(n)
f(n) f(n)=O(g(n))
Cg(n)
f(n)
f(n)=(g(n))
-
(g(n)) (baca : big-omega g(n))
Menyatakan batas bawah dari laju kompleksitas sebuah algoritma. Kasus
terbaik!
Contoh notasi :
n2 = O(n2) dan juga n2 = O(n3)
2n2+3n+1=2n2+O(n)
n2 = O(n2) dan juga n2 = (n2), maka n2 = (n2)
Pemanfaatan Notasi untuk Algoritma
- Kompleksitas Insertion-Sort : O(n2), (n)
- Kompleksitas Linear-Search dan Bisection-Search : (n) karena O(n)=(n)
- Algoritma BST-Search : (Log n)
Cepat Lebih Lama