I.Pendahuluan Algoritma & struktur Data

1 / 25

# I.Pendahuluan Algoritma & struktur Data - PowerPoint PPT Presentation

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

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

## PowerPoint Slideshow about 'I.Pendahuluan Algoritma & struktur Data' - Lucy

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

### I.PendahuluanAlgoritma & struktur Data

IF-2031

Hamonangan situmorang

• Diambil dari referensi [1]

Programming & Problem Solving

Knowledge & skill

Programming language

Knowledge & skill

Discrete Mathematics

Logical Capability

Analytical Capability

IF2031/Hamonangan Situmorang

Problem Solving

(ultimate goal)

Pe-ngem bang-an

Ke

pri

ba

di

an

Intermediate Topics (algorithms, data structures)

Matematika Informatika

Algoritma dan Struktur sederhana

Dasar Informatika

Dasar Pemrograman

Bahasa Pemrograman

Diambil dari referensi [1]

IF2031/Hamonangan Situmorang

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)
• Operasi file eksternal.

Diambil dari referensi [1]

IF2031/Hamonangan Situmorang

DefinisiDasar
• 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

LatarBelakangmatakuliahAlgoritma & 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) untuksofware yang baik adalah :
• Clean Design
• Easy maintenance
• Reliable (no core dumps)

IF2031/Hamonangan Situmorang

LatarBelakangmatakuliahAlgoritma & Struktur Data (2)
• Easy to use
• Fast algorithms

Diambil dari referensi [2]

• Struktur data yang efisien
• Algoritma yang efisien

IF2031/Hamonangan Situmorang

LatarBelakangmatakuliahAlgoritma & 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 “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

LatarBelakangmatakuliahAlgoritma & Struktur Data (4)
• Solusi 2 : Binary searching :
• Urutkankata
• Caridisetengahkumpulan data setiapwaktunya

Contoh : Cari 25 padakumpulan 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

Berapalangkah?

log 2 600000 = 19 detikvs166 jam!

IF2031/Hamonangan Situmorang

Problem Solving : langkah
• Problem definition
• Algorithm design / Algorithm specification
• Algorithm analysis
• Implementation
• Testing
• Maintenance

Diambil dari referensi [3]

IF2031/Hamonangan Situmorang

1. Problem Definition
• Apa tugas-tugas yang harus dilaksanakan?, misalnya :
• Hitung nilai rata-rata mahasiswa yang ditentukan.
• Apa persyaratan performansinya (ketepatan waktu/ruang/ kecepatan ) ?

IF2031/Hamonangan Situmorang

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

2. Algorithm Design / Specifications (2)
• Efektifitas: tiap instruksi harus berupa perintah dasar bukan merupakan bentukan dari beberapa perintah

IF2031/Hamonangan Situmorang

2. Algoritma : Deskripsimenggunakan 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

ifcurrentMax < A[i] thencurrentMax A[i]

returncurrentMax

IF2031/Hamonangan Situmorang

2. Algoritma : Deskripsimenggunakan 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
• Instruksi harus se-dasar mungkin dan mungkin diselesaikan

IF2031/Hamonangan Situmorang

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

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

Space Complexity(2)
• 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
• Variable part: ukuran yang dibutuhkan ole variabel yang bergantung pada problem, seperti:

IF2031/Hamonangan Situmorang

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

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

Time Complexity(2)

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

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

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

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

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