Vous êtes sur la page 1sur 25

Programming & Problem Solving

Knowledge & skill

Algorithms (advanced, combinatoric)

Programming language
Knowledge & skill

Discrete Logical Analytical


Mathematics Capability Capability

 Diambil dari referensi [1]

2
Problem Solving
(ultimate goal)

Advanced Topics (algorithms, data structures) Pe-


ngem
bang-
Intermediate Topics (algorithms, data structures) an
Ke
pri
Matematika Algoritma dan Struktur sederhana ba
Informatika di
an
Dasar Dasar Bahasa
Informatika Pemrograman Pemrograman

Diambil dari referensi [1]


IF2031/Hamonangan Situmorang 3
 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]


IF2031/Hamonangan Situmorang 4
 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

IF2031/Hamonangan Situmorang 5
 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)

IF2031/Hamonangan Situmorang 6
◦ Easy to use
◦ Fast algorithms
Diambil dari referensi [2]

Struktur data yang efisien


Algoritma yang efisien

IF2031/Hamonangan Situmorang 7
 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

IF2031/Hamonangan Situmorang 8
 Solusi 2 : Binary searching :
◦ Urutkan kata
◦ Cari di setengah kumpulan data setiap waktunya
Contoh : Cari 25 pada kumpulan data berikut
5 8 12 15 15 17 23 25 27
25 ? 15 15 17 23 25 27
25 ? 23 23 25 27
25 ? 25
Berapa langkah?
log 2 600000 = 19 detik vs 166 jam!

IF2031/Hamonangan Situmorang 9
1. Problem definition
2. Algorithm design / Algorithm specification
3. Algorithm analysis
4. Implementation
5. Testing
6. Maintenance

Diambil dari referensi [3]


IF2031/Hamonangan Situmorang 10
 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 ) ?

IF2031/Hamonangan Situmorang 11
 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

IF2031/Hamonangan Situmorang 12
 Efektifitas: tiap instruksi harus berupa perintah dasar bukan
merupakan bentukan dari beberapa perintah

IF2031/Hamonangan Situmorang 13
 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

IF2031/Hamonangan Situmorang 14
 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

IF2031/Hamonangan Situmorang 15
 Space complexity
◦ Berapa banyak space yang dibutuhkan
 Time complexity
◦ Berapa lawa waktu running algoritma
 Terkadang kita harus menggunakan estimasi

IF2031/Hamonangan Situmorang 16
 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?

IF2031/Hamonangan Situmorang 17
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

IF2031/Hamonangan Situmorang 18
 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!

IF2031/Hamonangan Situmorang 19
 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

IF2031/Hamonangan Situmorang 20
5 ms worst-case
4 ms

3 ms
} average-case?
best-case
2 ms

1 ms

A B C D E F G
Input
Jika program mengandung if-then statement yang dapat
dieksekusi atau tidak  variable running time
umumnya running time algoritma diukur dari worst case
IF2031/Hamonangan Situmorang 21
 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?

IF2031/Hamonangan Situmorang 22
 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?

IF2031/Hamonangan Situmorang 23
 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

IF2031/Hamonangan Situmorang 24
 [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.

IF2031/Hamonangan Situmorang 25

Vous aimerez peut-être aussi