Post on 10-Jan-2016
description
IF-2031Hamonangan situmorang
Diambil dari referensi [1]
Analytical Capability
Logical Capability
Discrete Mathematics
Programming language
Knowledge & skill
Programming & Problem Solving
Knowledge & skill
Algorithms (advanced, combinatoric)
2IF2031/Hamonangan Situmorang
Dasar Informatika
Dasar Pemrograman
Matematika Informatika
Bahasa Pemrograman
Advanced Topics (algorithms, data structures)
Intermediate Topics (algorithms, data structures)
Algoritma dan Struktur sederhana
Problem Solving(ultimate goal)
Pe-ngem bang-
anKepribadian
Diambil dari referensi [1]3IF2031/Hamonangan Situmorang
Program = Struktur Data + Algoritma (instruksi) Struktur data : dasar (int, real, boolean),
bentukan (record, array, set) Instruksi : assignment, read/write, if/case, loop
(for, while, repeat) Pengelompokan instruksi menjadi fungsi/prosedur Operasi file eksternal.
Diambil dari referensi [1]4IF2031/Hamonangan Situmorang
Struktur data: cara merepresentasikan data agar efisien dalam penyimpanan dan pengolahannya. [2]
Struktur data seharusnya diterapkan pada algoritma yang didisain secara efisien
Jadi mata kuliah Algoritma & Struktur Data adalah suatu disiplin ilmu yang mempelajari bagaimana merepresentasikan data secara efisien dan disain pengolahannya secara efisien
5IF2031/Hamonangan Situmorang
Data semakin kompleks◦ Bayangkan: indeks dari 8 milyar halaman ! (Google)
Implementasi dan perawatan software sangat sulit.
Kerangka konsep yang jernih memungkinkan pembuatan koding yang lebih efisien dan benar.
Requirements (persyaratan) untuksofware yang baik adalah : ◦ Clean Design◦ Easy maintenance◦ Reliable (no core dumps)
6IF2031/Hamonangan Situmorang
◦ Easy to use◦ Fast algorithms
Diambil dari referensi [2]
Struktur data yang efisienAlgoritma yang efisien
7IF2031/Hamonangan Situmorang
Contoh kasus sederhana :◦ Dimisalkan ada 3.000 file teks dengan rata-rata
20 baris tiap file teks-nya. Dimana tiap baris mengandung 10 kata. Jadi akan ada 600.000 kata.
◦ Tentukan jumlah kata “bandung”◦ Jika dimisalkan dibutuhkan waktu 1 detik untuk
mencek sebuah kata sama dengan “bandung”. Solusi 1: menggunakan sequential
matching, membutuhkan waktu 1 detik x 600.000 kata = 166 jam
8IF2031/Hamonangan Situmorang
Solusi 2 : Binary searching :◦ Urutkan kata◦ Cari di setengah kumpulan data setiap waktunyaContoh : Cari 25 pada kumpulan data berikut 5 8 12 15 15 17 23 25 2725 ? 15 15 17 23 25 2725 ? 23 23 25 2725 ? 25Berapa langkah? log 2 600000 = 19 detik vs 166 jam!
9IF2031/Hamonangan Situmorang
1. Problem definition2. Algorithm design / Algorithm specification3. Algorithm analysis4. Implementation5. Testing6. Maintenance
Diambil dari referensi [3]10IF2031/Hamonangan Situmorang
Apa tugas-tugas yang harus dilaksanakan?, misalnya :◦ Hitung nilai rata-rata mahasiswa yang
ditentukan.◦ Terjemahkan naskah pidato dari bahasa inggris
menjadi bahasa indonesia Apa persyaratan performansinya (ketepatan
waktu/ruang/ kecepatan ) ?
11IF2031/Hamonangan Situmorang
Algoritma: Sekumpulan instruksi terbatas yang jika dijalankan akan melaksanakan tugas tertentu.[3]
Deskripsi (cara penulisan): ◦ natural language ◦ pseudo-code ◦ diagram (seperti flowchart)
Kriteria algoritma:◦ Input: nol atau lebih ◦ Output: satu atau lebih◦ Definisi/terjemahan/interprestasi: jelas, tepat untuk tiap
instruksi◦ Batasan: sebuah algoritma harus berhenti setelah
sejumlah langkah, walaupun jumlah langkah boleh banyak tapi harus terbatas
12IF2031/Hamonangan Situmorang
Efektifitas: tiap instruksi harus berupa perintah dasar bukan merupakan bentukan dari beberapa perintah
13IF2031/Hamonangan Situmorang
Pseudo-Code = deskripsi algoritma dengan cara ◦ Lebih terstruktur dibanding menggunakan natural
language tetapi tapi tidak◦ Seformal menggunakan programming language
Contoh: Algoritma untuk menentukan nilai maksimum array ditulis dalam pseudocode
Algorithm arrayMax(A, n):Input: An array A storing n integers.Output: The maximum element in A.currentMax A[0]for i 1 to n -1 do
if currentMax < A[i] then currentMax A[i]return currentMax
14IF2031/Hamonangan Situmorang
Ekspresi: gunakan simbol matematika◦ gunakan untuk assignment ( pemberian nilai)◦ gunakan = untuk kesamaan (pengujian nilai)
Deklarasi metode: ◦ -Algorithm name(param1, param2)
Konstruksi pemrograman (flow control dan indeksing array): ◦ decision structures: if ... then ... [else ..]◦ while-loops : while ... do ◦ repeat-loops: repeat ... until ... ◦ for-loop: for ... do ◦ array indexing: A[i]
Metode◦ calls: object method(args)◦ returns:return value
Gunakanlah comments Instruksi harus se-dasar mungkin dan mungkin diselesaikan
15IF2031/Hamonangan Situmorang
Space complexity◦ Berapa banyak space yang dibutuhkan
Time complexity◦ Berapa lawa waktu running algoritma
Terkadang kita harus menggunakan estimasi
16IF2031/Hamonangan Situmorang
Space complexity = jumlah memory yang dibutuhkan oleh sebuah algoritma untuk berjalan sampai selesai.◦ Core dumps (“memory leaks”) terjadi karena jumlah
memory yang dibutuhkan lebih besar daripada yang disediakan oleh sistem.
Beberapa algoritma terkadang lebih efisien jika keseluruhan datanya dimuatkan pada memory. ◦ Hal ini harus memperhatikan batasan sistem, misalnya
2GB teks dalam berbaga kategori (mis: politik, travel, olahraga, bencna alam, dll) – apakah mungkin data sebanyak ini dimuatkan ke memory?
17IF2031/Hamonangan Situmorang
1. Fixed part: ukuran yang dibutuhkan untuk menyimpan data/variabel, yang independen dari ukuran problem, seperti:- Nama kumpulan data : ukurannya sama saja untuk teks
berkuran 2GB ataupun 1MB
2. Variable part: ukuran yang dibutuhkan ole variabel yang bergantung pada problem, seperti:- actual text : load 2GB text VS. load 1MB text
18IF2031/Hamonangan Situmorang
S(P) = c + S(instance characteristics)◦ c = constant
Contoh:void float sum (float* a, int n) {
float s = 0; for(int i = 0; i<n; i++) { s+ = a[i]; } return s;}Space? one word for n, one for a [passed by reference!],
one for i constant space!
19IF2031/Hamonangan Situmorang
Umumnya lebih penting dari space complexity◦ Ketersediaan memory untuk program komputer saat ini
cederung semakin besar◦ Waktu masih menjadi masalah besar sampai saat ini
Prosesor 3-4GHz di pasaran◦ Apakah masih… ◦ Peniliti memperkirakan untuk komputasi variasi
transformasi 1 rantai DNA tunggal untuk 1 protein pada komputer 1 TerraHZ membtuhkan waktu 1 tahun agar selesai.
Waktu running algoritma menjadi isu penting
20IF2031/Hamonangan Situmorang
Input
1 ms
2 ms
3 ms
4 ms
5 ms
A B C D E F G
worst-case
best-case}average-case?
Jika program mengandung if-then statement yang dapat dieksekusi atau tidak variable running timeumumnya running time algoritma diukur dari worst case
21IF2031/Hamonangan Situmorang
Pengukuran running time :◦ Pendekatan eksperimen◦ Pendekatan teoritis
Pendekatan eksperimen :◦ Tuliskan program yang mengimplementasikan
algoritma.◦ Jalankan program dengan sekumpulan data yang
bervariasi.◦ Tentukan actual running time menggunakan
fungsi system untuk mengukur waktu (contoh: system (date) );
◦ Apa problemnya?
22IF2031/Hamonangan Situmorang
Pendekatan teoritis [3] :◦ Based on primitive operations (low-level computations
independent from the programming language)◦ E.g.:
Make an addition = 1 operation Calling a method or returning from a method = 1 operation Index in an array = 1 operation Comparison = 1 operation etc.
◦ Method: Inspect the pseudo-code and count the number of primitive operations executed by the algorithm
◦ Berapa operasi-kah algoritma mencari nilai maksimum array yang ada pada halaman 14 slide presentasi ini?
23IF2031/Hamonangan Situmorang
Implementation◦ Pemutusan bahasa pemrograman yang akan digunakan
C, C++, Lisp, Java, Perl, Prolog, assembly, dll.◦ Penulisan koding harus terdokumentasi dengan baik dan
jelas.
Test, test, test
Mengintegrasikan feedback dari user, perbaiki bug, penjaminan kompatibelitas pada berbagai platform Maintenance
24IF2031/Hamonangan Situmorang
[1] Inggriani Liem, “Roadmap Belajar Pemrograman dari Kabupaten ke Nasional,” dalam presentasi TOKI Biro ITB, 2004.
[2] Rada Mihalcea, “Data Structures and Algorithm Analysis,” CSCE3110 lecture notes chap.1, 2006.
[2] Rada Mihalcea, “Data Structures and Algorithm Analysis,” CSCE3110 lecture notes chap.2, 2006.
25IF2031/Hamonangan Situmorang