Apakah semua pohon rentang minimum MST dapat dijangkau oleh Kruskal dan Prim?

13

Saya percaya ini benar tetapi belum bisa mendapatkan bukti formal juga. Tetapi apakah benar bahwa spanning tree minimum dapat dicapai dengan menerapkan algoritma Kruskal? Demikian pula, apakah ini benar untuk algoritma Prim?

EDIT: Untuk lebih tepatnya, saya ingin tahu jika diberi MST untuk grafik yang terhubung, tidak terarah, berbobot, apakah dijamin bahwa ada urutan langkah-langkah menggunakan Kruskal atau Prim yang menghasilkan MST ini. Misalnya ada pilihan yang berbeda untuk Kruskal ketika ada banyak sisi dengan berat yang sama. Demikian pula untuk Prim.

domoremath
sumber
2
Jawaban dan diskusi yang relevan dengan hasil lain yang mungkin ingin Anda gunakan sebagai biang keladi.
Raphael
3
Bagian pertama dari jawaban saya membuktikan ini untuk algoritma Kruskal, dan saya pikir argumen serupa akan bekerja untuk Prim: stackoverflow.com/a/13779113/47984
j_random_hacker

Jawaban:

9

Seperti yang ditunjukkan oleh komentar Raphael dan komentar j_random_hacker , jawabannya adalah positif. Faktanya, setiap MST dapat dijangkau oleh algoritma MST apa pun dengan beberapa pengecualian kecil.

Untuk grafik , dua fungsi bobot pada semua sisi (ke bilangan real) didefinisikan sebagai (lemah) yang kompatibel-perbandingan (satu sama lain) jika kita dapat memperpanjang urutan lemah yang ketat pada tepi yang disebabkan oleh fungsi bobot mana pun ke ketat yang sama pesanan total. Yaitu, kita dapat menyusun aturan pengikatan yang konsisten dengan masing-masing fungsi bobot sehingga hasil perbandingan dari dua sisi dengan satu fungsi berat dan aturan pengikatannya sama dengan hasil oleh fungsi bobot lainnya dan pengikatannya. melanggar peraturan.G

Lemma 1 : Biarkan dan w 2 menjadi dua fungsi berat. Lima pernyataan berikut ini setara satu sama lain.w1w2

  1. dan w 2 kompatibel dengan perbandingan.w1w2
  2. Di setiap set tepi, ada tepi paling ringan yang umum oleh dan oleh w 2 .w1w2
  3. Di setiap set tepi, ada tepi terberat umum oleh dan oleh w 2 .w1w2
  4. Ada fungsi bobot yang menetapkan bobot berbeda untuk tepi yang berbeda sehingga w 3 kompatibel-perbandingan dengan w 1 dan ke w 2 .w3w3w1w2
  5. untuk setiap tepi dan e 2 sedemikian rupa sehingga e 1 lebih ringan dari e 2 dengan satu fungsi bobot, e 1 seringan atau lebih ringan dari e 2 oleh fungsi bobot lainnya.e1e2e1e2e1e2

Bukti lemma 1 dibiarkan sebagai latihan yang mudah.

Lemma 2 : Biarkan dua fungsi bobot dan w 2 sedemikian rupa sehingga jika e 1 < w 1 e 2 , maka e 1 < w 2 e 2 . Maka mereka komparabel-komparatif.w1w2e1<w1e2e1<w2e2

(Petunjuk) Bukti: Salah satu pendekatan adalah untuk memverifikasi kondisi 5 lemma 1. Pendekatan lain adalah untuk memverifikasi kondisi 2 lemma 1 dengan menunjukkan bahwa di setiap kumpulan tepi, tepi paling ringan oleh juga merupakan tepi paling ringan oleh w 1 ,w2w1

Algoritma berbasis perbandingan pada grafik didefinisikan sebagai perbandingan-kompatibel jika untuk setiap dua (berat) fungsi perbandingan-kompatibel berat di semua sisi, kita dapat menjalankan algoritma dengan satu fungsi bobot dengan cara yang dapat diulang tanpa perubahan apa pun. dengan fungsi berat lainnya. Secara khusus, kedua run dari algoritma akan memiliki output yang sama.G

Harap dicatat bahwa kebanyakan jika tidak semua algoritma MST dapat dinyatakan dalam dua rasa. Rasa pertama mengasumsikan bahwa tepi yang berbeda dari memiliki bobot yang berbeda, yang digunakan ketika perhatian utama adalah menemukan satu MST (yang sebenarnya juga merupakan MST unik). Rasa kedua memungkinkan tepi G yang berbeda memiliki bobot yang sama. Tentu saja dalam jawaban ini, di mana perhatian utama adalah untuk menemukan semua MST, kami hanya akan peduli algoritma MST dalam citarasa kedua.GG

Algoritma MST yang kompatibel dengan perbandingan dapat menemukan semua MST.

Untuk membuktikan proposisi di atas, kita hanya perlu sedikit menyesuaikan bagian, "Kruskal dapat menemukan setiap MST" dalam perhitungan jumlah MST . Untuk setiap MST dari G dengan fungsi bobot w 1 , pilih bobot positif yang lebih ringan daripada perbedaan absolut antara pasangan bobot tepi yang tidak sama. Jika kita mengurangi bobot itu dari bobot setiap sisi dalam m tanpa mengubah bobot sisi lainnya, kita memperoleh fungsi bobot baru, katakanlah, w 2 . Jika tepi e 1 lebih ringan dari e 2 oleh w 1 , e 1 harus lebih ringan darimGw1mw2e1e2w1e1 oleh w 2 juga. Oleh lemma 2, w 1 dan w 2 kompatibel-perbandingan. Perhatikan bahwa m adalah MST unik dengan w 2 . (Salah satu cara untuk menunjukkan keunikan ini adalah dengan membuktikan bahwa setiap kali berat satu tepi MST berkurang, setiap MST dengan fungsi bobot baru harus mengandung sisi itu.) Jadi, menjalankan algoritme apa pun pada w 2 akan menemukan m . Karena algoritma ini kompatibel dengan perbandingan, kita dapat menjalankan algoritma dengan cara yang sama dengan w 1 atau dengan w 2 . Karena proses tersebut akan menemukan MST unik, m withe2w2w1w2mw2w2mw1w2m , ia akan menemukan m juga dengan w 1 .w2mw1

Setiap algoritma MST kompatibel dengan perbandingan

Proposisi di atas terdengar berlebihan. Ya, oleh setiap algoritma MST, maksud saya setiap algoritma MST berbasis perbandingan umum yang telah saya lihat, tidak termasuk yang tampaknya patologis seperti salah atau memiliki langkah yang tidak perlu. Karena algoritma MST yang kompatibel dengan perbandingan dapat menemukan semua MST, setiap algoritma MST dapat menemukan semua MST. Secara khusus, masing-masing dari empat algoritma MST klasik , yaitu algoritma Borůvka, Prim, Kruskal dan reverse-delete dapat menemukan semua MST.

Berikut adalah tiga algoritma MST yang lebih kompatibel dengan perbandingan.

  • algoritma delete-heavy-edge. Mulailah dengan semua sisi. Temukan siklus berulang kali dan lepaskan salah satu ujung terberatnya hingga tidak ada siklus yang tersisa.
  • algoritma add-non-heavy-edge. Mulai dengan set kosong. Ulangi semua sisi. Setiap sisi ditambahkan dan, jika sebuah siklus terbentuk, lepaskan salah satu sisi yang paling berat.
  • algoritma penggantian-oleh-korek api. Mulai dengan spanning tree . Cari siklus di T ditambah keunggulan e tidak di T . Jika tepi t dalam siklus yang lebih berat dari e , menghapus t dari T dan menambahkan e untuk T . Ulangi sampai kita tidak bisa mengurangi berat T lagi.TTeTtetTeTT

Algoritma MST berikut ini tidak kompatibel dengan perbandingan.

  • algoritma Kruskal derajat-bias, yang merupakan algoritma Kruskal dengan modifikasi berikut. Misalkan ketika kita akan menghapus sebuah sisi dengan bobot minimum dari seperti pada deskripsi wikipedia tentang algoritma Kruskal , kita memiliki banyak sisi dengan bobot minimum untuk memilih. Tepi yang kita pilih untuk dihapus adalah tepi yang jumlah derajat kedua simpulnya adalah yang terbesar di antara semua pilihan. Algoritma ini tidak dapat kompatibel-perbandingan karena tidak menemukan MST { a b , b c , c d } dari grafik dengan simpul a , b , c , dan edge a bS{ab,bc,cd}a,b,cabberat dan tepi b c , c d , d b dari berat 2 . Algoritma ini dianggap patologis karena modifikasi yang tidak perlu.1bc,cd,db2

Harap dicatat bahwa kedelapan algoritma MST yang disebutkan di atas adalah berbasis perbandingan.

Bagaimana cara menunjukkan suatu algoritma yang kompatibel dengan perbandingan?

Saya akan menggunakan algoritma Kruskal sebagai contoh. Berikut adalah deskripsi Algoritma Kruskal (dalam rasa kedua) pada diarahkan graf terhubung berbobot .G

  • buat grafik yang memiliki simpul yang sama dengan G tetapi tanpa tepi. Jadi F adalah hutan pohon yang terpisah dari satu titik.FGF
  • buat himpunan berisi semua tepi dalam grafik.S
  • sementara adalah kosong dan F belum merentang SF
    • pilih keunggulan dengan berat minimum dari .S
    • menghapus tepi dari .S
    • Jika ujung itu menghubungkan dua pohon yang berbeda maka tambahkan ke hutan , menggabungkan dua pohon menjadi satu pohonF
  • Output .F

Mari dan w 2 menjadi dua fungsi berat badan perbandingan-kompatibel pada G . Algoritma Kruskal melibatkan fungsi bobot hanya pada langkah yang "memilih tepi dengan bobot minimum dari S ". Kondisi 2 dari lemma 1 memberi tahu kita bahwa kita dapat memilih tepi paling ringan yang umum pada langkah ini. Kita kemudian dapat memeriksa dengan mudah dengan induksi bahwa kita dapat menjalankan semua langkah dengan cara yang sama dengan w 1 dan dengan w 2 . Jadi algoritma Kruskal adalah kompatibel-perbandingan.w1w2GSw1w2

Suatu algoritma kompatibel-perbandingan jika, secara longgar, dapat dijelaskan dalam tiga jenis langkah.

  1. lakukan sesuatu yang tidak melibatkan berat badan.
  2. pilih satu tepi dengan bobot minimum dalam satu set tepi yang ditentukan
  3. pilih satu sisi dengan bobot maksimum dalam satu set sisi yang diberikan

Kondisi yang memadai ini mencakup algoritma Borůvka, Prim, Kruskal, reverse-delete, delete-heavy-edge, dan add-non-heavy-edge. Perhatikan bahwa untuk menyesuaikan kondisi yang memadai ini, kita mungkin harus mengubah deskripsi algoritma tertentu tanpa memengaruhi set MST yang dapat dijangkau. Karena perkecualian algoritma Kruskal yang memiliki derajat bias kompatibel-komparatif, izinkan saya menekankan kondisi yang cukup ini dijelaskan dalam istilah longgar

John L.
sumber