Top Banner
25
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Algoritma & struktur data (pendahuluan)
Page 2: Algoritma & struktur data (pendahuluan)

Diambil dari referensi [1]

Analytical Capability

Logical Capability

Discrete Mathematics

Programming language

Knowledge & skill

Programming & Problem Solving

Knowledge & skill

Algorithms (advanced, combinatoric)

2

Page 3: Algoritma & struktur data (pendahuluan)

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

Page 4: Algoritma & struktur data (pendahuluan)

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

Page 5: Algoritma & struktur data (pendahuluan)

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

Page 6: Algoritma & struktur data (pendahuluan)

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

Page 7: Algoritma & struktur data (pendahuluan)

◦ Easy to use◦ Fast algorithms

Diambil dari referensi [2]

Struktur data yang efisienAlgoritma yang efisien

7IF2031/Hamonangan Situmorang

Page 8: Algoritma & struktur data (pendahuluan)

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

Page 9: Algoritma & struktur data (pendahuluan)

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!

9IF2031/Hamonangan Situmorang

Page 10: Algoritma & struktur data (pendahuluan)

1. Problem definition

2. Algorithm design / Algorithm specification

3. Algorithm analysis

4. Implementation

5. Testing

6. Maintenance

Diambil dari referensi [3]

10IF2031/Hamonangan Situmorang

Page 11: Algoritma & struktur data (pendahuluan)

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

Page 12: Algoritma & struktur data (pendahuluan)

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

Page 13: Algoritma & struktur data (pendahuluan)

Efektifitas: tiap instruksi harus berupa perintah dasar bukan merupakan bentukan dari beberapa perintah

13IF2031/Hamonangan Situmorang

Page 14: Algoritma & struktur data (pendahuluan)

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

Page 15: Algoritma & struktur data (pendahuluan)

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

Page 16: Algoritma & struktur data (pendahuluan)

Space complexity◦ Berapa banyak space yang dibutuhkan

Time complexity◦ Berapa lawa waktu running algoritma

Terkadang kita harus menggunakan estimasi

16IF2031/Hamonangan Situmorang

Page 17: Algoritma & struktur data (pendahuluan)

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

Page 18: Algoritma & struktur data (pendahuluan)

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

Page 19: Algoritma & struktur data (pendahuluan)

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

Page 20: Algoritma & struktur data (pendahuluan)

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

Page 21: Algoritma & struktur data (pendahuluan)

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 time

umumnya running time algoritma diukur dari worst case

21IF2031/Hamonangan Situmorang

Page 22: Algoritma & struktur data (pendahuluan)

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

Page 23: Algoritma & struktur data (pendahuluan)

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

Page 24: Algoritma & struktur data (pendahuluan)

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

Page 25: Algoritma & struktur data (pendahuluan)

[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