Uploaded by muhammadmaalfarhan

Pertemuan ke-2 Algoritma

advertisement
1
STRATEGI ALGORITMA
-Algoritma-
PERTEMUAN 2
Novi Yanti, S.T, M.Kom
22-Mar-21
NVY-23032021
1
ALGORITMA
2
Algoritma bukan merupakan
jawaban dari masalah.
Algoritma dapat dianggap
sebagai serangkaian instruksi
untuk memecahkan masalah.

3/9/2010
22-Mar-21
NVY-23032021
2
Langkah-langkah Pembuatan
Algoritma
Pemahaman Permasalahan
Memutuskan:
sarana komputasi,
pencarian solusi tepat atau approksimasi,
struktur data,
teknik desain algoritma
Desain algoritma
Pembuktian kebenaran
algoritma
Analisis algoritma
Penulisan kode (source code)
22-Mar-21
NVY-23032021
3
1. Pemahaman Masalah


22-Mar-21
Sebelum memulai merancang algoritma,
permasalahan harus benar-benar dipahami terlebih
dahulu.
Ada beberapa kategori permasalahan yang sering
muncul di dunia komputing dan telah memiliki
algoritma penyelesaiannya. Jika permasalahan
yang akan diselesaikan termasuk dalam kategori
tersebut, kita dapat mengacu kepada algoritma
penyelesaiannya.
NVY-23032021
4
2.1. Penentuan Kemampuan Alat
Komputasi



22-Mar-21
Algoritma yg digunakan sekarang ini masih mengacu ke
model komputer John von Neumann (1903-1957), yaitu
arsitektur Random Access Memory (RAM).
Arsitektur RAM mengasumsikan bahwa instruksi2 komputer
dieksekusi satu per satu, baris per baris instruksi. Algoritma
yang didesain untuk dieksekusi pada jenis mesin tersebut
disebut sequential algorithm.
Generasi terbaru komputer saat ini memungkinkan proses
eksekusi secara paralel (parallel computing). Algoritmanya
disebut parallel algorithm.
NVY-23032021
5
2.2. Exact vs Approximate Solution



Exact solution: solusi tepat untuk pemecahan masalah
Approximate solution: solusi yang paling mendekati solusi
pemecahan masalah
Beberapa permasalahan yang menggunakan approximate
solution:



22-Mar-21
Pencarian akar kuadrat
Persamaan non-linier
Permasalahan2 yg exact solution nya membutuhkan waktu yang
sangat lama karena tingkat kompleksitasnya tinggi
NVY-23032021
6
2.3. Penentuan Struktur Data
Pemilihan struktur data yang paling tepat
sangat menentukan performa dari algoritma
yang akan didesain.
 Algorithms + Data Structures = Programs
(Wirth1976)


22-Mar-21
Macam2 struktur data: array, linked list,
stack, queue, hash table
NVY-23032021
7
2.4. Teknik Desain Algoritma



22-Mar-21
Teknik Desain Algoritma merupakan pendekatan umum
untuk memecahkan masalah dengan algoritma yang dapat
diterapkan ke berbagai permasalahan pada area yang
berbeda di dunia komputing. (LEV2007)
Mempelajari berbagai macam teknik desain algoritma
dapat membantu kita dalam mendesain algoritma untuk
permasalahan baru.
Teknik desain algoritma mengelompokkan algoritma sesuai
ide dasarnya, sehingga dapat mempermudah
pengkategorian dan pembelajarannya.
NVY-23032021
8
3. Metode untuk Menspesifikasikan
Algoritma

Beberapa metode yang dapat digunakan untuk menggambarkan
algoritma adalah:

Pseudocode
Gabungan antara bahasa natural dan bentuk bahasa pemrograman.
Contoh:
ALGORITHM Euclid(m,n)
//Menghitung FPB(m,n)
while n≠0 do
r  m mod n
m  n
n  r
return m

22-Mar-21
Flowchart
Menggunakan bentuk geometri yang mendeskripsikan langkah-langkah
algoritma
NVY-23032021
9
4. Pembuktian Kebenaran Algoritma





22-Mar-21
Merupakan langkah untuk membuktikan apakah algoritma
menghasilkan hasil yang diinginkan untuk sembarang input
yang sah dalam waktu yang finite.
Contoh: Pada Algoritma Euclid, FPB(m,n), nilainya akan
semakin kecil pada setiap iterasi dan algoritma berhenti
ketika angka kedua bernilai 0.
Teknik yang umumnya digunakan untuk pembuktian
algoritma adalah dengan induksi matematika.
Catatan: Tracing tidak menjamin kebenaran suatu
algoritma.
Jika algoritma terbukti tidak benar, maka dilakukan
redesign atau pertimbangkan untuk mengubah struktur data
yang digunakan.
NVY-23032021
10
5. Analisis Algoritma

Kita ingin agar algoritma kita berkualitas.
Beberapa faktor yang dipertimbangkan:
 Efficiency
Time efficiency (seberapa cepat algoritma)
◼ Space efficiency (berapa memori yang dibutuhkan)
◼
 Simplicity
(berkaitan dengan keindahan dan
kesederhanaan)
 Generality (berkaitan dengan ruang lingkup
permasalahan yang diselesaikan dan range input yang
dapat diterima oleh algoritma)
22-Mar-21
NVY-23032021
11
6. Penulisan Kode



22-Mar-21
Transisi dari algoritma ke source
code merupakan hal yang
beresiko, karena berpotensi
menghasilkan program yang
salah atau sangat tidak efisien.
Validitas program perlu dicek
dengan melakukan testing dan
debugging.
A good algorithm
is a result of repeated
effort and rework
RULE:
NVY-23032021
12
Tipe Permasalahan Penting

Sorting (Pengurutan)




22-Mar-21
Mengurutkan sejumlah item secara
menaik atau menurun, berdasarkan
key (kunci).
Sorting memudahkan pencarian sebuah item (Contoh: kamus, buku
telepon, daftar absensi, dll).
Ada banyak algoritma sorting, beberapa algoritma lebih unggul
dari yang lain, tetapi tidak ada algoritma terbaik yang dapat
menyelesaikan semua permasalahan.
Dua sifat yang perlu diperhatikan:
◼ Stabil : Menjaga urutan 2 item dengan nilai yang sama
◼ In place : Tidak membutuhkan memori tambahan
NVY-23032021
13
Searching (Pencarian)




22-Mar-21
Mencari sebuah item tertentu dalam sebuah himpunan,
berdasarkan key.
Ada banyak algoritma pencarian, mulai dari yang
sederhana hingga yang kompleks.
Tidak ada algoritma yang paling sesuai untuk semua
kondisi. Beberapa algoritma bekerja lebih cepat tetapi
membutuhkan memori tambahan; algoritma lainnya, cepat
tetapi hanya dapat bekerja pada array yang sudah
terurut, dst.
Umumnya searching digunakan bersamaan dengan proses
penambahan (add), pengubahan (update), dan
penghapusan (delete) item.
NVY-23032021
14
String Processing (Pemrosesan String)




22-Mar-21
String: Kumpulan karakter dari alfabet.
Macam-macam string:
 Text string: terdiri dari abjad (A-Z), angka (0-9), karakter spesial (!, #)
 Bit string: terdiri dari nilai 0 dan 1
 Gene sequence: dimodelkan dengan string karakter terdiri dari huruf A
(Adenine), C (Cytosine),
G (Guanine), T (Thymine)
Algoritma pemrosesan string sudah digunakan sejak komputer
diciptakan (untuk pemrosesan bahasa komputer dan kompilasi)
String matching (Pencocokan string): pencarian sebuah kata dalam
sebuah teks.
NVY-23032021
15
Permasalahan Graph
Graph: Sekumpulan vertex yang dihubungkan oleh garis
yang disebut edge
 Graph dapat digunakan untuk memodelkan
permasalahan, di antaranya jaringan transportasi &
telekomunikasi, penjadwalan proyek, dan game.

Beberapa algoritma Graph:
 Penelusuran graph (graph traversal)
 Pencarian path terpendek (shortest-path)
 Pengurutan graph secara topologis
 Beberapa permasalahan graph:
 Traveling Salesman Problem (TSP)
 Graph-coloring Problem

22-Mar-21
NVY-23032021
16
Combinatorial Problem



Permasalahan Kombinatorik:
permasalahan yang mencari objek
kombinatorik (misal: permutasi,
kombinasi, atau himpunan bagian)
yang memenuhi batasan tertentu
dan sifat yang diinginkan (misal:
memaksimalkan nilai atau
meminimalkan biaya)
Contoh: Traveling Salesman Problem
Secara umum, merupakan
permasalahan tersulit di dunia
komputing untuk 2 alasan:


22-Mar-21
Jumlah objek kombinatorik “tumbuh”
sangat cepat jika ukuran
permasalahan semakin besar
Tidak ada algoritma yang dapat
dengan tepat menyelesaikan
permasalahan ini dalam waktu yang
reasonable
NVY-23032021
17
Permasalahan Geometrik



Algoritma Geometrik berhubungan dengan objek geometrik
seperti titik, garis, dan poligon.
Algoritma geometrik dapat diaplikasikan pada aplikasi
seperti computer graphic, robotika, dan tomografi
(pengambilan gambar dengan metode section
contoh:
alat CT-Scan).
Contoh algoritma geometrik:

Closest-pair problem: Mencari jarak terdekat ntara dua titik
pada sebuah bidang

Convex-hull problem: Mencari poligon konveks
terkecil yang mencakup semua titik yang ada
pada sebuah bidang
22-Mar-21
NVY-23032021
18
Permasalahan Numerik




22-Mar-21
NVY-23032021
Merupakan permasalahan yang
melibatkan penggunaan objek
matematika yang kontinyu:
penyelesaikan persamaan,
penghitungan integral, evaluasi fungsi,
dsb.
Mayoritas dapat diselesaikan secara
aproksimasi saja.
Sempat menjadi primadona bagi
ilmuwan untuk menyelesaikan
permasalahan sains dan engineering.
Sejak 25 tahun lalu, dunia komputing
bergeser ke arah bisnis, sehingga
algoritma yang dibutuhkan adalah
algoritma untuk penyimpanan
informasi, temu kembali (retrieval),
transportasi melalui jaringan, dan
presentasi kepada pengguna.
19
Small Quiz
20
1.
2.
3.
Jelaskan langkah2 pembuatan algoritma!
Jelaskan perbedaan antara exact solution dan
approximation solution!
Apa yang dimaksud dengan permasalahan
kombinatorik? Jelaskan dan berikan contohnya!
3/9/2010
22-Mar-21
NVY-23032021
20
Fundamental Data Structures
21

Linear Data Structures
 Array
Item[0]
Item[1]
Item[2]
…..
Item[n-1]
◼ Menyimpan
data yang memiliki tipe yang sama
◼ Data diakses dengan menspesifikasikan index dari array
3/9/2010
22-Mar-21
NVY-23032021
21
22
Fundamental Data Structures
(cont’d)
 Linked
List
Tiap elemen disebut sebagai node yang menyimpan 2 info: sebuah
data dan pointer ke node lain dalam list
◼ Jika pointer dari sebuah node bernilai null, maka node tersebut tidak
memiliki node lanjutan (successor)
◼ Node diakses dengan menunjuk pada node pertama dan menelusuri
pointer sampai ditemukan node yang dicari
◼

Array dan Linked List digunakan untuk
merepresentasikan abstract data type (tipe data
abstrak) LIST
3/9/2010
22-Mar-21
NVY-23032021
22
23
Fundamental Data Structures
(cont’d)




Stacks : Proses insert dan delete hanya dapat
dilakukan dari 1 ujung saja (top)
Queue: Proses delete dilakukan dari front
(dequeue) dan proses insert dilakukan dari rear
(enqueue)
Priority queue: queue yang sudah terurut
Heap: Pengembangan dari priority queue (minimum
heap dan maximum heap)
3/9/2010
22-Mar-21
NVY-23032021
23
24
Fundamental Data Structures
(cont’d)

Graphs
 Terdiri
dari sekumpulan vertex yang saling terhubung
oleh edge
 Direpresentasikan dengan adjacency matrix
 Weighted graph: Graph yang edge-nya memiliki bobot
8
a
c
2
4
d
3
4
b
6
9
5
12
e
3/9/2010
22-Mar-21
NVY-23032021
24
25

Trees


Graph yang tidak memiliki cycle (acyclic)
Sets and Dictionaries



Set: Himpunan elemen tidak terurut yang berbeda satu sama lain
Multiset: Himpunan elemen tidak terurut yang tidak harus berbeda satu
sama lain
Dictionary: Struktur data yang mengimplementasikan pencarian,
penambahan, penghapusan item di dalam set/multiset
3/9/2010
22-Mar-21
NVY-23032021
25
Download