KomputerPengaturcaraan

Algoritma Kruskal - pembinaan rangka kerja yang optimum

Pada awal geometri abad ke-19 Jakob Steiner dari Berlin menetapkan tugas bagaimana untuk menyambung tiga kampung supaya panjang mereka adalah singkat. Kemudian, dia diringkaskan masalah: ia diperlukan untuk mencari titik dalam kapal terbang, jarak dari kepada n perkara yang lain adalah yang paling rendah. Dalam abad ke-20, ia terus bekerja pada topik ini. Ia telah memutuskan untuk mengambil beberapa perkara dan menyambung mereka dalam apa-apa cara bahawa jarak antara mereka adalah yang paling singkat. Ini semua adalah kes khas masalah yang sedang dikaji.

"Tamak" algoritma

algoritma Kruskal merujuk kepada algoritma "tamak" (juga dikenali sebagai kecerunan). Intipati mereka - kemenangan tertinggi pada setiap langkah. Tidak semestinya, "tamak" algoritma menyediakan penyelesaian terbaik kepada masalah ini. Terdapat teori, menunjukkan bahawa dalam pemakaiannya kepada tugas-tugas tertentu mereka memberikan penyelesaian optimum. Ini adalah teori matroid. algoritma Kruskal merujuk kepada masalah tersebut.

Mencari berat karkas minimum

algoritma dilihat membina kiraan bingkai optimum. Masalah itu adalah seperti berikut. Dan tak berarah Graf tanpa tepi selari dan gelung, dan set pinggir diberikan fungsi berat w, yang menyerahkan nombor untuk setiap pinggir e - tulang rusuk berat badan - w (e). Berat setiap subset daripada kemajmukan rusuk adalah jumlah berat pinggirnya. Diperlukan untuk mencari rangka berat badan yang kecil.

Huraian

algoritma Kruskal berfungsi. Pertama, semua tepi graf awal disusun dalam menaik perintah berat. Pada mulanya, bingkai tidak mengandungi sebarang rusuk tetapi termasuk semua mercu. Selepas langkah seterusnya algoritma di bahagian yang telah dibina daripada bangkai, yang merupakan jenis hutan yang merangkumi, satu kelebihan ditambah. Ia tidak dipilih sewenang-wenangnya. Semua tepi graf, bukan kepunyaan bingkai, boleh dipanggil merah dan hijau. Bahagian atas setiap tepi merah berada di dalam komponen yang sama di bawah sambungan hutan pembinaan, dan puncak hijau - yang berbeza. Oleh itu, jika anda menambah ke tepi merah, terdapat kitaran, dan jika hijau - sebagai diterima selepas langkah ini komponen kayu disambungkan akan kurang daripada satu. Oleh itu, pembinaan yang terhasil tidak boleh menambah tidak kelebihan merah, tetapi mana-mana tepi hijau boleh ditambah untuk mendapatkan hutan. Dan menambah kelebihan hijau dengan berat minimum. Hasilnya ialah rangka kerja berat minimum.

pelaksanaan

Menandakan hutan semasa F. Ia membahagikan set mercu dalam bidang sambungan (bentuk-bentuk kesatuan mereka F, dan mereka tak berkait). Pada kedua-dua tepi bucu merah mereka berdusta dalam satu bahagian. Bahagian (x) - Fungsi bahawa untuk setiap bucu x mengembalikan sebahagian daripada nama, ia tergolong x. Unite (x, y) - prosedur yang membina partition baru, yang terdiri daripada menggabungkan bahagian x dan y dan semua bahagian-bahagian lain. Biarkan n - bilangan tepi. Semua konsep-konsep ini adalah termasuk dalam algoritma Kruskal. pelaksanaan:

  1. Susun semua tepi graf dari 1 hingga berat menaik n-th. (Ai, bi - i dengan nombor pinggir puncak).

  2. bagi i = 1 hingga n lakukan.

  3. x: = Bahagian (ai).

  4. y: = Bahagian (bi).

  5. Jika x tidak y sama maka Unite (x, y), untuk memasukkan dengan jumlah kelebihan F i.

kebenaran

Biarkan T - bingkai graf asal dibina menggunakan algoritma Kruskal dan S - bingkai sewenang-wenangnya itu. Kami perlu membuktikan bahawa w (T) tidak lebih besar daripada w (S).

Biarkan M - kejamakan sirip S, P - kejamakan sirip T. Jika S tidak sama dengan T, maka ada et rangka tulang rusuk T, bukan kepunyaan S. S. et bersebelahan kitaran, ia dipanggil C. C keluarkan dari mana-mana es tepi, yang dipunyai S. Kami mendapatkan rangka baru, kerana tepi dan bucu adalah sama. beratnya tidak lebih besar daripada w (S), kerana w (et) tidak lagi w (es) dalam kuasa Kruskal algoritma. Operasi ini (pengganti tulang rusuk T S pada tulang rusuk) akan berulang selagi menerima T. Berat setiap bingkai diterima selepas tidak lebih besar daripada berat badan sebelum ini, yang membayangkan bahawa w (T) tidak lebih besar daripada w (S).

Keteguhan algoritma Kruskal berikut dari teorem Rado-Edmonds pada matroid.

Contoh permohonan algoritma Kruskal

Dan Graf dengan nod a, b, c, d, e dan tulang rusuk (a, b), (a, e), (b, c), (b, e), (c, d), (c, e) , (d, e). Berat tepi ditunjukkan dalam jadual dan dalam rajah. Pada mulanya, hutan pembinaan F semua mercu graf dan tidak mengandungi sebarang tulang rusuk. Algoritma Kruskal pertama menambah rusuk (a, e), kerana berat badan yang mempunyai yang paling rendah, dan bucu dan e berada di dalam komponen yang berbeza sambungan kayu F (tulang rusuk (a, e) berwarna hijau), kemudian rusuk (c, d), kerana bahawa sekurang-kurangnya ini berat tepi tepi Graf, yang bukan kepunyaan F, dan ia adalah hijau, maka atas sebab yang sama terakru kelebihan (a, b). Tetapi tepi (b, e) diluluskan, walaupun dia dan berat minimum tepi baki, kerana ia adalah merah: bucu b dan e tergolong dalam komponen yang sama sambungan hutan F, iaitu, jika kita menambah F tepi (b, e), dibentuk kitaran. Kemudian ditambah tepi hijau (b, c), diluluskan tepi merah (c, e), dan kemudian d, e. berurutan dengan itu, tepi ditambah (a, e), (c, d), (a, b), (b, c). Dari bingkai optimum nihera dan terdiri daripada graf asal. Jadi dalam kes ini ia beroperasi algoritma Kruskal. Contoh dipaparkan.

Rajah menunjukkan graf, yang terdiri daripada dua komponen berhubung. Garis berani menunjukkan tulang rusuk bingkai optimum (hijau) dibina menggunakan algoritma Kruskal itu.

Gambar atas menunjukkan graf asal, dan bahagian bawah - rangka berat minimum, dibina untuk beliau dengan menggunakan algoritma.

Urutan tulang rusuk ditambah (1.6); (0,3), (2,6) atau (2,6), (0,3) - tidak penting; (3,4); (0,1), (1,6) atau (1,6), (0,1), juga mengambil berat (5,6).

algoritma Kruskal mendapati permohonan praktikal, sebagai contoh, untuk mengoptimumkan komunikasi gasket, jalan raya di kawasan perumahan baru lokaliti di setiap negara, dan juga dalam kes-kes lain.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 ms.delachieve.com. Theme powered by WordPress.