Anda di halaman 1dari 25

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:
Memiliki nol atau lebih masukan dari luar.
Output
Memiliki minimal satu buah keluaran.
Definiteness (pasti)
Memiliki instruksi-instruksi yang jelas dan tidak ambigu.
Finiteness (ada batas):
Memiliki titik berhenti (stopping role)
Effectiveness (tepat dan efisien)
Sebisa mungkin harus dapat dilaksanakan dan efektif.
Algorithm Definition Overview
Algoritma mendeskripsikankan urutan langkah-
langkah 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 Solusi
Penyelesaian
Masalah
Algoritma
Source Code
Program
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
12
How to devise/design algorithms
How to express algorithms
How to validate algorithms
How to analyze algorithms
How to test a program

Importance of analyze algorithm
13
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

What do we analyze about them?
Correctness
Does the input/output relation match algorithm
requirement?
Amount of work done (aka complexity)
Basic operations to do task
Amount of space used
Memory used
Simplicity, clarity
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
19
8 9 5 6 11 34
7
20
6
5
8 7
5
7
5
Loop 1
Loop 2
Loop 3
Algorithm C
20
Using sort method to sort the input in increasing
order and return the first element of the sorted
data.

8 9 5 6 11 34 7 20
5 6 7 8 9 11 20 34
Sorting
black
box
Algorithm D
21
For each element, test whether it is the minimum.
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.


Which Algorithm Is Better?
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.

What do we need?
Measurement parameterized
by the size of the input.

The algorithms A,B,C are
implemented and run in a PC.

Algorithms D is implemented
and run in a supercomputer.

Let T
k
( n ) be the amount of
time taken by the Algorithm

1000 500
Input Size
T
b
(n)
T
a
(n)
4
0
2
T
c
(n)
R
u
n
n
i
n
g

t
i
m
e




(
s
e
c
o
n
d
)

T
d
(n)
Time vs. Size of Input
Terima Kasih
Thank You
Danke
Gratias
Merci


Kiitos


Grazias