• Tidak ada hasil yang ditemukan

Algoritma Prim’s Greedy

BAB 8 MASALAH POHON RENTANG

8.3. Algoritma Prim’s Greedy

Dalam prosedur ini kita mulai dengan simpul sembarang v di G dan memeriksa semua sisi yang datang di v. Misalkan e = {v, w} adalah sisi dengan bobot paling kecil di antara semua sisi ini. Kami membangun subgraf T dari G dimulai dengan e sebagai tepi. Selanjutnya periksa semua sisi (selain e) yang datang di v dan semua sisi yang datang di w dan pilih satu sisi f yang bobotnya paling kecil di antara mereka. Tepi yang baru ditemukan ini ditambahkan ke subgraf T. Tepi f adalah antara v dan simpul baru atau antara w dan simpul baru. Biarkan Anda menjadi simpul baru. Pada tahap ini kita memiliki tiga simpul v, w, dan u. Periksa semua sisi selain e dan f yang datang di v, u, dan w dan pilih salah satu dengan bobot terkecil sehingga sisi e dan f dan tepi yang baru dipilih g tidak membentuk sebuah siklus. Pada tahap ini g ditambahkan ke T. Kami melanjutkan sampai semua simpul diperhitungkan. Prosedur ini jelas berakhir dengan pohon merentang. Bahwa pohon ini memang MST adalah konsekuensi dari dua akibat wajar dari teorema berikut.

TEOREMA 8.3.1

Jika v adalah sembarang simpul dalam jaringan G yang terhubung dan jika e adalah kejadian sisi di v sedemikian rupa sehingga bobot e lebih kecil dari bobot setiap kejadian sisi di v, maka e adalah sisi dari setiap pohon merentang minimum di G.

Matematika Diskrit (Dr Agus Wibowo)

Bukti:

Misalkan T adalah MST dan misalkan e = {v, w} bukan sisi dari T. Misalkan H adalah subgraf dari G yang diperoleh dengan menambahkan e ke T. H memiliki siklus unik C(e) yang dapat direpresentasikan sebagai v- - - - v1 - - - - v2- - - - . . . . vr w v, di mana e = {v, w} dan misalkan f

= {v, v1}. Sekarang baik e dan f datang di v dan bobot e lebih kecil dari pada f. Jika kita menghilangkan f H kita mendapatkan pohon merentang T′ dengan bobot lebih kecil dari bobot T, yang merupakan kontradiksi.

Akibat Wajar 1

Jika v adalah sembarang simpul dari G dan jika e adalah kejadian sisi di v sedemikian rupa sehingga bobot tidak ada sisi yang datang di v lebih kecil dari bobot e, ada MST di G dimana e adalah sisi.

Akibat Wajar 2

Jika sebuah pohon T′ yang merentang simpul-simpul dalam subset W dari simpul-simpul dalam graf terhubung G = (V, E) adalah subpohon dari pohon merentang minimal G, ada pohon merentang minimal G yang berisi T′ dan tepi terkecil yang menghubungkan W dan V – W.

Pada setiap iterasi dari algoritma Prim kita memiliki partisi dari himpunan simpul V = {1, 2, , n} menjadi himpunan bagian P dan Q dimana P adalah himpunan simpul yang telah diperhitungkan dan Q adalah komplemennya. Awalnya, kami mengambil P = {1}. Kami mengasosiasikan label t(i) untuk setiap simpul i di Q. Awalnya, t(i) adalah bobot sisi antara 1 dan i jika ada sisi; jika tidak, itu adalah tak terhingga (angka positif yang besar). Pada langkah 1 kita memilih sebuah simpul v di Q dengan label terkecil. Kemudian kita mencari titik u di P sedemikian rupa sehingga bobot d(u, v) dari sisi antara u dan v adalah t(v). Pada titik ini tepi {u, v} diterima sebagai tepi untuk MST dan v ditambahkan ke P. Pada langkah 2 kami memperbarui label dari simpul yang tersisa di Q sebagai berikut. Jika w di Q, tentukan t(w) :=

Min{t(w), d(v, w)}, di mana v adalah entri terbaru di P. Kami melanjutkan dengan cara yang sama sampai P = V.

Kompleksitas kasus terburuk dari algoritma dapat diperoleh dengan segera. Awalnya, Q memiliki (n – 1) elemen. Jadi pada langkah 1, akan ada paling banyak (n – 2) perbandingan untuk memulai. Jadi langkah ini memerlukan (n – 2) + (n – 3) + . . . + 2 + 1 perbandingan. Pada langkah 2 kita memiliki (n – 2) elemen untuk memulai. Label setiap simpul w di Q harus dibandingkan dengan d(v, w), di mana v adalah entri terakhir di P. Ini melibatkan (n – 2) perbandingan untuk memulai dan kemudian (n – 3) perbandingan. Jadi, langkah 2 juga memerlukan perbandingan kasus terburuk seperti pada langkah 1. Jadi, kompleksitas kasus terburuk dari algoritma Prim adalah dua kali jumlah bilangan asli (n – 2) pertama, yaitu O(n2).

Iterasi yang berbeda dari algoritma ini untuk jaringan Gambar 8.3 adalah sebagai berikut.

Iterasi 1 Langkah 1:

Matematika Diskrit (Dr Agus Wibowo)

Label terkecil sesuai dengan simpul 2. Jadi tepi {1, 2} ada di T. Himpunan P dimutakhirkan menjadi P = {1, 2}.

Langkah 2:

Gambar 8.3 Himpunan P dimutakhirkan

Iterasi 2 Langkah 1:

Matematika Diskrit (Dr Agus Wibowo)

Titik 5 dipilih untuk memperbarui P. Karena d(1, 5) = d(2, 5), kita dapat mengambil salah satu dari sisi {1, 5} atau sisi {2, 5} untuk memperbarui T.

Langkah 2:

Iterasi 3 Langkah 1:

Vertex 3 dipilih untuk memperbarui P dan tepi {2, 3} dipilih untuk memperbarui T.

Langkah 2:

Iterasi 4 Langkah 1:

Vertex 6 dipilih untuk memperbarui P dan tepi {3, 6} dipilih untuk memperbarui T.

Matematika Diskrit (Dr Agus Wibowo)

Langkah 2:

Iterasi 5 Langkah 1:

Vertex 4 dipilih untuk memperbarui P dan tepi {5, 4} dipilih untuk memperbarui T.

Langkah 2:

P = {1, 2, 3, 4, 5, 6} Q = himpunan kosong.

Output: Tepi M.S.T. adalah {1, 2}, {1, 5}, {2, 3}, {3, 6}, dan {4, 5}.

Algoritma Prim (Metode Matriks)

Misalkan D = (d(i, j)) adalah matriks n × n, di mana n adalah jumlah simpul dari G dan d(i, j) adalah bobot sisi {i, j} jika ada sisi antara i dan j, Jika tidak, itu tak terhingga. Awalnya kami menghapus semua elemen kolom 1 dan menandai baris 1 dengan a*. Semua elemen awalnya tanpa garis bawah. Setiap iterasi memiliki dua langkah sebagai berikut:

Langkah 1: Pilih elemen terkecil dari entri (tanpa garis bawah) di baris berbintang. Berhenti jika tidak ada elemen seperti itu. Tepi yang sesuai dengan entri yang digarisbawahi merupakan MST.

Langkah 2: Jika d(i, j) dipilih pada langkah 1, garis bawahi entri tersebut, tandai baris j dengan a *, dan hapus elemen yang tersisa di kolom j. Pergi ke langkah 1.

Sebagai ilustrasi, mari kita perhatikan jaringan seperti yang diberikan pada Gambar 8.2 Awalnya, kami memiliki:

di mana semua entri di kolom 1 telah dihapus dan baris 1 diberi bintang. Pada titik ini tidak ada entri yang digaris bawahi.

Iterasi 1:

Matematika Diskrit (Dr Agus Wibowo)

Iterasi 2:

Iterasi 3:

Iterasi 4:

Iterasi 5:

Matematika Diskrit (Dr Agus Wibowo)

Prosedur pada tahap ini berhenti, memberikan tepi yang sesuai dengan entri yang digarisbawahi dalam matriks D dari iterasi terakhir. Jadi rusuk {1, 2}, {1, 4}, {1, 5}, {2, 3}, dan {3, 6} membentuk pohon merentang minimal di G.