Professional Documents
Culture Documents
Կոմբինատոր ալգորիթմներ
Կոմբինատոր ալգորիթմներ
ալգորիթմների վերլուծություն
Վահան Վ. Մկրտչյան
Թեորեմ [1]: Գոյություն չունի ալգորիթմ, որը թույլ կտա ֆորմալ թվաբանության
ցանկացած բանաձևի համար պարզել, թե այն տեսության թեորեմ է, թե՞ ոչ:
2
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
Գրականություն
3
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
4
Կոմբինատորային ալգորիթմներ և
ալգորիթմների վերլուծություն
Վահան Վ. Մկրտչյան
Ալգորիթմ 2:
Քայլ 1: I := {1,..., n} ;
Քայլ 2: I -ն բաժանել երկու համարյա հավասար մասերի, այսինքն
I = I1 ∪ I 2 ,
I1 ∩ I 2 = ∅ ,
I1 − I 2 ≤ 1 :
Քայլ 3: Ստուգել I1 -ում ռադիոակտիվ գնդիկի առկայությունը;
Քայլ 4: Եթե I1 -ում կա ռադիոակտիվ գնդիկ, ապա I := I1 , հակառակ դեպքում`
I := I 2 ;
Քայլ 5: Եթե I = 1 , ապա ավարտել ալգորիթմի աշխատանքը, հակառակ
դեպքում` անցնել Քայլ 2-ի կատարմանը:
M
+
−
M1 M2
նկար 1
2
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
1,2
1
+ −
1 3
2
1
+
−
2 3 1 2 3 4
+
−
3 4
նկար 2
3
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
Թեորեմ 1: t2 ( n) ≤ t1 (n)
Ապացույց: Դիցուք A -ն ռադիոակտիվ գնդիկը որոշող լավագույն ալգորիթմ է,
TA -ն` նրան համապատասխան որոնման ծառը, որի բարձրությունն է t1 (n) –ը:
Վերցնենք TA -ի որևէ գագաթ, որին համապատասխանեցված է M
բազմությունը: Այդ գագաթին համապատասխանեցնենք ( x ∈{ai / i ∈ M })
հարցը (ճիշտ է արդյոք, որ x տարրը պատկանում է {ai / i ∈ M } բազմությանը):
4
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
կամ
t2 (n) ≥ log 2 n , և հետևաբար` t2 (n) ≥ ⎡⎢log 2 n ⎤⎥ :
Թեորեմ 3 (Հիմնական): t1 ( n) = t2 ( n) = ⎡⎢ log 2 n ⎤⎥
Ապացույց: Նկատենք, որ Թեորեմներ 1 և 2-ից հետևում է, որ բավական է ցույց
տալ, որ t1 ( n) ≤ ⎡⎢ log 2 n ⎤⎥ , ինչի համար բավական է կառուցել ռադիոակտիվ
գնդիկը որոշող ալգորիթմ, որի ստուգումների քանակը ≤ ⎢⎡ log 2 n ⎥⎤ :
Դիտարկենք վերը նշված Ալգորիթմ 2-ը, որի բարդությունը նշանակենք t ( n) –
⎡n⎤
ով: Նկատենք, որ t (1) = 0 , t (1) ≤ t (2) ≤ t (3) ≤ ... և t (n) ≤ 1 + t ( ⎢ ⎥ ) : Ցույց
2 ⎢ ⎥
տանք, որ t (n) ≤ ⎡⎢ log 2 n ⎤⎥ : Ապացույցը կատարենք ինդուկցիայով:
n = 1 : t (1) = 0 = ⎡⎢log 2 1⎤⎥
Ենթադրենք, որ t (i ) ≤ ⎢⎡log 2 i ⎥⎤ i = 1,..., n − 1 ( n ≥ 2 ): Ունենք`
⎡n⎤ ⎡ ⎡ n ⎤⎤ ⎡ ⎡ n ⎤⎤
t (n) ≤ 1 + t ( ⎢ ⎥ ) ≤ 1 + ⎢log 2 ⎢ ⎥ ⎥ = ⎢ log 2 2 ⎢ ⎥ ⎥ = ⎡⎢log 2 n ⎤⎥
⎢2⎥ ⎢ ⎢ 2 ⎥⎥ ⎢ ⎢ 2 ⎥⎥
(դիտարկել n = 2k և n = 2k + 1 դեպքերը):
Գրականություն
5
Կոմբինատորային ալգորիթմներ և
ալգորիթմների վերլուծություն
Վահան Վ. Մկրտչյան
S1 : S2
=
> <
A B
C
նկար 2.1
2
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
3l − 1
n= = K l : Նկատենք, որ K1 = 1 , K 2 = 4 և K l = 3K l −1 + 1 , երբ l ≥ 2 :
2
Ստորև կտրվի K l մետաղադրամներից l կշռումների միջոցով կեղծը գտնելու
ընդհանուր նկարագիրը: Ալգորիթմի աշխատանքի ժամանակ կհանդիպեն
հետևյալ երեք դեպքերը:
3
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
4
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
5
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
կամ, որ նույնն է`
x + y − 3k −1
≤ x '+ y ' ≤ 3k −1 :
2
Եթե նժարները հավասար են, ապա կեղծը մնացած x − 2 x '+ y − 2 y ' ≤ 3
k −1
առնվազն 2x տերև),
հետևաբար` 2 x = 3 : Հակասություն:
l −1
6
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
Գրականություն
7
Կոմբինատորային ալգորիթմներ և
ալգորիթմների վերլուծություն
Վահան Վ. Մկրտչյան
Դասախոսություն 4: Բազմությունների
հավասարության ստուգում: Երկընթաց
հաջորդականության ամենամեծ տար-
րի որոնում:
2
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
1 = λ1 ≤ Φ 2 − 1 = 2 − 1 ,
2 = λ2 ≤ Φ 3 − 1 = 3 − 1 :
Ենթադրելով, որ պնդումը ճիշտ է i < k համար, ապացուցենք այն i = k
դեպքում: Թեորեմներ 1,2-ից հետևում է, որ
λk ≤ λk −1 + λk −2 + 1 ≤ Φ k − 1 + Φ k −1 − 1 + 1 = Φ k +1 − 1 :
Պնդումն ապացուցված է:
3
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
4
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
n(n + 1)
Ապացույց: Նախ նկարագրենք ալգորիթմ, որը քայլում լուծում է
2
խնդիրը:
5
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
6
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
Գրականություն
7
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
8
Կոմբինատորային ալգորիթմներ և
ալգորիթմների վերլուծություն
Վահան Վ. Մկրտչյան
Դասախոսություն 5: Մրցաշարային
խնդիրներ. Մրցաշարի հաղթողի,
հաղթողի և պարտվողի որոշումը:
→
Խնդիրների մեկնաբանումը: G = (V , E ) օրգրաֆը կանվանենք մրցաշար, եթե
նրա միմյանցից տարբեր երկու` u և v գագաթների համար տեղ ունի հետևյալ
պնդումը.
(u , v) ∈ E ⇔ (v, u ) ∉ E :
Այս անվանումը կապված է սպորտային մրցումների արդյունքներն
օրգրաֆների միջոցով ներկայացնելու հետ: Դիցուք ունենք մրցաշար, որին
→
մասնակցում են 1,...,n թիմերը: Սահմանենք G = (V , E ) օրգրաֆը հետևյալ
կերպ.
V = {1,..., n} , և (i, j ) ∈ E եթե i –րդ թիմը հաղթել է j -րդ թիմին:
Նկատենք, որ այս ձևով սահմանված օրգրաֆը բավարարում է մրցաշար
լինելու` վերը նշված պայմանին:
→
G = (V , E ) մրցաշարը կանվանենք տրանզիտիվ մրցաշար, եթե նրա
ցանկացած u , v և w գագաթների համար տեղ ունի հետևյալ պնդումը (նկար
1)
(u, v) ∈ E ,(v, w) ∈ E ⇒ (u , w) ∈ E :
Մենք կդիտարկենք միայն տրանզիտիվ մրցաշարեր, այնպես որ ամեն անգամ
տրանզիտիվ բառը չենք նշի: Նշենք նաև, որ այս խնդիրներն ունեն իրար
համարժեք այլ մեկնաբանություններ.
ա) Դիտարկենք մրցաշար, որին մասնակցում են a1 ,..., an խաղացողները:
Ենթադրենք, որ նրանք տարբեր ուժի են, բայց մենք տեղեկություն չունենք
նրանց ուժի մասին: Պահանջվում է հնարավորինս քիչ թվով խաղեր
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
w
u
նկար 1
2
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
Թեորեմ 1: W1 (n) = n − 1 :
Ապացույց: Վերը նշված երկու ալգորիթմներից հետևում է, որ W1 ( n) ≤ n − 1 :
Մյուս կողմից, եթե մրցաշարի ավարտին հաղթողը որոշված է, ապա մնացած
n − 1 թիմերից յուրաքանչյուրը պետք է ունենա գոնե մեկ պարտություն,
հետևաբար ցանկացած ալգորիթմ պետք է կազմակերպի առնվազն n − 1 խաղ,
այսինքն` W1 (n) ≥ n − 1 : Թեորեմն ապացուցված է:
3
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
⎡ 3n ⎤
Թեորեմ 2: U ( n) = ⎢ − 2:
⎢ 2 ⎥⎥
Ապացույց: Նախ քննարկենք երկու դեպք.
n = 2k Այս դեպքում մրցաշարի հաղթողին և պարտվողին որոշենք հետևյալ
կերպ.
1. մրցաշարի թիմերին տրոհենք k զույգերի և նրանցից յուրաքանչյուրում
անցկացնենք խաղ:
2. զույգերի k հաղթողներից որոշենք հաղթողին ( k − 1 խաղերի միջոցով)
3. զույգերի k պարտվողներից որոշենք պարտվողին ( k − 1 խաղերի
միջոցով):
Նկատենք, որ այս դեպքում խաղերի քանակը կլինի 3k − 2 , հետևաբար`
⎡ 3n ⎤
U (n) = U (2k ) ≤ 3k − 2 = ⎢ ⎥ − 2 :
⎢2⎥
n = 2k + 1 Այս դեպքում մրցաշարի հաղթողին և պարտվողին որոշենք
հետևյալ կերպ.
1. առանձնացնեք մեկ մասնակցին, մրցաշարի մնացած թիմերին
տրոհենք k զույգերի և նրանցից յուրաքանչյուրում անցկացնենք
խաղ:
2. զույգերի k հաղթողների և առանձնացված մեկ մասնակցի միջից
որոշենք հաղթողին ( k խաղերի միջոցով)
3. զույգերի k պարտվողներից և առանձնացված մեկ մասնակցի միջից
որոշենք պարտվողին ( k խաղերի միջոցով)
Նկատենք, որ այս դեպքում խաղերի քանակը կլինի 3k , հետևաբար`
⎡ 3n ⎤
U (n) = U (2k + 1) ≤ 3k = ⎢ ⎥ − 2 :
⎢2⎥
Երկու դեպքերի քննարկման արդյունքում ունենք`
⎡ 3n ⎤
U ( n) ≤ ⎢ ⎥ − 2 :
⎢2⎥
⎡ 3n ⎤
U (n) ≥ ⎢ ⎥ − 2 ստորին գնահատականի ապացույցի համար օգտվենք արդեն
⎢2⎥
նշված գուշակի գաղափարից (կանոնների բազմություն, որոնք թույլ էին տալիս
խնդիրը լուծող ցանկացած ալգորիթմից ընտրել ճյուղ): Խնդիրը լուծող
ալգորիթմից ճյուղ ընտրելու ժամանակ, մենք թիմերին կվերագրենք
հատկություններ`
A -այն խաղացողներին, որոնք ոչ մի խաղի չեն մասնակցել;
4
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
5
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
⎡ 3n ⎤
U (n) = x1 + x2 + x3 + x4 + x5 + x6 + y ≥ ⎢ ⎥ − 2 :
⎢2⎥
Թեորեմն ապացուցված է:
Գրականություն
6
Կոմբինատորային ալգորիթմներ և
ալգորիթմների վերլուծություն
Վահան Վ. Մկրտչյան
Դասախոսություն 6: Մրցաշարային
խնդիրներ. Առաջին և երկրորդ,
առաջին, երկրորդ և երրորդ տեղերի
որոշումը:
1. a ≺ a
2. Եթե a b և c -ն առաջին անգամ պարտվել է b -ին, ապա a c:
2
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
կգերազանցի ≤ 2 + 2 p −1 = 2 p
p −1
մասնակիցների: Այդ դեպքում a -ն
մասնակիցների:
Թեորեմ 2: W3 ( n) ≤ n + 2 ⎢⎡ log 2 n ⎥⎤ − 3 :
Ապացույց: Առաջարկենք եղանակ մրցաշարի 1-ին, 2-րդ և 3-րդ տեղերի
գրավողների որոշման համար: Մրցաշարի հաղթողին որոշենք գավաթային
մրցակարգով ( n − 1 խաղ): Երկրորդ տեղի հավակնորդներն ամենաշատը
⎢⎡log 2 n ⎥⎤ են: Նրանց համարակալ ենք 1,..., ⎢⎡log 2 n ⎥⎤ թվերով. հավակնորդին
վերագրենք k համարը, եթե նա հաղթողին պարտվել է k –րդ փուլում
(նկատենք, որ եթե հաղթողը մրցաշարին սկսել է մասնակցել 2-րդ փուլից,
ապա 1 համարն ունեցող հավակնորդ չի լինի):
Հավակնորդներից հաղթողին գտնենք հետևյալ փոքր մրցաշարի միջոցով.
սկզբից մրցում են 1-ին և 2-րդ հավակնորդները, նրանց հաղթողի հետ
մրցում է հերթական 3-րդ հավակնորդը և այսպես շարունակ:
Փոքր մրցաշարի խաղերի քանակը չի գերազանցում ⎢⎡ log 2 n ⎥⎤ − 1 -ը և այն
որոշում է 2-րդ տեղը գրավողին: Դժվար չէ տեսնել, որ երկրորդ տեղը
գրավողը հաղթել է ամենաշատը ⎡⎢ log 2 n ⎤⎥ խաղում: Իրոք, դիցուք երկրորդ
տեղը գրավողը եղել է k –րդ մասնակիցը: Դա նշանակում է, որ սկզբնական
գավաթային փուլում նա հաղթել է k − 1 խաղում, իսկ փոքր
մրցաշարում` ⎡⎢ log 2 n ⎤⎥ − k + 1 , հետևաբար` երկրորդ տեղը գրավողի
հաղթանակների քանակը կլինի` ⎡⎢ log 2 n ⎤⎥ : Հետևաբար` ոչ ավել քան
3
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
Թեորեմ 3: W3 ( n) ≥ n + ⎡⎢ log 2 n( n − 1) ⎤⎥ − 3 :
Ապացույց: Սահմանենք ապացույցի համար անհրաժեշտ որոշ
գաղափարներ: Թիմ անվանենք մասնակիցների կարգավոր զույգը` ( a, b) :
Մրցաշարի 1-ին, 2-րդ և 3-րդ տեղերի գրավողներին որոշելիս, որոշվում է
նաև հաղթող թիմը` առաջին և երկրորդ տեղերը գրավողների զույգը:
(a, b) -ն հաղթող թիմի հավակնորդ է, եթե a -ն չունի պարտություն և b -ն
չունի պարտություն, կամ եթե a -ն չունի պարտություն և b -ն ունի միակ
պարտություն` a -ից: a խաղացողի հաղթանակների քանակը նշանակենք
h(a ) (այն մրցաշարի ընթացքում փոփոխվում է): (a, b) թիմի բնութագրիչ
h ( a )+ h ( b )
կանվանենք 2 թիվը:
Սահմանենք գուշակ, որը մրցաշարի 1-ին, 2-րդ և 3-րդ տեղերի
գրավողներին որոշելիս ընտրում է առնվազն n + ⎡⎢ log 2 n( n − 1) ⎤⎥ − 3
երկարությամբ ճյուղ:
4
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
Գրականություն
5
Կոմբինատորային ալգորիթմներ և
ալգորիթմների վերլուծություն
Վահան Վ. Մկրտչյան
Դասախոսություն 7: Ով ով է:
⎡ 3(n − 1) ⎤
Թեորեմ: α (n) = ⎢ :
⎢ 2 ⎥⎥
⎡ 3(n − 1) ⎤
Ապացույց: Նախ ցույց տանք, որ α (n) ≤ ⎢ : Ապացույցը կատարենք
⎢ 2 ⎥⎥
ինդուկցիայով:
n = 3 : Որպես առաջին հարց վերցնենք (1, 2 ) –ը: Եթե այս հարցի
պատասխանը եղել է “այո”, ապա սա նշանակում է, որ 2-րդ անդամը
օրինավոր է: Իրոք, եթե այն օրինավոր չէ, ապա օրինավոր չէ նաև 1-ը, ինչը
հակասում է այն պայմանին, որ խմբակցության անդամների կեսից ավելին
օրինավոր մարդիկ են: Մյուս կողմից, եթե այս հարցի պատասխանը եղել է
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
2
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
⎡ n − 1⎤
Ալգորիթմի առաջին ( i1 , j1 ) ,…, ( ik , jk ) ,
k=⎢ −1 հարցերին
⎢ 2 ⎥⎥
պատասխանենք ‘ոչ”: Մնացած հարցերի պատասխաններն ընտրելուց
առաջ դիտարկենք հետևյալ ձևով սահմանված G = (V , E ) գրաֆը.
V = {i1 , j1} ∪ ... ∪ {ik , jk } ,
E = {( i1 , j1 )} ∪ ... ∪ {( ik , jk )} :
3
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
4
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
⎡ 3(n − 1) ⎤
Ցույց տանք, որ գուշակի ընտրած ճյուղի երկարությունը առնվազն ⎢ է:
⎢ 2 ⎥⎥
Ենթադրենք հակառակը: Քանի որ
⎡ 3m ⎤ ⎡ m ⎤
⎢⎢ 2 ⎥⎥ − ⎢⎢ 2 ⎥⎥ = m , ապա
⎡ 3(n − 1) ⎤ ⎡ 3(n − 1) ⎤ ⎡ n − 1 ⎤
⎢⎢ 2 ⎥⎥ = k + ⎢⎢ 2 ⎥⎥ − ⎢⎢ 2 ⎥⎥ + 1 = k + n ,
և հետևաբար, hk +1 , hk + 2 ,... հարցերի քանակը չի գերազանցում n − 1 -ը: Այստեղից
հետևում է, որ գոյություն ունի խմբակցության a անդամ, որի մասին hk +1 , hk + 2 ,...
հարցերի ժամանակ հարցում չի արվում: Պարզ է, որ a ∈ L* : Ցույց տանք, որ
առանց ընդհանրությունը խախտելու, կարելի է ենթադրել, որ a ∈ L* : Իրոք,
դիցուք, a ∉ L* : Այստեղից հետևում է, որ a ∉ W և հետևաբար` a ∈ Vl , 1 ≤ l ≤ r ,
ընդ որում` Gl = (Vl , El ) բաղադրիչում ընդհանրապես չի եղել “այո”
պատասխան: Սա նշանակում է, որ L* բազմության` Gl = (Vl , El ) բաղադրիչին
պատկանող տարրն ընտրվել է L* բազմության սահմանման 3-կետով:
Հետևաբար, եթե մենք կազմակերպեինք խմբակցության անդամների
վերահամարակալում, ապա կարող էինք հասնել այն բանին, որ L ∩ Vl
բազմության ամենափոքր տարրը դառնար a անդամը, և հետևաբար` a ∈ L* :
5
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
Գրականություն
6
Կոմբինատորային ալգորիթմներ և
ալգորիթմների վերլուծություն
Վահան Վ. Մկրտչյան
Դասախոսություն 8: Տեսակավորման
խնդիրներ: Ներքևից գնահատական:
Տեսակավորում տեղավորման
եղանակով: Տեսակավորում շարքերի
ձուլման եղանակով:
a :b
< >
a:c c :b
>
< >
<
>
< > <
Նկար 1
2
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
Նկար 2
իսկ երկրորդից հետո`
Նկար 3
3
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
Քայլ 1: k := 2; X := a1
Քայլ 2: ak տարրը տեղավորել X շարքում ⎡⎢ log 2 k ⎤⎥ համեմատությունների
միջոցով:
Քայլ 3: Եթե k < n ապա k := k + 1 և անցնել Քայլ 2-ին, հակառակ դեպքում`
ավարտ:
կստանանք`
⎢⎡log 2 n ⎥⎤ −1
An = ∑ i 2i −1 + (n − 2 ⎡⎢log n ⎤⎥ −1
2
) ⎡⎢log 2 n ⎤⎥ :
i =1
4
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
5
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
k
Bn = ∑ (2i − 1)2k −i = k 2k − 2k + 1 :
i =1
6
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
k k k
տարրերից կառուցել 2 1 , 2 2 ,...,2 s երկարությամբ շարքեր:
Քայլ 2: Ստացված շարքերից հերթականորեն ընտրել երկու ամենակարճ
շարքերը և ձուլել շարքերի ձուլման պարզագույն ալգորիթմի միջոցով,
մինչև մեկ շարքի ստանալը:
i =1
բանաձևով:
Գրականություն
7
Կոմբինատորային ալգորիթմներ և
ալգորիթմների վերլուծություն
Վահան Վ. Մկրտչյան
Դասախոսություն 9: Տեսակավորում
ձուլման և տեղավորման եղանակով:
a2
a1
b3
b1
b2
ա բ
Նկար 1
2
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
շղթա կանվանենք b1 < a1 < ... < a⎢ n ⎥ շղթան: Եթե n –ը կենտ է, ապա այն մեկ
⎢⎣ 2 ⎥⎦
ով:
Քայլ 3: Ստորև նկարագրված եղանակով b2 ,..., b⎡ n ⎤ տարրերը տեղավորել
⎢⎢ 2 ⎥⎥
3
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
4
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
F (2 p ) − F (2 p − 1) = F ( p ) − F ( p − 1) + 1 = (k − 1) + 1 = k ,
քանի որ`
2k 2k +1
< p< :
3 3
բ) n = 2 p + 1 : Այս դեպքում ունենք`
F (2 p + 1) = p + F ( p ) + G ( p + 1)
F (2 p ) = p + F ( p ) + G ( p ) ,
հետևաբար
F (n) − F (n − 1) = G ( p + 1) − G ( p ) :
k +1
2 2k + 2 2k 1 2k +1 1
< n = 2 p +1< պայմանից ունենք, որ + < p +1< + ,և
3 3 3 2 3 2
հետևաբար`
2k (−1) k −1 2k 1 2k +1 1
+ < + < p +1< + :
3 3 3 2 3 2
Այսպիսով, tk −1 < p + 1 < tk + 1 , և հետևաբար` tk −1 < p + 1 ≤ tk : Այստեղից
հետևում է, որ bp +1 տարրը գլխավոր շղթայի վրա տեղավորելու համար
անհրաժեշտ է k համեմատություն, այսինքն` G ( p + 1) − G ( p ) = k :
Թեորեմն ապացուցված է:
2k +1 2k + 2 ⎡ 3 ⎤
Նկատենք, որ <n< պայմանը համարժեք է ⎢ log 2 n ⎥ = k , և
3 3 ⎢ 4 ⎥
հետևաբար, թեորեմից հետևում է, որ
⎡ 3 ⎤
F (n) − F (n − 1) = ⎢log 2 n ⎥ :
⎢ 4 ⎥
Հաշվի առնելով, որ F (1) = 0 , վերջնականպես կստանանք
n
⎡ 3 ⎤
F (n) = ∑ ⎢log 2 k ⎥ :
k =2 ⎢ 4 ⎥
Նկատենք, որ F ( n) ≤ n log 2 n , հետևաբար ձուլման և տեղավորման
ալգորիթմը տեսակավորման համարյա լավագույն ալգորիթմ է:
Գրականություն
5
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
6
Կոմբինատորային ալգորիթմներ և
ալգորիթմների վերլուծություն
Վահան Վ. Մկրտչյան
2
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
1 2
նկար 1
Կատարելով լրացուցիչ 4q համեմատություններ, պարզել, թե 1 և 4
տիրույթների որ տարրերն են մեծ կամ փոքր x -ից (սկզբում համեմատել
յուրաքանչյուր եռյակի միջին տարրը x -ի հետ):
Քայլ 4: Արդյունքում մենք գտանք r տարրեր, որոնք մեծ են x -ից, և n − 1 − r -
ը` փոքր x -ից: Նկատենք, որ
3
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
4
Կոմբինատորային ալգորիթմներ և
ալգորիթմների վերլուծություն
Վահան Վ. Մկրտչյան
2
1
1 5
2
4
3 5
2 5
4
5
3
5
1 2 3 4
Նկար 1
Նկատենք, որ այս ներկայացումը պահանջում է O ( V + E ) հիշողություն
(V հատ էլեմենտ պարունակում է մասիվը, իսկ ցուցակներում
էլեմենտների քանակը հավասար է երկու անգամ կողերի քանակին): Այս
ներկայացումից մենք կօգտվենք նաև կողմնորոշված գրաֆների
ներկայացման համար:
Նկատենք նսև, որ aii = 0 i = 1,..., p : v ∈ V գագաթի համար d G (v) -ով
նշանակենք v գագաթի աստիճանը, այսինքն` նրան ինցիդենտ կողերի
քանակը: Օգտվելով կցության կամ ինցիդենտության մատրիցներից,
հեշտությամբ կարելի է ապացուցել հետևյալ
Թեորեմ 1: 2 E = ∑ dG (v) :
v∈V
2
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
3
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
Դիցուք v1 ,..., vk -ն v -ին կից այն գագաթներն են, որոնք դեռևս նշված չեն:
Նշել v1 ,..., vk գագաթները և նրանց ավելացնել Q հերթին:
(v, v1 ),..., (v, vk ) կողերն ավելացնել BFS (G ) գրաֆին:
Քայլ 3: G = (V , E ) գրաֆից հեռացնել BFS (G ) գրաֆի գագաթների
բազմությունը: Եթե V = ∅ ապա վերադարձնել BFS (G ) գրաֆը, հակառակ
դեպքում` անցնել Քայլ 1-ին:
4
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
1 3
5 4
նկար 2
Առաջին գրաֆում էյլերյան ցիկլի օրինակ է 1,2,3,4,5,1,3,5,2,4,1 ցիկլը: Հիմա
փորձենք նկարագրել էյլերյան գրաֆները: Նշենք, որ այս նկարագրից,
մասնավորապես կհետևի նկար 2-ում բերված գրաֆի ոչ էյլերյան լինելը:
5
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
C'
C
u
Նկար 3
Նկատենք, որ այն պարունակում է C –ից շատ կող, ինչը հակասում է C –ի
ընտրությանը: Հետևաբար, գրաֆի բոլոր կողերը պատկանում են C ցիկլին:
Թեորեմն ապացուցված է:
6
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
Գրականություն
7
Կոմբինատորային ալգորիթմներ և
ալգորիթմների վերլուծություն
Վահան Վ. Մկրտչյան
1
1
2
4
3
2 5
4
3
5
1 2 3 4
Նկար 1
Նկատենք, որ այս ներկայացումը պահանջում է O( V + E ) հիշողություն ( V
հատ էլեմենտ պարունակում է մասիվը, իսկ ցուցակներում էլեմենտների
քանակը հավասար է երկու անգամ կողերի քանակին): Այս ներկայացումից
մենք կօգտվենք նաև կողմնորոշված գրաֆների ներկայացման համար:
Նկատենք նաև, որ aii = 0 i = 1,..., p :
G = (V , E ) կողմնորոշված գրաֆի տրանսպոնացված գրաֆ ասելով
կհասկանանք G T = (V , E T ) գրաֆը, որտեղ
E T = {(u, v) /(v, u ) ∈ E} ,
այլ կերպ ասած կողերի կողմնորոշման շուռ տալուց ստացված գրաֆը:
Նկատենք, որ G = (V , E ) գրաֆից G T = (V , E T ) գրաֆը կարելի է ստանալ
O ( V + E ) ժամանակում (այստեղ ենթադրվում է, որ G = (V , E ) գրաֆը
ներկայացված է կից գագաթների ցուցակի միջոցով):
G = (V , E ) գրաֆի գագաթների u1 , u2 ,..., uk −1 , uk հաջորդականությունը
կանվանենք u1 –ից uk ուղի, եթե (u1 , u2 ), (u2 , u3 ),..., (uk − 2 , uk −1 ), (uk −1 , uk ) -ն G գրաֆի
միմյանցից տարբեր կողեր (աղեղներ) են: Ուղու երկարություն կանվանենք
նրա մեջ մտնող կողերի քանակը: Ուղին կանվանենք պարզ, եթե նրանում
գագաթները չեն կրկնվում: u1 –ից uk ուղին կանվանենք ցիկլ կամ կոնտուր, եթե
u1 = uk : Ցիկլը (կոնտուրը) կանվանենք պարզ, եթե համապատասխան ուղին
պարզ է:
Նկատենք, որ եթե գրաֆում գոյություն ունի u –ից v ուղի, ապա կարող է
գոյություն չունենալ v –ից u ուղի:
Կգրենք u → v ( v –ն հասանելի է u -ից), եթե G = (V , E ) գրաֆում գոյություն
ունի u –ից v ուղի: Նկատենք, որ
ա) u → u
բ) եթե u → v , v → w , ապա u → w :
2
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
3
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
ԱՅՑԵԼԵԼ( u )
4
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
5
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
6
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
Գրականություն
7
Կոմբինատորային ալգորիթմներ և
ալգորիթմների վերլուծություն
Վահան Վ. Մկրտչյան
2
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
x1
V1
x*
u
Նկար 1
Նկատենք, որ համաձայն ինդուկցիոն ենթադրության l ( x* ) ≥ ϳñ×(u, x* ) ,
»ñÏ(u, x1 ) = l ( x1 ) : Քանի որ`
ϳñ×(u, x* ) = »ñÏ(u, x1 )+ »ñÏ(x1 ,x* ) ≥ »ñÏ(u, x1 ) = l ( x1 ) ≥ l ( x* ) ,
ապա
l ( x* ) = ϳñ×(u, x* ) :
Հիմա ցույց տանք, որ x* գագաթի V1 բազմությանն ավելացումից հետո բ)
պնդումը ևս մնում է ճիշտ: Իրոք, x* գագաթի ավելացումից հետո
ժամանակավոր նշում ունեցող գագաթներից նրանք, որոնք հարևան էին x*
գագաթին, կարող էին V1 բազմության գագաթներով ավելի կարճ ճանապարհով
հասանելի լինել x* գագաթի միջոցով, բայց քայլ 3-ում այդ x գագաթների նիշը
փոխվում է min{l ( x), l ( p) + d ( p, x)} ժամանակավոր նշումին` ապահելով l ( x) -ի`
բ) պնդմանը բավարարելը: Թեորեմն ապացուցված է:
3
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
4
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
5
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
D ( ) , D ( ) ,..., D ( ) Z ( ) , Z ( ) ,..., Z ( )
0 1 n 0 1 n
Քայլ 1: Կառուցել մատրիցների և
հաջորդականությունը:
Քայլ 2: Եթե գոյություն ունի D ( ) մատրիցի d ( n ) (i, i ) < 0 , ապա G = (V , E ) գրաֆի
n
v
v
Նկար 2
6
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
7
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
Գրականություն
8
Կոմբինատորային ալգորիթմներ և
ալգորիթմների վերլուծություն
Վահան Վ. Մկրտչյան
կողը` Y բազմությանը:
Քայլ 4: Եթե U = n ապա ընտրված գագաթների և կողերի (U , Y ) բազմությունը
կկազմի կմախքային ծառ, և ալգորիթմն ավարտում է աշխատանքը, հակառակ
դեպքում` վերադարձ քայլ 2-ին:
2
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
3
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
4
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
Գրականություն
5
Կոմբինատորային ալգորիթմներ և
ալգորիթմների վերլուծություն
Վահան Վ. Մկրտչյան
F (n, l ) = max( Pn ( xn ) + F (n − 1, l − xn )) :
0≤ xn ≤ l
2
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
c1 ( x1 ) + ... + cN ( xN ) ≤ k
0 ≤ xi ≤ b , i = 1,..., N
պայմաններին, և որոնց համար p1 ( x1 ) + ... + pN ( xN ) արտահայտությունն
ընդունում է իր առավելագույն արժեքը:
Այստեղ k -ն և b -ն հայտնի թվեր են, իսկ տրված ci ( xi ) և pi ( xi )
ֆունկցիաները մոնոտոն աճող և ոչ բացասական են, ընդ որում i = 1,..., N
համար ci (0) = pi (0) = 0 : Պարզության համար մենք կենթադրենք նաև, որ
ci ( xi ) և pi ( xi ) ֆունկցիաներն ընդունում են ամբողջ արժեքներ:
Ինչպես վերևում, հիմա էլ դիտարկենք համանման խնդիրների բազմությունը:
i = 1,..., N և j = 0,..., k համար սահմանենք (i, j ) խնդիր հետևյալ կերպ.
c1 ( x1 ) + ... + ci ( xi ) ≤ j
0 ≤ x1 ,..., xi ≤ b , x1 ,..., xi ∈ Z
p1 ( x1 ) + ... + pi ( xi ) → max
i = 1,..., N և j = 0,..., k համար F (i, j ) -ով նշանակենք այս խնդրի արժեքը,
այսինքն` p1 ( x1 ) + ... + pi ( xi ) արտահայտության առավելագույն արժեքը:
Նկատենք, որ մեր նպատակը F ( N , k ) -ն գտնելն է: Դժվար չէ տեսնել, որ
j = 0,..., k համար F (1, j ) = max{ p1 ( x) / x ∈{z / 0 ≤ z ≤ b, c1 ( z ) ≤ j}} :
Օգտվելով վերևում բերված դատողություններից, i > 1 համար կստանանք`
F (i, j ) = max{ pi ( xi ) + F (i − 1, j − ci ( xi ))} ,
որտեղ max –ը վերցվում է 0 ≤ xi ≤ b , ci ( xi ) ≤ j պայմաններին բավարարող
ամբողջաթիվ xi -երից:
Ստացված անրադարձ առնչությունը թույլ է տալիս հերթականորեն գտնել
F (1, b),..., F ( N , k ) արժեքները:
3
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
4
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
5
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
6
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
7
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
LCS ( X , Y )
for i := 1 to n do c[i,0]:= 0 ;
for j := 0 to m do c[0, j ]:= 0 ;
for i := 1 to n do
for j := 1 to m do
if ( xi = y j ) then c[i, j ]:= c[i − 1, j − 1] + 1 , b[i, j ]:=3 ;
else
if c[i − 1, j ] ≥ c[i, j − 1] then
c[i, j ]:= c[i − 1, j ] , b[i, j ]:=↑ ;
else
c[i, j ]:= c[i, j − 1] , b[i, j ]:=← ;
return c, b
Ունենալով c[i, j ] և b[i, j ] մատրիցները, մենք կարող ենք գտնել ինչպես
Z = LCS ( X , Y ) -ը, այնպես էլ նրա երկարությունը (այն c[n, m] -ն է):
Դիտարկենք մի օրինակ: Դիցուք X = ( A, A, B ) և Y = ( B, A, A) : Այդ դեպքում
c, b մատրիցները կունենան հետևյալ տեսքը.
B A A
0 0 0 0
A 0 0 ↑ 13 13
A 0 0 ↑ 13 2 3
B 0 13 1↑ 2↑
Կարմիր գույնով ցույց է տրված, որ X = ( A, A, B) և Y = ( B, A, A)
հաջորդականությունների ամենաերկար հաջորդականության օրինակ է
հանդիսանում Z = ( A, A) հաջորդականությունը, որի երկարությունը 2-է:
Գրականություն
8
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
9
Կոմբինատորային ալգորիթմներ և
ալգորիթմների վերլուծություն
Վահան Վ. Մկրտչյան
2
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
i < j համար s[i, j ] –ով նշանակենք այն k –ն, որի համար m[i, j ] -ն ընդունում է
իր փոքրագույն արժեքը: Փաստորեն s[1, n] -ը ցույց է տալիս, թե որտեղ պետք է
դրվի վերջին փակագիծը մեր որոնելի A1...n արտադրյալը հաշվելիս, այսինքն`
A1...n = ( A1... Ak )( Ak +1... An ) , որտեղ` s[i, j ] = k :
Հաշվի առնելով վերը նշված բանաձը կարելի է առաջարկել m[i, j ] և s[i, j ]
թվերը որոշելու հետևյալ ալգորիթմը.
3
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
նկար 1
(k + 1) ⋅ 180D = (n − 2) ⋅ 180D
4
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
կամ
k = n − 3:
Բազմանկյան օպտիմալ տրիանգուլյացիայի խնդիրը ձևակերպվում է հետևյալ
կերպ. տրված է P = (v0 , v1 ,..., vn ) բազմանկյունը, և P բազմանկյան
գագաթները որպես գագաթներ պարունակող եռանկյունների վրա որոշված w
կշռային ֆունկցիան: Պահանջվում է գտնել P բազմանկյան այնպիսի
տրիանգուլյացիայի, որին պատկանող անկյունագծերը տանելուց առաջացած
եռանկյունների կշիռների գումարը հնարավորին չափ փոքր է:
Նկատենք, որ կշռային ֆունկցիայի օրինակ կարող է ծառայել օրինակ
եռանկյան մակերեսը, պարագիծը: Նշենք նաև, որ եթե w կշռային ֆունկցիան
սահմանված լինի որպես եռանկյան մակերեսը, ապա P բազմանկյան
ցանկացած տրիանգուլյացիա կլինի օպտիմալը:
Դինամիկ ծրագրավորման մեթոդով խնդիրը լուծելու համար վարվենք
հետևյալ կերպ, 1 ≤ i ≤ j ≤ n համար m[i, j ] -ով նշանակենք (vi −1 , vi ,..., v j )
բազմանկյան օպտիմալ տրիանգուլյացիայի արժեքը: Նկատենք, որ մեր
նպատակը m[1, n] -ը գտնելն է: Մենք կենթադրենք, որ m[i, i ] = 0 ( (vi −1 , vi )
“երկանկյան” օպտիմալ տրիանգուլյացիայի արժեքը հավասար է զրոյի):
Նկատենք, որ m[i, j ] համար ճիշտ է հետևյալ անրադարձ առնչությունը (նկար
2),
⎧⎪0, »Ã» i = j;
m[i, j ] = ⎨
min{m[i, k ] + m[k + 1, j ] + w(∆vi −1vk v j )} »Ã» i < j :
⎪⎩ i ≤ k < j
vi −1 vj
vk
նկար 2
5
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
կարող ենք պնդել, որ O(n3 ) ժամանակում մենք կարող ենք գտնել օպտիմալ
տրիանգուլյացիայի արժեքը, և եթե պետք լինի, ապա հենց ինքը
տրիանգուլյացիան` դիտարկելով համանման s[i, j ] մատրից:
Վերջում նշենք, որ բազմանկյան տրիանգուլյացիայի խնդիրը հանդիսանում է
մատրիցների բազմապատկման խնդրի ընդհանրացումը:
Իրոք, դիցուք պահանջվում է գտնել փակագծերի օպտիմալ դասավորությունը
A1 ( p0 × p1 ) , A2 ( p1 × p2 ) ,…, An ( pn −1 × pn ) մատրիցների արտադրյալը հաշվելու
համար: Դիտարկենք P = (v0 , v1 ,..., vn )
n + 1 անկյունը, որի կողերին
համապատասխանեցված են A1 , A2 ,…, An մատրիցները (նկար 3), և որտեղ w
կշռային ֆունկցիան սահմանված է հետևյալ կերպ.
w(∆vi vk v j ) = pi pk p j
vn v0
An A1
vn−1
v1
A2
v2
vk
նկար 3
Նկատենք, որ այս n + 1 անկյան օպտիմալ տրիանգուլյացիայի արժեքը կլինի
հավասար հենց A1 , A2 ,…, An մատրիցների արտադրյալը հաշվելու համար
անհրաժեշտ նվազագույն գործողությունների քանակին: Ավելին, ունենալով
n + 1 անկյան օպտիմալ տրիանգուլյացիան, մենք կարող ենք գտնել
փակագծերի օպտիմալ դասավորությունը: Դրա համար առաջնորդվենք
հետևյալ կանոնով. եթե եռանկյան երկու կողմերին համապատասխանում են
երկու արտահայտություններ, ապա երրորդ կողմին համապատասխանեցնենք
այդ երկու արտահայտությունների արտադրյալը: Արդյունքում, n + 1 անկյան
v0vn կողին կհամապատասխանի հենց A1 , A2 ,…, An մատրիցների
արտադրյալը:
Դիտարկենք օրինակ: Ենթադրենք ունենք A1 ( p0 × p1 ) , A2 ( p1 × p2 ) ,…, A6 ( p5 × p6 )
մատրիցները: Ենթադրենք, այս խնդրին համապատասխանող 7-անկյան
օպտիմալ տրիանգուլյացիան նկար 4-ում ցույց տրվածն է:
6
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
(( A1 A2 ) A3 )( A4 ( A5 A6 ))
v6 v0
A6 A1
( A5 A6 )
v5
( A1 A2 ) v1
( A1 A2 ) A3
A5
A4 ( A5 A6 ) A2
v4
v2
A4
A3
v3
նկար 4
Այդ դեպքում A1 ( p0 × p1 ) , A2 ( p1 × p2 ) ,…, A6 ( p5 × p6 ) մատրիցների
արտադրյալը հաշվելու համար փակագծերի օպտիմալ դասավորությունը
կլինի` (( A1 A2 ) A3 )( A4 ( A5 A6 )) :
Գրականություն
7
Կոմբինատորային ալգորիթմներ և
ալգորիթմների վերլուծություն
Վահան Վ. Մկրտչյան
Եթե ավելի ֆորմալ խոսելու լինենք, ապա կարող ենք ասել, որ Թյուրինգի
M մեքենան իրենից ներկայացնում է (Σ, Γ, Q, δ ) քառյակ, որտեղ Σ, Γ, Q –ն ոչ
դատարկ, վերջավոր բազմություններ են, որոնք բավարարում են Σ ⊆ Γ և
Λ ∈ Γ \ Σ պայմաններին: Q –ն պարունակում է երեք q0 , qÁݹáõÝáõÙ , qÙ»ñÅáõÙ
վիճակներ: Անցման δ : (Q \{qÁݹáõÝáõÙ , qÙ»ñÅáõÙ }) × Γ → Q × Γ × {−1,1} ֆունկ-
ցիան ունի հետևյալ իմաստը. եթե δ (q, s ) = (q ', s ', h) , ապա սա նշանակում է
որ եթե մեքենան գտնվում է q վիճակում, և մեքենայի կարդացող/գրող
գլխիկը ցույց է տալիս s ∈ Σ տառի վրա, ապա մեքենան իր վիճակը պետք է
փոխի q ' -ի, այն վանդակում, ուր գրված է s -ը, պետք է գրել s ' և
կարդացող/գրող գլխիկը պետք է տեղաշարժել մեկ վանդակով ձախ կամ աջ
կախված այն բանից h = −1 թե h = 1 :
Կոնֆիգուրացիա ասելով կհասկանանք ցանկացած xqy տող, որտեղ
x, y ∈ Γ* , y ≠ Λ և q ∈ Q : xqy կոնֆիգուրացիայի իմաստը կայանում է
նրանում, որ M մեքենան գտնվում է q ∈ Q վիճակում, որի ժապավենին
գրված է xy տողը և մեքենայի կարդացող/գրող գլխիկը ցույց է տալիս y
տողի ամենաձախ տառի վրա:
M
Դիցուք C –ն և C ' -ը երկու կոնֆիգուրացիաներ են: Կգրենք C → C ' , եթե C –
կոնֆիգուրացիայից M մեքենայի միջոցով կարելի է անցնել C ' -
կոնֆիգուրացիային: xqy կոնֆիգուրացիան կանվանենք վերջնական, եթե
q ∈ {qÁݹáõÝáõÙ , qÙ»ñÅáõÙ } : Նկատենք, որ եթե M մեքենային ժամանակի ինչ-որ
պահին համապատասխանում է որոշակի, ոչ վերջնական C
կոնֆիգուրացիա, ապա գոյություն ունի ճիշտ մեկ C ' կոնֆիգուրացիա,
M
այնպես, որ C → C ' :
M մեքենայի աշխատանքը w ∈ Σ* մուտքային բառի վրա իրենից
ներկայացնում է միակ C0 , C1,... հաջորդականություն, որտեղ C0 = q0 w և
2
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
M
Ci → Ci +1 : Եթե այս հաջորդականությունը վերջավոր է, ապա M մեքենայի
կատարած քայլերի քանակը w ∈ Σ* մուտքային բառի վրա հավասար է
C0 , C1,... հաջորդականության անդամների քանակ հանած մեկ, և անվերջ է`
հակառակ դեպքում:
Կասենք, որ M մեքենան ճանաչում է w ∈ Σ* մուտքային բառը, եթե
C0 , C1,... հաջորդականությունը վերջավոր է և վերջնական
կոնֆիգուրացիան պարունակում է qÁݹáõÝáõÙ վիճակը: Նկատենք, որ M
մեքենան չի ճանաչում w ∈ Σ* մուտքային բառը, եթե C0 , C1,...
հաջորդականությունը անվերջ է կամ այն վերջավոր է և նրա վերջնական
կոնֆիգուրացիան պարունակում է qÙ»ñÅáõÙ վիճակը:
M մեքենայի համար L( M ) -ով նշանակենք
L( M ) = {w ∈ Σ* : M ׳ݳãáõÙ ¿ w} :
tM ( w) -ով նշանակենք M մեքենայի կատարած քայլերի քանակը w ∈ Σ*
մուտքային բառի վրա: Եթե M մեքենան ընդհանրապես կանգ չի առնում
w ∈ Σ* մուտքային բառի վրա, ապա tM ( w) = +∞ : n ∈ N բնական թվի համար
tM (n) -ով նշանակենք M մեքենայի վատագույն դեպքում կատարած
քայլերի քանակը, այսինքն`
tM (n) = max{tM ( w) : w ∈ Σ n } :
Կասենք, որ M մեքենան աշխատում է բազմանդամային ժամանակում,
եթե գոյություն ունի p(n) բազմանդամ այնպես, որ tM (n) ≤ p(n) :
Դիտարկենք լեզուների P դասը
P = {L : ∃M µ³½Ù³Ý¹³ÛÇÝ ÂÛáõñÇÝ·Ç Ù»ù»Ý³, áñ L = L( M )} :
NP նշանակումն իրենից ներկայացնում է Nondetermenistic Polynomial
time հապավումը, քանի որ NP դասի սահմանումը առաջին անգամ տրվել
է այսպես կոչված “ոչ դետերմինացված Թյուրինգի” մեքենաների միջոցով:
Այդպիսի մեքենաները տարբերվում են “սովորական” Թյուրինգի
մեքենաներից միայն նրանով, որ եթե մեքենան գտնվում է q վիճակում, և
մեքենայի կարդացող/գրող գլխիկը ցույց է տալիս s ∈ Σ տառի վրա, ապա
δ (q, s) -ն իրենից ներկայացնում է բազմություն, այսինքն` տրված
կոնֆիգուրացիայից ոչ դետերմինացված Թյուրինգի մեքենան կարող է
անցնել մի քանի կոնֆիգուրացիաների ի տարբերություն “սովորական”
Թյուրինգի մեքենաների:
Մենք կդիտարկենք NP դասի մեկ այլ սահմանում: Դիցուք R ⊆ Σ × Σ
* *
LR = {( w, y ) : R( w, y ) = ×Çßï} :
3
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
P, NP պրոբլեմը: Արդյոք P = NP :
4
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
5
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
6
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
նկար 1
Փաստորեն, եթե G գրաֆը չունի կատարյալ զուգակցում, ապա բավական է
մեզ տրված լինի գագաթների այն S ⊆ V (G ) ենթաբազմությունը, որի համար
c0 (G − S ) > S , և մենք կարող ենք բազմանդամային ժամանակում համոզվել, որ
G գրաֆը չունի կատարյալ զուգակցում:
7
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
8
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
Գրականություն
9
Կոմբինատորային ալգորիթմներ և
ալգորիթմների վերլուծություն
Վահան Վ. Մկրտչյան
f ( x1 ,..., xn , z1(1) , z1(2) ,..., zn(1) , zn(2) ) կոնյունկտիվ նորմալ ձևը, որը ստացվում է
f ( x1 ,..., xn ) = D1 &...& Dr կոնյունկտիվ նորմալ ձևից հետևյալ կերպ.
σ i1 σ i2 σ ik
իսկ եթե Di = xi1 ∨ xi2 ∨ ... ∨ xik , k≥4 ապա Di -ն փոխարինենք իրեն
σ i1 σ i2 σ σ ik
համարժեք ( xi1 ∨ xi2 ∨ wi ) & ( wi ∨ xi3 i3 ... ∨ xik ) արտահայտությամբ: Նկատենք,
որ գրված կոնյունկցիայում երկրորդ անդամն արդեն պարունակում է k − 1
σ i1 σ i2 σ σ ik
լիտերալ: Այնուհետև, ( xi1 ∨ xi2 ∨ wi ) & ( wi ∨ xi3 i3 ... ∨ xik ) արտահայտությունը
σ i1 σ i2 σ i3 σ σ ik
փոխարինենք ( xi1 ∨ xi2 ∨ wi ) & ( wi ∨ xi3 ∨ zi ) & ( z i ∨ xi4 i4 ... ∨ xik )
արտահայտությամբ: Նկատենք, որ գրված կոնյունկցիայում երրորդ անդամն
արդեն պարունակում է k − 2 լիտերալ: Այստեղ zi –ն և wi -ն նոր բուլյան
փոփոխականներ են: Այսպիսով, k փոխարինումների արդյունքում մենք Di -ն
կփոխարինենք մի արտահայտությամբ, որում ցանկացած դիզյունկցիա
կպարունակի ճիշտ երեք լիտերալ:
Դիտարկենք f ( x1 ,..., xn ,...) նոր կոնյունկտիվ նորմալ ձևը: Նկատենք, որ այն
կազմված է ոչ ավել, քան nr + n = n(r + 1) փոփոկանների լիտերալներից: Քանի
որ յուրաքանչյուր Di - դիզյունկցիա փոխարինվում է ոչ ավել քան n
դիզյունկցիաներով, ապա f ( x1 ,..., xn ,...) նոր կոնյունկտիվ նորմալ ձևը կազված
կլինի ոչ ավել, քան nr դիզյունկցիաներից: Նկատենք, որ եթե որպես
կոնյունկտիվ նորմալ ձևի չափ վերցնենք փոփոխականների և
դիզյունկցիաների քանակների արտադրյալը, ապա սկզբնական կոնյունկտիվ
նորմալ ձևի չափը կլինի nr -ը, իսկ վերջնական կոնյունկտիվ նորմալ ձևի
չափը` n(r + 1) ⋅ nr , ինչը փոփոխվում է nr -ի նկատմամբ բազմանդամով:
Հետևաբար` բերման բարդությունը բազմանդամային է:
Վերջում նկատենք, որ քանի որ յուրաքանչյուր դիզյունկցիա փոխարինվում է
իրեն համարժեք արտահայտությամբ, ապա f ( x1 ,..., xn ) = D1 &...& Dr -ը
կոնյունկտիվ նորմալ ձևը կլինի իրագործելի այն և միայն այն դեպքում, երբ
f ( x1 ,..., xn ,...) նոր կոնյունկտիվ նորմալ ձևը կլինի իրագործելի: Թեորեմն
ապացուցված է:
2
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
ԽՄԲԱՎՈՐՈՒՄ
Տրված է G գրաֆը և k բնական թիվը:
Պահանջվում է պարզել ω (G ) ≥ k թե ոչ:
3
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
ԱՆԿԱԽ ԲԱԶՄՈՒԹՅՈՒՆ
Տրված է G գրաֆը և k բնական թիվը:
Պահանջվում է պարզել α (G ) ≥ k թե ոչ:
ԳԱԳԱԹՆԵՐՈՎ ԾԱԾԿՈՒՅԹ
Տրված է G գրաֆը և k բնական թիվը:
Պահանջվում է պարզել β (G ) ≤ k թե ոչ:
4
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
ԳՐԱՖԻ ՆԵՐԿՈՒՄ
Տրված է G գրաֆը և k բնական թիվը:
Պահանջվում է պարզել χ (G ) ≤ k թե ոչ:
5
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
x1 x2
xn
. . .
D1 Բոլոր v1 ,..., vn
v1
գագաթները
զույգ առ զույգ
v2 միացված են
կողով
Dr
vn
. . .
x1 x2 xn
նկար 1
6
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
7
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
⎧i, »Ã» α i = 1,
c( xi ) = ⎨
⎩n + 1, »Ã» α i = 0,
⎧i, »Ã» α i = 0,
c( xi ) = ⎨
⎩n + 1, »Ã» α i = 1:
Եվ վերջապես, քանի որ f ( x1 ,..., xn ) = D1 &...& Dr կոնյունկտիվ նորմալ ձևն
իրագործվում է x1 ,..., xn փոփոխականների α1 ,...,α n արժեքների դեպքում,
ապա ցանկացած D j դիզյունկցիայի համար գոյություն ունի xi j փոփոխական
այնպես, որ D j դիզյունկցիայի մեջ մասնակցող xi j փոփոխականի լիտերալն
ընդունում է մեկ արժեք: c : V (G ) → {1,..., n + 1} արտապատկերման արժեքը
G գրաֆի D1 ,..., Dr գագաթների վրա սահմանենք հետևյալ կերպ c( D j ) = i j ,
1 ≤ ij ≤ n :
Ցույց տանք, որ այս ձևով սահմանված c : V (G ) → {1,..., n + 1}
արտապատկերումը հանդիսանում է G գրաֆի ճշգրիտ ներկում:
Նկատենք, որ c : V (G ) → {1,..., n + 1} արտապատկերման սահմանումից
հետևում է, որ G գրաֆի {vi , v j }, {vi , x j }, {vi , x j }, {xi , xi } կողերի
ծայրակետերում c -ն ընդունում է տարբեր արժեքներ: Ցույց տանք, որ G
գրաֆի D j գագաթից դուրս եկող կողերի ծայրակետերում c -ն ևս ընդունում է
տարբեր արժեքներ:
Ենթադրենք, որ xi j փոփոխականից զատ D j դիզյունկցիայի մեջ մասնակցում
են նաև xk , xl փոփոխականների լիտերալներ ( k ≠ l , k ≠ i j , l ≠ i j ): Քանի որ
xk , xl փոփոխականների լիտերալներին համապատասխանող գագաթները
ներկվում են համապատասխանաբար {k , n + 1} և {l , n + 1} գույներով, ապա
պարզ է, որ G գրաֆի D j գագաթը այդ փոփոխականների լիտերալներին
միացնող կողի ծայրակետերում c -ն ընդունում է տարբեր արժեքներ ( D j
գագաթը ներկված է c( D j ) = i j գույնով): Ցույց տանք, որ D j գագաթը xi j
8
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
D j գագաթը xi j
փոփոխականին միացնող կողի ծայրակետերում c -ն
ընդունում է տարբեր արժեքներ:
Դեպք 2: D j դիզյունկցիայի մեջ մասնակցում է հենց xi j -ը: Այդ դեպքում պարզ
է, որ xi j փոփոխականն ընդունել է զրո արժեք, հետևաբար G գրաֆի
Գրականություն
9
Կոմբինատորային ալգորիթմներ և
ալգորիթմների վերլուծություն
Վահան Վ. Մկրտչյան
ԿԱՏԱՐՅԱԼ ԾԱԾԿՈՒՅԹ
Տրված է A = {a1 ,..., an } բազմությունը և նրա ենթաբազմությունների
A = { A1 ,..., Am } ընտանիքը, որը ծածկում է A = {a1 ,..., an } բազմությունը,
այսինքն`
m
∪A = A:
i =1
i
∪A ij
= A:
j =1
2
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
ՆԵՐԿԱՅԱՑՈՒՑԻՉՆԵՐԻ ՀԱՄԱԿԱՐԳ
Տրված է A = {a1 ,..., an } և նրա ենթաբազմությունների A1 ,..., Am ընտանիքը:
Պահանջվում է պարզել, թե գոյություն ունի արդյոք A1 ,..., Am համակարգի
ներկայացուցիչների համակարգ, այսինքն այնպիսի W ⊆ {a1 ,..., an }
ենթաբազմություն, որի համար W ∩ Ai = 1 , 1 ≤ i ≤ m :
∪A = A:i
i =1
3
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
ՈՒՍԱՊԱՐԿ
տրված են c1 ,..., cn , v1 ,..., vn , և V , C ոչ բացասական թվերը:
Հնարավոր է x1 ,..., xn փոփախականների համար ընտրել 0 կամ 1 արժեքներ
այնպես, որ բավարարվի հետևյալ համակարգը
⎧ x1v1 + ... + xn vn ≤ V
⎨
⎩ x1c1 + ... + xn cn ≥ C
Նկատենք, որ ՈՒՍԱՊԱՐԿ խնդիրը պատկանում է NP դասին: Իրոք, եթե մեզ
տրված լիներ x1 ,..., xn փոփախականների որոնելի արժեքները, ապա մենք
կարող ենք համոզվել, որ նրանք բավարարում են վերոհիշյալ համակարգին:
Նկատենք նաև, որ այս ստուգումը կարելի է իրականացնել բազմանդամային
ալգորիթմի միջոցով, այնպես որ ՈՒՍԱՊԱՐԿ խնդիրը պատկանում է NP
դասին:
Մենք կդիտարկենք նաև ՈՒՍԱՊԱՐԿ խնդրի հետևյալ մասնավոր դեպքը
4
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
0-1 ՈՒՍԱՊԱՐԿ
տրված են a1 ,..., an , և b ոչ բացասական թվերը:
Հնարավոր է x1 ,..., xn փոփախականների համար ընտրել 0 կամ 1 արժեքներ
այնպես, որ բավարարվի a1 x1 + ... + an xn = b հավասարումը:
∪A = A: i
i =1
5
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
⎩0 »Ã» Ai ∉{ Ai ,..., Ai }:
1 k
6
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
b = 1 + (m + 1)α
ապա պարզ է, որ h1n x1 + h2 n x2 + ... + hmn xm − 1 թիվը պետք է պատիկ լինի
(m + 1) -ին: Մյուս կողմից քանի որ −1 ≤ h1n x1 + h2 n x2 + ... + hmn xm − 1 ≤ m − 1 ,
ապա այստեղից հետևում է, որ h1n x1 + h2 n x2 + ... + hmn xm = 1 : Համանման ձևով
7
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
ՏՐՈՀՈՒՄ
Տրված են a1 ,..., an թվերը:
Գոյություն ունի արդյոք I ⊆ {1,..., n} այնպես, որ ∑a = ∑a
i∈I
i
i∉I
i
:
∑a + ∑a
i =1
i
i∈I
i
= 2b + ∑ ai ,
i∉I
8
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
n
որտեղից հետևում է, որ ՏՐՈՀՈՒՄ խնդրի a1 ,..., an ,2b, ∑a
i =1
i անհատ խնդրում
պատասխանը դրական է:
n
Հիմա ենթադրենք, որ a1 ,..., an ,2b, ∑a
i =1
i թվերը հնարավոր է տրոհել երկու
∑a + ∑a
i =1
i
i∈I
i
= 2b + ∑ ai
i∉I
հետևաբար`
2∑ ai = 2b
i∈I
կամ`
∑a
i∈I
i
=b:
Նշանակենք`
⎧1 »Ã» i ∈ I ,
xi = ⎨
⎩0 »Ã» i ∉ I :
Նկատենք, որ
a1 x1 + ... + an xn = ∑ ai = b ,
i∈I
և հետևաբար` 0-1 ՈՒՍԱՊԱՐԿ խնդրի a1 ,..., an և b անհատ խնդրում
պատասխանը դրական է: Թեորեմն ապացուցված է:
ԲԱԶՄՈՒԹՅԱՆ ԾԱԾԿՈՒՅԹ
Տրված է k բնական թիվը, A = {a1 ,..., an } բազմությունը և նրա
ենթաբազմությունների A = { A1 ,..., Am } ընտանիքը, որը ծածկում է
A = {a1 ,..., an } բազմությունը, այսինքն`
m
∪A = A:
i =1
i
9
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
∪A ij
= A:
j =1
գագաթային ծածկույթ և β (G ) ≤ k :
Վերջում նկատենք, որ E (G ) բազմության { X 1 ,..., X p } ծածկույթը կառուցվում
է ըստ G գրաֆի և k բնական թվի բազմանդամային ալգորիթմի միջոցով,
հետևաբար` թեորեմն ապացուցված է:
10
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
ՍՏՈՒԳՈՂ ԹԵՍՏ
Տրված է k բնական թիվը, m × n կարգի T = (tij ) մատրիցը, որտեղ tij ∈{0,1} և
որի առաջին սյունը տարբերվում է մնացած սյուներից:
Պահանջվում է պարզել, թե գոյություն ունեն արդյոք T = (tij ) մատրիցի k
տողեր, որոնցով ծնված ենթամատրիցի առաջին սյունը լինի տարբեր մնացած
սյուներից:
∪A = A:
i =1
i
11
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
Գրականություն
12
Կոմբինատորային ալգորիթմներ և
ալգորիթմների վերլուծություն
Վահան Վ. Մկրտչյան
ՀԱՄԻԼՏՈՆՅԱՆ ԿՈՆՏՈՒՐ
Տրված է G = (V , E ) օրգրաֆը:
Պահանջվում է պարզել, թե պարունակում է այն համիլտոնյան կոնտուր,
այսինքն` կոնտուր, որն անցնում է բոլոր գագաթներով, ընդ որում
յուրաքանչյուրով մեկ անգամ:
2
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
(u , xu0 ,0) (u , xu0 ,1) (v, xv0 ,0) (v, xv0 ,1)
.
. .
. .
.
.
. .
. .
.
(u , xu* ,0) (u , xu* ,1) (v, xv* ,0) (v, xv* ,1)
նկար 1
a1 , (u1 , y1 (1),0) , (u1 , y1 (1),1) , (u1 , y1 (2),0) ,…, (u1 , y1 (l1 ),0) , (u1 , y1 (l1 ),1) ,
a2 , (u2 , y2 (1),0) , (u2 , y2 (1),1) , (u2 , y2 (2),0) ,…, (u2 , y2 (l2 ),0) , (u2 , y2 (l2 ),1) ,
……………………………………………………………………………………
ak , (uk , yk (1),0) , (uk , yk (1),1) , (uk , yk (2),0) ,…, (uk , yk (lk ),0) , (uk , yk (lk ),1) , a1 ,
որը պարունակում է բոլոր այն գագաթները, որոնք անցնում են այն (u , x, δ )
գագաթներով, որոնց համար u ∈{u1 ,..., uk } : Նկատենք նաև, որ այս կոնտուրում
x կողին (u, x,0),(u, x,1) գագաթները նշված
համապատասխանող
կոնտուրում հաջորդում են միմյանց: Եթե u ∈{u1 ,..., uk } , v ∉{u1 ,..., uk } և
3
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
ՀԱՄԻԼՏՈՆՅԱՆ ՑԻԿԼ
Տրված է G = (V , E ) գրաֆը:
Պահանջվում է պարզել, թե պարունակում է այն համիլտոնյան ցիկլ, այսինքն`
ցիկլ, որն անցնում է բոլոր գագաթներով, ընդ որում յուրաքանչյուրով մեկ
անգամ:
4
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
5
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
ՇՐՋԻԿ ԳՈՐԾԱԿԱԼ
Տրված է C = (cij ) , cij ∈ Z , cii = 0 մատրիցը և L ∈ Z բնական թիվը:
+ +
6
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
7
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
∪A = A: i
i =1
⎩0 »Ã» Ai ∉{ Ai ,..., Ai }:
1 k
8
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
∑x
i =1
ij
= ∑ xij = 1
j =1
հետևյալ համակարգին
9
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
n n
∑∑ c x
i =1 j =1
ij ij
≤ L,
n n
∑x
i =1
ij
= ∑ xij = 1
j =1
ui − u j + nxij ≤ n − 1 , 2 ≤ i ≠ j ≤ n :
Ցույց տանք, որ ՇՐՋԻԿ ԳՈՐԾԱԿԱԼ խնդրի` C = (cij ) , cij ∈ Z և L∈Z
+ +
անհատ խնդրում պատասխանը դրական է այն և միայն այն դեպքում, երբ վերը
նշված ԱՄԲՈՂՋԱԹԻՎ ԳԾ խնդրում պատասխանը դրական է:
Դիցուք ՇՐՋԻԿ ԳՈՐԾԱԿԱԼ խնդրին պատկանող անհատ խնդրում
պատասխանը դրական է և L -ից ոչ մեծ երկարություն ունեցող երթուղին
1, i1 ,..., in −1 ,1 -ն է: Դիտարկենք հետևյալ ձևով սահմանված xij ∈{0,1} , ui ∈ Z +
թվերը.
xij = 1 այն և միայն այն դեպքում, երբ գործակալի 1, i1 ,..., in −1 ,1 երթուղում i -րդ
բնակավայրին անմիջապես հաջորդում է j -րդ բնակավայրը;
u1 = 0, ui = 1, ui = 2,..., ui = n − 1 :
1 2 n −1
u j − u j + n ≤ n −1,
2 3
……….
u j − u j + n ≤ n − 1:
s 1
10
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
Գրականություն
11
Կոմբինատորային ալգորիթմներ և
ալգորիթմների վերլուծություն
Վահան Վ. Մկրտչյան
2
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
Մոտարկում: Մինչև հիմա մենք դիտարկել ենք խնդիրներ, որոնք ունեն կամ էլ
հեշտությամբ վերաձևակերպվում են հետևյալ տեսքով:
Տրված են E = {e1 ,..., en } էլեմենտների բազմությունը և c : E → R գնային
ֆունկցիան: Պահանջվում է գտնել e ∈ E տարր այնպես, որ c(e) → min կամ
c(e) → max :
Ինչպես արդեն նշել ենք, այն խնդիրները, որոնք ունեն քիչ թե շատ
գործնական նշանակություն հիմնականում NP –լրիվ են: Սա նշան է այն բանի,
որ չարժե փորձել մշակել այդպիսի խնդիրները լուծող էֆֆեկտիվ
(բազմանդամային) ալգորիթմ: Մյուս կողմից, հաշվի առնելով, որ այդպիսի
խնդիրները ունեն գործնական նշանակություն, մենք շահագրգռված ենք նրանց
լուծելու մեջ` անկախ այն բանից, թե նրանք NP –լրիվ են, թե ոչ:
Նմանատիպ իրադրության մեջ, կարելի է առաջարկել երկու տարբերակ:
Առաջինի էություը կայանում է նրանում, որ մենք կարող ենք նախագծել
ալգորիթմներ, որոնք չեն աշխատում բազմանդամային ժամանակում, բայց
ճշգրիտ լուծում են դիտարկվող խնդիրը: Երկրորդ մոտեցումը կայանում է
“ախորժակը” սահմանափակելու մեջ, այլ կերպ ասած, մենք կարող ենք որոնել
բազմանդամային ալգորթիմներ, որոնք կառուցոմ են այնպիսի լուծումներ,
որոնք լավագույնը չեն, բայց որոնց համար գնային ֆունկցիայի արժեքն այնքան
էլ “հեռու չէ” լավագույնից: Ընդհանրապես, ընդունված է նմանատիպ
3
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
4
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
Ալգորիթմ 1
ՔԱՅԼ 1: V ' := ∅ ; E ' := E (G )
ՔԱՅԼ 2:
Քանի դեռ E ' ≠ ∅
Վերցնել G գրաֆի կամայական e = (u, v) ∈ E ' կող;
V ' := V '∪ {u, v} ;
E ' -ից հեռացնել u և v գագաթներին ինցիդենտ կողերը:
ՔԱՅԼ 3: Վերադարձնել V ' -ը:
Ալգորիթմ 2
ՔԱՅԼ 1: V ' := ∅ ;
ՔԱՅԼ 2: Քանի դեռ E (G ) ≠ ∅
Վերցնել G գրաֆի v ∈ V (G ) գագաթ, որի աստիճանը ամենամեծն է;
V ' := V '∪ {v} ;
G գրաֆից հեռացնել v գագաթը:
ՔԱՅԼ 3: Վերադարձնել V ' -ը:
5
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
սակայն, ինչպես ցուց է տալիս նկար 1-ում բերված գրաֆը, այս ալգորիթմը
նույնիսկ մոտավոր ալգորիթմ չէ, քանի որ այն կարող է կամայապես սխալվել:
n հատ
. . .
. . .
զույգերով
եռյակներով
քառյակներով
n - յակներով
նկար 1
Այս գրաֆում նվազագույն գագաթային ծածկույթի հզորությունը n -է, իսկ
Ալգորիթմ 2-ի շնորհիվ կառուցված ծածկույթի հզորությունը`
⎡n⎤ n
⎡n⎤ n n n
1
1 + 1 + ... ⎢ ⎥ + n = ∑ ⎢ ⎥ ≥ ∑ ( − 1) = n∑ − n
⎣2⎦ k =1 ⎣ k ⎦ k =1 k k =1 k
և հետևաբար`
n
c( A( I )) 1
≥ ∑ − 1 → +∞ երբ` n → +∞ :
OPT ( I ) k =1 k
Բազմության ծածկույթ: Նախ հիշենք ԲԱԶՄՈՒԹՅԱՆ ԾԱԾԿՈՒՅԹ խնդիրը
Տրված է k բնական թիվը, A = {a1 ,..., an } բազմությունը և նրա
ենթաբազմությունների A = { A1 ,..., Am } ընտանիքը, որը ծածկում է
A = {a1 ,..., an } բազմությունը, այսինքն`
m
∪A = A:
i =1
i
6
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
∪A ij
= A:
j =1
Ալգորիթմ 3
ՔԱՅԼ 1: U := A ; A' := ∅ ;
ՔԱՅԼ 2: Քանի դեռ U ≠ ∅
Վերցնել A = { A1 ,..., Am } ծածկույթի այնպիսի Ai ∈ A , որի համար
Ai ∩ U → max ;
U := U \ Ai ; A' := A' ∪ { Ai }
ՔԱՅԼ 3: Վերադարձնել A' -ը:
7
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
Լեմմա 1: H (n) ≤ 1 + ln n :
Ապացույց: Նախ նկատենք, որ
n −1
1 1 1
H ( n) = 1 + + ... + = 1 + ∑ :
2 n k =1 k + 1
8
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
1 1
x∈ X
∑c k
x =
+ ... + + (Ùݳó³Í k1 ï³ññ»ñÇ ëï³ó³Í ·áõÙ³ñÁ ) ≤
k
1 1 1
≤ + + ... + + (Ùݳó³Í k1 ï³ññ»ñÇ ëï³ó³Í ·áõÙ³ñÁ )
k k −1 k1 + 1
Դիտարկենք X բազմության k1 տարրերից նրանք, որոնք առաջին անգամ
ստանում են որոշակի գումար: Կրկին Ալգորիթմ 3-ի քայլ 2-ից հետևում է, որ
այն բազմությունը, որի շնորհիվ այս տարրերը ստանում են գումար,
պարունակում է առնվազն k1 տարր: Հետևաբար, այս տարրերի ստացած
1
գումարը չի գերազանցում –ն: k2 -ով նշանակենք X բազմության k1
k1
տարրերից մնացած տարրերի քանակը, այսինքն այն տարրերը, որոնք
առաջինը գումար չեն ստանում: Ունենք`
1 1 1
∑
x∈ X
cx ≤ +
k k −1
+ ... +
k1 + 1
+ (Ùݳó³Í k1 ï³ññ»ñÇ ëï³ó³Í ·áõÙ³ñÁ ) =
1 1 1 1 1
= + + ... + + ( + ... + ) + (Ùݳó³Í k2 ï³ññ»ñÇ ëï³ó³Í ·áõÙ³ñÁ ) ≤
k k −1 k1 + 1 k1 k1
1 1 1 1 1
≤ + + ... + + + ... + + (Ùݳó³Í k2 ï³ññ»ñÇ ëï³ó³Í ·áõÙ³ñÁ )
k k −1 k1 + 1 k1 k2 + 1
Շարունակելով` կստանանք լեմմայի ապացույցը:
Օգտվելով Լեմմա 2-ից, գնահատենք Ալգորիթմ 3-ի կառուցած A'
ենթածածկույթի շեղումը A = { A1 ,..., Am } ծածկույթի լավագույն A*
ենթածածկույթից: Ունենք`
A' = ∑ cx ≤ ∑ ∑c x
≤ ∑ H( X ) ≤ A* H (max{ X : X ∈ A* }) ≤
x∈ X X ∈ A* x∈ X X ∈ A*
≤ A* H (max{ X : X ∈ A})
Հաշվի առնելով Լեմմա 1-ը, վերջնականապես կստանանք`
A' ≤ A* H (n) ≤ A* (1 + ln n) :
Նկատենք, որ իրականում Ալգորիթմ 3-ն ընդհանրացնում է Ալգորիթմ 2-ը:
Իրոք, հիշենք, որ ԳԱԳԱԹՆԵՐՈՎ ԾԱԾԿՈՒՅԹ ≺ ԲԱԶՄՈՒԹՅԱՆ ԾԱԾԿՈՒՅԹ
բերման ժամանակ, G գրաֆին և k բնական թվին` ԳԱԳԱԹՆԵՐՈՎ
ԾԱԾԿՈՒՅԹ խնդրի անհատ խնդրին, մենք համապատասխանեցրինք
X i = {x ∈ E (G ) : x-Á ¨ v-Ý ÇÝóǹ»Ýï »Ý} , 1 ≤ i ≤ p ,
E (G ) = X 1 ∪ ... ∪ X p
ԲԱԶՄՈՒԹՅԱՆ ԾԱԾԿՈՒՅԹ խնդրի անհատ խնդիրը, ընդ որում ցույց
տվեցինք, որ G գրաֆում β (G ) ≤ k այն և միայն այն դեպքում, երբ E (G )
բազմության { X 1 ,..., X p } ծածկույթը պարունակում է k ենթածածկույթ:
9
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
10
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
11
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
Ալգորիթմ 4
ՔԱՅԼ 1: Դիտարկել G գրաֆը, որի գագաթների բազմությունը
ÞðæÆÎ ¶àðÌ²Î²È ∆ խնդրում առկա բնակավայրերն են, և որի կողերի
երկարությունները հենց բնակավայրերի միջև հեռավորություններն են: G
գրաֆում կառուցել T - մինիմալ կմախքային ծառ:
ՔԱՅԼ 2: Դիտարկել 2T գրաֆը, որը ստացվում է T ծառի կողերի
կրկնապատկումից: Նկատենք, որ այդ 2T գրաֆում ցանկացած գագաթի
աստիճան զույգ է, հետևաբար այն էյլերյան է: Կառուցել 2T գրաֆի մի որևէ W
էյլերյան ցիկլ:
ՔԱՅԼ 3: W ցիկլից կառուցել բնակավայրերի շրջանցման երթուղի` հեռացնելով
կրկնությունները, այլ կեպ ասած շարժվել W ցիկլով, և եթե հանդիպում ենք
գագաթ, որի հաջորդ գագաթն արդեն այցելել ենք, ապա այցելել W ցիկլի վրա
գտնվող հաջորդ չայցելված գագաթը:
12
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
Ալգորիթմ 5
ՔԱՅԼ 1: Դիտարկել G գրաֆը, որի գագաթների բազմությունը
ÞðæÆÎ ¶àðÌ²Î²È ∆ խնդրում առկա բնակավայրերն են, և որի կողերի
երկարությունները հենց բնակավայրերի միջև հեռավորություններն են: G
գրաֆում կառուցել T - մինիմալ կմախքային ծառ:
13
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
14
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
15
Կոմբինատորային ալգորիթմներ և
ալգորիթմների վերլուծություն
Վահան Վ. Մկրտչյան
Ալգորիթմ 1
ՔԱՅԼ 1: Վերցնել G գրաֆի մի որևէ սկզբնական (V ' ,V (G ) \ V ' ) կտրվածք
(կարելի է սկսել օրինակ (∅, V (G )) -ից):
ՔԱՅԼ 2: Եթե հնարավոր է V ' ( V (G ) \ V ' )-ից հանել մի գագաթ և ավելացնել այն
V (G ) \ V ' ( V ' )-ին, դրանով իսկ ավելացնելով (V ' , V (G ) \ V ' ) կտրվածքի կողերի
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
քանակը, ապա վարվել այդ ձևով, հակառակ դեպքում` ավարտել Ալգորիթմ 1–ի
աշխատանքը` վերադարձնելով (V ' ,V (G ) \ V ' ) կտրվածքը:
2
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
OPT ( I ) = (V0 ,V (G ) \ V0 ) = e13 + e14 + e23 + e24 ≤ (e12 + e14 + e23 + e34 ) +
+ (e12 + e14 + e23 + e34 ) = 2(e12 + e14 + e23 + e34 ) = 2 (V ' , V (G ) \ V ' ) = 2c( A( I )),
հետևաբար`
OPT ( I )
≤2:
c( A( I ))
Արդյունքում ունենք, որ Ալգորիթմ 1-ը հանդիսանում է 2-մոտավոր ալգորիթմ
ՄԱՔՍԻՄԱԼ ԿՏՐՎԱԾՔ խնդրի համար:
3
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
⎡c ⎤
i = 1,..., n համար ci' = 2b ⎢ bi ⎥ :
⎣2 ⎦
(c1 ,..., c n ,V , v1 ,..., vn ) խնդրի լուծումը, այսինքն` առարկաների այն I ' ⊆ {1,..., n}
' '
OPT ( I )
∑c i
1 1
= i∈I *
≤ ≤ :
c( A( I )) ∑ c − n2 i
b
1−
n2 b
1−
n 2b
i∈I *
∑ ci c0
i∈I *
Ընտրենք b -ն այնպես, որ
1
≤ 1+ ε :
n 2b
1−
c0
Ունենք
n 2b n 2b n 2b
1 ≤ (1 + ε )(1 − ) = 1− +ε −ε ,
c0 c0 c0
որտեղից`
n 2b c0ε
(1 + ε ) ≤ ε կամ 2b ≤ :
c0 n(1 + ε )
⎡ c0ε ⎤
Վերցնենք b = ⎢log 2 : Պարզ է, որ այդ դեպքում
⎣ n(1 + ε ) ⎥⎦
OPT ( I )
≤ 1+ ε :
c( A( I ))
Ցույց տանք, որ նկարագրված ալգորիթմը բազմանդամային է: Քանի որ բոլոր
c1' ,..., cn' թվերը պատիկ են 2b -ին, ապա պարզ է, որ I ' ⊆ {1,..., n} բազմությունը
4
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
⎡c ⎤ ⎡c ⎤
կարելի է գտնել լուծելով ( ⎢ 1b ⎥ ,..., ⎢ nb ⎥ , V , v1 ,..., vn ) խնդիրը (բոլորից ընդհանուր
⎣2 ⎦ ⎣2 ⎦
c
հանել 2b -ն): Արդյունքում I ' ⊆ {1,..., n} բազմությունը կգտնենք O(n3 ( 0b ) 2 )
2
ժամանակում: Նկատենք, որ համաձայն b թվի ընտրության`
c n(1 + ε ) 2 (1 + ε ) 2
O(n3 ( 0b ) 2 ) = O(n3 ( ) ) = O ( n5 ),
2 ε ε2
ինչն իրենից ներկայացնում է բազմանդամ յուրաքանչյուր, նախապես տրված
ε > 0 թվի համար: Հետևաբար, մեր նկարագրած ալգորիթմն ունի
բազմանդամային բարդություն և ապահովում է 1 + ε ճշտություն:
Տրված են u1 ,..., un առարկաները, նրանց s (u1 ),..., s (un ) ∈ [0,1] չափերը (առարկայի
չափն իրենից ներկայացնում է ռացիոնալ թիվ), և k բնական թիվը:
Պահանջվում է պարզել, թե հնարավոր է արդյոք u1 ,..., un առարկաները
տեղավորել միավոր տարողություն ունեցող k արկղերում:
5
Կոմբինատորային ալգորիթմներ և ալգորիթմների վերլուծություն Վահան Վ. Մկրտչյան
Գրականություն
6
Քննական Հարցաշար