Anda di halaman 1dari 26

Sumber diambil dari :

Pendahuluan
Algoritma & struktur Data

IF-2031
Hamonangan situmorang
Algoritma & struktur Data
Roadmap Belajar Pemrograman(1)
Programming & Problem Solving
Knowledge & skill

Algorithms (advanced, combinatoric)

Programming language
Knowledge & skill

Discrete Logical Analytical


Mathematics Capability Capability

• Diambil dari referensi [1]

IF2031/Hamonangan Situmorang 3
Roadmap Belajar Pemrograman(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 4
Elemen Program [Prosedural]
• 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 5
Definisi Dasar
• Struktur data: cara merepresentasikan data
agar efisien dalam penyimpanan dan
pengolahannya. [2]
• Struktur data seharusnya diterapkan pada
algoritma yang didisain secara efisien
• Jadi Algoritma & Struktur Data adalah suatu
disiplin ilmu yang mempelajari bagaimana
merepresentasikan data secara efisien dan
disain pengolahannya secara efisien

IF2031/Hamonangan Situmorang 6
Latar Belakang Pentingnya Algoritma
& Struktur Data (1)
• 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) untuk sofware yang
baik adalah :
– Clean Design
– Easy maintenance
– Reliable (no core dumps)
IF2031/Hamonangan Situmorang 7
Latar Belakang Pentingnya Algoritma
& Struktur Data (2)
– Easy to use
– Fast algorithms
Diambil dari referensi [2]

Struktur data yang efisien


Algoritma yang efisien

IF2031/Hamonangan Situmorang 8
Latar Belakang Pentingnya Algoritma
& Struktur Data (3)
• 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 “purwokerto”
– Jika dimisalkan dibutuhkan waktu 1 detik untuk
mencek sebuah kata sama dengan “purwokerto”.
• Solusi 1: menggunakan sequential matching,
membutuhkan waktu 1 detik x 600.000 kata = 166
jam
IF2031/Hamonangan Situmorang 9
Latar Belakang Pentingnya Algoritma
& Struktur Data (4)
 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 10
Problem Solving : langkah
1. Problem definition
2. Algorithm design / Algorithm specification
3. Algorithm analysis
4. Implementation
5. Testing
6. Maintenance

Diambil dari referensi [3]


IF2031/Hamonangan Situmorang 11
1. Problem Definition

• 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 12
2. Algorithm Design / Specifications (1)
• 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 13
2. Algorithm Design / Specifications (2)
 Efektifitas: tiap instruksi harus berupa perintah dasar bukan merupakan
bentukan dari beberapa perintah

IF2031/Hamonangan Situmorang 14
2. Algoritma : Deskripsi menggunakan
Pseudo-Code (1)
• 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 15
2. Algoritma : Deskripsi menggunakan
Pseudo-Code (2)
• 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 16
3. Algorithm Analysis
• Space complexity
– Berapa banyak space yang dibutuhkan
• Time complexity
– Berapa lawa waktu running algoritma
• Terkadang kita harus menggunakan estimasi

IF2031/Hamonangan Situmorang 17
Space Complexity(1)
• 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 18
Space Complexity(2)
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 19
Space Complexity(3)
• 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 20
Time Complexity(1)
• 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 21
Time Complexity(2)

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 22
Time Complexity(3)
• 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 23
Time Complexity(4)
• 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 24
4,5,6: Implementation, Testing,
Maintainance
• 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 25
Referensi
• [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 26

Anda mungkin juga menyukai