i.pendahuluan algoritma & struktur data

25
IF-2031 Hamonangan situmorang

Upload: iria

Post on 21-Jan-2016

58 views

Category:

Documents


1 download

DESCRIPTION

I.Pendahuluan Algoritma & struktur Data. IF-2031 Hamonangan situmorang. Roadmap Belajar Pemrograman (1). Diambil dari referensi [1]. Programming & Problem Solving Knowledge & skill. Algorithms (advanced, combinatoric). Programming language Knowledge & skill. Discrete Mathematics. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: I.Pendahuluan Algoritma  &  struktur  Data

IF-2031Hamonangan situmorang

Page 2: I.Pendahuluan Algoritma  &  struktur  Data

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

Page 3: I.Pendahuluan Algoritma  &  struktur  Data

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: I.Pendahuluan Algoritma  &  struktur  Data

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: I.Pendahuluan Algoritma  &  struktur  Data

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: I.Pendahuluan Algoritma  &  struktur  Data

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: I.Pendahuluan Algoritma  &  struktur  Data

◦ Easy to use◦ Fast algorithms

Diambil dari referensi [2]

Struktur data yang efisienAlgoritma yang efisien

7IF2031/Hamonangan Situmorang

Page 8: I.Pendahuluan Algoritma  &  struktur  Data

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: I.Pendahuluan Algoritma  &  struktur  Data

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

Page 10: I.Pendahuluan Algoritma  &  struktur  Data

1. Problem definition2. Algorithm design / Algorithm specification3. Algorithm analysis4. Implementation5. Testing6. Maintenance

Diambil dari referensi [3]10IF2031/Hamonangan Situmorang

Page 11: I.Pendahuluan Algoritma  &  struktur  Data

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: I.Pendahuluan Algoritma  &  struktur  Data

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: I.Pendahuluan Algoritma  &  struktur  Data

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

13IF2031/Hamonangan Situmorang

Page 14: I.Pendahuluan Algoritma  &  struktur  Data

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: I.Pendahuluan Algoritma  &  struktur  Data

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: I.Pendahuluan Algoritma  &  struktur  Data

Space complexity◦ Berapa banyak space yang dibutuhkan

Time complexity◦ Berapa lawa waktu running algoritma

Terkadang kita harus menggunakan estimasi

16IF2031/Hamonangan Situmorang

Page 17: I.Pendahuluan Algoritma  &  struktur  Data

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: I.Pendahuluan Algoritma  &  struktur  Data

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: I.Pendahuluan Algoritma  &  struktur  Data

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: I.Pendahuluan Algoritma  &  struktur  Data

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: I.Pendahuluan Algoritma  &  struktur  Data

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

Page 22: I.Pendahuluan Algoritma  &  struktur  Data

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: I.Pendahuluan Algoritma  &  struktur  Data

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: I.Pendahuluan Algoritma  &  struktur  Data

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: I.Pendahuluan Algoritma  &  struktur  Data

[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