i.pendahuluan algoritma & struktur data
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 PresentationTRANSCRIPT
![Page 1: I.Pendahuluan Algoritma & struktur Data](https://reader035.vdocuments.mx/reader035/viewer/2022062321/568142d1550346895daf251e/html5/thumbnails/1.jpg)
IF-2031Hamonangan situmorang
![Page 2: I.Pendahuluan Algoritma & struktur Data](https://reader035.vdocuments.mx/reader035/viewer/2022062321/568142d1550346895daf251e/html5/thumbnails/2.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062321/568142d1550346895daf251e/html5/thumbnails/3.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062321/568142d1550346895daf251e/html5/thumbnails/4.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062321/568142d1550346895daf251e/html5/thumbnails/5.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062321/568142d1550346895daf251e/html5/thumbnails/6.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062321/568142d1550346895daf251e/html5/thumbnails/7.jpg)
◦ 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](https://reader035.vdocuments.mx/reader035/viewer/2022062321/568142d1550346895daf251e/html5/thumbnails/8.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062321/568142d1550346895daf251e/html5/thumbnails/9.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062321/568142d1550346895daf251e/html5/thumbnails/10.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062321/568142d1550346895daf251e/html5/thumbnails/11.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062321/568142d1550346895daf251e/html5/thumbnails/12.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062321/568142d1550346895daf251e/html5/thumbnails/13.jpg)
Efektifitas: tiap instruksi harus berupa perintah dasar bukan merupakan bentukan dari beberapa perintah
13IF2031/Hamonangan Situmorang
![Page 14: I.Pendahuluan Algoritma & struktur Data](https://reader035.vdocuments.mx/reader035/viewer/2022062321/568142d1550346895daf251e/html5/thumbnails/14.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062321/568142d1550346895daf251e/html5/thumbnails/15.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062321/568142d1550346895daf251e/html5/thumbnails/16.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062321/568142d1550346895daf251e/html5/thumbnails/17.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062321/568142d1550346895daf251e/html5/thumbnails/18.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062321/568142d1550346895daf251e/html5/thumbnails/19.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062321/568142d1550346895daf251e/html5/thumbnails/20.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062321/568142d1550346895daf251e/html5/thumbnails/21.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062321/568142d1550346895daf251e/html5/thumbnails/22.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062321/568142d1550346895daf251e/html5/thumbnails/23.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062321/568142d1550346895daf251e/html5/thumbnails/24.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062321/568142d1550346895daf251e/html5/thumbnails/25.jpg)
[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