1 STRATEGI ALGORITMA -Algoritma- PERTEMUAN 2 Novi Yanti, S.T, M.Kom 22-Mar-21 NVY-23032021 1 ALGORITMA 2 Algoritma bukan merupakan jawaban dari masalah. Algoritma dapat dianggap sebagai serangkaian instruksi untuk memecahkan masalah. 3/9/2010 22-Mar-21 NVY-23032021 2 Langkah-langkah Pembuatan Algoritma Pemahaman Permasalahan Memutuskan: sarana komputasi, pencarian solusi tepat atau approksimasi, struktur data, teknik desain algoritma Desain algoritma Pembuktian kebenaran algoritma Analisis algoritma Penulisan kode (source code) 22-Mar-21 NVY-23032021 3 1. Pemahaman Masalah 22-Mar-21 Sebelum memulai merancang algoritma, permasalahan harus benar-benar dipahami terlebih dahulu. Ada beberapa kategori permasalahan yang sering muncul di dunia komputing dan telah memiliki algoritma penyelesaiannya. Jika permasalahan yang akan diselesaikan termasuk dalam kategori tersebut, kita dapat mengacu kepada algoritma penyelesaiannya. NVY-23032021 4 2.1. Penentuan Kemampuan Alat Komputasi 22-Mar-21 Algoritma yg digunakan sekarang ini masih mengacu ke model komputer John von Neumann (1903-1957), yaitu arsitektur Random Access Memory (RAM). Arsitektur RAM mengasumsikan bahwa instruksi2 komputer dieksekusi satu per satu, baris per baris instruksi. Algoritma yang didesain untuk dieksekusi pada jenis mesin tersebut disebut sequential algorithm. Generasi terbaru komputer saat ini memungkinkan proses eksekusi secara paralel (parallel computing). Algoritmanya disebut parallel algorithm. NVY-23032021 5 2.2. Exact vs Approximate Solution Exact solution: solusi tepat untuk pemecahan masalah Approximate solution: solusi yang paling mendekati solusi pemecahan masalah Beberapa permasalahan yang menggunakan approximate solution: 22-Mar-21 Pencarian akar kuadrat Persamaan non-linier Permasalahan2 yg exact solution nya membutuhkan waktu yang sangat lama karena tingkat kompleksitasnya tinggi NVY-23032021 6 2.3. Penentuan Struktur Data Pemilihan struktur data yang paling tepat sangat menentukan performa dari algoritma yang akan didesain. Algorithms + Data Structures = Programs (Wirth1976) 22-Mar-21 Macam2 struktur data: array, linked list, stack, queue, hash table NVY-23032021 7 2.4. Teknik Desain Algoritma 22-Mar-21 Teknik Desain Algoritma merupakan pendekatan umum untuk memecahkan masalah dengan algoritma yang dapat diterapkan ke berbagai permasalahan pada area yang berbeda di dunia komputing. (LEV2007) Mempelajari berbagai macam teknik desain algoritma dapat membantu kita dalam mendesain algoritma untuk permasalahan baru. Teknik desain algoritma mengelompokkan algoritma sesuai ide dasarnya, sehingga dapat mempermudah pengkategorian dan pembelajarannya. NVY-23032021 8 3. Metode untuk Menspesifikasikan Algoritma Beberapa metode yang dapat digunakan untuk menggambarkan algoritma adalah: Pseudocode Gabungan antara bahasa natural dan bentuk bahasa pemrograman. Contoh: ALGORITHM Euclid(m,n) //Menghitung FPB(m,n) while n≠0 do r m mod n m n n r return m 22-Mar-21 Flowchart Menggunakan bentuk geometri yang mendeskripsikan langkah-langkah algoritma NVY-23032021 9 4. Pembuktian Kebenaran Algoritma 22-Mar-21 Merupakan langkah untuk membuktikan apakah algoritma menghasilkan hasil yang diinginkan untuk sembarang input yang sah dalam waktu yang finite. Contoh: Pada Algoritma Euclid, FPB(m,n), nilainya akan semakin kecil pada setiap iterasi dan algoritma berhenti ketika angka kedua bernilai 0. Teknik yang umumnya digunakan untuk pembuktian algoritma adalah dengan induksi matematika. Catatan: Tracing tidak menjamin kebenaran suatu algoritma. Jika algoritma terbukti tidak benar, maka dilakukan redesign atau pertimbangkan untuk mengubah struktur data yang digunakan. NVY-23032021 10 5. Analisis Algoritma Kita ingin agar algoritma kita berkualitas. Beberapa faktor yang dipertimbangkan: Efficiency Time efficiency (seberapa cepat algoritma) ◼ Space efficiency (berapa memori yang dibutuhkan) ◼ Simplicity (berkaitan dengan keindahan dan kesederhanaan) Generality (berkaitan dengan ruang lingkup permasalahan yang diselesaikan dan range input yang dapat diterima oleh algoritma) 22-Mar-21 NVY-23032021 11 6. Penulisan Kode 22-Mar-21 Transisi dari algoritma ke source code merupakan hal yang beresiko, karena berpotensi menghasilkan program yang salah atau sangat tidak efisien. Validitas program perlu dicek dengan melakukan testing dan debugging. A good algorithm is a result of repeated effort and rework RULE: NVY-23032021 12 Tipe Permasalahan Penting Sorting (Pengurutan) 22-Mar-21 Mengurutkan sejumlah item secara menaik atau menurun, berdasarkan key (kunci). Sorting memudahkan pencarian sebuah item (Contoh: kamus, buku telepon, daftar absensi, dll). Ada banyak algoritma sorting, beberapa algoritma lebih unggul dari yang lain, tetapi tidak ada algoritma terbaik yang dapat menyelesaikan semua permasalahan. Dua sifat yang perlu diperhatikan: ◼ Stabil : Menjaga urutan 2 item dengan nilai yang sama ◼ In place : Tidak membutuhkan memori tambahan NVY-23032021 13 Searching (Pencarian) 22-Mar-21 Mencari sebuah item tertentu dalam sebuah himpunan, berdasarkan key. Ada banyak algoritma pencarian, mulai dari yang sederhana hingga yang kompleks. Tidak ada algoritma yang paling sesuai untuk semua kondisi. Beberapa algoritma bekerja lebih cepat tetapi membutuhkan memori tambahan; algoritma lainnya, cepat tetapi hanya dapat bekerja pada array yang sudah terurut, dst. Umumnya searching digunakan bersamaan dengan proses penambahan (add), pengubahan (update), dan penghapusan (delete) item. NVY-23032021 14 String Processing (Pemrosesan String) 22-Mar-21 String: Kumpulan karakter dari alfabet. Macam-macam string: Text string: terdiri dari abjad (A-Z), angka (0-9), karakter spesial (!, #) Bit string: terdiri dari nilai 0 dan 1 Gene sequence: dimodelkan dengan string karakter terdiri dari huruf A (Adenine), C (Cytosine), G (Guanine), T (Thymine) Algoritma pemrosesan string sudah digunakan sejak komputer diciptakan (untuk pemrosesan bahasa komputer dan kompilasi) String matching (Pencocokan string): pencarian sebuah kata dalam sebuah teks. NVY-23032021 15 Permasalahan Graph Graph: Sekumpulan vertex yang dihubungkan oleh garis yang disebut edge Graph dapat digunakan untuk memodelkan permasalahan, di antaranya jaringan transportasi & telekomunikasi, penjadwalan proyek, dan game. Beberapa algoritma Graph: Penelusuran graph (graph traversal) Pencarian path terpendek (shortest-path) Pengurutan graph secara topologis Beberapa permasalahan graph: Traveling Salesman Problem (TSP) Graph-coloring Problem 22-Mar-21 NVY-23032021 16 Combinatorial Problem Permasalahan Kombinatorik: permasalahan yang mencari objek kombinatorik (misal: permutasi, kombinasi, atau himpunan bagian) yang memenuhi batasan tertentu dan sifat yang diinginkan (misal: memaksimalkan nilai atau meminimalkan biaya) Contoh: Traveling Salesman Problem Secara umum, merupakan permasalahan tersulit di dunia komputing untuk 2 alasan: 22-Mar-21 Jumlah objek kombinatorik “tumbuh” sangat cepat jika ukuran permasalahan semakin besar Tidak ada algoritma yang dapat dengan tepat menyelesaikan permasalahan ini dalam waktu yang reasonable NVY-23032021 17 Permasalahan Geometrik Algoritma Geometrik berhubungan dengan objek geometrik seperti titik, garis, dan poligon. Algoritma geometrik dapat diaplikasikan pada aplikasi seperti computer graphic, robotika, dan tomografi (pengambilan gambar dengan metode section contoh: alat CT-Scan). Contoh algoritma geometrik: Closest-pair problem: Mencari jarak terdekat ntara dua titik pada sebuah bidang Convex-hull problem: Mencari poligon konveks terkecil yang mencakup semua titik yang ada pada sebuah bidang 22-Mar-21 NVY-23032021 18 Permasalahan Numerik 22-Mar-21 NVY-23032021 Merupakan permasalahan yang melibatkan penggunaan objek matematika yang kontinyu: penyelesaikan persamaan, penghitungan integral, evaluasi fungsi, dsb. Mayoritas dapat diselesaikan secara aproksimasi saja. Sempat menjadi primadona bagi ilmuwan untuk menyelesaikan permasalahan sains dan engineering. Sejak 25 tahun lalu, dunia komputing bergeser ke arah bisnis, sehingga algoritma yang dibutuhkan adalah algoritma untuk penyimpanan informasi, temu kembali (retrieval), transportasi melalui jaringan, dan presentasi kepada pengguna. 19 Small Quiz 20 1. 2. 3. Jelaskan langkah2 pembuatan algoritma! Jelaskan perbedaan antara exact solution dan approximation solution! Apa yang dimaksud dengan permasalahan kombinatorik? Jelaskan dan berikan contohnya! 3/9/2010 22-Mar-21 NVY-23032021 20 Fundamental Data Structures 21 Linear Data Structures Array Item[0] Item[1] Item[2] ….. Item[n-1] ◼ Menyimpan data yang memiliki tipe yang sama ◼ Data diakses dengan menspesifikasikan index dari array 3/9/2010 22-Mar-21 NVY-23032021 21 22 Fundamental Data Structures (cont’d) Linked List Tiap elemen disebut sebagai node yang menyimpan 2 info: sebuah data dan pointer ke node lain dalam list ◼ Jika pointer dari sebuah node bernilai null, maka node tersebut tidak memiliki node lanjutan (successor) ◼ Node diakses dengan menunjuk pada node pertama dan menelusuri pointer sampai ditemukan node yang dicari ◼ Array dan Linked List digunakan untuk merepresentasikan abstract data type (tipe data abstrak) LIST 3/9/2010 22-Mar-21 NVY-23032021 22 23 Fundamental Data Structures (cont’d) Stacks : Proses insert dan delete hanya dapat dilakukan dari 1 ujung saja (top) Queue: Proses delete dilakukan dari front (dequeue) dan proses insert dilakukan dari rear (enqueue) Priority queue: queue yang sudah terurut Heap: Pengembangan dari priority queue (minimum heap dan maximum heap) 3/9/2010 22-Mar-21 NVY-23032021 23 24 Fundamental Data Structures (cont’d) Graphs Terdiri dari sekumpulan vertex yang saling terhubung oleh edge Direpresentasikan dengan adjacency matrix Weighted graph: Graph yang edge-nya memiliki bobot 8 a c 2 4 d 3 4 b 6 9 5 12 e 3/9/2010 22-Mar-21 NVY-23032021 24 25 Trees Graph yang tidak memiliki cycle (acyclic) Sets and Dictionaries Set: Himpunan elemen tidak terurut yang berbeda satu sama lain Multiset: Himpunan elemen tidak terurut yang tidak harus berbeda satu sama lain Dictionary: Struktur data yang mengimplementasikan pencarian, penambahan, penghapusan item di dalam set/multiset 3/9/2010 22-Mar-21 NVY-23032021 25