Você está na página 1de 25

IF-2031 Hamonangan situmorang

Programming & Problem Solving Knowledge & skill Algorithms (advanced, combinatoric) Programming language Knowledge & skill Discrete Mathematics Logical Capability Analytical Capability
`

Diambil dari referensi [1]

IF2031/Hamonangan Situmorang

Problem Solving (ultimate goal) Ad anced Topics (algorithms, data structures) Intermediate Topics (algorithms, data structures) Pengem bangan Ke pri ba di an

Matematika Informatika Dasar Informatika

Algoritma dan truktur sederhana

Dasar Pemrograman

Bahasa Pemrograman

Diambil dari referensi [1]


IF2031/Hamonangan itumorang 3

` `

` `

Program = truktur Data + Algoritma (instruksi) truktur 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 itumorang 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

` ` ` `

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

Easy to use Fast algorithms Diambil dari referensi [2]

pStruktur data yang efisien pAlgoritma yang efisien

IF2031/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

IF2031/Hamonangan Situmorang

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 s 166 jam!

IF2031/Hamonangan Situmorang

1. 2. 3. 4. 5. 6.

Problem definition Algorithm design / Algorithm specification Algorithm analysis Implementation Testing 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 n A[0] for in 1 to n -1 do if currentMax < A[i] then currentMax n A[i] return currentMax
IF2031/Hamonangan Situmorang 14

Ekspresi: gunakan simbol matematika


gunakan n 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: returns: object method(args) 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 4 ms 3 ms 2 ms 1 ms

worst-case

}
A B C

average-case?

best-case

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.:
x x x x 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
x 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

Você também pode gostar