1-intro strategi algoritmik

31
INTRODUKSI STRATEGI ALGORITMIK S1 Teknik Informatika Universitas Kristen Maranatha 1

Upload: rezkyfp

Post on 12-Aug-2015

59 views

Category:

Documents


1 download

DESCRIPTION

strago

TRANSCRIPT

Page 1: 1-Intro Strategi Algoritmik

1

INTRODUKSI STRATEGI

ALGORITMIKS1 Teknik Informatika

Universitas Kristen Maranatha

Page 2: 1-Intro Strategi Algoritmik

2

STRATEGI ALGORITMIK kumpulan metode atau teknik untuk

memecahkan masalah guna mencapai tujuan yang ditentukan

deskripsi metode atau teknik tsb dinyatakan dalam suatu urutan langkah-langkah penyelesaian (ALGORITMA) [1]

Page 3: 1-Intro Strategi Algoritmik

3

INTRODUCTION Strategi pemecahan masalah

Tujuan : mendapatkan algoritma yang efisien dalam memecahkan suatu masalah

Notasi Big OAlat untuk membandingkan beberapa

algoritma Efisiensi berdasarkan waktu proses

Page 4: 1-Intro Strategi Algoritmik

4

STRATEGI PEMECAHAN MASALAH Strategi solusi langsung (direct solution strategies)

Algoritma Brute force Algoritma Greedy

Page 5: 1-Intro Strategi Algoritmik

5

STRATEGI PEMECAHAN MASALAH Strategi solusi langsung

Algoritma Brute force Exhaustive search/ generate and test Enumerasi semua kemungkinan solusi Combinatorial explosion

Contoh : mencari bilangan prima antara 1 s.d N Mis. N adalah 20, maka bil. prima : 2, 3, 5, 7, 11, 13, 17, 19

Page 6: 1-Intro Strategi Algoritmik

6

CONTOH BRUTE FORCE: CARI BILANGAN PRIMA (1/2)

[2]

Page 7: 1-Intro Strategi Algoritmik

7

CONTOH BRUTE FORCE: CARI BILANGAN PRIMA (2/2)

Komputer: AMD Turion 64 1.9 GHz dengan 2 GB RAM, 160 GB HDD dan Windows Vista.

Page 8: 1-Intro Strategi Algoritmik

8

STRATEGI PEMECAHAN MASALAH Strategi solusi langsung

Algoritma Greedy Pencarian solusi yang optimum

Contoh : Mencari jalur tersingkat dari kota A ke B Menghitung koin/lembaran uang kembalian/

gajian pegawai Mis. 3600 : 3 lembar ribuan, 1 koin 500, 1 koin

100

Page 9: 1-Intro Strategi Algoritmik

9

STRATEGI PEMECAHAN MASALAH Strategi berbasis pencarian pada

ruang status (state-space base strategies)Algoritma Backtracking Algoritma Branch and Bound

Page 10: 1-Intro Strategi Algoritmik

10

STRATEGI PEMECAHAN MASALAH Strategi berbasis pencarian pada

ruang statusAlgoritma Backtracking

Enumerasi set of partial candidates Dalam bentuk search tree Memakai Depth First Search Lebih cepat dari Brute Force

Contoh : perwarnaan peta (map coloring)

Page 11: 1-Intro Strategi Algoritmik

11

STRATEGI PEMECAHAN MASALAH Strategi berbasis pencarian pada

ruang status Algoritma Branch and Bound

Menemukan solusi optimal Memakai strategi Best First Search

Contoh : Traveling Salesman Problem

Page 12: 1-Intro Strategi Algoritmik

12

STRATEGI PEMECAHAN MASALAH Strategi solusi atas-bawah (top-down solution strategies)

Algoritma Divide and Conquer

Strategi solusi bawah-atas (bottom-up solution strategies)

Dynamic Programming

Page 13: 1-Intro Strategi Algoritmik

13

STRATEGI PEMECAHAN MASALAH Strategi solusi atas-bawah (top-down solution strategies)

Algoritma Divide and Conquer Dekomposisi masalah Pemecahan sub masalah Penggabungan solusi

Contoh : Quick sort Merge sort

Page 14: 1-Intro Strategi Algoritmik

14

STRATEGI PEMECAHAN MASALAH Strategi solusi bawah-atas (bottom-up solution strategies)

Dynamic Programming pemecahan masalah dengan cara menguraikan

solusi menjadi sekumpulan langkah (step) /tahapan (stage)

solusi dari persoalan dapat dipandang dari serangkaian keputusan yang saling berkaitan

Contoh : Knapsack 0/1 problem

Page 15: 1-Intro Strategi Algoritmik

15

LANGKAH DASAR ALGORITMA Sederhanakan masalah Membangun rencana penyelesaian

secara matematis Merancang algoritma Menguji kebenaran algoritma Implementasi dengan suatu bahasa

pemrograman yang dimengerti Dokumentasi Analisis kompleksitas algoritma

Page 16: 1-Intro Strategi Algoritmik

16

WAKTU PROSES ALGORITMA (1/2) Waktu proses algoritma

lamanya waktu yang diperlukan komputer untuk menjalankan sebuah algoritma.

Karena kecepatan komputer yang biasa kita gunakan sangat tinggi, maka biasanya waktu proses itu tidak terlalu kita perhatikan.

Tidak semua algoritma dapat selesai diproses dalam waktu kurang dari satu detik.

Page 17: 1-Intro Strategi Algoritmik

17

WAKTU PROSES ALGORITMA (2/2) Algoritma yang kompleks dapat

memerlukan waktu beberapa menit hingga berhari-hari untuk menyelesaikan prosesnya.

Hal ini berlaku bahkan di komputer paling canggih sekalipun.

Sejumlah algoritma dengan kompleksitas sangat tinggi bahkan ada yang memakan waktu lebih dari satu tahun untuk mengeluarkan hasil.

Dalam hal merancang algoritma yang cukup kompleks, sangat penting bagi kita untuk menghitung waktu proses algoritma.

Page 18: 1-Intro Strategi Algoritmik

18

VARIASI WAKTU PROSES (1/2) Algoritma bekerja berdasarkan input

yang dimasukkan user.

Setiap input memiliki ukuran. Misalnya kita hendak mengurutkan sejumlah bilangan, banyaknya bilangan yang perlu diurutkan merupakan ukuran besarnya input

Makin besar ukuran input yang dimasukkan, pada umumnya waktu proses akan semakin lama.

Page 19: 1-Intro Strategi Algoritmik

19

VARIASI WAKTU PROSES (2/2) Tergantung pada isi input, waktu proses

dapat bervariasi :Keadaan terbaik (best case)

Dilambangkan dengan notasi (...) dibaca Theta

Keadaan rata-rata (average case) Dilambangkan dengan notasi (...)

dibaca OmegaKeadaan terburuk (worst case)

Dilambangkan dengan notasi O(...) dibaca Big-O

Kinerja sebuah algoritma biasanya diukur dengan menggunakan patokan keadaan terburuk (worst case) yang dinyatakan dengan Big-O

Page 20: 1-Intro Strategi Algoritmik

20

NOTASI BIG O Big-Oh

Deskripsi umum dari algoritmaCompare algorithms in the limit

Mis. 20N hours vs N2 microseconds which is better?

Page 21: 1-Intro Strategi Algoritmik

21

CONTOHy = 3x

y = 6x-2

y = 15x + 44

Family O(n)

Kurva garis lurus Double input → double

time

y = x2

y = x2-6x+9

y = 3x2+4x

Family O(n2)

Kurva parabolaDouble input → quadruple time

Page 22: 1-Intro Strategi Algoritmik

22

DEFINISI FORMAL O-notation is an upper-bound, this

means that N is O(N), but it is also O(N2); we try to provide tight bounds. Formally:A function g(N) is O(f(N)) if there exist

constants c and n such that g(N) < cf(N) for all N > n cf(N)

g(N)

x = n

Page 23: 1-Intro Strategi Algoritmik

23

BIG-OH CALCULATIONS FROM CODE Search for element in array:

What is complexity (using O-notation)? A adalah array yang memiliki indeks 0, ..., n-1

Algoritma mencari posisi x di dalam array A return posisi x (idx) indeks 0 while (indeks < n) and (Aindeks x) do

indeks indeks + 1 endwhile

{ indeks < n } if indeks < n then { x ditemukan } idx indeks else idx -1 { x tidak ditemukan } endif

Best case? Average case? Worst case?

Page 24: 1-Intro Strategi Algoritmik

24

MEASURES OF COMPLEXITY

Worst caseGood upper-bound on behaviorNever get worse than this

Average caseWhat does average mean? Averaged over all inputs? Assuming uniformly

distributed random data?

Page 25: 1-Intro Strategi Algoritmik

25

MEMBACA BIG-OH O(1) artinya algoritma konstan O(log n) contohnya pada full balanced

Binary Search Tree O(n) artinya algoritma linear O(n log n) contohnya algoritma merge sort O(n2) artinya algoritma quadratic O(n3) artinya algoritma qubic O(nm) artinya algoritma eksponensial Notasi Big-O bisa berisi kombinasi dari

contoh di atas

Page 26: 1-Intro Strategi Algoritmik

26

ALGORITMA ITU PENTING (1/2) Komputer A yang cepat (109 instruksi

per detik) melakukan insertion sort melawan komputer B yang lebih lambat (107 instruksi per detik) melakukan merge sort. Manakah yang lebih cepat? [3]

Masing2 komputer hendak mengurutkan 1.000.000 bilangan.

Insertion sort 2n2 instruksi untuk mengurutkan n bilangan.

Page 27: 1-Intro Strategi Algoritmik

27

ALGORITMA ITU PENTING (2/2) Merge sort 50n log n instruksi untuk

mengurutkan 1.000.000 bilangan.

Untuk mengurutkan 1.000.000 bilangan, komputer A membutuhkan

Komputer B membutuhkan

Page 28: 1-Intro Strategi Algoritmik

28

106 INSTRUCTIONS/SEC, RUNTIMES

N O(log N)

O(N) O(N log N)

O(N2)

10 0.000003 0.00001 0.000033 0.0001

100 0.000007 0.00010 0.000664 0.1000

1,000 0.000010 0.00100 0.010000 1.0

10,000 0.000013 0.01000 0.132900 1.7 min

100,000 0.000017 0.10000 1.661000 2.78 hr

1,000,000 0.000020 1.0 19.9 11.6 day

1,000,000,000

0.000030 16.7 min 18.3 hr 318 centuries

Page 29: 1-Intro Strategi Algoritmik

29

LATIHAN Buatlah algoritma untuk mencari suatu

nilai dalam suatu matriks A berukuran n x n.

Bagaimana kompleksitas algoritma tersebut jika dituliskan dengan notasi big O ?

Best case ? Average case ? Worst case ?

Page 30: 1-Intro Strategi Algoritmik

30

BUAT RANGKUMAN Buat rangkuman untuk membantu

pemahaman saudara:Bab 2.1 dan Tabel di halaman 59 dari bukuIntroduction to The Design and Analysis of Algorithms 2nd edition oleh Anany Levitin.

Buat rangkuman dengan tulisan tangan. Dikumpulkan besok (8 Januari 2013)

sebelum perkuliahan dimulai.

Page 31: 1-Intro Strategi Algoritmik

31

REFERENSI[1] Materi kuliah IF 2251 Strategi Algoritmik :

http://kur2003.if.itb.ac.id/ Mata kuliah IF 2251 Strategi Algoritmik (sem.4)

[2] Efficient Prime Number Generating Algorithmshttps://en.wikibooks.org/wiki/Efficient_Prime_Number_Generating_Algorithms

[3] Cormen, T.H., Leiserson, C. E., Rivest, R.L., dan Stein, C. (2007) Introduction to Algorithms 2nd edition. The MIT Press.