Apr 21, 2023
Strategi Algoritma
Kuliah 1 : Peran Algoritma
E. Haodudin Nurkifli
Teknik Informatika
Universitas Ahmad Dahlan
Eko AB – Analisis dan Perancangan Algoritma 2
Penghargaan
Hand out kuliah Strategi Algoritma ini merupakan ringkasan dari berbagai sumber, yang berkaitan dengan Struktur dan analisis algoritma, Desain and Analisis Algorithm Komputer dari berbagai penjuru. Saya tidak mudah mengingat sumber-sumber tersebut. Namun saya sampaikan penghargaan yang setingginya atas jasa mereka, dan semoga bermannfaat.
Eko AB – Analisis dan Perancangan Algoritma 3
Konsep Dasar
Algoritma + Struktur Data = Program
Efisien Space/memoryTime/proses
Engineering product
Menurut Niclaus Wirth :Yang akhirnya ditulis dalam bukunya
Eko AB – Analisis dan Perancangan Algoritma 4
Dalam menghasilkan PROGRAM sebagai engineering product dlm bidang informatika / komputer, terdapat apa yg dikenal dengan
Timing Wild Software Schedule
Secara umum Terdapat dua hal yaitu :
– Man hour (waktu penyelesaian)– Costing (biaya)
Eko AB – Analisis dan Perancangan Algoritma 5
Costing Software
Apa parameter biaya pengembangan software ?
Per bit / byte Per statement Per modul Per baris Per user interface ?
Eko AB – Analisis dan Perancangan Algoritma 6
Apa yg ada pada berbagai alat berikut
Hand phone : antara HP yg satu dengan yg lain memiliki feature dan kinerja yg berbeda
Alat rumah tangga ke arah komputasi– Mesin cuci : pengontrolan dgn control
panelnya Otomotif
– Tipe mobil baru dengan komputasi : pengaturan gas tanpa kabel, kopling, pengaturan bahan bakar
Pengaturan Lift gedung tinggi De el el
Eko AB – Analisis dan Perancangan Algoritma 7
Apakah perbedaan unjuk kerja pada HP tersebut dibedakan atas besarnya media simpan yang ada?
Apakah kemampuan control panel pada berbagai alat rumah tangga memerlukan media simpan yg besar?
Apakah pengaturan otomasi pada mesin mobil bergantung pd kapasitas media simpan digitalnya?
Apakah otomasi pengaturan lift pada gedung tinggi membutuhkan media simpan digital yg besar?
Eko AB – Analisis dan Perancangan Algoritma 8
Struktur data ?
Kapasitas Media simpan digitalnya ?
Algoritma ?
Programnya ?
……?
Apa yg menentukan unjuk kerja mereka ?
Eko AB – Analisis dan Perancangan Algoritma 9
Peran Algoritma
Dalam mengembangkan berbagai alat kebutuhan manusia ke arah komputasi yg lebih berperan adalah
Algoritma
Bukan
Kemampuan / Kapasitas media simpan yg digunakan untuk menyimpan
Struktur Data
Eko AB – Analisis dan Perancangan Algoritma 10
Lanjt
Pengembangan Media simpan untuk struktur data
Bersifat Vertikal
Pengembangan Algoritma
Bersifat Horisontal
Vertikal :-Monoton, sekali ada yg mengembangkan ya sudah
Horisontal :-Variatif dan fleksibel : terbuka untuk pengembangan / implementasi dalam semua bidang
Eko AB – Analisis dan Perancangan Algoritma 11
Lanjt
Pengembangan Algoritma masih sangat terbuka untuk semua bidang kehidupan
Pertanian KesehatanKeamananPendidikanManajemen….?
Eko AB – Analisis dan Perancangan Algoritma 12
Lanjt
Mengembangkan
Memperbaiki
Meningkatkan
implementasi
Memahami
Menjelaskan
…
?
Mendasari
Eko AB – Analisis dan Perancangan Algoritma 13
Algoritma ?
Algoritma– Resep urutan proses yg baik dan benar dalam
bentuk langkah komputasi untuk menghasilkan sesuatu
• Urutan proses• Langkah komputasi• benar• Menghasilkan sesuatu
– Suatu cara spesifik untuk memecahkan dengan pasti suatu persoalan (Webster Dictionary)
Eko AB – Analisis dan Perancangan Algoritma 14
Program ?
Program merupakan ekspresi / implementasi algoritma dalam bahasa pemrograman tertentu
Kumpulan perintah yang mana komputer akan menjalankannya dalam menyelesaikan masalah
Eko AB – Analisis dan Perancangan Algoritma 15
Beberapa aplikasi
Persoalan teknik Strategi algoritma dapat diaplikasikan/dicontohkan pada proses :
– sorting
– Searching
– data retrieval
– network routing
– Games developing
– Graph
– dll
Eko AB – Analisis dan Perancangan Algoritma 16
Pelajaran Algoritma
How to devise algorithms Bagaimana Merencanakan algoritma ? How to express algorithms Bagaimana menjelaskan algoritma How to validate algorithms Bagaimana memvalidasi algoritma How to analyze algorithms Bagaimana menganalisa algoritma How to test a program Bagaimana mengetes program
Eko AB – Analisis dan Perancangan Algoritma 17
Pentingnya menganalisa Algoritma
Perlunya mengenali batasan dari variasi algoritma untuk penyelesaian persoalan
Perlunya memahami relasi antara ukuran masalah dan running time– Kapankah running program dinyatakan tidak cukup bagus?
Perlunya mempelajari bagaimana menganalisa runing time suatu algortima tanpa coding
Perlunya mempelajari teknik menulis program yang lebih efisien
Need to recognize bottlenecks in code as well as which parts of code are easiest to optimize
Eko AB – Analisis dan Perancangan Algoritma 18
Mengapa kita mengalisa sesuatu?
Mengerti perilakunya, dan (Pekerjaan -- Memilih,performance / unjuk kerja, memodifikasi)
Meningkatkan kinerja (Research)
Eko AB – Analisis dan Perancangan Algoritma 19
Apa yang kita analisa atas algoritma?
Kebenarannya– Apakah relasi antara input dan ouput
sesuai dengan kebutuhan algoritma? Kuantitas pekerjaan yang dikerjakan (time co
mplexity) – Operasi dasar untuk mengerjakan tugas
Jumlah space yg dibutuhkan– Memory yang digunakan (space/memory
complexity)
Eko AB – Analisis dan Perancangan Algoritma 20
Lanjutan
Kesederhanaan, Kejelasan– Verifikasi dan implementasi.
Optimalitas– Mungkinkah ia bekerja lebih baik?
Eko AB – Analisis dan Perancangan Algoritma 21
Contoh-Contoh Penerapan Algoritma
Kompresi file menggunakan Algoritma Huffman code (greedy algorithm)
Cryptanalys menggunakan Brucefource ( untuk memecahkan cipertext)
Jaringan komputer menggunakan algoritma Minimum Spaning Tree untuk menentukan harga minimum
SIG algoritma MST, Dynamic Programming, Color graphing
Eko AB – Analisis dan Perancangan Algoritma 22
PERTEMUAN CUKUP
Eko AB – Analisis dan Perancangan Algoritma 23
Kompleksitas
Kompleksitas algoritma adalah tingkat ke-komplek-an / ke-simple-an jumlah pekerjaan yang dikerjakan algortima untuk melaksanakan suatu pekerjaan tertentu
Eko AB – Analisis dan Perancangan Algoritma 24
Model RAM
Memiliki satu processor Melaksanakan satu instruksi a
t a time Setiap instruksi menyita "unit t
ime“ Memiliki operand ukuran tetap Memiliki fixed size storage (R
AM / virtual memory dan disk).
Eko AB – Analisis dan Perancangan Algoritma 25
Contoh 1: Operasi dasar
Apa hasil dari operasi berikut
(M div n)*n + (M mod n)
= M+n (a)= M*n (b)
= n2 (c)= M (d)= n (e)
Eko AB – Analisis dan Perancangan Algoritma 26
Contoh 2 : Linear Searching PR
buatlah minimal 2 algoritma /
prosedure / fungsi / pseudocode /
program untuk melakukan pencarian
(searching) suatu nilai x dalam
array A, misalnya
A=(7,3,5,9,4,2,6,8,1,0) 0 1 2 3 4 5 6 7 8 9
Eko AB – Analisis dan Perancangan Algoritma 27
Apa yg anda alami ?
Hal tersebut merupakan salah satu contoh apa yang disebut
Timing Wild
Nampaknya sepele, namun diluar yang dibayangkan sebelumnya
Eko AB – Analisis dan Perancangan Algoritma 28
Ketemu :=false
i:=0
While …… Do i:=i+1
If i<=9 then ketemu:=true else ketemu:=false
(a) A[i]<> x(b) A[i]=x(c) A[i]=x and i<=9(d) A[i]<>x and i<=9(e) i<=9 and A[i]<>x
?
?Apa kontrol perulangan yg tepat digunakan untuk statement tsb :
Eko AB – Analisis dan Perancangan Algoritma 29
Any Question ?
Apr 21, 2023
Contoh Algoritma
Eko AB – Analisis dan Perancangan Algoritma 31
Apa running time dari algorithm berikut?
PUZZLE(x)
while x != 1 if x is even then x = x / 2 else x = 3x + 1
Sample run: 7, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1
Eko AB – Analisis dan Perancangan Algoritma 32
The Selection Problem (1/2)
Problem: diberikan sekelompok n angka, ditentukan angka terbesar ke-k
Algoritma 1
– Simpan angka dalam array
– Urutkan array secara descending
– Hasil angka pada posisi k
Eko AB – Analisis dan Perancangan Algoritma 33
The Selection Problem(2/2)
Algoritma 2
– Simpan angka2, pertama k pada array
– Urutkan array secara descending
– Untuk setiap angka sisa, jika angka lebih besar dari angka ke-k,sisipkan angka tsb pd posisi yg benar pd array
– Hasil angka pada posisi k
Mana algorithm yg lebih baik?
Eko AB – Analisis dan Perancangan Algoritma 34
25, 90, 53, 23, 11, 34
INPUT
OUTPUTinstance
11
Algoritma
m:= a[1];for I:=2 to size of input if m > a[I] then m:=a[I]; return s
Data-Structurem
I.I What is an Algorithm?
Problem: Input adlh urutan bil integer yg disimpan dlm array. Outputnya adalah bil minimum.
Contoh: Algoritma Apa?
Eko AB – Analisis dan Perancangan Algoritma 35
Problem: Deskripsi dari hubungan Input-Output
Algoritma: Suatu urutan dari langkah computational yang memproses input menjadi output.
Struktur Data: metode pengelolaan atas penyimpanan dan pengambilan/pengaksesan data.
Our task: Diberikan suatu problem, rancangalah secara baik dan benar suatu algoritma yang menyelesaikan problem tersebut..
Definisi Masalah
Eko AB – Analisis dan Perancangan Algoritma 36
Problem: Input adlh urutan dari integer yg disimpan dlm array. Outputnya adalah max
Algorithm A
Contoh Algoritma A
Max:=Y[0]; For i:=1 to n-1 do
3 If Y[i]>max then max:=Y[i]
Eko AB – Analisis dan Perancangan Algoritma 37
Algoritma ini menggunakan 2 array temporary
Max:=0; For i:= 0 to (n div 2)-1 do Begin If X[2*i]>X[(2*i)+1] then bantu:=X[2*i] else bantu:=X[(2*i)+1]; If bantu>Max then Max:=bantu end; If (n mod 2) = 1 then If Max<X[n-1] then Max:=X[n-1];
Contoh Algoritma B
Eko AB – Analisis dan Perancangan Algoritma 38
8956 1134 720
34 9 20 11
34 20
34
Loop 0
Loop 1
Loop 2
Visualisasi Algoritma B
Eko AB – Analisis dan Perancangan Algoritma 39
Contoh Algoritma C
For i:= 0 to (n div 2)-1 do
If X[2*i]<X[(2*i)+1] then
X[2*i]:=X[(2*i)+1];
For i:= 1 to (n div 2) do
If X[i-1]>X[i] then X[i]:=X[i-1];
If (n mod 2) = 1 then If X[1]<X[n-1]
then X[i]:=X[n-1];
Eko AB – Analisis dan Perancangan Algoritma 40
Untuk setiap elemen, test kondisinya minimum.
1.iÃ0;°agÃtrue;2.While°agiÃi+1;minÃa[i];°agÃfalse;forjÃ1tosizeofinputifmin>a[j]then°agÃtrue;3.Outputmin.
Contoh Algoritma D
Eko AB – Analisis dan Perancangan Algoritma 41
Mengurutkan input secara menaik. Hasil elemen pertama dari data terurut.
8956 1134 720
5 6 7 8 9 11 20 34
Sorting black box
Contoh Pemanfaatan
Eko AB – Analisis dan Perancangan Algoritma 42
Mana algoritma yg lebih baik?
Semua algoritma benar, tetapi mana yang terbaik?
Mengukur running time (Jumlah
operasi yg dibutuhkan). Mengukur jumlah memori yg
digunakan. Catatan bahwa peningkatan dari
running time algoritma sebagai peningkatan ukuran dari input .
Eko AB – Analisis dan Perancangan Algoritma 43
Kebenaran: kondisi penghitungan algoritma Solusi yg benar untuk semua hal
Effisiensi : Resources yg dibutuhkan oleh algoritma
1. Time: Jumlah langkah.2. Space: Jumlah memori yg dibutuhkan
“Model” ukuran : Worst case, Average case and Best case.
Apa yg kita perlukan?
Eko AB – Analisis dan Perancangan Algoritma 44
Diukur dengan parameter jumlah input
Algorihtma A,B,C di implementasikan dan dijalankan pada PCAlgoritma D is implementasi-kan dan dijalankan oada supercomputer.
1000500Input Size
Tb (n)
Ta (n)
4
0
2
Tc (n)
Run
ning
tim
e
(sec
ond)
Td(n)
Time vs. Ukuran Input
Eko AB – Analisis dan Perancangan Algoritma 45
Methods of Proof
Proof by Contradiction– Assume a theorem is false; show that this assumption implie
s a property known to be true is false -- therefore original hypothesis must be true
Proof by Counterexample– Use a concrete example to show an inequality cannot hold
Mathematical Induction– Prove a trivial base case, assume true for k, then show hypo
thesis is true for k+1– Used to prove recursive algorithms
Eko AB – Analisis dan Perancangan Algoritma 46
Review: Induction
Suppose – S(k) is true for fixed constant k
• Often k = 0– S(n) S(n+1) for all n >= k
Then S(n) is true for all n >= k
Eko AB – Analisis dan Perancangan Algoritma 47
Proof By Induction
Claim:S(n) is true for all n >= k Basis:
– Show formula is true when n = k Inductive hypothesis:
– Assume formula is true for an arbitrary n Step:
– Show that formula is then true for n+1
Eko AB – Analisis dan Perancangan Algoritma 48
Induction Example: Gaussian Closed Form
Prove 1 + 2 + 3 + … + n = n(n+1) / 2– Basis:
• If n = 0, then 0 = 0(0+1) / 2– Inductive hypothesis:
• Assume 1 + 2 + 3 + … + n = n(n+1) / 2– Step (show true for n+1):
1 + 2 + … + n + n+1 = (1 + 2 + …+ n) + (n+1)
= n(n+1)/2 + n+1 = [n(n+1) + 2(n+1)]/2
= (n+1)(n+2)/2 = (n+1)(n+1 + 1) / 2
Eko AB – Analisis dan Perancangan Algoritma 49
Induction Example:Geometric Closed Form
Prove a0 + a1 + … + an = (an+1 - 1)/(a - 1) for all a 1– Basis: show that a0 = (a0+1 - 1)/(a - 1)
a0 = 1 = (a1 - 1)/(a - 1)– Inductive hypothesis:
• Assume a0 + a1 + … + an = (an+1 - 1)/(a - 1) – Step (show true for n+1):
a0 + a1 + … + an+1 = a0 + a1 + … + an + an+1
= (an+1 - 1)/(a - 1) + an+1 = (an+1+1 - 1)/(a - 1)
Eko AB – Analisis dan Perancangan Algoritma 50
Induction
We’ve been using weak induction Strong induction also holds
– Basis: show S(0)– Hypothesis: assume S(k) holds for arbitrary k <= n– Step: Show S(n+1) follows
Another variation:– Basis: show S(0), S(1)– Hypothesis: assume S(n) and S(n+1) are true– Step: show S(n+2) follows
Eko AB – Analisis dan Perancangan Algoritma 51
Basic Recursion
Base case: value for which function can be evaluated without recursion
Two fundamental rules– Must always have a base case– Each recursive call must be to a case that eventually leads t
oward a base case
Eko AB – Analisis dan Perancangan Algoritma 52
Bad Example of Recursion
Example of non-terminating recursive program (let n=1)
int bad(unsigned int n){
if(n == 0) return 0; else return(bad(n/3 + 1) + n - 1);}
Eko AB – Analisis dan Perancangan Algoritma 53
Recursion(1/2)
Problem: write an algorithm that will strip digits from an integer and print them out one by one
void print_out(int n){ if(n < 10) print_digit(n); /*outputs single-digit to terminal*/ else{ print_out(n/10); /*print the quotient*/ print_digit(n%10); /*print the remainder*/ }}
Eko AB – Analisis dan Perancangan Algoritma 54
Recursion(2/2)
Prove by induction that the recursive printing program works:– basis: If n has one digit, then program is correct– hypothesis: Print_out works for all numbers of k or fewer dig
its– case k+1: k+1 digits can be written as the first k digits follow
ed by the least significant digit
The number expressed by the first k digits is exactly floor( n/10 )? which by hypothesis prints correctly; the last digit is n%10; so the (k+1)-digit is printed correctly
By induction, all numbers are correctly printed
Eko AB – Analisis dan Perancangan Algoritma 55
Recursion
Don't need to know how recursion is being managed Recursion is expensive in terms of space requiremen
t; avoid recursion if simple loop will do
Last two rules– Assume all recursive calls work– Do not duplicate work by solving identical problem in separat
ed recursive calls
Evaluate fib(4) -- use a recursion tree
fib(n) = fib(n-1) + fib(n-2)
Eko AB – Analisis dan Perancangan Algoritma 56
What is Algorithm Analysis?
How to estimate the time required for an algorithm Techniques that drastically reduce the running time of
an algorithm A mathemactical framwork that more rigorously descr
ibes the running time of an algorithm
Eko AB – Analisis dan Perancangan Algoritma 57
Running time for small inputs
Eko AB – Analisis dan Perancangan Algoritma 58
Running time for moderate inputs
Eko AB – Analisis dan Perancangan Algoritma 59
Important Question
Is it always important to be on the most preferred curve?
How much better is one curve than another? How do we decide which curve a particular algorithm
lies on? How do we design algorithms that avoid being on the
bad curves?
Eko AB – Analisis dan Perancangan Algoritma 60
Algorithm Analysis(1/5)
Measures the efficiency of an algorithm or its implementation as a program as the input size becomes very large
We evaluate a new algorithm by comparing its performance with that of previous approaches– Comparisons are asymtotic analyses of classes of algorithm
s
We usually analyze the time required for an algorithm and the space required for a datastructure
Eko AB – Analisis dan Perancangan Algoritma 61
Algorithm Analysis (2/5)
Many criteria affect the running time of an algorithm, including– speed of CPU, bus and peripheral hardware– design think time, programming time and debuggin
g time– language used and coding efficiency of the progra
mmer– quality of input (good, bad or average)
Eko AB – Analisis dan Perancangan Algoritma 62
Algorithm Analysis (3/5)
Programs derived from two algorithms for solving the same problem should both be– Machine independent– Language independent– Environment independent (load on the system,...)– Amenable to mathematical study– Realistic
Eko AB – Analisis dan Perancangan Algoritma 63
Algorithm Analysis (4/5)
In lieu of some standard benchmark conditions under which two programs can be run, we estimate the algorithm's performance based on the number of key and basic operations it requires to process an input of a given size
For a given input size n we express the time T to run the algorithm as a function T(n)
Concept of growth rate allows us to compare running time of two algorithms without writing two programs and running them on the same computer
Eko AB – Analisis dan Perancangan Algoritma 64
Algorithm Analysis (5/5)
Formally, let T(A,L,M) be total run time for algorithm A if it were implemented with language L on machine M. Then the complexity class of algorithm A isO(T(A,L1,M1) U O(T(A,L2,M2)) U O(T(A,L3,M3)) U ...
Call the complexity class V; then the complexity of A is said to be f if V = O(f)
The class of algorithms to which A belongs is said to be of at most linear/quadratic/ etc. growth in best case if the function TA best(n) is such (the same also for average and worst case).
Eko AB – Analisis dan Perancangan Algoritma 65
Asymptotic Performance
In this course, we care most about asymptotic performance– How does the algorithm behave as the problem
size gets very large?• Running time• Memory/storage requirements• Bandwidth/power requirements/logic gates/etc.
Eko AB – Analisis dan Perancangan Algoritma 66
Asymptotic Notation
By now you should have an intuitive feel for asymptotic (big-O) notation:– What does O(n) running time mean? O(n2)?
O(n lg n)? – How does asymptotic running time relate to
asymptotic memory usage? Our first task is to define this notation more formally
and completely
Eko AB – Analisis dan Perancangan Algoritma 67
Analysis of Algorithms
Analysis is performed with respect to a computational model
We will usually use a generic uniprocessor random-access machine (RAM)– All memory equally expensive to access– No concurrent operations– All reasonable instructions take unit time
• Except, of course, function calls– Constant word size
• Unless we are explicitly manipulating bits
Eko AB – Analisis dan Perancangan Algoritma 68
Input Size
Time and space complexity– This is generally a function of the input size
• E.g., sorting, multiplication– How we characterize input size depends:
• Sorting: number of input items• Multiplication: total number of bits• Graph algorithms: number of nodes & edges• Etc
Eko AB – Analisis dan Perancangan Algoritma 69
Running Time
Number of primitive steps that are executed– Except for time of executing a function call most
statements roughly require the same amount of time
• y = m * x + b• c = 5 / 9 * (t - 32 )• z = f(x) + g(y)
We can be more exact if need be
Eko AB – Analisis dan Perancangan Algoritma 70
Analysis
Worst case– Provides an upper bound on running time– An absolute guarantee
Average case– Provides the expected running time– Very useful, but treat with care: what is “average”?
• Random (equally likely) inputs• Real-life inputs
Eko AB – Analisis dan Perancangan Algoritma 71
Function of Growth rate