Minggu, 09 Maret 2014

Download materi Struktur Data dan Algoritma



}  I.Pendahuluan
Algoritma & struktur Data
}  IF-2031
}  Hamonangan situmorang
}  Roadmap Belajar Pemrograman(1)



}   Diambil dari referensi [1]
}  Roadmap Belajar Pemrograman(2)
}  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)
}  Pengelompokan instruksi menjadi fungsi/prosedur
}  Operasi file eksternal.

}  Definisi Dasar
}  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

}  Latar Belakang mata kuliah Algoritma & 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)


}  Latar Belakang mata kuliah Algoritma & Struktur Data (2)
     Easy to use
     Fast algorithms
Diambil dari referensi [2]

®Struktur data yang efisien
®Algoritma yang efisien
}  Latar Belakang mata kuliah Algoritma & 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
}  Latar Belakang mata kuliah Algoritma & Struktur Data (4)
}  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!
    
}  Problem Solving : langkah
   Problem definition
   Algorithm design / Algorithm specification
   Algorithm analysis
   Implementation
   Testing
   Maintenance

}  1. Problem Definition

}  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 ) ?

}  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

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

}  2. Algoritma : Deskripsi menggunakan 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
           if currentMax < A[i] then currentMax¬ A[i]
     return currentMax
}  2. Algoritma : Deskripsi menggunakan 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
}  Gunakanlah comments
}  Instruksi harus se-dasar mungkin dan mungkin diselesaikan

}  3. Algorithm Analysis
}  Space complexity
     Berapa banyak space yang dibutuhkan
}  Time complexity
     Berapa lawa waktu running algoritma
}  Terkadang kita harus menggunakan estimasi

}  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?
}  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:
- actual text : load 2GB  text VS. load 1MB  text
}  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!

}  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

}  Time Complexity(2)
}  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?
}  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?
}  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
}  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.





0 komentar:

Posting Komentar

Posting Kami