Analisa Algoritma Konsep Algoritma
Deskripsi Materi ini membahas tentang konsep dasar algoritma
Tujuan Instruksional Khusus (TIK) Menjelaskan konsep dasar algoritma Mendeskripsikan tahapan algoritma Menjelaskan ciri algoritma yang baik Menjelaskan strategi algoritma
Algoritma dan Pemecahan Masalah
Syarat Algoritma Menurut Donald E Knuth algoritma harus memenuhi persyaratan : Finiteness Algoritma harus berakhir (terminate) setelah melakukan sejumlah langkah proses Definiteness tidak menimbulkan makna ganda (ambiguous). Input Setiap algoritma memerlukan data sebagai masukan untuk diolah. Output Setiap algoritma memberikan satu atau beberapa hasil keluaran. Effectiveness Langkah-langkah algoritma dikerjakan dalam waktu yang wajar.
Sebagai basis pemerograman komputer, algoritma mendeskripsikan urutan langkah-langkah yang diperlukan untuk pemecahan masalah (penyelesaian persoalan), yang memiliki ciri-ciri sebagai berikut; selalu memiliki terminasi/langkah akhir setiap langkah dinyatakan secara jelas dan tegas setiap langkah sederhana, sehingga kinerjanya sehubungan dengan waktu yang effisien/bisa diterima akal memberikan hasil (output), mungkin dengan satu atau tanpa input.
Tahapan Algoritma Proses pemecahan masalah dengan algoritma tertentu hingga menjadi program dapat dibagi dalam sembilan tahap; Mendefinisikan masalah Masalah yang ingin dipecahkan harus jelas lingkupnya. Membuat model Yang dimaksud model ini adalah model (bentuk) matematis yang dapat digunakan untuk memecahkan masalah, misalnya apakah harus dilakukan pengurutan terhadap data, apakah menggunakan perhitungan kombinatorik dan sebagainya.
Tahapan Algoritma Merancang algoritma (flowchart/pseudocode) Apa maksudnya, bagaimana rincian prosesnya, apa keluarannya. Menulis program Ubah algoritma menjadi program (source code) dalam bahasa pemrograman tertentu. Mengubah source code menjadi executable code melalui proses compiling. Memeriksa hasil compiling, jika salah maka kembali ke tahap empat.
Tahapan Algoritma Menjalankan program (run) untuk diuji kebenarannya dengan menggunakan berbagai data Memperbaiki kesalahan (debugging dan testing) Apabila hasilnya salah, kesalahan mungkin terjadi saat konversi rancangan algoritma manjadi program, atau salah rancang algoritma, atau salah menentukan model, atau salah mendefinisikan masalah. Ulangi langkah yang sesuai.
Tahapan Algoritma
Presentase tahapan menyelesaikan masalah dengan menggunakan komputer: Analisis masalah (40%) Mendapatkan ide-ide penyelesaian masalah. Merancang algoritma (30%) Menurunkan ide-ide penyelesaian Menyatakan algoritma (I/O, operasi/operator, percabangan atau perulangan yang digunakan) Memvalidasi (Mengecek apakah benar untuk semua input yang mungkin) Menganalisis (bertujuan untuk mengukur prediksi waktu + memory, efisiensi dan kelayakan saat di buat program) butuh struktur data dan bahasa pemrograman.
Algoritma pemrograman yang baik memiliki ciri-ciri sebagai berikut: Memiliki logika perhitungan/metode yang tepat dalam memecahkan masalah. Menghasilkan output yang tepat dan benar dalam waktu singkat. Ditulis dengan bahasa yang standar secara sistematis dan rapi sehingga tidak menimbulkan arti ganda. Ditulis dengan format yang mudah dipahami dan diimplementasikan kedalam bahasa pemrograman. Semua operasi yang dibutuhkan terdefinisi dengan jelas. Semua proses harus selalu berakhir setelah sejumlah langkah dilakukan.
Definiteness Setiap langkah harus definite (tertentu dan pasti) Contoh: x0 atau x=5 atau x:=5 Contoh Undefinite Tambahkan nilai x dengan 1 atau 2 (xx+(1 or 2)) Contoh definite Tambahkan nilai x dengan 1 atau 2 yang dipilih secara random X:= x+(random(2)+1)
Proses harus bisa berhenti atau berakhir (ada Stepping Criteria) Contoh 1: X0 Repeat Write (x) XX+2 Until x = 15 Step criteria Salah Contoh 2: Write (x) Until (x >15) Step criteria Benar
Analisa Algoritma Mengapa diperlukan analisa pada suatu algoritma? Agar dapat memprediksi sumber daya (dalam hal ini yang berhubungan dengan waktu komputasi) yang diperlukan untuk menyelesaikan problem sesuai dengan algoritma yang digunakan. Alat bantu dalam analisa algoritma Mathematical background (kombinatorik, teori probabilitas, aljabar, dsb). Relasi rekursif Teori kompleksitas (Struktur Data)
Remember : Notasi Matematik x : ceiling(x) contoh: 1.23 = 2 x : floor(x) contoh: 1.23 = 1 Note: x-1 < x ≤ x dan x ≤ x < x+1 Y = log2x Y = x Y = 2x Y = log2x logarithmic growth x=1 Y=0; x=16 Y = 4 Y = x linear growth x=1 Y=1; x=16 Y = 16 Y = 2x exponential growth x=1 Y=2; x=16 Y = 256
Remember : Notasi Matematik a + (a+d) + (a+2d) + … + (a+(n-1)d) = (n(2a+(n-1)d))/2 1+2+…+n=(n(n+1))/2 Untuk x real dan -1 < x < 1 1+x+x2+…+xn-1=(xn-1)/(x-1) 1+2+22+…+2n-1= 2n-1 1+2x+3x2+…+nxn-1=(nxn+1-(n+1)xn+1)/(x-1)2 Untuk k=0,1,2,…,n
Analisa Algoritma Menurut jenis persoalan Menurut strategi perancangan Searching Sorting Optimization Graph Numerik/Probabilistik Menurut strategi perancangan Greedy Method Divide & Conquer Backtracking Branch & Bound Dynamic Programming Menurut proses komputasi Sekuential Paralel
Klasifikasi Strategi Algoritmik kumpulan metode/teknik untuk memecahkan masalah guna mencapai tujuan yang ditentukan, yang dalam hal ini deskripsi metode atau teknik tersebut dinyatakan dalam suatu urutan langkah-langkah penyelesaian.
Klasifikasi Strategi Algoritmik 1. Strategi solusi langsung (direct solution strategies) - Algoritma Brute Force v - Algoritma Greedy v 2. Strategi berbasis pencarian pada ruang status (state-space base strategies) - Algoritma Backtracking v - Algoritma Branch and Bound 3. Strategi solusi atas-bawah (top-down solution strategies) - Algoritma Divide and Conquer. v 4. Strategi solusi bawah-atas (bottom-up solution strategies) - Dynamic Programming. v
Tips merancang algoritma Formulasikan persoalan dan perhatikan sumber daya yang ada (memori & prosesor) Identifikasi tipe-tipe data abstract yang sesuai untuk model persoalannya. Identifikasi bagian-bagian dari persoalan yang telah diketahui algoritmanya dan rancang algoritma untuk bagian lainnya. Bila algoritma telah selesai dirancang, ujilah correctness dan analisa performance-nya. Apakah masih ada algoritma lain yang lebih baik untuk digunakan.
Survey Berapa buah program yang pernah Anda buat dalam satu semester terakhir Sebutkan tiga yang paling anda buat secara tuntas dan Anda kuasai benar. Algoritma yang digunakan? Bahasa pemrograman? Ceritakan mengenai proses Anda menyelesaikan salah satu program yang Anda buat tersebut