Anda di halaman 1dari 8

MTE 3104 MEMBUAT KEPUTUSAN

Algoritma Prim Algoritma ini bermula dari simpul yang berubah-ubah di setiap tingkatnya, dibenarkan menambah cabang baru untuk membuat susunan pokok baru. Algoritma ini akan tertahan ketika simpul yang sedang dieksplorasi pada graf sudah sampai pada simpul y ang dituju. Strategi yang digunakan adalah strategi Greedy dengan menganggap bahawa pada setiap langkah dari pohon merentangnya adalah augmented dan dipilih simpul yang nilainya paling kecil dari semua simpul yang ada. Kaedah Greedy merupakan salah satu kaedah untuk merancang dan mereka bentuk suatu algoritma. Kaedah Greedy membina suatu pohon merentang minimum dengan menyemak garis demi garis untuk memilih garis dengan pemberat kecil dan membuang garis dengan berat besar, sehingga terbentuk suatu pohon merentang minimum. Kaedah ini digunakan untuk mendapatkan penyelesaian yang optimum dari suatu permasalahan. Beberapa penyelidik yang menggunakan kaedah Greedy diantaranya adalah, yang pertama Borvka tahun 1 926, selanjutnya dengan kaedah yang sama, kajian beliau dilihat semula oleh Choquet tahun 1 938, Lukasziewicz, Florek, Perkal, Steinhaus dan Zubrzy cki tahun 1 951 . Algoritma Borv ka bermula dari n titik terasing dari graf (graf semula tanpa garis), kemudian dari masing-masing titik dipilih garis dengan berat terkecil yang berkaitan dengan titik tersebut. Kerana setiap garis mempunyai dua titik, maka mungkin ada garis yang diperiksa dua kali. Penyelidik selanjutnya adalah Kruskal tahun 1 956, yang menyusun garisgaris dalam urutan tidak menurun ( non decreasing ) dari pemberatnya. Langkah awal adalah memilih garis dengan berat terkecil diantara semua garis. Selanjutnya memilih garis dengan berat terkecil seterusnya diantara sisa garis, dengan garis tersebut menghubungkan titik di dalam pohon bahagian yang sudah dipilih dengan titik diluar pohon bahagian.

MTE 3104 MEMBUAT KEPUTUSAN

Matematik Vojtch Jarnk tahun 1 930 memperkenalkan suatu kaedah penentuan pohon merentang, yang selanjutnya diteliti kembali oleh Robert C. Prim tahun 1 957 dan Dijkstra tahun 1 959 sehingga menghasilkan suatu algoritma yang dikenali dengan nama algoritma Prim. Algoritma Prim menitikberatkan pada pemilihan berat minimum

berdasarkan simpul yang diambil. Dan kerana tidak perlu mengurutkan terlebih dahulu, algoritma Prim sesuai untuk pokok dengan jumlah simpul banyak. Algoritma Prim akan selalu berjaya mencari pohon merentang minimum tetapi pohon merentang yang dihasilkan tidak selalu unik. Langkah-langkah dalam algoritma Prim adalah sebagai berikut: Buat sebuah pohon yang terdiri dari satu simpul ( node ), dipilih secara rawak dari graf. Buat sebuah himpunan yang mengandungi semua cabang di graf. Ulangi hingga semua cabang di dalam himpunan menghubungkan dua simpul di pohon Padam dari himpunan satu cabang dengan berat terkecil yang menghubungkan satu simpul di pohon dengan satu simpul di luar pokok. Sambungkan cabang tersebut ke pohon.

Algoritma Prim dalam pseudocode iaitu: Procedure Prim (input G: graf, output T: pokok) {Membentuk pohon merentang minimum T dari graf terhubung G. Masukan: graf-berbobot berhubung G = (V, E), y ang mana | V | = n Keluaran: pohon merentang minimum T = (V, E ') } Deklarasi i, p, q, u, v : integer

MTE 3104 MEMBUAT KEPUTUSAN

Algoritma Cari sisi (p, q) dari E y ang berpemberat terkecil T {(p, q)} for i 1 to n-1 do Pilih sisi (u, v ) dari E yang pemberatnya terkecil namun saling bersebelahan dengan suatu simpul didalam T T T U {(u, v )} end for Keterangan: G = graf. T = pohon. V = himpunan simpul-simpul. E = himpunan sisi-sisi y ang menghubungkan simpul di graf. E '= himpunan sisi-sisi y ang menghubungkan simpul-simpul y ang ada di pohon. (P, q) = pasangan simpul-simpul y ang ada di graf y ang membentuk sisi. (U, v) = pasangan simpul-simpul yang ada di pohon yang membentuk sisi dengan berat terkecil.

Algoritma Kruskal Algoritma Kruskal adalah algoritma untuk mencari pohon merentang minimum secara langsung berdasarkan kepada algoritma MST ( Minimum Spanning Tree ) umum. Pada algoritma Kruskal sisi-sisi di dalam graf diurut terlebih dahulu berdasarkan pemberatnya dari kecil ke besar. Sisi yang dimasukkan ke dalam himpunan T adalah sisi graf G sedemikian sehingga T adalah pohon. Pada keadaan awal, sisi-sisi sudah disusun mengikut berat membentuk hutan ( forest ). Hutan tersebut dinamakan hutan merentang (spanning forest ). Sisi dari graf G ditambah ke T jika tidak membentuk litar di T.

MTE 3104 MEMBUAT KEPUTUSAN

Perbezaan prinsip antara algoritma Prim dan Kruskal adalah jika pada algoritma Prim sisi yang dimasukkan ke dalam T harus saling bersebelahan dengan sebuah simpul di T, maka pada algoritma Kruskal sisi yang dipilih tidak perlu saling bersebelahan dengan simpul di T asalkan penambahan sisi tersebut tidak membentuk litar. Langkah-langkah dalam algoritma Kruskal adalah sebagai berikut: 1 . Lakukan pengurutan terhadap setiap sisi di graf mulai dari sisi dengan berat terkecil hingga terbesar. 2. Pilih sisi yang mempunyai berat minimum yang tidak membentuk litar di pohon. Tambah sisi tersebut ke dalam pokok. 3. Ulangi langkah 2 hingga pohon merentang minimum terbentuk, iaitu ketika sisi di dalam pohon merentang minimum berjumlah n-1 (n adalah jumlah simpul di graf). Berdasarkan gambar di atas, maka dilakukan icon sisi pada graf mulai dari sisi dengan berat terkecil hingga terbesar dapat dilihat pada jadual berikut: Pemberat 10 14 15 20 25 30 35 40 45 48 50 Sisi (F,G) (G,H) (A,C) (D,H) (B,E) (D,E) (A,D) (A,B) (C,E) (E,F) (E,G)

Untuk lebih memahami perbezaan algoritma Prim dan algoritma Kruskal yang kedua-duanya merupakan algoritma untuk pohon merentang minimum, maka dari gambar di atas dapat dicari pohon merentang minimumnya dengan

MTE 3104 MEMBUAT KEPUTUSAN

menggunakan kedua-dua algoritma tersebut. Langkah-langkah pembentukan pohon merentang minimumnya dapat dilihat pada gambar berikut ini

MTE 3104 MEMBUAT KEPUTUSAN

Algoritma Dijkstra Algoritma Dijkstra merupakan algoritma laluan terpendek yang paling terkenal. Algoritma ini dilaksanakan untuk mencari laluan terpendek ( shortest path ) pada graf berarah. Algoritma Dijkstra menyelesaikan permasalahan jalur terpendek dengan sumber tunggal ( the single-source shortest-path problem ) apabila semua simpul tidak negatif ( 0). Algoritma ini adalah algoritma Greedy yang mirip dengan algoritma Prim. Algoritma bermula dari simpul sumber S untuk membina pokok T, dan semua simpul dapat dicapai dari S. Nilai simpul

MTE 3104 MEMBUAT KEPUTUSAN

ditambah ke T (nilai jalur), kemudian ditambah nilai simpul berikutnya, dan begitu seterusnya. Secara umum kriteria yang harus dipenuhi untuk mendapatkan

penyelesaian optimum dari jalur terpendek ( shortest path ) hampir sama dengan kriteria permasalahan pada pohon merentang minimum. Perbezaan mendasar adalah pada jalur terpendek berupa graf berarah, sehingga criteria yang harus dipenuhi adalah: 1 . Setiap sisi pada graf harus mempuny ai nilai (berat). 2. Setiap sisi pada graf tidak harus disambungkan. 3. Setiap sisi pada graf harus mempunyai arah. Proses untuk mendapatkan penyelesaian optimum jalur terpendek adalah dengan menghitung jarak satu per satu sesuai dengan arah yang ditunjukkan oleh tiap-tiap sisi. Perhitungan dilakukan terhadap sisi graf yang mempunyai jalur awal dan jalur akhir. Contoh pada gambar di bawah ini akan memberikan gambaran yang lebih mudah difahami. Misalkan akan ditentukan laluan terpendek dari graf di bawah ini.

Langkah-langkah penyelesaiannya adalah seperti berikut: 1 . Perhatikan terlebih dahulu proses simpul yang mempunyai awal dan mempunyai simpul akhir atau simpul tujuan. Dalam kes ini simpul A sebagai

MTE 3104 MEMBUAT KEPUTUSAN

simpul awal dan berdasarkan graf di atas maka gambaran laluan yang boleh dilalui adalah: A - B, A - C, A - D, dan A - E. 2. Mencari laluan terpendek tiap-tiap proses dari keempat jalur tersebut dengan mengira panjang tiap-tiap jalurnya. 3. Dengan demikian dapat diketahui laluan terpendek dari simpul awal ke simpul tujuan adalah: A - C = 1 0, A - C - D = 25, A - C - D - B = 45, dan A E = 45.