Greedy Algoritma
#Pendahuluan
Ternyata
matematika sangat berguna bagi kehiduapan manusia sperti pembangunan gedung,
pembuatan jalan tol, bahkan untuk membuat sebuah aplikasi dll. algoritma greedy
adalah salah satu dari sekian banyaknya rumus matematika.kali ini saya akan
memberi tahu cara membuat aplikasi untuk menghitung algoritma greedy
menggunakan java.
#Dasar
Teori
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.
#Uji Coba
1.
Masukkan kode berikut :
import java.io.DataInputStream;
class AlgoritmaGreedy
{
public int i,j,k;
// konstruktor
AlgoritmaGreedy(){
}
// method untuk proses algoritma greedy
void Greedy(int koin[], int hasil[],int jum[],
int uang, int i)
{
int s [] = new int[uang];
while(jum[i] < uang)
{
k=(int)(Math.random()*koin.length);
s[hasil[i]] = koin[k];
if((jum[i] + s[hasil[i]]) <= uang)
System.out.print(s[hasil[i]]+"
");
jum[i]+=s[hasil[i]];
hasil[i]+=1;
}
System.out.print(" ");
if (jum[i] == uang)
System.out.println(" =
"+hasil[i]+" koin");
else
System.out.println(" = Tidak ada
solusi");
}
// method sorting
void sorting(int data[], int n)
{
for(i=0;i<n-1;i++){
for(j=0; j<n-1;j++)
if(data[j]<data[j+1])
{
k=data[j];
data[j]=data[j+1];
data[j+1]= k;
}
}
}
// method untuk mencari solusi max n min
void solusiGlobal(int data[],int jum[], int
uang)
{
int bin[] = new int[data.length];
j=0;
for (i=0;i<data.length;i++)
{
if(jum[i]==uang){
bin[j]=data[i];
j+=1;
}
}
sorting(bin,bin.length);
k=0;
for(i=0;i<bin.length;i++)
if(bin[i] != 0)
k+=1;
System.out.println("nSolusi Minimum :
"+bin[k-1]);
System.out.println("Solusi Maximum :
"+bin[0]);
}
}
class main
{
public static void main (String[] args) throws
Exception
{
DataInputStream entri = new
DataInputStream(System.in);
System.out.print("Masukan jumlah uang yg
di tukar: ");
int uang =
Integer.parseInt(entri.readLine());
System.out.print("Masukkan banyaknya
koin: ");
int n = Integer.parseInt(entri.readLine());
int koin[] = new int[n];
for(int i = 0;i<n;i++)
{
System.out.print("Koin
ke-"+(i+1)+" : ");
koin[i] =
Integer.parseInt(entri.readLine());
}
System.out.print("Masukkan batas
iterasi: ");
int batas =
Integer.parseInt(entri.readLine());
int hasil[] = new int [batas];
int jum[] = new int [batas];
// instansiasi objek greedy
AlgoritmaGreedy g = new AlgoritmaGreedy();
for(int i =0;i<batas;i++)
{
System.out.print("nSolusi
ke-"+(i+1)+" = (");
g.Greedy(koin,hasil,jum,uang,i);
}
g.solusiGlobal(hasil,jum,uang);
}
}
2.
Maka akan keluar hasil
sperti ini
#Penutup
Demikian yang dapat kami paparkan mengenai materi yang
menjadi pokok bahasan dalam makalah ini, tentunya masih banyak kekurangan dan
kelemahannya, kerena terbatasnya pengetahuan dan kurangnya rujukan atau
referensi yang ada hubungannya dengan judul makalah ini.
Komentar
Posting Komentar