КомпьютерПрограмчлалын

Kruskal-ийн алгоритм - оновчтой хүрээнд барилгын ажил

эрт 19-р зууны geometer онд Берлин-аас Иаков Стайнер нь тэдний урт нь богино байсан тул гурван тосгодыг яаж холбох ажлыг тогтоосон. Хожим нь тэр асуудлыг нэгтгэн: энэ нь хавтгайд нь цэгийг олох шаардлагатай байна, N бусад цэгт Хэрэв хүртэлх зай хамгийн бага байна. 20-р зуунд Энэ сэдэв дээр ажиллаж байна. Энэ нь хэдэн оноо авч, тэдгээрийн хоорондох зай нь хамгийн богино байсан ийм замаар тэдгээрийг холбох шийджээ. Энэ нь бүх судалж буй асуудал нь онцгой тохиолдол юм.

"Харамч" алгоритм

Kruskal-ийн алгоритм "шунахай" алгоритм (градиент бас нэрлэдэг) хэлнэ. хүмүүсийн мөн чанар - алхам бүр дээр хамгийн өндөр ялалт. Үргэлж биш, "шунахай" алгоритм нь асуудлын хамгийн шилдэг шийдлийг өгдөг. Тэнд тодорхой ажлуудыг тэдний өргөдлийг тэд оновчтой шийдэл өгөх гэж байгаа нь онол юм. Энэ matroids онол юм. Kruskal-ийн алгоритм ийм асуудал хэлнэ.

хамгийн бага гулууз мах жин олох

Үзсэн алгоритм оновчтой хүрээ тоог бүрдүүлнэ. дараах байдлаар энэ тухай асуудал юм. Дан зэрэгцээ ирмэг, гогцоонууд ямар график undirected ба ирмэг багц зах е бүрт хэд хэдэн томилдог W жин үйл ажиллагаа, өгөгдсөн - жин хавиргаар - W (д). хавирга олон ургальч-ын дэд олонлог тус бүрийн жин нь ирмэгийн жингийн нийлбэр юм. жижиг жин араг ясыг олохын тулд шаардлагатай.

тодорхойлолт

Kruskal-ийн алгоритм ажилладаг. Нэгдүгээрт, анхны график бүх ирмэг туухайны Эрэмбэ Өсөхөөр зохион байдаг. Эхлээд хүрээ ямар нэг хавирга агуулдаг боловч бүх оройг агуулсан байна. хүүрийн нь хамарсан ой юм аль хэдийн барьсан хэсэг алгоритмийн дараагийн шатанд дараа, нэг зах нь нэмэгдсэн байна. Энэ нь дур мэдэн сонгосон байна. график бүх ирмэг, хүрээ хамаарах биш, улаан, ногоон гэж нэрлэж болно. улаан ирмэг тус бүрийн шилдэг барилгын ойн холболт дор нэг бүрэлдэхүүн хэсэг байна, ногоон орой - өөр өөр. Тиймээс, та нар улаан ирмэг нэмэх бол, тэнд нь цикл юм, хэрэв ногоон - энэ алхмын дараа хүлээн авсан мод холбогдсон бүрэлдэхүүн хэсэг нь нэгээс бага байх болно. Тиймээс үр дүнд барилгын ямар ч улаан зах нэмж чадахгүй, гэхдээ ямар ч ногоон зах ой авахын тулд нэмж болно. Харин хамгийн бага жинтэй ногоон ирмэг нэмдэг. үр дүн хамгийн бага жин нь тогтолцоо юм.

хэрэгжилт

F. Энэ холболт салбарт оройн багц хувааж одоогийн ойг тэмдэглэх (тэдний холбоо маягт F, тэд нэршлийн байна). улаан оройн аль алинд нь ирмэг дээр тэд нэг хэсэг нь худлаа. -Р хэсэг (X) - орой бүр х хувьд нэр тодорхой хэсгийг буцаах үйл ажиллагаа, энэ х хамаарна. Unite (X, Y) - х ба у хэсгийг болон бусад бүх хэсгийг нэгтгэн бүрдсэн шинэ хуваалт барьж журам. N байг - ирмэгийн тоо. Эдгээр үзэл баримтлал Kruskal-ийн алгоритм орсон байдаг. хэрэгжилт:

  1. N-р өсөх туухайнд 1-нээс график бүх ирмэгийг зохион байгуулна. (Ai, Bi - Дээд зах тоо з).

  2. Би = 1 N байна.

  3. X: =-р хэсэг (AI).

  4. Y: = хэсэг (хоёр).

  5. х бус, дараа нь тэнцүү у нэгдэхтүн (X, Y) хийдэг бол зах F би тоотой орно.

зөв

T байг - өөрийн дур зоргоор хүрээ - анхны график нь хүрээ Kruskal алгоритм болон S ашиглан барьсан. (T) (S), W-аас ихгүй байна W Бид гэдгийг нотлох хэрэгтэй.

М байг - сэрвээ S, P нь олон ургальч - Т. бол S T тэнцүү биш юм сэрвээ нь олон ургальч, дараа нь тэнд хүрээ хавирга нар T, С. S. ET нь биш ч мөчлөг, энэ нь В С гэж нэрлэдэг ямар ч зах ES-аас, хамаарах устгах нийлж байна S. Бид ирмэгүүд болон орой нэг юм, учир нь шинэ хүрээ олж авах хэрэгтэй. Түүний жин нь W (S), хойш W (ET) цахилгаан Kruskal алгоритм нь W ямар ч урт (үүд) ийг-аас ихгүй байна. (T) W (S) W-аас ихгүй байна гэж Энэ үйл ажиллагаа (хавирга дээр орлох T S хавирга) урт нь Т. дараагийн хүлээн хүрээнд тус бүрийн жин нь хүлээн авах гэж давтан болно өмнөх жин, гэсэн үг-аас ихгүй байна.

Kruskal-ын алгоритмийн эрч хүчээс үзэхэд matroids дээр RADO-Эдмондс нь теорем нь дагана.

Хэрэглээний жишээ Kruskal алгоритм

зангилааны а, б, в, г, д болон хавирга (а, б), (а, д), (б, в), (б, е) нь Дан график, (в, г), (в, д) (г, д). ирмэгийн жин хүснэгтэд болон зурагт үзүүлэв. Эхлээд барилгын ойн F график бүх оройг агуулсан, ямар ч хавирга агуулаагүй байна. Алгоритм Kruskal Эхний хавиргаар (а, д), дараа нь хавиргаар нэмж жин нь хамгийн бага байсан тул бас орой нь болон цахим мод холболтын F (хавирга (а, д) ногоон) өөр өөр бүрэлдэхүүн хэсэг байна (C, D), учир нь график ирмэг тэр наад зах нь энэ зах жин, F харьяалагдах биш, энэ нь ногоон, нэг шалтгаан нь зах нэмэгдэх дараа нь (а, б). Гэвч зах (б, д) тэр үлдсэн ирмэг хамгийн бага жин, энэ нь улаан, учир нь ч батлагдсан байна: Оройн б и ойн холболтын F ижил бүрэлдэхүүн хамаарах, бид F нь ирмэгийг (б, е) нэмэх бол, бий болсон байна мөчлөг. Дараа нь ногоон зах (б, в) баталсан бөгөөд улаан зах (в, д), дараа нь Г, Д нэмж хэллээ. Тиймээс ирмэг нэмэгдсэн байна дараалуулан (а, д), (в, г), (а, б), (б, в). болон nihera оновчтой хүрээнд эхлэн эх график бүрдэнэ. Тэгэхээр энэ тохиолдолд энэ нь алгоритм үйл ажиллагаа явуулдаг Kruskal. Үүний жишээ нь харагдаж байна.

зураг график, хоёр холбогдсон бүрэлдэхүүн хэсэг бүрдэнэ харуулж байна. тод мөр нь хамгийн оновчтой хүрээ хавирга (ногоон) Kruskal алгоритм ашиглан барьсан харуулж байна.

бага жинтэй араг ясыг, түүнд баригдсан алгоритм ашиглан - шилдэг зураг анхны график болон доод харуулж байна.

нэмсэн хавирга дараалал (1.6); (0,3), (2,6) эсвэл (2,6), (0,3) - нь чухал биш юм; (3,4); (0,1), (1,6) эсвэл (1,6), (0,1), мөн тусламж (5,6).

Kruskal-ийн алгоритм практик хэрэглээг Жишээ нь, улс орон бүрийн шинэ орон сууцны хөдлөх хөрөнгийн орон, түүнчлэн бусад тохиолдолд жийргэвч харилцаа холбоо, зам оновчтой болгохын тулд олдог.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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