Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
1
Pengenalan Analisis Algoritma
2
Pengantar Analisis Algoritma
Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun secara sistematis dan logis. Analisis algoritma adalah suatu cabang khusus dalam ilmu komputer yang mempelajari karakteristik dan performa dari suatu algoritma dalam memyelesaikan masalah, terlepas dari implementasi algoritma tersebut. Kompleksitas algoritma adalah ukuran seberapa banyak komputasi yang dibutuhkan algoritma tersebut untuk menyelesaikan masalah. Secara informal, algoritma yang dapat menyelesaikan suatu permasalahan dalam waktu yang singkat memiliki kompleksitas yang rendah, sementara algoritma yang membutuhkan waktu lama untuk menyelesaikan masalahnya mempunyai kompleksitas yang tinggi.
3
Algorithm is a sequence of un ambiguous instructions for solving a problem
4
Pertimbangan memilih algoritma
Algoritma haruslah benar Artinya algoritma akan memberikan keluaran yang dikehendaki dari sejumlah masukan yang diberikan. Tidak peduli sebagus apapun algoritma, kalau memberikan keluaran yang salah, pastilah algoritma tersebut bukanlah algoritma yang baik. Mengetahui seberapa baik hasil yang dicapai oleh algoritma tersebut Hal ini penting terutama pada algoritma untuk menyelesaikan masalah yang memerlukan aproksimasi hasil (hasil yang hanya berupa pendekatan). Algoritma yang baik harus mampu memberikan hasil yang sedekat mungkin dengan nilai yang sebenarnya. Efisiensi algoritma Efisiensi algoritma dapat ditinjau dari 2 hal yaitu efisiensi waktu dan memori. Meskipun algoritma memberikan keluaran yang benar (paling mendekati), tetapi jika kita harus menunggu berjam-jam untuk mendapatkan keluarannya, algoritma tersebut biasanya tidak akan dipakai, setiap orang menginginkan keluaran yang cepat. Begitu juga dengan memori, semakin besar memori yang terpakai maka semakin buruklah algoritma tersebut. Dalam kenyataannya, setiap orang bisa membuat algoritma yang berbeda untuk menyelesaikan suatu permasalahan, walaupun terjadi perbedaan dalam menyusun algoritma, tentunya kita mengharapkan keluaran yang sama. Jika terjadi demikian, carilah algoritma yang paling efisien dan cepat.
5
Isi dari algoritma Assignment Subroutine call Sequence Percabangan
Looping
6
Assignment adalah pemberian nilai kepada suatu Variabel atau Konstanta sesuai dengan jenis/type datanya. Nilai yang diberikan bisa berupa: Variabel, Konstanta atau Pernyataan Matematis. Subroutine call adalah suatu subfungsi yang dijalankan yang mana bila telah selesai maka akan kembali ke program utama. Sequence adalah instruksi-instruksi yang dikerjakan secara berurutan. Berurutan di sini berarti sesuai dengan urutan penulisannya, yakni sebuah instruksi dijalankan setelah instruksi sebelumnya selesai dikerjakan. Percabangan. Percabangan dalam pemrograman komputer dikenal sebagai cara untuk mengendalikan program. Program yang dibuat dan diterjemahkan oleh penerjemah akan di eksekusi dari bari awal hingga baris akhir kecuali ada percabangan diantaranya, meski pada akhirnya juga akan sampai baris terakhir. Looping adalah suatu preoses perulangan suatu fungsi.
7
Fundamentals of Alhorithmic Problem Solving
8
Beberapa tipe problem penting
Sorting Searching Pemrosesan string Problem graph Problem kombinatorik Problem geometri Problem numerik
9
Tipe Problem : Sorting Problem: menyusun ulang hal-hal yang terdapat pada daftar dengan urutan naik atau turun Jika ada records, kita perlu sebuah key Terdapat bermacam-macam algoritma sorting Dua properti algoritma sorting: - Stabil: Mempertahankan urutan relatif sembarang dua elemen input yang sama - Di tempat: tidak memerlukan memori ekstra, kecuali, mungkin, beberapa unit memori
10
Tipe Problem : Searching
Problem: menemukan suatu nilai dari sekumpulan nilai yang ada Jangkauan algoritma searching: - Pencarian sekuensial hingga pencarian binary (sangat efisien, namun terbatas) dan algoritma didasarkan pada representasi kumpulan nilai tersebut sehingga memungkinkan pencarian yang lebih baik Tantangan: - Kumpulan data yang sangat besar - Update: add, edit, delete
11
Tipe Problem : Pemrosesan String
String = urutan karakter alphabet Minat khusus: text strings, binary strings, gene sequencesbioinformatika, dll. Problem khusus: pencocokan string - Pencarian suatu kata dalam teks
12
Tipe Problem : Graph Algoritma graf dasar: graph traversal, shortest-path, sorting topologik pada graph dengan ujung berarah Beberapa problem sangat sulit diselesaikan dengan komputasi –hanya beberapa contoh problem yang dapat diselesaikan dalam waktu yang dapat diterima - Traveling Salesman Problem (TSP) - Graph-Coloring Problem (GCP)
13
Tipe Problem : Permasalahan Kombinatorik
Problem: menemukan suatu objek kombinatorik –seperti permutasi, kombinasi, atau subset – yang memenuhi batasan-batasan tertentu dan memiliki properti yang diinginkan Problem-problem paling sulit - Sejumlah objek kombinatorik tertentu tumbuh dengan cepat seiring peningkatan ukuran problem - Tidak diketahui algoritma eksak untuk menyelesaikan problem tersebut dalam waktu yang diinginkan Dari perspektif yang lebih abstrak, TSP & GCP merupakan salah satu contoh permasalahan kombinatorik
14
Tipe Problem : Permasalahan Geometrik
Berkaitan dengan objek geometrik: titik, garis, poligon, dll. Yunani kuno: membangun bentuk geometris sederhana –segitiga, lingkaran, dll.– menggunakan penggaris dan kompas yang tidak ditandai Masa kini: aplikasi komputer grafik, robot, tomography Problem klasik: - Problem closest-pair: diberikan n titik pada suatu bidang, temukan pasangan terdekat diantaranya - Problem Convex hull: temukan poligon cembung terkecil yang melibatkan semua titik yang telah ditentukan
15
Tipe Problem : Permasalahan Numerik
Melibatkan objek matematis yang memiliki sifat kontinyu: memecahkan persamaan dan sistem persamaan, menghitung integral tak berhingga, mengevaluasi fungsi, dll. Mayoritas problem-problem di atas hanya dapat dipecahkan dengan perkiraan - Komputer hanya dapat merepresentasikan angka real dengan kira-kira - Akumulasi kesalahan round-off Perubahan fokus komputasi industri: analisis numerik (pada industri & ilmu pengetahuan) menuju aplikasi bisnis (penyimpanan informasi, retrieval, transportasi melalui jaringan, dan presentasi kepada pengguna)
16
Efisiensi Algoritma Pertimbangan Memilih Algoritma:
Analisis Algoritma : menganalisis efisiensi algoritma, yang mencakup : Kebenaran efisiensi waktu (kecepatan) → banyaknya operasi yang dilakukan Tepat guna (efektif) Output sesuain dengan inputnya efisiensi memori → struktur data dan variabels yang digunakan Sesuai dengan permasalahan Kemudahan/kesederhanaan Untuk dipahami Untuk diprogram Kecepatan Algoritma Berkaitan dengan kecepatan eksekusi program Hemat Biaya mengacu pada kebutuhan memori Keempatnya sulit dicapai bersamaan dan biasaynya yang diutamakan adalah efisiensi (cepat dan hemat)
17
Algoritma yang bagus adalah algoritma yang efisien
Algoritma yang efisien ialah algoritma yang meminimumkan kebutuhan waktu dan ruang/memori. Kebutuhan waktu dan ruang suatu algoritma bergantung pada ukuran masukan (n), yang menyatakan jumlah data yang diproses. Mana yang lebih baik : menggunakan algoritma yang waktu eksekusinya cepat dengan komputer standard atau menggunakan algoritma yang waktunya tidak cepat tetapi dengan komputer yang cepat?
18
Misal dipunyai : Algoritma dengan waktu eksekusi dalam orde 2 pangkat n Sebuah komputer dengan kecepatan 10-4 x 2(pangkat)n n=10 → 1/10 detik n=20 → 2 menit n=30 → lebih dari satu hari n=38 → 1 tahun Algoritma dengan waktu eksekusi dalam orde 2(pangkat)n Sebuah komputer dengan kecepatan 10-6 x 2(pangkat)n n=45 → 1 tahun
19
Mengapa kita memerlukan algoritma yang efisien?
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.