Computer, Zokuhlela
Kruskal kaThixo algorithm - nolwakhiwo sikhokelo ngokuyimpumelelo
Ekuqaleni geometer kwenkulungwane ye-19 Jakob Steiner ukusuka Berlin Ukuseta umsebenzi ukudibanisa ngayo kwiilali ezintathu ukuze ubude kwabo eyona imfutshane. Kamva, washwankathela ingxaki: ibizwa kufuneka ukufumana yencopho yophawu moya, umgama ukusuka kwi n amanye amanqaku abo lisezantsi. Ngenkulungwane yama-20, oko iyaqhubeka ukusebenza ngalo mbandela. Kwagqitywa ukuba iingongoma ezimbalwa senginginya nodibaniso ngendlela yokuba umgama phakathi kwabo eyona imfutshane. Le bonke ityala ekhethekileyo ingxaki efundwayo.
"NguMehlwayabawa" algorithm
algorithm Kruskal ithi le algorithm "obawayo" (ekwabizwa ngokuba ithambeka). Undoqo abo - win iphezulu kwi nyathelo ngalinye. Hayi njalo, ubuchule 'obawayo "zinika simse le ngxaki. Kukho ingcamango, ebonisa ukuba isicelo yabo imisebenzi ethile ukuba anike isisombululo elilelona. Le ngcamango ka matroids. algorithm Kruskal ithi iingxaki ezinjalo.
Ukufumana ubunzima isidumbu ubuncinane
algorithm kujongwa owakha esifanele isakhelo count. Ingxaki oko ngolu hlobo lulandelayo. UDan ezithuka igrafu ngaphandle elintlangothi parallel kunye loops, kwaye uluhlu imiphetho unikwa umsebenzi ubunzima w, elabela inani ukuya enkcochoyini ngalinye e - ubambo ubunzima - w (e). Ubunzima isethi nganye ezininzi iimbambo idibanisa amatye ezinemiphetho yayo. Efunekayo ukuze ufumane amathambo a encinane nobunzima.
incazelo
algorithm Kruskal xa isebenza. Okokuqala, bonke kungqameko kwigrafu lokuqala zicwangciswe ngokunyuka ukulandelelana iintsimbi. Ekuqaleni, isakhelo ayiqulathanga naluphi na iimbambo kodwa kuquka zonke eziphezulu. Emva kwinyathelo elilandelayo le algorithm inxalenye sele sakhiwe umzimba, nto leyo ihlathi nempi, omnye elunxwemeni lifakiwe. It is akabanyulanga ezinemvume. Zonke kungqameko igrafu, hhayi ukuba kwisakhelo, ingabizwa obomvu kunye noluhlaza. Umphezulu zinongqameko nganye abomvu kwicandelo enye phantsi ihlathi ukwakhiwa connectivity, kwaye iincopho green - ezahlukeneyo. Ngoko ke, ukuba usongeza ukuya kwikona obomvu, kukho umjikelo, kwaye ukuba eluhlaza - efunyenwe emva eli nyathelo amacandelo iinkuni iqhagamshele kuya kuba ngaphantsi kwesinye. Ngenxa yoko, ulwakhiwo nto awukwazi ukongeza akukho ngohlangothi ebomvu, kodwa nayiphi ngohlangothi eluhlaza zingadityaniswa ukufumana ihlathi. Yaye wongezelela kumngcipheko eliluhlaza kunye nobunzima minimum. Ngenxa yoko eso sikhokelo bubunzima ubuncinane.
ukuqaliswa
Libhekisela ihlathi yangoku F. It iyahlula iseti eziphezulu kummandla connectivity (iifom zabo union F, yaye disjoint). balala zombini Iikona zezi eziphezulu ezibomvu enye. Inxalenye (x) - umsebenzi ngenxa enekona ngamnye x ubuyisela inxalenye igama, elimfaneleyo x. Unite (x, y) - inkqubo eyakha kwagxunyekwa entsha, kuqulethe yokudibanisa iinxalenye x no y nazo zonke ezinye iindawo. Makhe n - inani ezinemiphetho. Zonke ezi ngcamango ziqukiwe algorithm Kruskal kaThixo. Implementation:
Cwangcisa yonke kungqameko igrafu ukusuka 1 ukuya iintsimbi ukwenyuka n-th. (IAyi, bi - i enenombolo ngohlangothi ubutsolo).
ngokuba i = 1 ukuya n ukwenza.
x: = Icandelo (ai).
y: = Icandelo (bi).
Ukuba x 'y ngokulinganayo ngoko Unite (x, y), ku katsa kunye nenombolo kumngcipheko F i.
lulungiswe
Vumela T - isakhelo se kwigrafu yokuqala yakhiwe usebenzisa Kruskal algorithm kunye S - isakhelo yayo ngokwesigqibo esicalanye. Kufuneka ubonise ukuba w (T) umkhulu w (S).
Vumela M - ezininzi amaphiko S, P - ezininzi kuThixo amaphiko T. Ukuba S akalingani T, ke kukho et isakhelo ubambo T, hhayi ukuba S. S. et adjoin umjikelo, ibizwa ngokuba C. C asuse naluphi na es usiko, endingowakhe S. we uyifumana isakhelo esitsha, kuba iikona kwaye eziphezulu iyafana. ubunzima bayo umkhulu w (S), ekubeni w (et) akasekho w (ii) kwi igunya Kruskal algorithm. Lo msebenzi (ababambeleyo ezimbanjeni T S ezimbombeni) lizakuphindwa logama nje ukufumana T. Ubunzima frame nganye sifunyenwe emva umkhulu ubunzima ophelileyo, nto leyo ithetha ukuba w (T) umkhulu w (S).
Kukomelela algorithm Kruskal lulandelayo ukusuka theorem ka Rado-Edmonds on matroids.
Imizekelo Isicelo Kruskal algorithm
Dan igrafu kunye iindawo a, b, c, d, e iimbambo (a, b), (a, e), (b, c), (b, e), (c, d), (c, e) , (d, e). Amatye ezinemiphetho aboniswe kwitafile kwaye kulo mzobo. Ekuqaleni, ehlathini zokwakha F iqulethe zonke eziphezulu ze-grafu ayiqulathanga naluphi na ezimbanjeni. Algorithm Kruskal kuqala ukongeza ubambo (a, e), kususela ubunzima waba kwanala, kunye eziphezulu a yaye e zibe kumacandelo ahlukeneyo nemithi connectivity F (ubambo (a, e) oluhlaza), ngoko ubambo (c, d), ngenxa ukuba ubuncinane eli ubunzima edge zinongqameko igrafu, hhayi ukuba F, kwaye oluhlaza, ngoko ngenxa yezizathu ezifanayo kongezeleka edge (a, b). usiko (b, e) lidlule Kodwa, nangona yena ubunzima ubuncinane ekupheleni eseleyo, kuba ibomvu: i eziphezulu b kunye e lilungu lecandelo elinye zehlathi connectivity F, oko kukuthi, ukuba sithe saphinda F ngohlangothi (b, e), esenzelwa mjikelo. Waza wongezelela edge eluhlaza (b, c), lidlule Umda obomvu (c, e), uze d, e. ngokulandelana yoko, ezinemiphetho adityaniswe (a, e), (c, d), (a, b), (b, c). Ukusuka nihera isakhelo ngokukuko kwaye iqulathe kwigrafu yokuqala. Ngoko ke kule meko isebenza algorithm Kruskal. Umzekelo iyaboniswa.
Lo mzobo ubonisa igrafu, equka amacandelo amabini enxibeleleneyo. Imigca ngqindilili abonisa iimbambo isakhelo eliphezulu (green) sakhiwa usebenzisa Kruskal algorithm.
Umphezulu wesisa original kwigrafu, umzantsi - a amathambo amancinane ubunzima, owakhelwe kuyo ngokusebenzisa algorithm.
Ulandelelwano lwe iimbambo ongeze (1,6); (0.3), (2,6) okanye (2,6), (0,3) - ayibalulekanga; (3,4); (0.1), (1,6) okanye (1,6), (0.1), zinakekela (5,6).
algorithm Kruskal kaThixo ifumana isicelo aluncedo, umzekelo, ukuze nokwandisa unxibelelwano gasket, iindlela e nempahla yezindlu ezintsha kwiindawo kwilizwe ngalinye, ngokunjalo kwezinye iimeko.
Similar articles
Trending Now