10/22/2015
1
1-1Analisis Algoritma:
Fakultas Teknologi dan Desain Program Studi Teknik Informatika
Anany Levitin, Introduction to Design and Analysis of Algorithm, 3rdEdition, Pearson Education, Inc., Addison-Wesley
Bab 1: Pendahuluan
Agenda
• Introduction
• What is an Algorithm?
• Fundamental of Algorithmic Problem Solving
• Important Problem Solving
• Fundamental Data Structures
Analisis Algoritma | 2
Introduction
• Mengapa kita mempelajari algoritma?• Terdapat 2 alasan mengapa kita mempelajari algoritma:
• alasan praktis: memahami algoritma standar yang digunakan dari berbagai area komputasi yang berbeda; dan
• alasan teoritis: algoritma sebagai “nyawa” dari ilmu komputer (algoritmik).
• David Harel “Algorithmics: the Spirit of Computing”
menyatakan “algorithmics is more than a branch of computer science. It is the core of computer science, and, in all fairness, can be said to be relevant to most of science, business, and technology.”[Har92, p.6]
Analisis Algoritma | 3
Introduction
• Tidak ada program yang dibuat/dibangun tanpa
menggunakan algoritma.
• Mempelajari algotritma mengembangkan kemampuan
analitik.
• Algoritma dapat dipandang sebagai sebuah solusi khusus
dalam penyelesaian masalah.
• Algoritma bukan hanya sekedar solusi, tetapi lebih kepada
mendefinisikan prosedur penyelesaian masalah.
10/22/2015
2
What is an Algorithm?
• Algoritma adalah:
“a sequence of unambiguous instructions for solving a problem.”
Analisis Algoritma | 5
What is an Algorithm?
• Algoritma dapat berupa resep, proses, metode, tehnik,
prosedur, routine yang memenuhi kriteria beriku:
1. Finiteness, berhenti ketika mencapai sebuah tahapan tertentu 2. Definiteness, rigorously and unambiguously specified 3. Input, nilai masukan yang valid telah ditentukan
4. Output, dapat dibuktikan dengan hasil yang tepat setelah sebuah
masukan valid diberikan
5. Effectiveness, memiliki tahapan-tahapan sederhana.
Analisis Algoritma | 6
What is an Algorithm?
• Sebagai contoh: tentukan prosedur penyelesaian masalah
untuk kasus menyajikan segelas minuman jus alpukat!
• Prosedur penyelesaian masalah untuk kasus di atas tidak
dapat dikatakan sebagai algoritma (walaupun sistematis dan benar). Why?
• Algoritma adalah prosedur penyelesaian masalah yang
sistematis yang dieksekusi oleh komputer.
• Contoh kasus lain: algoritma pencarian solusi menggunakan
Euclid’s algorithm
Analisis Algoritma | 7
What is an Algorithm?
• Euclid’s algorithm, algoritma untuk menentukan nilai pembagian 2 bilangan bulat non-negatif terbesar (greatest common divisor of two nonnegative integer) yang dinotasikan dengan:
• Contoh: menentukan gcd(60, 24)
gcd(60, 24) = gcd(24,12) = gcd(12,0) = 12
• Algoritmanya?
10/22/2015
3
Fundamentals of Algorithmic Problem Solving
Analisis Algoritma | 10 exact and approximate algorithms
methods of specifying an algorithm pseudocode, flowchar
analyze the algorithm time efficiency, space efficiency, simplicity, generality
algorithm design technique
“a general approach to solving problems algorithmically that is applicable to a variety of
problems from different areas of computing.”
sequential and parallel algorithms
Fundamentals of Algorithmic Problem Solving
Analisis Algoritma | 11
• Terdapat 2 isu yang terkait dengan algoritma:
1. Bagaimana merancang sebuah algoritma?
2. Bagaimana melakukan analisa terhadap algoritma secara efisien?
1. Bagaimana merancang sebuah algoritma?
• Menentukan strategi/tehnik yang digunakan
• Strategi/tehnik yang data digunakan:
1. Brute force 2. Divide conquer
Fundamentals of Algorithmic Problem Solving
Analisis Algoritma | 12
3. Decrease conquer 4. Space and time tradeoffs 5. Greedy approach 6. Dynamic programming 7. Iterative improvement 8. Backtracking 9. Branch and bound
Fundamentals of Algorithmic Problem Solving
Analisis Algoritma | 13 2. Bagaimana melakukan analisa terhadap algoritma secara
efisien?
1. Seberapa baikkah sebuah algoritma?
• correctnest;
• time efficiency; dan
• space efficiency
2. Apakah terdapat algoritma lainnya yang lebih baik?
• Lower bound
10/22/2015
4
Important Problem Solving
• Sorting
• Searching
• String Processing
• Graph Problems
• Combinatorial Problems
• Geometric Problems
• Numerical Problems
Analisis Algoritma | 14
Fundamental Data Structures
• List
• Array
• Linked list
• String
• Stack
• Queue
• Priority queue
• Graph
Analisis Algoritma | 15
• Trees
• Set and dictionary
1-16