Você está na página 1de 5

RESUME DESAIN & ANALISIS

ALGORITMA
Nama Anggota Kelompok:
1. Raymond Gomgom Sitorus
(115060807111125)
2. Julian Sitoajie Satrio
(115060807111132)
3. Teguh Adi Gunawan
(115060801111027)
4. Ratri Arijaya
(115060800111086)
5. Ramadhan Anindya G. A
(115060807111024)
Kelas : TIF-H
Kelompok 8

Greedy Algorithm yaitu serupa dengan sebuah


pemrograman dinamik, bedanya jawaban dari
submasalah tidak perlu diketahui dalam setiap
tahap; dan menggunakan pilihan serakah
yang dilihat terbaik pada saat itu.

Kompresi Data adalah sebuah cara untuk


memadatkan
data
sehingga
hanya
memerlukan ruangan penyimpanan lebih kecil
sehingga lebih efisien dalam menyimpannya
atau mempersingkat waktu pertukaran data
tersebut.

Backtracking merupakan
perbaikan
dari
pendekatan kekerasan, yang secara sistematis
mencari solusi untuk masalah di antara semua
pilihan yang tersedia.

Branch and Bround (B&B) juga merupakan


metode pencarian di dalam ruang solusi secara
sistematis. Branch and Bround digunakan
untuk mencari solusi optimal dari berbagai
optimasi masalah, terutama dalam diskrit dan
optimasi kombinatorial. Ini terdiri dari
pencacahan sistematis semua solusi kandidat,
dimana himpunan bagian besar calon sia-sia
dibuang secara massal, dengan menggunakan
perkiraan batas bawah dan atas kuantitas yang
sedang dioptimalkan.

A. Pengertian Desain & Analisis Algoritma


Desain dan Analisis Algoritma adalah suatu
cabang khusus dalam ilmu komputer yang
mempelajari karakteristik dan performa dari suatu
algoritma dalam menyelesaikan masalah, terlepas
dari implementasi algoritma tersebut. Dalam
cabang disiplin ini algoritma dipelajari secara
abstrak, terlepas dari sistem komputer atau bahasa
pemrograman yang digunakan. Algoritma yang
berbeda dapat diterapkan pada suatu masalah
dengan kriteria yang sama.

Terdapat beberapa paradigma yang digunakan


dalam banyak algoritma, diantaranya yaitu :

Divide and Conquer yaitu paradigma untuk


membagi suatu permasalahan besar menjadi
permasalahan-permasalahan yang lebih kecil.
Pembagian masalah ini dilakukan terus
menerus sampai ditemukan bagian masalah
kecil yang mudah untuk dipecahkan.
Singkatnya
menyelesaikan
keseluruhan
masalah dengan membagi masalah besar dan
kemudian
memecahkan
permasalahanpermasalahan kecil yang terbentuk.
Dynamic programming yaitu paradigma yang
digunakan pada suatu masalah yang
mengandung sub-struktur yang optimal dan
mengandung beberapa bagian permasalahan
yang tumpang tindih. Paradigma ini sekilas
terlihat mirip dengan paradigma Divide and
Conquer,
sama-sama
mencoba
untuk
membagi
permasalahan
menjadi
sub
permasalahan yang lebih kecil, tapi secara
intrinsik ada perbedaan dari karakter
permasalahan yang dihadapi.

Adapun Jenis-jenis algoritma yang lainnya


adalah:
Bahasa Semu (pseudo code) yaitu dengan
menggunakan bahasa sehari-hari, tetapi harus
jelas dan struktur.

Diagram Alir/Alur (Flowchart) yaitu dengan


membuat suatu penulisan atau penyajian
algoritma
berupa
diagram
yang
menggambarkan susunan alur logika dari
suatu permasalahan.

B. Konsep Dasar Algoritma


Algoritma adalah kumpulan instruksi/perintah
yang dibuat secara jelas dan sistematis berdasarkan
urutan yang logis (logika) untuk penyelesaian suatu
masalah. French,C.S. (1984) menyatakan sejumlah
konsep yang mempunyai relevansi dengan masalah
rancangan program yaitu kemampuan komputer,
kesulitan dan ketepatan.
Penerapan dari konsep tersebut biasanya
digunakan dalam rancangan algoritma. Dalam
merancang sebuah algoritma, Fletcher (1991)
memberikan beberapa cara atau metode yaitu
kumpulan perintah, ekspresi, tabel instruksi,
program komputer, kode semu dan flow chart,

sedangkan Knuth (1973) menyarankan algoritma


fundamental.
Untuk keperluan matematika dan program
komputer, metode yang sering digunakan yaitu :
1. Diagram Alir (Flow Chart)
2. Kode Semu (Pseudo Code)
3. Algoritma Fundamental
Algoritma
(algoritma
komputer)
didefinisikan sebagai urutan langkah-langkah
komputasi yang akan dieksekusi oleh komputer
untuk mentransformasikan masukan (input) yang
valid menjadi keluaran (output) yang diinginkan.
Dengan demikian algoritma dapat kita pandang
sebagai
suatu
alat
untuk
meyelesaikan
permasalahan/problem komputasi.
Problem
kita
abstraksikan
sebagai
sekelompok nilai (data) atau input, sedangkan
penyelesaian (solusi) dari problem tersebut dapat
kita pandang sebagai sekelompok nilai (informasi)
atau output. Proses mentransformasikan input
menjadi
output
adalah
metoda
untuk
menyelesaikan problem tersebut. Dari penjelasan
ini, problem-problem yang kita angkat/selesaikan
adalah
suatu
problem
yang
sudah
dipunyai/diketahui penyelesaiannya.
Knuth (1973) menyatakan 5 komponen
utama
dalam
algoritma yaitu finiteness,
definiteness, input, output dan effectiveness.
Sehingga dalam merancang sebuah algoritma ada 3
(tiga) komponen yang harus ada yaitu:
1. Komponen masukan (input)
Komponen ini biasanya terdiri dari pemilihan
variable, jenis variable, tipe variable, konstanta dan
parameter (dalam fungsi).
2. Komponen keluaran (output)
Komponen ini merupakan tujuan dari perancangan
algoritma dan program. Permasalahan yang
diselesaikan dalam algoritma dan program harus
ditampilkan
dalam
komponen
keluaran.
Karakteristik keluaran yang baik adalah benar
(menjawab) permasalahan dan tampilan yang
ramah (Frendly).
3. Komponen proses (processing)
Komponen ini merupakan bagian utama dan
terpenting dalam merancang sebuah algoritma.
Dalam bagian ini terdapat logika masalah, logika
algoritma (sintaksis dan semantik), rumusan,
metode (rekursi, perbandingan, penggabungan,
pengurangan dan lain-lain).
1.a. Diagram Alir (Flowchart)
Algoritma ini menggunakan sejumlah simbol untuk
menyatakan kegiatan-kegiatan secara keseluruhan.
1.b. Kode Semu (Pseudocode)

Dalam merancang sebuah algoritma menggunakan


kode semu, komponen-komponen input, output dan
proses harus terdefinisi secara jelas. Disamping itu
beberapa ketentuan dan aturan pendefinisian
memang secara baku tidak ditemukan dalam
beberapa buku literatur, namun aturan-aturan yang
di ajukan dibawah ini akan membantu
mempermudah perancangan algoritma dan evaluasi
serta analisis algoritma.
Aturan-aturan tersebut :
1. Kode semu harus dimulai dengan judul.
Aturan ini secara mudah dapat dimengerti
fungsi dan manfaatnya. Judul harus dapat
menjelaskan spesifikasi masalah yang
dirancang algoritmanya. Penulisannya
dapat dengan huruf kapital semuanya atau
tidak.
2. Kode semu harus ditulis dengan nomor
yang menunjukkan urutan-urutan langkahlangkah dalam algoritma.
3. Pendeklarasian variabel, konstanta,
parameter, rumus dan pernyataan harus
sederhana
1.c. Algoritma Fundamental
Knuth (1973)menyajikan format algoritma
yang dapat digunakan secara bebas untuk
berbagai bahasa pemrograman, artinya
dapat dengan mudah diimplementasika
nmenggunakan Pascal, C, Fortran, PL atau
BASIC.

C. Tahapan Algoritma (Proses Pemrograman)


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.

Merancang
(flowchart/pseudocode);
bagaimana
rincian
keluarannya.

Menulis program; Ubah algoritma menjadi


program (source code) dalam bahasa
pemrograman tertentu.

algoritma
Apa maksudnya,
prosesnya,
apa

2.

Mengubah source code menjadi executable


code melalui proses compiling.

Memeriksa hasil compiling, jika salah maka


kembali ke tahap empat

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.

3.

4.

Algoritma
brute
force
seringkali
merupakan pilihan yang kurang disukai
karena ketidakmangkusannyaitu, tetapi
dengan mencari pola-pola yang mendasar,
keteraturan, atau trik-trik khusus, biasanya
akan
membantu
kita
menemukan
algoritma yang lebihcerdas dan lebih
mangkus.
Untuk masalah yang ukurannya kecil,
kesederhanaan brute force biasanya lebih
diperhitungkan
daripada
ketidakmangkusannya. Algoritma brute
force sering digunakan sebagai basis bila
membandingkan
beberapa
alternatif
algoritma yang mangkus.
Algoritma brute force seringkali lebih
mudah
diimplementasikan
daripada
algoritma yang lebih canggih, dan karena
kesederhanaannya,
kadang-kadang
algoritma brute force dapat lebih mangkus
(ditinjau dari segi implementasi).

1.c. Kelebihan dan Kekurangan Metode Brute


Force
D. Contoh Algoritma

1.

Algoritma Brute Force

1.a. Pengertian Algoritma Brute Force


Brute force adalah sebuah
pendekatan
yang
lempang
(straightforward) untuk memecahkan
suatu masalah, biasanya didasarkan pada
pernyataan masalah (problem statement)
dan definisi konsep yang dilibatkan.
Algoritma
brute
force
memecahkan masalah dengan sangat
sederhana, langsung dan dengan cara yang
jelas (obvious way).
Contoh kasus: Menemukan semua faktor
dari bilangan bulat n selain dari 1 dan n itu
sendiri.

Kelebihan:
1. Metode brute force dapat digunakan untuk
memecahkan hampir sebagian besar
masalah (wide applicability applicability).
2. Metode brute force sederhana dan mudah
dimengerti dimengerti.
3. Metode brute force menghasilkan algoritma
yang layak untuk beberapa masalah penting
seperti
pencarian,
pengurutan,
,
pencocokan string string, perkalian matriks
matriks.
4. Metode brute force menghasilkan algoritma
baku
(standard)
untuk
tugas-tugas
komputasi seperti penjumlahan/perkalian n
buah bilangan, menentukan elemen
minimum atau maksimum di dalam tabel
(list).
Kekurangan:
1. Metode brute force jarang menghasilkan
algoritma yang mangkus
2. Beberapa algoritma brute force lambat
sehingga tidak dapat diterima mangkus.
3. Tidak
sekontruktif/sekreatif
teknik
pemecahan masalah lainnya

1.b. Karakteristik Algoritma Brute Force


1.

Algoritma brute force umumnya tidak


cerdas dan tidak mangkus, karena ia
membutuhkan jumlah langkah yang besar
dalam penyelesaiannya. Kadang-kadang
algoritma brute force disebut juga
algoritma naif (nave algorithm).

2.

Algoritma Greedy

2.a. Pengertian Algoritma Greedy

Metode/Algoritma
Greedy
merupakan algoritma yang membentuk
solusi langkah per langkah. Pada setiap
langkah tersebut akan dipilih keputusan
yang paling optimal. Keputusan tersebut
tidak perlu memperhatikan keputusan
selanjutnya yang akan diambil, dan
keputusan tersebut tidak dapat diubah lagi
pada langkah selanjutnya.

layak. Maksudnya yaitu apakah kandidat


tersebut bersama dengan himpunan solusi
yang sudah terbentuk tidak melanggar
kendala yang ada.
5.

Fungsi
Solusi:
Fungsi
yang
mengembalikan nilai boolean. True jika
himpunan solusi yang sudah tebentuk
merupakan solusi yang lengkap; False jika
himpunan solusi belum lengkap.

6.

Fungsi
Objektif:
Fungsi
mengoptimalkan solusi.

2.b. Prinsip Utama Algoritma Greedy


Prinsip utama algoritma greedy
adalah take what you can get now!.
Maksud dari prinsip tersebut adalah
sebagai berikut: Pada setiap langkah
dalam algoritma greedy, kita ambil
keputusan yang paling optimal untuk
langkah tersebut tanpa memperhatikan
konsekuensi pada langkah selanjutnya.
Kita namakan solusi tersebut dengan
optimum
lokal.
Kemudian
saat
pengambilan nilai optimum lokal pada
setiap langkah, diharapkan tercapai
optimum global, yaitu tercapainya solusi
optimum yang melibatkan keseluruhan
langkah dari awal sampai akhir.

2.c.Elemen Algoritma Greedy

Elemen-elemen
yang
digunakan
dalam
penerapan algoritma greedy antara lain :
1.

Himpunan Kandidat: Himpunan yang


berisi elemen pembentuk solusi.

2.

Himpunan Solusi: Himpunan yang terpilih


sebagai solusi persoalan.

3.

Fungsi Seleksi: Fungsi yang memilih


kandidat yang paling mungkin untuk
mencapai solusi optimal.

4.

Fungsi
Kelayakan:
Fungsi
yang
memeriksa apakah suatu kandidat yang
dipilih dapat memberikan solusi yang

3.

yang

Algoritma Devide and Conquer

3.a. Pengertian Algoritma Devide and


Conquer
Divide and Conquer dulunya
adalah strategi militer yang dikenal
dengan namadivide ut imperes. Sekarang
strategi
tersebut
menjadi
strategi
fundamental di dalam ilmu komputer
dengan namaDivide and Conquer.
Divide:
membagi
masalah
menjadi beberapa masalah yang memiliki
kemiripan dengan masalah semula namun
berukuran lebih kecil (idealny berukuran
hampir sama), Conquer: memecahkan
(menyelesaikan) masing-masing masalah
(secararekursif).
Jika
digabungkan
menjadi: mengabungkan solusi masingmasing masalah sehingga membentuk
solusi masalah semula.

3.b. Obyek Permasalahan


Obyek permasalahannya dibagi masukan
(input) atau instances yang berukuran n
seperti:
-tabel

-matriks,
-eksponen,
-dll, bergantung pada masalahnya.

Tiap-tiap masalah mempunyai


karakteristik yang sama(the same type)
dengan karakteristik masalah asal,
sehingga metode Divide and Conquer
lebih natural diungkapkan dalam skema
rekursif.
4.

Dengan metode runut-balik, kita


tidak
perlu
memeriksa
semua
kemungkinan solusi yang ada. Hanya
pencarian yang mengarah ke solusi saja
yang selalu dipertimbangkan. Akibatnya,
waktu pencarian dapat dihemat.
Saat ini algoritma runut-balik
banyak diterapkan untuk program
games(seperti
permainan
tic-tac-toe,
menemukan jalan keluar dalam sebuah
labirin, catur, dll) dan masalah-masalah
pada bidang kecerdasan buatan (artificial
intelligence).

Algoritma Backtracking

4.a. Pengertian Algoritma Backtracking

Algoritma
Runut-balik
(backtracking) adalah algoritma yang
berbasis pada DFS untuk mencari solusi
persoalan secara lebih mangkus.
Runut-balik, yang merupakan perbaikan
dari algoritma brute-force, secara sistematis
mencari solusi persoalan di antara semua
kemungkinan solusi yang ada.

http://blog.ub.ac.id/riezkhi/2012/02/25/daa_introdu
ction/
http://blog.ub.ac.id/sachan/2012/02/27/desain-dananalisis-algoritma/
http://ainavanuy.blogspot.com/2012/11/desainanalisis-algoritma.html

Você também pode gostar