Anda di halaman 1dari 8

TUGAS KELOMPOK

ANALISIS ALGORITMA

Diajukan untuk memenuhi tugas Mata Kuliah Analisis Algoritma yang di ampuh
dosen: Dwikeu Novi Asrika, S.kom,M.kom

Disusun oleh :

Muhamad Rizki Ramadhan 10116539

Sissy Octavia Shelyna 10116524

Alfitra Rezki Amhar 10118313

Kelas IF -8/S1/V

UNIVERSITAS KOMPUTER INDONESIA

FAKULTAS TEKNIK DAN ILMU KOMPUTER

TEKNIK INFORMATIKA

BANDUNG
A. Pengertian Algoritma Greedy
Algoritma greedy adalah algoritma yang menggunakan pendekatan penyelesaian masalah dengan mencari
nilai maksimum sementara pada setiap langkahnya. Istilah maksimum sementara ini dikenal dengan
istilah lokal maksimum. Pada kebanyakan kasus, algoritma greedy tidak akan menghasilkan solusi yang
paling optimal, algoritma greedy biasanya memberikan solusi yang mendekati optimum dalam waktu
yang cukup, dan juga hanya memiliki dua optimasi yaitu maksimasi dan minimasi. Algoritma greedy
memiliki prinsip take what you can get now, dan memiliki karakteristik mengambil pilihan terbaik tanpa
memikirkan konsekuensi ke depan, berharap bahwa dengan memilih optimum lokal di setiap langkah,
akan berakhir pada optimum global. Greedy memiliki fungsionalitas dasar yaitu fungsi untuk melakukan
penelusuran masalah, untuk memilih lokal maksimum dari pilihan-pilihan yang ada tiap langkahnya,
untuk mengisikan local maksimum ke solusi keseluruhan, dan untuk menentukan apakah solusi telah
didapatkan
Algoritma greedy memiliki elemen elemen sebagai berikut :
1. Himpunan kandidat, C.

2. Himpunan solusi, S.

3. Fungsi Seleksi (Selection function)

4. Fungsi kelayakan (feasible)

5. Fungsi obyektif.
Algoritma greedy melibatkan pencarian sebuah himpunan bagian(S) dari himpunan kandidat(C) . Dalam
hal ini , S harus memenuhin beberapa kriteria yang ditentukan, yaitu menyatakan suatu solusi dan S
dioptimasi oleh fungsi obyektif.
Algoritma greedy disusun oleh elemen-elemen berikut:

 Himpunan kandidat.
Berisi elemen-elemen pembentuk solusi.

 Himpunan solusi
Berisi kandidat-kandidat yang terpilih sebagai solusi persoalan.

 Fungsi seleksi (selection function)


Memilih kandidat yang paling memungkinkan mencapai solusi optimal. Kandidat yang sudah dipilih pada
suatu langkah tidak pernah dipertimbangkan lagi pada langkah selanjutnya.

 Fungsi kelayakan (feasible)


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 kendala
(constraints) yang ada. Kandidat yang layak dimasukkan ke dalam himpunan solusi, sedangkan kandidat
yang tidak layak dibuang dan tidak pernah dipertimbangkan lagi.
 Fungsi obyektif
yaitu fungsi yang memaksimumkan atau meminimumkan nilai solusi(misalnya panjang lintasan,
keuntungan, dan lain-lain).Contoh pada masalah Pemilihan Processor, berdasarkan benchmark elemen-
elemen algoritma greedy-nya adalah:
a.Himpunan kandidat: himpunan hardware yang terdiri dari Processor, Memory dan Graphic card
b.Himpunan solusi: Kombinasi Processor , Memory dan Graphic card dengan Benchmark terbaik namun
dengan total harga yang tidak melebihi budget maksimum
c.Fungsi seleksi: Seleksi Processor, Memory dan Graphic card agar mendapat performa optimum dan
tidak melebihi budget maksimum yang tersedia
d.Fungsi obyektif: Budget maksimum yang tersedia

B. Contoh Kasus

Minimisasi Waktu di dalam Sistem (Penjadwalan)

Persoalan: Sebuah server (dapat berupa processor, pompa, kasir di bank, dll) mempunyai n pelanggan
(customer, client) yang harus dilayani. Waktu pelayanan untuk setiap pelanggan sudah ditetapkan
sebelumnya, yaitu pelanggan i membutuhkan waktu ti. Kita ingin meminimumkan total waktu di dalam
sistem,

T = (waktu di dalam sistem untuk pelanggan i)

Karena jumlah pelanggan adalah tetap, meminimumkan waktu di dalam sistem ekivalen dengan
meminimumkan waktu rata-rata.

Misalkan kita mempunyai tiga pelanggan dengan

t1 = 5, t2 = 10, t3 = 3,

maka enam urutan pelayanan yang mungkin adalah:

Urutan T
=================================
1, 2, 3: 5 + (5 + 10) + (5 + 10 + 3 ) = 38
1, 3, 2: 5 + (5 + 3) + (5 + 3 + 10) = 31
2, 1, 3: 10 + (10 + 5) + (10 + 5 + 3) = 43
2, 3, 1: 10 + (10 + 3) + (10 + 3 + 5) = 41
3, 1, 2: 3 + (3 + 5) + (3 + 5 + 10) = 29 ¬ (optimal)
3, 2, 1: 3 + (3 + 10) + (3 + 10 + 5) = 34
Strategi greedy untuk memilih pelanggan berikutnya adalah:

 Pada setiap langkah, masukkan pelanggan yang membutuhkan waktu pelayanan terkecil
di antara pelanggan lain yang belum dilayani.

 Agar proses pemilihan pelanggan berikutnya optimal, maka perlu mengurutkan waktu
pelayanan seluruh pelanggan dalam urutan yang menaik. Jika waktu pengurutan tidak
dihitung, maka kompleksitas algoritma greedy untuk masalah minimisasi waktu di
dalam sistem adalah O(n).
C. Algoritma
procedure PenjadwalanPelanggan(input n:integer)

{ Mencetak informasi deretan pelanggan yang akan diproses oleh server tunggal
Masukan: n pelangan, setiap pelanggan dinomori 1, 2, …, n
Keluaran: urutan pelanggan yang dilayani
}
Deklarasi
i : integer
Algoritma:
{pelanggan 1, 2, ..., n sudah diurut menaik berdasarkan ti}
for i¬1 to n do
write(‘Pelanggan ‘, i, ‘ dilayani!’)
endfor

Pseucode
Contoh Algoritma Greedy Pada C++ Dengan Contoh Aplikasi Penukaran Koin Logam

#include
#include
#define size 99
void sort(int[], int);

main()
{
int x[size],i,n,uang,hasil[size];
printf("\n Banyak Koin :");
scanf("%d", &n);
printf("\n \n Masukkan Jenis Koin : \n");
for(i=1;i<=n;i++)
{
scanf("%d", &x[i]);
}
sort(x,n);
printf("\n Koin yang Tersedia :");

for(i=1;i<=n;i++)
{
printf("%d", x[i]);
printf("\n");
}
printf("\n");
printf("\n Masukkan Nilai yang Dipecah :");
scanf("%d", &uang);
printf("\n");

for(i=1;i<=n;i++)
{
hasil[i]=uang/x[i];
uang=uang%x[i];
}
for(i=1;i<=n;i++)
{
printf("Keping %d", x[i]);
printf("-an sebanyak : %d", hasil[i]);
printf("\n \n");
}
getch();
return 0;
}

void sort(int a[], int siz)


{
int pass,hold,j;
for(pass=1;pass<=siz-1;pass++)
{

for(j=0;j<=siz-2;j++)
{
if(a[j+1] < a[j+2])
{
hold=a[j+1];
a[j+1]=a[j+2];
a[j+2]=hold;
}
}
}
}
Kontribusi
Muhamad Rizki Ramadhan Membuat bagian pengertian

Sissy Octavia Shelyna Membuat bagian contoh Soal

Alfitra Rezki Amhar Membuat bagian pengertian

Link Video
https://drive.google.com/drive/folders/1tookInmUeIbyb-
MtwLeEqyIIQTMBYo3W?usp=sharing

Anda mungkin juga menyukai