Pengantar Algoritma

Anda mungkin juga menyukai

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;

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;

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]

key

A[j]

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

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

j1

A[i+1]

A[i+1]

A [i]

i1
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
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)

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)

Anda mungkin juga menyukai