Vous êtes sur la page 1sur 7

2.

Algoritma Greedy Algoritma Greedy adalah yang termasuk memecehkan masalah langkah demi langkah dan merupakan salah satu metode dalam masalah optimasi. Algoritma Greedy membentuk solusi langkah per langkah sebagai berikut: 1. Terdapat banyak pilihan yang perlu dieksplorasi pada setiap langkah solusi. Oleh karena itu, padasetiap langkah harus dibuat keputusan yang terbaik dalam menentukan pilihan. Keputusan yang telah diambil pada suatu langkah tidak dapat diubah lagi pada langkah selanjutnya. 2. Pendekatan yang digunakan dalam Algoritma Greedy adalah membuat pilihan yang terlihat memberikan perolehan terbaik, yaitu dengan membuat pilihan optimum local pada setiap langkah dan diharapkan akan mendapatkan solusi optimum global.

Algoritma Greedy didasarkan pada pimindahan edge(arc) per edge(arc) dan pada setiap langkah yang diambil tidak memikirkan konsekuensi kedepan, Greedy tidak beroperasi secara menyeluruh terhadap semua alternative solusi yang ada serta bagian masalah Greedy tidak selalu berhasil memberikan solusi yang benar-benar optimum tapi pasti memberikan solusi yang mendekati nilai optimum.

Masalah optimasi dalam konteks algoritma Greedy disusun oleh elemen-elemen sebagai berikut :

1. Himpunan kandidat. Himpunan ini berisi elemen-elemen yang memiliki peluang untuk pembentuk solusi. pada persoalan lintasan terpendewk dalkam graph, himpunan kandidat ini adalah himpunan simpul dari graph tersebut. 2. Himpunan solusi. Himpunan ini berisi solusi dari permasalahan yang diselesaikan dan elemennya terdiri dari elemen dalam himpunan kandidat, namun tidak semuanya atau dengan kata himpunan solusi ini adalah bagian dari himpunan kandidat. 3. Fungsi seleksi. Fungi yang setiap langkah memiliki kandidat yang paling mungkin untuk menghasilkan solusi optimal. Kandidat yang sudah dipilih pada suatu langkah tidak pernah diperimbangjan lagi pada langkah selanjutnya.

4. Fungi kelayakan Fungsi yang memeriksa apakah suatu kandidat yang telah dipilih (diseleksi) dapat memberikan solusi yang layak. 5. Fungsi obyektif Fungsi yang memaksimumkan atau meminimumkan nilai solusi. Tujuannya adalah memilih salah satu saja solusi terbaik dari masing masing anggota himpunan solusi.

2.3.1

Cara Kerja Algoritma Greedy Diberikan sebuah sebuah graph berbobot G(V.E). Tentukan lintasan terpendek dari vertex awal a, ke setiap vertex lainnya di G. asumsi bahea bobot semua edge(arc) bernilai positif. Algoritma Greedy untuk mencari lintasan terpendek dapat dirumuskan sebagai berikut:

1. Periksa semua edge(arc) yang langsung bersesuaian dengan vertex a. pilih edge(arc) yang bobotnya terkecil. Edge(arc) ini menjadi lintasan terpendek pertama, sebut sajaL(1).

2. Tentukan lintasan terpendek ke dua dengan cara sebagai berikutL: (i) (ii) (iii) Hitung d(i) = panjangL(1) + bobot edge(arc) dari vertex akhir L(1) keverteks i yang lain. Pilih d(i) yang terkecil Bandingkan d(i) = panjang L(1) + bobot edge(arc) (a,i) lebih kecil dari pada d(i), maka L(2) = L(1) U (edge(arc) dari verteks akhir L(i) ke verteks i).

3. Dengan cara yang sama, ulangi langkah (2) untuk menentyukan lintasan terpendek berikutnya.

2.3.2

Pseudocode Algoritma Greedy Procedure greedy (input c: himpunan_kandidat; output S: himpunan_solusi) { Menentukan solusi optimum dari persoalan optimasi dengan algoritma Greedy masukkan: himpunan kandidat C keluarkan: himpunan solusi S } Deklarasi x: kandidat;

Algoritma ;
s {} { inisialisasi s dengan kosong }
while (sebelum SOLUSI (s) and (c= {}) do X seleksi (c) ; { pilih kadidat dari c } C C {x } IF LAYAK (S U {X} then S S U {X} Endif Endwhile {SOLUSI (S) sudah diperoleh or C = {} }

Analisa Ambil
suatu kadidat dari himpunan kandidat C lalu masukan ke x dan kurangi C dengan kandidat tersebut. Kemudian apakah layak x digabungkan dengan himpunan solusi S? Jika layak, maka gabungkan x dengan solusi S dan lakukan perulangan hingga C kosong atau solusi S sudah ditemukan. Layak atau tidaknya x digabung dengan S, melihat tujuan yang ingin dicapai pada kasus yang sedang dipecahkan tetapi ntidak melihat apakah hasil tersebut merupakan hasil yang mampu mengoptimalkan tujuan, yang terpenting ketika langkah tersebut diambil setidaknya hasil pada saat itu mendekati tujuan yang ingin dicapai. Misalkan pada kasus mencari jalur terpendek, saat menguji apakah x layak digabungkan menjadi solusi S, yang menjadi pertimbangan adlah apakah jika x digabungkan dengan S akan menghasilkan solusi S yang terpendek. 2.4 Algoritma Dijkstra

2.4.1 Sejarah Algoritma Dijkstra

Algomatma Dijkstra ditemukan oleh Edsger W. Dijkstra yang merupakan salah satu variasi yang merupakan salah satu variasi bentuk algoritma popular dalam pemecahan persoalan yang terikat dengan masalah optimisasi dan bersifat sederhana. Algoritma ini menyelesaikan masalah mencari sebuah lintasan terpendek (sebuah lintasan yang mempunyai panjang minimum) dari vertex a ke vertex graph berbobot, bobot tersebut adalah bilangan positif jadi tidak dilalui oleh node negative, namun jika terjadi demikian , maka penyelesaian yang diberikan yang diberikan adalah infiniti.

Algoritma Dijkstra melibatkan pemasangan label pada verteks. Misalkan L(v) menyatakan label dari vertex v. pada setiap pembahasan, beberapa vertex mempunyai label sementara dan yang lain mempunyai label sementara. Dalam menggambarkan algoritma tersebut verteks-verteks yang mempunyai label yang tetap akan dilingkari. Selanjutnya , jika L(v) adalah label tetap dari verteks v, maka L(v) mempunyaqi label sementara. Setiap iterasi dari dari algoritma tersebut mengubah status satu label dari sementara ke tetap. Pada bagian ini L(z) merupakan panjang lintasan terpendek dari a ke z. Pada algomaritma Dijkstra node digunakan, karena algoritma Sijkstra menggunakan graph yang berarah.

2.4.2 CARA KERJA Algoritma Dijkstra Algoritma ini mencari panjang lintasan terpendek dari verteks a ke verteks z dalam sebuah graph berbobot tersambung. Langkah-Langkah dalam menentukan lintasan terpendek pada algoritma Dijkstra yaitiu: 1. Pada awalnya pilih node dengan bobot yang terendah dari node yang belum terpilih, diinisianlisasikan dengan 0 dan yang sudah terpilih diinisialisasikan dengan 1. 2. Bentuk table yang tersiri dari node, status, bobot dan predecessor. Lengkapi kolom bobot yang diperoleh dari jarak node sumber ke semua node yang langsung terhubung dalam node sumber tersebut. 3. Jika node sumber ditemukan maka tetapkan sebagai node terpilih. 4. Tetapkan node terpilih dengan label permanen dan perbaharuan node yang langsung terhubung. 5. Tentukan node sementara yang terhubung pada node sudah terpilih sebelumnya dan merupakan bobot terkecil dilihat dari table dan tentukan sebagai node terp[ilih berikutnya. 6. Apakah node yang terpilih merupakan node tujuan? Jika ya, maka kumpulan node terpilih atau predecessor merupakan rangkaian yang menunjukkan lintasan terpendek.

7. Begitu seterusnya hingga semua node terpilih Pseudocode algoritma Dijkstra adalah sebagai berikut: procedure Dijkstra ( INPUT m: matriks, a : simpul awal ) { Mencari Lintasan terpendek dari simpul awal a ke semua simul lainnya. Masukan : matriks ketetanggaan (m) dari graph berbobot G dan simpul awal a keluaran :Lintasan terpendek dari a ke semua simpul lainnya.

} Kamus : s: array [1. .n] of integer d: array [1. .n] of integer i:integer Algoritma : { Langkah 0 (inisialisasi : ) } Traversal [1. .n] s1 0 d1 ma1 { Langkah 1: } s1 1 da 00 { Langkah 2,3,,n-1 : ) } Traversal [ Langkah 1: ] S1 D1
1
oo

{ Langkah 1: }2,3,,n-1 : } Traversal { 2..n-1 } cari j sedemikian sehingga sj=0 dan Dj= min {d1,d2,,dn } sj 1 { simpul j sudah terpilih } Perbaharui d, untuk I = 1,2,3,s.d.n dengan :

D1 (baru) = min (lama,dj +mji } Jika menggunakan algoritma Dijkstra untuk menemukan jalur terpendek dari suatu graph, maka akan menemukan jalur yang terbaik. Karena pada waktu penentuan jalur yang akan dipilih. Akan dianalisasi bobot dari node yang belum terpilih,lalu d pilih node dengan bobot yang terkecil.jika ternyata ada bobot yang lebih kecil melalui node tertentu . maka bobot akan dapat berubah Algoritma Dijkstra akan berhenti ketika semua node sudah terpilih. Dan dengan algoritma dijkstra ini dapat menemukan jarak terpendek dari seluruh node. Tidak hanya untuk node dari asal dan tujuan tertentu saja.

Algoritma Dijkstra mengunakan waktu sebesar O(V*logV+E) dimana V dan E adalah banyaknya verteks dan arc. Kompleksitas algoritma Dijkstra adalah O(n
2

). Sehingga untuk mencari semua

pasangan verteks terpendek. Total waktu asimptotik komputasinya adalah : T(n)=n.O(n2)=O(n3). Algoritma Dijkstra lebih menguntungkan dari sisi running time.

Vous aimerez peut-être aussi