Anda di halaman 1dari 19

Analisis Algoritma 3 sks

Samsuryadi
Pengantar Analisis Algoritma
 Algoritma adalah urutan langkah-langkah logis penyelesaian masalah
yang disusun secara sistematis.

 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 yang lama
untuk menyelesaikan masalahnya mempunyai kompleksitas yang
tinggi.
 Algoritma adalah suatu barisan instruksi
tidak bermakna ganda untuk menyelesaikan
suatu permasahalan.
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.
Isi dari algoritma

 Assignment
 Subroutine call
 Sequence
 Selection (Percabangan/Pemilihan)
 Looping (Pengulangan)
Isi dari algoritma (Uraian)
 Assignment adalah pemberian nilai kepada suatu Variabel atau Konstanta
sesuai dengan jenis/tipe datanya. Nilai yang diberikan dapat 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.
 Selection (Pencabangan). Percabangan dalam pemrograman komputer
dikenal sebagai cara untuk mengendalikan program. Program yang dibuat
dan diterjemahkan oleh penerjemah akan di eksekusi dari baris awal
hingga baris akhir kecuali ada percabangan diantaranya, meskipun pada
akhirnya juga akan sampai baris terakhir.
 Looping adalah suatu proses perulangan suatu fungsi.
Fundamentals of Algorithmic Problem
Solving
Beberapa tipe problem penting

 Sorting
 Searching
 Pemrosesan string
 Problem graph
 Problem kombinatorik
 Problem geometri
 Problem numerik
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
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
Tipe Problem : Pemrosesan String

 String = urutan karakter alphabet


 Minat khusus: text strings, binary strings,
gene sequences bioinformatika, dll.
 Problem khusus: pencocokan string
- Pencarian suatu kata dalam teks
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)
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
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
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)
Efisiensi Algoritma
Pertimbangan Memilih Algoritma:
 Kebenaran
 Tepat guna (efektif)
Keluaran (Output) sesuai dengan keluaran (input)nya
Sesuai dengan permasalahan
 Kemudahan/kesederhanaan
untuk di pahami
untuk di program
 Kecepatan Algoritma
 Berkaitan dengan kecepatan eksekusi program
 Hemat Biaya
 mengacu pada kebutuhan memori
 Keempatnya sulit dicapai bersamaan dan biasanya yang diutamakan adalah
efisiensi (cepat dan hemat)
 Analisis Algoritma: menganalisis efisiensi algoritma, yang mencakup :
efisiensi waktu (kecepatan) → banyaknya operasi yang dilakukan
efisiensi memori → struktur data dan variabel yang digunakan
 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?
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
Misal dipunyai :
 Algoritma dengan waktu eksekusi dalam orde 2(pangkat)n
 Sebuah komputer dengan kecepatan 10-6 x 2(pangkat)n
 n=45 → 1 tahun
Mengapa kita memerlukan algoritma
yang efisien?

Anda mungkin juga menyukai