Anda di halaman 1dari 25

PRAKTIKUM RANCANGAN ANALISA ALGORITMA

“Algoritma Greedy”

DISUSUN OLEH :

NAMA : Muhammad Yunis Khalis


NIM : 1757301047
KELAS : TI 3A
DOSEN PENGAJAR : Muhammad Arhami, S.Si., M.Kom

PROGRAM STUDI TEKNIK INFORMATIKA


JURUSAN TEKNOLOGI INFORMASI DAN KOMPUTER
POLITEKNIK NEGERI LHOKSEUMAWE
2019 - 2020
LEMBARAN PENGESAHAN

No. Praktikum : 05/PRAA/TI/2020

Nama Praktikum : Prak. Ranc. Analisa Algoritma

Judul Praktikum : Algoritma Greedy


Tanggal Praktikum : 23 Maret 2020

Tanggal Penyerahan : 30 Maret 2020

Nama Praktikan : M Yunis Khalis

NIM/ Kelas : 1757301047/ TI-3A

Nilai :

Buket Rata, 30 Maret 2020

Muhammad Arhami S.Si., M.Kom


NIP. 19741029 200003 1 00

ii
DAFTAR ISI

LEMBAR PENGESAHAN ................................................................................... ii


DAFTAR ISI ......................................................................................................... iii
BAB I PENDAHULUAN ....................................................................................... 1
BAB II TINJAUAN PUSTAKA............................................................................. 3
BAB III LANGKAH-LANGKAH PERCOBAAN .............................................. 10
BAB IV PEMBAHASAN HASIL PRAKTIKUM ................................................11
BAB V SIMPULAN DAN SARAN ..................................................................... 21
REFERENSI ......................................................................................................... 22

iii
BAB I
PENDAHULUAN

1.1 Latar Belakang

Algoritma adalah kumpulan langkah sistematis untuk memperoleh hasil


yang diinginkan. Sebelum sebuah algoritma dijalankan, biasanya ada suatu
kondisi awal (initial state) yang harus dipenuhi. Kemudian, langkah-langkah ini
diproses hingga mencapai suatu kondisi akhir (final state). Saat ini, yang
mempunyai lingkungan yang semakin luas dan banyak diminati, juga dapat
digunakan untuk menghasilkan uang adalah dunia pemrograman komputer.
Dalam dunia pemrograman komputer, dikenal algoritma dan banyak bahasa
pemrograman, seperti C, C++, Pascal, Basic, Java, dan lain-lain. Oleh karena
itulah, yang akan dibahas dalam makalah ini adalah Algoritma dan Pemrograman.

Pesatnya teknologi, terutama teknologi komputer sudah tak bisa dipungkiri


lagi, bagi yang mengikuti perkembangannya, ia tidak akan dipandang sebelah
mata. Sebaliknya, bagi yang tidak mengikuti perkembangannya, bersiaplah untuk
mundur secara suka rela dari panggung kompetisi. Ibarat wabah, teknologi
komputer sudah menyusupi hampir semua bidang kehidupan manusia. Dari
pemerintah pusat sampai tingkat pemerintah desa, perusahaan-perusahaan,
supermarket, minimarket, perguruan tinggi, SLTA, SLTP, bahkan SD hampir
semuanya mengenal komputer.

Algoritma merupakan langkah atau cara untuk menyelesaikan suatu


masalah. Program komputer pada umumnya semua sudah menggunakan
algoritma-algoritma yang berbeda. Dengan mengimplementasikan algoritma ke
dalam program dan mengerti tentang algoritma-algoritma yang digunakan akan
membantu kita dengan mudah dan mempersingkat waktu untuk memecahkan
suatu masalah. Analisis algoritma merupakan salah satu dasar ilmu komputer
yang sangat penting kepada siapapun yang terjun ke bidang sistem informasi atau
pengembangan perangkat lunak.

1
Agar suatu perintah dapat dilaksanakan oleh komputer, algoritma harus
ditulis dalam notasi bahasa pemrograman sehingga dinamakan program. Banyak
cabang ilmu komputer yang diacu dalam terminologi algoritma. Namun, jangan
beranggapan algoritma selalu identik dengan ilmu komputer saja. Dalam
kehidupan sehari-haripun banyak terdapat proses yang dinyatakan dalam suatu
algoritma. Cara-cara membuat kue atau masakan yang dinyatakan dalam suatu
resep juga dapat disebut sebagai algoritma. Pada setiap resep selalu ada urutan
langkah-langkah membuat masakan. Bila langkah-langkahnya tidak logis, tidak
dapat dihasilkan masakan yang diinginkan. Dari uraian tersebut dapat dilihat
besarnya peranan algoritma.

2
BAB II
TINJAUAN KEPUSTAKAAN

2.1 Algoritma Greedy


Algoritma greedy merupakan metode yang paling populer untuk
memecahkan persoalan optimasi. Greedy sendiri diambil dari bahasa inggris yang
artinya rakus, tamak atau serakah .Prinsip algoritma greedy adalah: “take what
you can get now!”. Algoritma greedy membentuk solusi langkah per langkah (step
by step). Terdapat banyak pilihan yang perlu dieksplorasi pada setiap langkah
solusi. Oleh karena itu, pada setiap langkah harus dibuat keputusan yang terbaik
dalam menentukan pilihan. Keputusan yang telah diambil pada suatu langkah
tidak dapat diubah lagi pada langkah selanjutnya.

Langkah utama dalam algoritma divide and conquer adalah :


1. Memilih beberapa jenis investasi (penanaman modal)
2. Mencari jalur tersingkat dari Bandung ke Surabaya
3. Memilih jurusan di Perguruan Tinggi
4. Bermain kartu remi

Algoritma greedy membentuk solusi langkah per langkah (step by step).


Terdapat banyak pilihan yang perlu dieksplorasi pada setiap langkah solusi. Oleh
karena itu, pada setiap langkah harus dibuat keputusan yang terbaik dalam
menentukan pilihan. Keputusan yang telah diambil pada suatu langkah tidak dapat
diubah lagi pada langkah selanjutnya. Persoalan optimasi (optimization
problems): persoalan yang menuntut pencarian solusi optimum. Persoalan
optimasi ada dua macam: Maksimasi (maximization) dan Minimasi
(minimization) Solusi optimum (terbaik) adalah solusi yang bernilai minimum
atau maksimum dari sekumpulan alternatif solusi yang mungkin. Elemen
persoalan optimasi: kendala (constraints) danfungsi objektif(atau fungsi optiamsi).
Algoritma Greedy merupakan metode yang paling populer dalam memecahkan
persoalan optimasi. Hanya ada dua macam persoalan optimasi, yaitu maksimasi

3
dan minimasi. Pada penelitian ini, algoritma greedy yang digunakan menerapkan
pendekatan maksimasi. Algoritma Greedy adalah algoritma yang memecahkan
masalah langkah per langkah. Pada setiap langkah terdapat banyak pilihan yang
perlu dieksplorasi. Persoalan optimalisasi dalam konteks algoritma greedy disusun
oleh elemen-elemen sebagai berikut:
1. Himpunan Kandidat, C.
Himpunan ini berisi elemen-elemen pembentuk solusi. Pada setiap
langkah, satu buah kandidat diambil dari himpunannya.
2. Himpunan Solusi, S
Himpunan ini berisi kandidat-kandidat yang terpilih sebagai solusi
persoalan. Dengan kata lain, himpunan solusi adalah himpunan bagian dari
himpunan kandidat.
3. Fungsi Seleksi (Selection Function)
Fungsi ini dinyatakan dengan predikat seleksi. Merupakan fungsi yang
pada setiap langkah memilih kandidat yang paling memungkinkan
mencapai solusi optimal. Kandidat yang sudah dipilih pada suatu langkah
tidak pernah dipertimbangkan lagi pada langkah selanjutnya.
4. Fungsi Kelayakan (Feasible)
Fungsi ini dinyatakan dengan predikat layak. Fungsi kelayakan ini
merupakan fungsi yang memeriksa apakah suatu kandidat yang telah
dipilih dapat memberikan solusi yang layak, yakni kandidat tersebut
bersama-sama dengan himpunan solusi yang sudah terbentuk tidak
melanggar batasan/aturan (constraints) yang ada. Kandidat yang layak
dimasukkan ke dalam himpunan solusi, sedangkan yang tidak layak
dibuang dan tidak pernah dipertimbangkan lagi.
5. Fungsi Obyektif
Fungsi obyektif ini merupakan sebuah fungsi yang memaksimumkan atau
meminimumkan nilai solusi. Dengan kata lain, algoritma greedy
melibatkan pencarian sebuah himpunan bagian, S, dari himpunan
kandidat, C yang dalam hal ini, S harus memenuhi beberapa kriteria yang
ditentukan, yaitu menyatakan suatu solusi dan S dioptimasi oleh fungsi

4
obyektif. Ada kalanya solusi optimum global yang diperoleh dari
algoritma greedy yang diharapkan sebagai solusi optimum dari persoalan,
belum tentu merupakan solusi optimum (terbaik), tetapi solusi sub-
optimum atau pseudo-optimum. Hal ini dikarenakan algoritma greedy
tidak beroperasi secara menyeluruh terhadap semua alternatif solusi yang
ada dan terdapat beberapa fungsi seleksi yang berbeda, yaitu jika fungsi
seleksi tidak identik dengan fungsi obyektif karena fungsi seleksi biasanya
didasarkan pada fungsi obyektif. Sehingga harus dipilih fungsi yang tepat
jika menginginkan algoritma menghasilkan solusi optimal atau nilai yang
optimum. Jadi, pada sebagian masalah algoritma greedy tidak selalu
berhasil memberikan solusi yang benar-benar optimum, tetapi algoritma
greedy pasti memberikan solusi yang mendekati (approximation) nilai
optimum. jika jawaban terbaik mutlak tidak diperlukan, maka algoritma
greedy sering berguna untuk menghasilkan solusi cukup baik
(approximation), daripada menggunakan algoritma yang lebih rumit untuk
menghasilkan solusi yang terbaik. Bila algoritma greedy optimum, maka
keoptimalannya itu dapat dibuktikan secara matematis (Angga & Munir,
2012).

2.2 Pengkodean Huffman (Huffman coding)

Pengodean Huffman adalah salah satu metode kompresi dasar, yang telah
terbukti bermanfaat dalam standar kompresi gambar dan video. Saat menerapkan
teknik penyandian Huffman pada Gambar, simbol sumber dapat berupa intensitas
piksel Gambar, atau output dari fungsi pemetaan intensitas. Kode Huffman
sebagai algoritma kompresi data menggunakan teknik greedy untuk
implementasinya. Algoritma didasarkan pada frekuensi karakter yang muncul
dalam file. Kita tahu bahwa file kita disimpan sebagai kode biner di komputer dan
setiap karakter dari file tersebut diberi kode karakter biner dan biasanya, kode
karakter ini memiliki panjang tetap untuk karakter yang berbeda.
Algoritma Huffman menggunakan prinsip pengkodean yang mirip dengan
kode Morse, yaitu tiap karakter (simbol) dikodekan hanya dengan rangkaian

5
beberapa bit, dimana karakter yang sering muncul dikodekan dengan rangkaian
bit yang pendek dan karakter yang jarang muncul dikodekan dengan rangkaian bit
yang lebih panjang. Berdasarkan tipe peta kode yang digunakan untuk mengubah
pesan awal (isi data yang dimasukkan) menjadi sekumpulan code-word, algoritma
Huffman termasuk ke dalam kelas algoritma yang menggunakan metode statik,
yaitu metode yang selalu menggunakan peta kode yang sama. Metode ini
membutuhkan dua fase (two-phase), yaitu fase pertama untuk menghitung
probabilitas kemunculan tiap simbol dan menentukan peta kodenya, dan fase
kedua untuk mengubah pesan menjadi kumpulan kode yang akan ditransmisikan.
Kode Huffman sebagai algoritma kompresi data menggunakan teknik
greedy untuk implementasinya. Algoritma didasarkan pada frekuensi karakter
yang muncul dalam file. Kita tahu bahwa file kita disimpan sebagai kode biner di
komputer dan setiap karakter dari file tersebut diberi kode karakter biner dan
biasanya, kode karakter ini memiliki panjang tetap untuk karakter yang berbeda.
Kode Awalan, berarti kode (urutan bit) ditetapkan sedemikian rupa sehingga kode
yang ditetapkan untuk satu karakter bukan awalan kode yang ditugaskan untuk
karakter lain. Ini adalah bagaimana Huffman Coding memastikan bahwa tidak ada
ambiguitas ketika decoding bitstream yang dihasilkan. Jika diketahui ada empat
karakter a, b, c dan d, dan kode panjang variabel yang sesuai adalah 00, 01, 0 dan
1. Pengkodean ini mengarah pada ambiguitas karena kode yang ditugaskan ke c
adalah awalan dari kode yang ditugaskan ke a dan b. Jika bit stream terkompresi
adalah 0001, output de-kompresi mungkin "cccd" atau "ccb" atau "acd" atau "ab".

Langkah-langkah untuk membangun Pohon Huffman Input adalah array karakter


unik beserta frekuensi kemunculannya dan outputnya adalah Huffman Tree.
1. Buat simpul daun untuk setiap karakter unik dan buat tumpukan min dari
semua simpul daun (Min Heap digunakan sebagai antrian prioritas. Nilai
bidang frekuensi digunakan untuk membandingkan dua simpul dalam
tumpukan minimum. Awalnya, karakter yang paling jarang muncul adalah
root).
2. Ekstrak dua node dengan frekuensi minimum dari min heap.

6
3. Buat simpul internal baru dengan frekuensi yang sama dengan jumlah dari
dua node frekuensi. Jadikan simpul yang diekstraksi pertama sebagai anak
kirinya dan simpul yang diekstrak lainnya sebagai anak kanannya.
Tambahkan simpul ini ke tumpukan min.
4. Ulangi langkah # 2 dan # 3 hingga heap hanya berisi satu node. Node yang
tersisa adalah node root dan pohon sudah selesai.

Sebagai contoh, dalam kode ASCII string 7 huruf “ABACCDA” membutuhkan


representasi 7 x 8 bit = 56 bit (7 byte), dengan rincian sebagai berikut: A =
01000001, B = 01000010, A = 01000001, C = 01000011, C = 01000011, D =
01000100, A = 01000001.

2.3 Egyptian Fraction (Pecahan Mesir)


Egyptian Fraction (pecahan Mesir) adalah representasi dari pecahan
sebagai penjumlahan dari unit-unit pecahan. Representasi ini digunakan pada
jaman dahulu kala di masa Peradaban Mesir Kuno masih berdiri. Permasalahan
yang ada adalah cara efisien menemukan unit-unit pecahan pembentuk pecahan
tersebut. Dimana, pemecahan permasalahan ini telah dicoba oleh berbagai
matematikawan dari seluruh dunia. Walaupun, metode untuk menemukan unit-
unit pecahan tersebut telah banyak ditemukan, namun belum ada di antaranya
yang paling efisien untuk memecahkan permasalahan ini. Metode tersebut disebut
Algoritma Greedy karena setiap langkah dari algoritma tersebut secara greed
(rakus) memilih unit pecahan terbesar yang dapat digunakan sebagai representasi
dari pecahan tersebut dan secara rekursif melakukan hal yang sama dengan
pecahan yang tersisa.
Bangsa mesir kuno mengenal bilangan berbasis sepuluh dengan simbol-
simbol yang memiliki nilai 1, 10, 100, 1.000, 10.000, 100.000, dan 1.000.000
(simbol yang melambangkan bilangan 1.000.000 ini juga sering digunakan untuk
melambangkan suatu 9 bilangan yang sangat besar). Kelipatan masingmasing
nomina tersebut didapatkan dengan cara mengulang simbol-simbol yang
bersesuaian, misalnya untuk menuliskan 622 bangsa Mesir mengulang simbol

7
yang melambangkan bilangan 100 sebanyak enam kali diikuti simbol yang
melambangkan bilangan 10 sebanyak dua kali, kemudian simbol yang
melambangkan bilangan 1 sebanyak dua kali.
Algoritma yang paling mendasar dalam memecahkan masalah pecahan
Mesir ini adalah algoritma greedy, dimana dalam setiap langkah kita mencari unit
pecahan terbesar yang tidak lebih dari bilangan yang terisisa. Algoritma ini telah
cukup banyak dikembangkan, termasuk salah satunya yang disebut reverse greedy
algorithm. Namun algoritma ini memiliki masalah dalam memisahkan unit-unit
pecahan yang sama, yang kemudian digunakan algoritma conflict resolution untuk
memecahkan masalah ini.( Olsen, A.L.1994)
Permasalahan muncul ketika dibutuhkan penghitungan yang melibatkan
pecahan. Untuk menyatakan pecahan, bangsa Mesir Kuno menambahkan satu
simbol yang berbentuk seperti mulut di atas simbol angka untuk membaliknya.
Jadi, untuk menyatakan bilangan 1/3 cukup dilakukan dengan menambahkan
simbol “mulut” tersebut di atas simbol yang menyatakan bilangan 3. Perkecualian
ada pada pecahan-pecahan 2/3 dan 3/4 yang memiliki simbol sendiri (Fithria, N.
2008)

2.4 Koin – Koin Pecahan Minimum

Algoritma greedy merupakan salah satu dari sekian banyak algoritma yang
sering di pakai dalam implementasi sebuah system atau program yang
menyangkut mengenai pencarian“optimasi”. Dalam kehidupan sehari hari, banyak
terdapat persoalan yang menuntut pencarian solusi optimum. Persoalan tersebut
dinamakan persoalan optimasi (optimization Problems). Persoalan Optimasi
adalah persoalan yang tidak hanya mencari sekedar solusi, tetapi mencari solusi
terbaik. (G. I. Sampurno, E. Sugiharti, dan A. Alamsyah.2018)
Algoritma greedy merupakan algoritma yang digunakan untuk
menemukan solusi optimal untuk masalah yang diberikan. Algoritma greedy
bekerja dengan menemukan solusi optimal secara lokal (solusi optimal untuk
sebagian masalah) pada setiap bagian sehingga menunjukkan solusi optimal
Global dapat ditemukan.

8
Dalam masalah ini, kita akan menggunakan algoritma greedy untuk
menemukan jumlah minimum koin /atau pengembalian coin yang dapat
disesuaikan dengan jumlah yang diberikan. Untuk ini, kita akan
mempertimbangkan semua koin atau catatan yang valid, yaitu denominasi {1, 2,
5, 10, 20, 50, 100, 200, 500, 2000}. Dan kita perlu mengembalikan jumlah
koin/uang kertas ini yang kita butuhkan untuk membayar jumlahnya.
Algoritma Greedy ini hampir sama dengan metode exhaustive search dan
brute force, dimana Exhaustive search ialah teknik pencarian solusi secara brute
force pada masalah yang melibatkan pencarian elemen dengan sifat khusus,
biasanya di antara objek-objek kombinatorik seperti permutasi, kombinasi, atau
himpunan bagian dari sebuah himpunan. Berdasarkan definisi ini, maka
exhaustive search adalah brute force juga. Oleh karena itu exhaustive search
adalah salah satu implementasi dalam brute force dalam kasus pencarian.
Secara Harfiah Greedy artinya rakus atau tamak, sifat yang berkonotasi
negatif. Orang yang memiliki sifat ini akan mengambil sebanyak mungkin atau
mengambil ang paling bagus atau yang paling mahal. Sesuai dengan arti tersebut,
“Prinsip Greedy adalah take what you can get now”. Oleh karena itu, Algoritma
Greedy merupakan algoritma yang lazim untuk memecahkan persoalan optimasi
meskipun hasilnya tidak selalu merupakan solusi yang optimum. Prinsip utama
dari algoritma ini adalah mengambil sebanyak mungkin apa yang dapat diperoleh
sekarang. ( Zhao, J., Huang, T., Pang, F. dan Liu, Y.2009)

9
BAB III
LANGKAH – LANGKAH PERCOBAAN

3.1 Peralatan
a. Laptop atau PC yang dilengkapi dengan sound card.
b. Sistem Operasi Windows

3.2 Bahan
a. Software Dev C++

3.3 Cara Kerja


a. Cari aplikasi Dev C++ yang sudah terinstal
b. Klik kanan, lalu Open
c. Software Dev C++ siap untuk digunakan

Gambar 3.1 logo Dev C++

10
BAB IV
PEMBAHASAN DAN HASIL PRAKTIKUM

4.1 Huffman Coding


Input :

11
12
13
14
Output :

Pembahasan :
Pada percobaan Pada percobaan ini, Masukan (input) melalui keyboard.
Setiap inputan akan dicatat sebagai karakter dan nilai. Kemudian pogram akan
mengsortir inputan yang telah di masukkan menjadi yang terkecil sampai terbesar.
Kemudian karakter digantu menjadi kode biner, Selanjutnya, kode bit tersebut
disimpan dari karakter yang nilai terbesar. Cara menyimpan data jenis karakter
adalah dengan mengurutkan data jenis karakter dari yang frekuensinya paling
banyak sampai ke yang paling sedikit.

Tracer :
Inputan Keyboard
num = 4
arr[0] = A, arr[1] = B, arr[2] =C , arr[3] =D
freq[0] = 5, freq[1] = 4, freq[2] =13 , freq[3] =2

15
A A<Total Arr[i] Freq[i] A+A=1
0 0<4T arr[0] = A freq[0] = 5 a=0+1=1
1 1< 4 T arr[1] = B freq[0] = 4 a=1+1=2
2 2<4T arr[2] = C freq[0] = 13 a=2+1=3
3 3<4T arr[3] = D freq[0] = 2 a=3+1=4
4 4<4T - - -

4.2 Egyptian Fraction


Input :

16
Output :

Pembahasan :

Pada percobaan ini, User akan menginputkan nilai pembilang dan


penyebut melaui keyboard. Untuk melihat kebenaran dari algoritma ini dan
menganalisa performanya, misalkan masukan untuk fungsi EgyptGreedy ini
adalah sebuah pecahan x/y. Kita dapat menghasilkan Fraksi Mesir menggunakan
Algoritma Greedy. Untuk jumlah tertentu dari bentuk ‘nr / dr’ di mana dr> nr,
pertama-tama temukan fraksi unit terbesar, kemudian ulangi untuk bagian sisanya.
Karena pembilang selalu berkurang, maka jumlah pecahan satuan maksimum
yang diperlukan untuk representasi pecahan Mesir. Sementara itu penyebut
biasanya berpangkat dua dari langkah sebelumnya.

Tracer :
Input = nr = 7; dr = 17

dr==0 || nr==1 dr%nr==0 1/(dr/nr) nr%dr==0 nr / dr nr > dr n=dr/nr+1 1/n nr*n-dr,dr*n

14 == 0 ||8== 1 14%8 == 0 - 8%14 == 0 - 8 > 14 (F) n =1 + 1 = 1/2 2,28


(F) (F) (F) 2
28 == 0 ||2== 1 28 % 2 == 1 / (28/2) - - - - - -
(F) 0(T = 1 /14

17
4.3 Koin–Koin Pecahan Minimum
Input :

Output :

Pembahasan :
Pada percobaan ini nilai yang diinput yaitu 32. Kita menggunakan
algoritma greedy untuk menemukan jumlah minimum koin /atau pengembalian
coin yang dapat disesuaikan dengan jumlah yang diberikan. Untuk ini, kita akan
mempertimbangkan semua koin atau catatan yang valid. Dan kita perlu
mengembalikan jumlah koin/uang kertas ini yang kita butuhkan untuk membayar
jumlahnya. Untuk menyelesaikan masalah tersebut maka kita akan menemukan
denominasi terbesar yang dapat digunakan. selanjutnya kita akan mengurangi
denominasi terbesar dari jumlah dan lagi melakukan proses yang sama sampai
jumlahnya menjadi nol.

18
Tracer :
N=5
V=32

i >= 0 V >= deno[i] V = v-deno[i] ans[i] = deno[i] i--

4 >= 0 (T) 32 >= 20 (T) 32 - 20 = 12 ans[0] = 20


12 >= 20 (T) - - 3
3 >= 0 (T) 12 >= 20 (T) 12 - 10 = 2 ans[1] = 10
12 >= 20 (T) - - 2
2 >= 0 (T) 2 >= 20 (T) - - 1
1 >= 0 (T) 2 >= 20 (T) 2-2=0 ans[2] = 2
2 >= 20 (T) - - 0
0>= 0 (T) 2 >= 20 (T) - - a
a - - - -

Untuk perulangan kedua :

I < ans.size ans[i] I++

0 >= 3(T) 20 1
1 >= 3(T) 10 2
2 >= 4 (T) 2 3
3 >= 3(T) - -

19
• Tugas
Input :

Output :

20
BAB V
SIMPULAN

5.1 Kesimpulan

Algoritma Greedy adalah algoritma sederhana yang digunakan dalam


mengoptimalkan suatu permasalahan dengan melakukan pendekatan penyelesaian
masalah dengan mencari nilai optimal sementara pada setiap langkah-langkahnya.
Algoritma Greedy cukup mudah dan cepat, namun dalam beberapa kasus tidak
selalu menghasilkan solusi optimal. Algoritma greedy merupakan jenis algoritma
yang menggunakan pendekatan penyelesaian masalah dengan mencari nilai
maksimum sementara pada setiap langkahnya. Greedy sendiri diambil dari bahasa
inggris yang artinya rakus, tamak atau serakah . Prinsip algoritma greedy adalah:
“take what you can get now!”. Nilai maksimum sementara ini dikenal dengan
istilah local maximum. Pada kebanyakan kasus, algoritma greedy tidak akan
menghasilkan solusi paling optimal, begitupun algoritma greedy biasanya
memberikan solusi yang mendekati nilai optimum dalam waktu yang cukup cepat.

21
REFERENSI

Fithria, N,. Penerapan Algoritma Greedy Dalam Egyptian Fraction, Teknik


Informatika Institut Teknologi Bandung, 2008.
G. I. Sampurno, E. Sugiharti, and A. Alamsyah, “Comparison of Dynamic
Programming Algorithm and Greedy Algorithm on Integer Knapsack
Problem in Freight Transportation,” Sci. J. Informatics, vol. 5, no. 1, p.
49, May 2018.
Meddins, Bob. 2000. Introduction Greedy Algorithms. University of East Anglia.
United Kingdom.
Olsen, A.L., Penalty functions and the knapsack problem. Evolutionary
Computation, IEEE World Congress on Computational Intelligence
Proceedings of the First IEEE Conference on IEEE, 1994.
Ivan Andrianto. 2015. Penerapan Algoritma Greedy Dalam Komputasi Paralel.
Institut Teknologi Bandung

22

Anda mungkin juga menyukai