DAA

advertisement
Design and Analysis of Algorithm
Introduction
Aryo Pinandito, ST, M.MT - PTIIK UB
Algoritma


Apa itu Algoritma?
Kenapa memerlukan algoritma?
Asal Usul Kata
 Kata algoritma dari nama Abu Ja'fat Mohammed Ibn
Musa al-Khowarizmi, seorang ilmuan Persia yang
menulis buku berjudul Kitab al jabr w'al-muqabala (rules
of restoration and reduction) sekitar tahun 825 Masehi
 Tahun 1950 istilah algorithm selalu diasosiasikan dengan
Euclid's algorithm, yaitu suatu proses yang menjelaskan
cara mencari bilangan pembagi terbesar untuk dua buah
bilangan.
Definisi Algoritma

Merriam-Webster's Collegiet Dictionary istilah algorithm
diartikan sebagai prosedur langkah demi langkah
untuk memecahkan masalah atau penyelesaian
suatu tugas khususnya dengan menggunakan
bantuan komputer

Step-by-step procedure for calculations. More
precisely, it is an effective method expressed as a
finite list of well-defined instructions for calculating
a function
Syarat Algoritma

Menurut Donald E Knuth (The Art of Computer
Programming), algoritma harus memenuhi
persyaratan berikut:

Input:


Output


Memiliki instruksi-instruksi yang jelas dan tidak ambigu.
Finiteness (ada batas):


Memiliki minimal satu buah keluaran.
Definiteness (pasti)


Memiliki nol atau lebih masukan dari luar.
Memiliki titik berhenti (stopping role)
Effectiveness (tepat dan efisien)

Sebisa mungkin harus dapat dilaksanakan dan efektif.
Algorithm Definition Overview

Algoritma mendeskripsikankan urutan langkahlangkah yang diperlukan untuk menyelesaikan
suatu permasalahan dan memiliki ciri-ciri sebagai
berikut;




Selalu memiliki terminasi/langkah akhir
Setiap langkah dinyatakan secara jelas, tegas, dan tidak
bermakna ganda (ambigu)
Setiap langkah sederhana, sehingga kinerjanya efisien
Memberikan hasil (output), mungkin dengan satu atau
tanpa input.
What is a Program?


A program is the expression of an algorithm in a
programming language
a set of instructions which the computer will follow
to solve a problem
Algoritma dalam Kerangka Penyelesaian
Permasalahan
Permasalahan
Algoritma
Solusi
Source Code
Program
Penyelesaian
Masalah
Executable
Code
Algoritma: Kasus I

Terdapat ember A yang berisi cairan biru dan ember
B yang berisi cairan kuning. Misalkan ada sesorang
yang ingin menukarkan isi cairan dari kedua ember
tersebut bagaimana caranya?
Algoritma: Kasus II

Ada dua buah ember dengan kapasitas 5 liter dan 3
liter. Gunakan dua buah ember tersebut untuk
mendapatkan tepat 4 liter air.
Algoritma: Kasus III

Misalkan seorang pemuda tiba ditepisebuah sungai.
Pemuda tersebut membawa seekor kambing, seekor
serigala, dan sekeranjang sayur. Mereka hendak
menyeberangi sungai. Pemuda itu menemukan sebuah
perahu kecil yang hanya dapat memuat satu bawaannya
setiap kali menyeberang. Situasinya dipersulit dengan
kenyataan bahwa serigala tidak dapat ditinggal berdua
dengan kambing (karena serigala akan memangsa
kambing) atau kambing tidak dapat ditinggal berdua
dengan sekeranjang sayur (karena kambing akan
memakan sayur).
Bagaimana cara menyeberangkan pemuda dan seluruh
bawaannya dengan selamat?
Notasi algoritmik



Menggunakan uraian kalimat deskriptif
Flow chart
Pseudo code
The study of algorithm





How to devise/design algorithms
How to express algorithms
How to validate algorithms
How to analyze algorithms
How to test a program
12
Importance of analyze algorithm


Need to recognize limitations of various algorithms
for solving a problem
Need to understand relationship between problem
size and running time




When is a running program not good enough?
Need to learn how to analyze an algorithm's running
time without coding it
Need to learn techniques for writing more efficient
code
Need to recognize bottlenecks in code as well as
which parts of code are easiest to optimize
13
What do we analyze about them?

Correctness


Amount of work done (aka complexity)


Memory used
Simplicity, clarity


Basic operations to do task
Amount of space used


Does the input/output relation match algorithm
requirement?
Verification and implementation.
Optimality

Is it impossible to do better?
Kompleksitas algoritma




The complexity of an algorithm is simply the
amount of work the algorithm performs to complete
its task.
Ukuran yang digunakan untuk menyatakan
keefektifan sebuah algoritma
Ukuran yang digunakan untuk mengukur seberapa
besar pertumbuhan komputasi sebuah algoritma
Asymptotic Notations:



O (big oh)
 (big omega)
 (big theta)
Example: The Minimum Number Problem

Input: a sequence of integers stored in array.
Problem: Output the minimum.

Algorithm: Search

Algorithm A
Algorithm B
copy the input a to array t1;
assign n  size of input;


While n > 1
For i  1 to n/2
t2[ i ]  min (t1 [ 2*i ], t1[ 2*i + 1] );
copy array t2 to t1;
n n/2;
Output t2[1];
Visualization of Algorithm B
34
6
5
9
20
8
11
Loop 1
6
5
8
Loop 2
5
Loop 3
5
19
7
7
7
Algorithm C

Using sort method to sort the input in increasing
order and return the first element of the sorted
data.
34
6
5
20
6
20
8
11
7
black
box
Sorting
5
9
7
8
9
11
20
34
Algorithm D
For each element, test whether it is the minimum.
21
Which Algorithm Is Better?
The algorithms are correct, but
which is the best?
 Measure the running time
(number of operations needed).
 Measure the amount of memory
used.
 Note that the running time of the
algorithms increase as the size of
the input increases.
What do we need?
Correctness: Whether the algorithm computes
the correct solution for all instances
Efficiency: Resources needed by the algorithm
1. Time: Number of steps.
2. Space: Amount of memory used.
Measurement “model”: Worst case, Average case
and Best case.
Time vs. Size of Input
The algorithms A,B,C are
implemented and run in a PC.
4
Running time
(second)
Measurement parameterized
by the size of the input.
Td(n)
Tc (n)
Tb (n)
2
Ta (n)
Algorithms D is implemented
and run in a supercomputer.
0
Let Tk( n ) be the amount of
time taken by the Algorithm
500
1000
Input Size
감사합니 Grazias Kiitos
다Danke Gratias
‫ﺍﺮﻜﺷ‬
Terima Kasih 谢谢
Merci
धन्यवाद
Thank You
ありがとうございます
Download