01 PengantarAlgoritma ASD
01 PengantarAlgoritma ASD
Armin Lawi
Matematika dan `Teknik Informatika
Universitas Hasanuddin
Apa itu algoritma?
Prosedur komputasional yang terdefinisi dengan baik yang
membutuhkan nilai (atau himpunan nilai) sebagai input dan
menghasilkan nilai (atau himpunan nilai) sebagai output
Alat bantu (tools) menyelesaikan masalah komputasional yang
terdefinisi dengan baik (well-defined computational problem)
Metode penyelesaian yang logis dan ‘wajib’ benar
(correctness) sesuai keinginan masalah (desired solution)
Algoritma
Masalah
Desain dan Analisis Algoritma
Pseudocode: Kode untuk memudahkan pemahaman algoritma
yang dapat ditransformasi kedalam berbagai Bahasa
Pemrograman.
Kompleksitas algoritma: Analisis kebutuhan dari algoritma,
khususnya waktu komputasi dan kapasitas memory.
Strategi algoritma: Perancangan kadang membutuhkan
strategi perancangan algoritma tertentu.
Dalam kuliah ini: Greedy algorithm, divide-and-conquer,
dynamic programming dan strategi-strategi algoritma meta-
heuristik untuk masalah optimisasi.
Struktur data: Menyimpan dan mengorganisasi data untuk
kepentingan akses dan modifikasi.
(Tidak dibahas lengkap karena diluar topik MK ini)
Masalah NP-lengkap: Tidak ada solusi efisien.
Contoh Masalah Komputasional
Masalah Pencarian Data (Searching Problem)
Input: Barisan n bilangan asli <a1, a2, …, an> dalam larik A
dan sebuah bilangan key yang ingin dicari.
Output: Lokasi key dalam A. Jika key tidak ditemukan dalam A,
tambahkan key sebagai unsur terakhir.
Contoh
Input: Barisan bilangan A = <31, 41, 59, 26, 41, 58> dan key = 26
Output: Indeks dari posisi key. (Untuk kasus ini key=26).
Algoritma pencarian (searching algorithm) mengembalikan nilai
(unsur) dari indeks posisi key adalah 4.
Merancang Algoritma Sederhana
Algoritma Linear Searching (naïve)
Telusuri seluruh indeks dari A untuk membandingkan
apakah unsur dalam indeks yang ditelusuri sama dengan key.
Jika key = unsur dalam indeks, algoritma berhenti.
Jika key tidak ditemukan hingga indeks terakhir dari A,
tambahkan key sebagai unsur dari indeks terakhir.
Algoritma berhenti dan kembalikan nilai indeks dari A.
Contoh:
Input: Barisan bilangan A= <31, 41, 59, 26, 41, 58>
Output: Barisan bilangan terurut A = <26, 31, 41, 41, 58, 59>
Algoritma pengurutan (sorting algorithm) mengembalikan
permutasi barisan bilangan yang terurut kembali.
Ide Sederhana
Mengurutkan seperti kartu trup dengan cara;
Scanning seluruh kartu dari awal hingga ke akhir
Buat kartu patokan pada saat scanning dan lakukan
scanning kartu untuk membandingkan nilai kartu
Tukar kartu jika nilai pada kartu yang ter-scanning
lebih kecil dari kartu patokan
Algoritma Insertion-Sort
Insertion-Sort(A)
1 for j 2 to length[A]
2 key A[j]
3 ij–1
4 while (i > 0 A[i] > key)
5 A[i + 1] A[i]
6 ii–1
7 A[i + 1] key
}
Analisis Algoritma
Insertion-Sort(A) Times T(n)
1 for j 2 to length[A] n
2 key A[j] n–1
3 ij–1 n–1
j 2 t j
n
4 while (i > 0 A[i] > key)
j 2 (t j 1)
n
5 A[i + 1] A[i]
j 2 (t j 1)
n
6 ii–1
7 A[i + 1] key n–1
Kasus terburuk:
n
T (n) = 2n + 3å j -1 = n + n - 4
3 2 7
j=2 2 2
Laju waktu komputasi dalam fungsi kuadratik
n
n(n 1)
Ingat! j
2
1
j 2
Tugas-01
Buat resume kuliah materi tatap muka hari ini dalam
format file PDF dgn nama file
Tugas01-S1-Algo-NoStambuk.pdf
Contoh: Tugas01-S1-Algo-H11115999.pdf
Kirim ke alamat: tugas.algoritma.unhas@gmail.com
Subject email: Tugas01-S1-Algo-NoStambuk
Body emai minimal memuat Nama Lengkap dan Stambuk
Email diterima paling lambat hari Sabtu, 10 September
2016, pukul 23:59.99