Anda di halaman 1dari 8

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

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;

Deklarasi

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;

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

8. If ada = false
9.

Then indeks

10. Return indeks

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.

length [A] + 1;

Akan menghentikan program

Kembali ke awal program

Implementasi Pseudo-code Lain

Linear-Search 1 (A,Key)
1. Ada

false

2. for indeks

Deklarasi

1 to length [A]

Untuk indeks dari 1 sampai panjang unsur

3. if A[indeks] = key
4.

then ada = True;

5.

break;

Jika key di temukan (ada = True), maka pencarian terhenti


dan akan berlanjut ke tahap 6.

6. if ada = false
7.

then A[Indeks]

8. Return indeks

Akan menghentikan program

key;

Kembali ke awal program

Linear-Search 2(A,Key)
1. for indeks

Untuk indeks dari 1 sampai panjang unsur

1 to length [A]

2. if A[Indeks] = key
3.

Jika key di temukan, maka pencarian terhenti.

then break;

4. if indeks > length[A]


5.

then A[indeks]

6. return indeks

Jika indeks besar dari panjang unsur,maka


indeks tertentu = key

key;

Kembali ke awal program

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]
A[j]

Untuk indeks dari 2 sampai panjang unsur

key

<> sisip A[j] kedalam barisan terurut A[1 ... j 1]

while ( i > 0 A[i] > key)

j1

i = j -1

A[i+1]

Key = unsur ke-j (tentukan key)

A[i+1]

Jika i > 0 A[i] > key benar, maka akan ke-tahap

selanjutnya (tahap 6).

A [i]

i1
key

Unsur [ i + 1 ] = Unsur i

Jadi i = i - 1
Unsur [ i + 1 ] = key

Selasa, 09/09/2014
Pengantar Algoritma
Cost

Times

for j

2 to lenght (A)

C1

key

A[j]

C2

n-1

<>sisipkan Aj kedalam barisan terurut A[1...j-1]

n-1

C4

n-1

While (i>0 A[i] > key)

j-1

C5

=2

A[i+1]

A[i]

C6

( 1)
=2

i-1

C7

( 1)
=2

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 + 3 = (1 + 2 ) + (3 1 )
=2

Laju waktu komputasi dalam fungsi linear.

Kasus terburuk

() = 1 + 2 + 3 =
=2

1 2
1
+ ( 1 + 2 ) + (3 1 )
2
2

Laju waktu komputasi dalam fungsi kuadratik.

Ingat =2 =

(+1)
2

Perancangan Algoritma dan Stuktur Data


Pencarian Biseksi (Bagi dua)
BISECTION-SEARCH (A,key)

Cost

Times
1

ada

false

C1

for i

1 to [lenght [A]/2]

C2

3
4

if A[i] = key then


posisi

n+1

C3

C4

=1

ada

true

C5

=1

6
7

if A[n-i+1] = key then


posisi

C6

n-i+1

C7

=1

ada

true

C8

2
=1

If not(ada) then

10

posisi

11

A[posisi]

C9

length[A]+1

C10

data

C11

=1

=1

3
() = + 2 + 2 + (2 + 3)
2
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

Posisi

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)

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)

Cg(n)
f(n)

f(n)=O(g(n))

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
f(n)
Cg(n)

f(n)=(g(n))

(g(n)) = {f(n):Terdapat konstanta c dan no sedemikian sehingga 0cg(n)f(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)


Cepat

Lebih Lama

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)