Մասնակից:MiqayelMinasyan/սևագրություն

Վիքիպեդիայից՝ ազատ հանրագիտարանից

Կաղապար:Գրաֆի փնտրման ալգորիթմ Կրուսկալի ալգորիթմը գրաֆների տեսության մեջ ժլատ ալգորիթմ է, որը փնտրում է նվազագույն ճյուղավորված ծառըկապված կշռված գրաֆի հետ կշռված գրաֆի հետ: Դա նշանակում է, որ այն փնտրում է բնագավառներ, որոնք edgeձևավորում են ծառ, որը պարունակում է բոլոր գագաթները,որտեղ ծառի բոլոր եզրերի ամբողջական կշիռը նվազագույնն է: Եթե բոլոր գրաֆները կապված չեն, այն որոնում է նվազագույն ճյուղավորված անտառը (նվազագույն ճյուղավորված ծառը յուրաքանչյուր միացված կոմպոնենտի համար]]).

Այս ալգորիթմը առաջին անգամ հայտնվել է Ամերիկական Մաթեմատիկական Միության վարույթի ժամանակ 1956 թվականին, և գրվել է Ջոզեֆ Կրուսկալի կողմից.

Այս խնդրի համար մեկ այլ ալգորիթմը ներառում է, Reversշe-Delete ալգորիթմըև Borůvka ալգորիթմը:

Նկարագրություն[խմբագրել | խմբագրել կոդը]

  • ստեղծել F անտառը (մի շարք ծառեր),որտեղ գրաֆի յուրաքանչյուր եզր առանձին ծառ է
  • ստեղծել մի շարք S, որոնք պարունակում են գրաֆի բոլոր եզրերը
  • մինչ Sդատարկ չէ և F-ը դեռ ճյուղավորվոծ չէ
    • հեռացնել S-ից նվազագույն կշիռ ունեցող ծայրը
    • եթե այդ ծայրը պարունակում է երկու տարբեր ծառեր, ապաավելացնել դա անտառին՝ միավորելով երկու ծառերը որպես մեկ ծառ
    • հակառակ դեպքում անհետացնել այդ ծայրը:

Ալգորիթմի դադարեցման դեպքում անտառը կունենա միայն մեկ կոմպոնենտ և ձևավորի գրաֆի նվազագույն ճյուղավորված ծառը:

Ներկայացում[խմբագրել | խմբագրել կոդը]

Երբ E-ն գրաֆի եզրերի թիվն է և V-ն բարձրության թիվը, Կրուսկալի ալգորիթմը կարող է ցույց տալ, որ O(E log E) ժամանակում աշխատելը, կամ որ նույնն է` O(E log V) ժամանակում, բոլորը պարզ կառուցվածքով տվյալների հետ է: Այս կատարման ժամանակները հավասարազոր են, որովհետև.

  • E-ն ամենամեծ V2-ում է և O(log V) է:
  • Եթե մենք անտեսում ենք առանձին բարձրությունները, որոնցից յուրաքնչյուրը կարող է լինել սեփական կոմպոնենտ նվազագույն ճյուղավորված անտառում, VE+1, այսպիսով` log V O(log E) է:

Մենք կարող ենք հասնել այդ կապվածությանը հետևյալ կերպ. առաջին հերթին տեսակավորենք եզրերը ըստ կշիռների` օգտագործելով համեմատության տեսակը O(E log E) ժամանակում, այս քայլը թույլ է տալիս "հեռացնել S-ից նվազագույն կշիռ ունեցող եզրը " հաստատուն ժամանակում աշխատելու համար: Այնուհետև մենք օգտագործում ենք տվյալների չհատվող հավաքածուի կառուցվածքը (Միավորում&Որոնում) վերահսկելու համար, թե որ կոմպոնենտը ինչ բարձրություն ունի: Մենք պետք է իրականացնենք O(E) գործողություններ, երկու 'փնտրման' գործողություններ և մեկ միավորում յուրաքանչյուր եզրի համար: Նույնիսկ ամենապարզ տվյալների չհատվող հավաքածուի կառուցվածքը, ինչպիսինն են չհատվող անտառները կարող են իրականացնել O(E) գործողություններ O(E log V) ժամանակում: Այնուամենայնիվ ընդհանուր ժամանակը` O(E log E) = O(E log V).

Պայմանով, որ եզրերը կամ արդեն տեսակավորված են կամ կարող են տեսակացորված լինել գծային ժամանակում, ալգորիթմը կարող է օգտագործել ավելի բարդ տվյալների չհատվող հավաքածուի կառուցվածք O(E α(V)) ամանակում աշխատելու համար, որտեղ α-ն չափազանց դանդաղ աճող հակադրությունն է Ակերմանի ֆունկցիայի:

Օրինակ[խմբագրել | խմբագրել կոդը]

Download the example data.

Image Description
AD-ն և CE-ն ամենակարճ եզրերն են` 5 լայնությամբ, և AD-ն կամայականորեն է ընտրվել:
CE-ն ամենակարճ եզրն է` 5 լայնությամբ, որը չի ձևավորում ցիկլ, այսպիսով այն համարվում է երկրորդ եզրը:
Հաջորդ եզրը` DF-ը` 6 լայնությամբ, առանձնացվում է օգտագործելով նույն մեթոդը:
Հաջորդ ամենակարճ եզրերն են AB-ն և BE-ն` երկուսն էլ 7 լայնությամբ: AB-ն ընտրվել է կամայականորեն: BD եզրը առանձնացվում է կարմիր գույնով, որովհետև արդեն կա կանաչ գույն B-ի և A-ի միջև, այսպիսով այն կձևավորի ցիկլ (ABD), եթե այն ընտրվի:
Պրոցեսը շարունակում է առանձնացնել հաջորդ ամենափոքր եզրը` BE-ն` 7 լայնությամբ: Այս փուլում ավելի շատ եզրեր են առանձնացվում կարմիրով` BC-ն, որովհետև այն կձևավորի BCE հանգույց, DE-ն, որովհետև այն կձևավորի DEBA հանգույց, և FE-ն, որովհետև այն կձևավորի FEBAD:
Վերջապես պրոցեսն ավարվում է EG եզրով` 9 լայնությամբ, և նվազագույն ճյուղավորված ծառը գտնված է:

Ստույգության ապացույց[խմբագրել | խմբագրել կոդը]

Ապացույցը բաղկացած է երկու մասից: Առաջինը ապացուցվում է, որ ալգորիթմը ներկայացնում է ճյուղավորված ծառ: Երկրորդը ապացուցվում է, որ կառուցված ճյուղավորված ծառն ունի նվազագույն կշիռ:

Ճյուղավորված ծառ[խմբագրել | խմբագրել կոդը]

Ենթադրենք ունենք միացված, կշռված գրաֆ և ենթագրաֆ` ներկայացված ալգորիթմի կողմից : -ը չի կարող ունենալ ցիկլ, քանի որ ցիկլին ավելացրած վերջին եզրը կլիներ մեկ ծառի մեջ և ոչ երկու տարբեր ծառերի: -ը չի կարող լինել անջատ, քանի որ առաջինը բախվում է այն եզրին, որը միավորում է -ի երկու կոմպոնենտները: Այսպիսով, -ը հանդիսանում է -ի ճյուղավորված ծառը:

Նվազագույն[խմբագրել | խմբագրել կոդը]

Մենք ցույց տվեցինք, որ հետևյալ P առաջարկությունը ճիշտ է: Եթե F-ը եզրերի շարք է` ընտրված ալգորիթմի ցանկացած փուլում, ապա գոյություն ունի որևէ նվազագույն ճյուղավորված ծառ, որը պարունակում է F:

  • P-ն ճիշտ է սկզբում, երբ F-ը դատարկ է. որևէ նվազագույնճյուղավորված ծառ պետք է լինի, և գույություն ունի մեկը, որովհետև կշռված, միացված գրաֆը միշտ ունի նվազագույն ճյուղավորված ծառ:
  • Հիմա ենթադրենք, որ P-ն ճիշտ է որոշ ոչ վերջնական F եզրի համար և T-ն նվազագույն ճյուղավորված ծառն է, որը պարունակում է F: Եթե հաջորդ ընտրված e եզրը նույնպես T-ում է, ապա P-ն ճիշտ է F + e-ի համար: Հակառակ դեպքում, T + e-ն ունի C ցիկլ և կա մեկ այլ` f եզր, որը C-ում է: (Եթե չլիներ f եզրը, ապա e-ն չէր կարող ավելացվել F-ին, քանի որ դա կստեղծեր C ցիկլ:) Ապա Tf + e-ն ծառ է և ունի նույն կշիռը, ինչ T-ն, քանի որ T-ն ունի նվազագույն կշիռ և f-ի կշիռը չի կարող լինել ավելի քիչ, քան e-ի կշիռը, հակառակ դեպքում ալգորիթմը կընտրեր fe-ի փոխարեն: Այսպիսով, Tf + e-ն նվազագույն ճյուղավորված ծառ է, որը պարունակում է F + e:
  • Հետևաբար, P -ն իմաստ ունի, երբ F-ը դառնում է ճյուղավորված ծառ, որը միայն հնարավոր է, երբ F-ը նվազագույն ճյուղավորված ծառ է:

Տես նաև[խմբագրել | խմբագրել կոդը]

Հղումներ[խմբագրել | խմբագրել կոդը]

Արտաքին հղումներ[խմբագրել | խմբագրել կոդը]

Category:Graph algorithms Category:Spanning tree Category:Articles with example pseudocode Category:Articles containing proofs hy:Կրուսկալի ալգորիթմը