Minggu, 28 Juni 2015

TUGAS AP 2C

1.  Berikan contoh soal & penyelesaian dengan metode greedy dan Jelaskan!
2.  Berikan contoh soal & penyelesaian dengan divide & conquer dan Jelaskan!

Jawab :

1. Metode Greedy
Penyelesaian :
Metode Greedy adalah metode untuk memperoleh solusi yang optimal dari suatu masalah yang mempunyai 2 indikator yaitu : adanya fungsi tujuan & pembatas (Constrain).Contohnya :

PROCEDURE GREEDY (A,n)
Solusi <- 0 (solusi awal)
FOR I <- 1 TO n DO
    X  <-  SELECT(A)
    IF FEASIBLE (Solusi, x)
         THEN  Solusi  <- UNION (solusi, x)
    ENDIF
REPEAT
RETURN (Solusi)
END GREEDY

Penjelasan :
Dalam program diatas menggunakan prosedur Greedy dimana terdapat parameter (A,n) n adalah inputan data,variable Solusi bernilai 0 dan terdapat perulangan dari 1 sampai n yang kita input. Untuk variable X terdapat fungsi SELECT yang merupakan fungsi untuk mengambil data input dari A. Terdapat Percabangan If yang menggunakan fungsi FEASIBLE dimana fungsi yang bernilai boolean (0 atau 1). Jadi apabila nilai yang disimpan variable Solusi bernilai 0 atau 1 maka akan menjalankan statemen dibawahnya yaitu Solusi <- UNION (solusi, x).UNION adalah penggabungan dan pemeriksaan fungsi obyektifnya (update). Jadi nilai yang disimpan variable Solusi digabungkan dengan nilai dari variable x. Untuk mengakhiri perintah percabangan dapat kita tulis ENDIF & untuk mengulangkan perulangannya kita tulis REPEAT. Lalu terdapat RETURN (Solusi) yang artinya kembali ke variable Solusi. Untuk Mengakhiri program yang bermetode Greedy dapat kita tulis END GREEDY.

2. Divide dan Conquer
Penyelesaian :
Strategi Divide dan Conquer memecah masalah menjadi submasalah-submasalah independen yang lebih kecil sehingga solusi submasalah-submasalah dapat diperoleh secara mudah, solusi submasalah-submasalah digabung menjadi solusi seluruh masalah. Contohnya :

            Procedure DNC ( i,j : integer )
            Var K : integer ;
                        If  SMALL (i,j) then SOLVE (i,j)
                        Else begin
                                    K : = DIVIDE (i,j)
                                    COMBINE (DNC(i,k),DNC(k+1,j))
                        End if

Penjelasan :

Dalam program diatas menggunakan prosedur DNC(Divide & Conquer) yang terdapat formal parameter (I,j) bertipe datakan Integer. Lalu terdapat variable K juga bertipe datakan integer. Dalam program diatas menggunakan perintah percabangan if kemudian perintah SMALL merupakan fungsi yang mengirim Boolean yang menentukan apakah ukuran parameter I & j telah cukup kecil sehingga solusi dapat diperoleh. . Ukuran dinyatakan sebagai telah berukuran kecil bergantung masalah. Apabila Benar maka akan menjalankan perintah SOLVE tersebut dimana akan membenarkan/memperbaiki parameter-parameter tersebut. Apabila kondisi salah maka akan menjalankan Else dengan statemen K : = DIVIDE(I,j). Variabel K ini adalah hasil dari fungsi DIVIDE yang membagi menjadi 2 bagian pada posisi K dari parameter” tersebut biasanya bagian berukuran sama.Lalu terdapat perintah COMBINE yang merupakan fungsi untuk menggabungkan solusi X dan Y submasalah. Solusi diperoleh dengan memanggil prosedur rekursif DNC parameter (I,k) digabungkan dengan DNC (k+1,j).