¨ tvo ¨ s Lora ´ nd Tudoma ´ nyegyetem Eo Informatikai Kar ´k Komputeralgebra Tansze
P´ arhuzamos Erd˝ os-Gallai algoritmus TDK dolgozat
T´emavezet˝o: Dr. Iv´anyi Antal Mikl´os egyetemi tan´ar
K´esz´ıtette: Lucz Lor´and II. ´evfolyam Programtervez˝o informatikus MSc
Budapest, 2011
Tartalomjegyz´ ek 1. Bevezet´ es
3
2. Algoritmusok 2.1. Havel-Hakimi algoritmus (HH) . . . . . . . . . 2.2. Erd˝ os-Gallai algoritmus (EG) . . . . . . . . . . 2.3. R¨ ovid´ıtett Erd˝ os-Gallai algoritmus (EGR) . . . 2.4. Ugr´ o Erd˝ os-Gallai algoritmus (EGU) . . . . . . 2.5. Line´ aris Ugr´ o Erd˝ os-Gallai algoritmus (EGLU)
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
3. Lesz´ aml´ al´ asi eredm´ enyek 4. A Holzhacker program 4.1. Kiszolg´ al´ o program . . . . . . . . . . . . 4.2. Feladatokat kioszt´ o algoritmus (DJ) . . 4.3. Kliens program . . . . . . . . . . . . . . 4.4. Felsorol´ o Erd˝ os-Gallai algoritmus (EGE)
4 4 5 5 6 6 7
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
10 12 15 16 18
5. A feladat r´ eszekre bont´ asa 5.1. Naiv megk¨ ozel´ıt´es . . . . . . . . . . . . . 5.2. Feloszt´ as kor´ abbi n ´ert´ekekre alapozva . . 5.3. Feloszt´ as a m˝ uveletsz´amok alapj´an . . . . 5.4. Feloszt´ as a p´ aros sorozatok sz´ama alapj´an
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
22 22 22 23 23
6. Eredm´ enyek
26
¨ 7. Osszefoglal´ as
26
Hivatkoz´ asok
29
2
Lucz Lor´ and - P´ arhuzamos Erd˝ os-Gallai algoritmus
1.
Bevezet´ es
A benn¨ unket k¨ or¨ ulvev˝ o vil´ agot sokf´elek´eppen modellezhetj¨ uk. Az egyik lehets´eges m´odszer a vil´ ag gr´ afokkal t¨ ort´en˝o reprezent´al´asa. A k¨or¨ ul¨ott¨ unk lev˝o objektumokat logikailag ¨ osszekapcsolhatjuk, majd ezeket a kapcsolatokat ´abr´azolhatjuk gr´afok seg´ıts´eg´evel. Egyszer˝ u p´eldak´ent tekinthet¨ unk p´eld´aul egy csal´adf´at, ahol a gr´af egy cs´ ucsa jel¨ ol egy szem´elyt, a gr´af ´elei pedig a sz¨ ul˝o-gyermek viszonyokat. Ez alapj´an mindenki a sz¨ uleivel ´es gyermekeivel ´all k¨ozvetlen kapcsolatban. A gr´afok cs´ ucsai minden esetben legfeljebb egyszeresek lehetnek ´es a kapott gr´af hurok´el mentes. Az ilyen gr´ afokat egyszer˝ u gr´ afnak nevezz¨ uk. Mivel manaps´ ag m´ ar szinte mindent sz´am´ıt´og´epekkel v´egz¨ unk, ez´ert fontos k´erd´es ezeknek a gr´ afoknak a t´arol´asa. Ennek egyik lehets´eges m´odja a cs´ ucsok foksz´ amainak t´ arol´ asa. Egy gr´afb´ol k¨onnyed´en fel´ırhatunk egy foksorozatot, megford´ıtva azonban m´ ar nem ilyen egyszer˝ u a probl´ema megold´asa, hiszen nem sz¨ uks´egszer˝ uen tartozik mint sorozathoz gr´af ´es adott sorozathoz t¨obb gr´af is tartozhat. Ezzel a k´erd´essel sok helyen tal´alkozhatunk. Landau [20] az ´allatok k¨oz¨ ott fenn´ all´ o dominanci´ at modellezte ilyen m´odon, Hakimi [8] k´emiai, Iv´anyi ´es munkat´ arsai pedig sportbeli [10, 11, 13, 15] alkalmaz´asokra hivatkoztak. A probl´em´ ara els˝ ok´ent V´ aclav Havel javasolt megold´ast 1955-ben [9], majd t˝ole f¨ uggetlen¨ ul 1962-ben Louis Hakimi [8] is publik´alta a m´odszert. Ez´ert a m´ odszert rendszerint Havel-Hakimi algoritmusk´ent emlegetik. A m´odszernek bizonyos szempontb´ ol el˝ onye, m´asfel˝ol pedig h´atr´anya, hogy a sorozatokat nem csup´ an megvizsg´ alja, hanem a hozz´ajuk tartoz´o gr´afot is el˝o´all´ıtja, ez´ert a legrosszabb fut´ asi ideje nem lehet kisebb, mint n´egyzetes. Erd˝ os ´es Gallai 1960-ban [5] javasolt m´asik m´odszert a k´erd´es eld¨ont´es´ere, amely m´ar nem ´ all´ıtja el˝ o a gr´ afot, csup´an ellen˝oriz. Az ˝o m´odszer¨ ukh¨oz k´es˝obb Tripathi ´es Vijay [27] megadott k´et javaslatot, amellyel az eredeti m´odszer gyors´ıthat´o, de m´eg ezeket felhaszn´ alva is nagyon komoly sz´am´ıt´asi ig´ennyel rendelkezik a feladat. Az eredeti algoritmusok ugyan csak egyszer˝ u gr´afokra alkalmazhat´oak, azonban a k´es˝ obbiekben kiterjesztett´ek ˝ oket egyszer˝ u ir´any´ıtott gr´afokra [6, 18, 19], valamint ir´any´ıtatlan [4, 23] ´es ir´ any´ıtott [10, 11] multigr´afokra is. 2011-ben megadtuk [13, 21] az Erd˝os-Gallai m´odszer egy olyan v´altozat´at (EGL), amellyel line´ aris id˝ oben elv´egezhet˝o a vizsg´alat. A m´odszer egy v´altozat´at a k´es˝ obbiekben ismertetj¨ uk. Sloan interneten el´erhet˝ o The On-Line Encyclopedia of Integer Sequences [24] nev˝ u adatb´ azis´ aban tal´ alhat´ oak adatok arra vonatkoz´oan, hogy n cs´ ucs´ u gr´afok eset´en pontosan h´ any k¨ ul¨ onb¨ oz˝o foksorozat l´etezik. Ezeknek a sorozatoknak a sz´am´at a k´es˝ obbiekben Gn -nel jel¨ olj¨ uk. Az adatb´azis n ≤ 23-ig tartalmazta ezeket az adatokat. n = 20-t´ ol n = 23-ig p´eld´aul Cohen adta meg ezeket az adatokat 2011. j´ ulius 9-´en. A dolgozatban k´es˝obbiekben ismertetett program felhaszn´al´as´aval megadtuk a Gn ´ert´ek´et eg´eszen n = 29-ig. Eredm´enyeink megtal´alhat´oak az OEIS adatb´ azis A004251-es sorozat´ aban [24]. Az EGL algoritmust tov´ abbfejlesztve, a minden sz´oba j¨ov˝o sorozat ellen˝orz´es´ere k´esz´ıtett EGP algoritmussal nagyobb n ´ert´ekekre is meghat´aroztuk a Gn 3
Lucz Lor´ and - P´ arhuzamos Erd˝ os-Gallai algoritmus ´ert´ekeit. Ezeket az ´ert´ekeket egy – t¨obb sz´am´ıt´og´epen p´arhuzamosan futtatott – h´ al´ ozati program seg´ıts´eg´evel sz´am´ıtottuk ki, mivel a sz´am´ıt´asok fut´asi ideje az n ´ert´ek n¨ ovel´es´evel minden l´ep´esben k¨or¨ ulbel¨ ul n´egyszeres´ere n˝o [13]. Ez az exponenci´ alis n¨ oveked´es tette sz¨ uks´egess´e az algoritmus sz´am´ıt´og´epes megval´ os´ıt´ as´ anak p´ arhuzamos´ıt´as´at. Dolgozatunk c´elja a sorozatok gyors ellen˝orz´esi m´odszereinek ismertet´ese, valamint a vizsg´ alatot elv´egz˝ o program bemutat´asa. A dolgozat fel´ep´ıt´ese a k¨ ovetkez˝o: a 2. r´eszben ismertetj¨ uk a Havel-Hakimi ´es az Erd˝ os-Gallai algoritmusokat, le´ırjuk Tripathi ´es Vijay gyors´ıt´asait, valamint a line´ aris Erd˝ os-Gallai ugr´ o algoritmust. A k¨ ul¨onb¨oz˝o felt´eteleknek megfelel˝o sorozatok sz´ am´ aval kapcsolatos lesz´aml´al´asi eredm´enyeket tartalmazza a 3. r´esz. A sz´ am´ıt´ asokat elv´egz˝ o programot a 4. r´eszben ismertetj¨ uk, majd a 5. r´eszben ´ırjuk le a probl´ema r´eszekre bont´ as´anak technik´ait, v´eg¨ ul az 6. r´eszben ¨osszefoglaljuk a le´ırt m´ odszerekkel ´es a programmal el´ert eredm´enyeinket.
2.
Algoritmusok
A dolgozatban szerepl˝ o algoritmusok forr´ask´odjai megtal´alhat´oak a http://people.inf.elte.hu/lulsaai/Holzhacker honlapon, pszeudok´odjai pedig a [13] cikkben ´es a [21] TDK dolgozatban. Miel˝ ott bevezetn´enk a felhaszn´alt algoritmusokat, defini´aljuk a haszn´alt fogalmakat ´es megadjuk, hogy milyen alapvet˝o felt´etelez´esekkel ´el¨ unk ezek kapcs´an. A G gr´ af i-edik cs´ ucsa legyen Vi , Vi foka legyen fi ´es G foksorozata legyen F = (f1 , . . . , fn ). Egy F foksorozat szab´ alyos, ha n ≥ 1 ´es az fi (1 ≤ i ≤ n) ´ert´ekek eg´esz sz´amok, tov´ abb´ a n − 1 ≥ f1 ≥ · · · ≥ fn ≥ 0. Egy szab´alyos foksorozatot megval´ os´ıthat´ onak vagy helyre´ all´ıthat´ onak nevez¨ unk, ha l´etezik olyan G egyszer˝ u gr´af, amelynek foksorozata F . Egy F szab´alyos sorozat p´ aros, ha elemeinek ¨osszege p´aros. P Sz¨ uks´eg¨ unk lesz tov´ abb´ a a sorozat els˝o k elem´enek ¨osszeg´ere, amit Hk = ki=1 fi -vel fogunk jel¨ olni.
2.1.
Havel-Hakimi algoritmus (HH)
Az algoritmust els˝ ok´ent Havel [9] ´ırta le, majd k´es˝obb t˝ole f¨ uggetlen¨ ul Hakimi [8] is publik´ alta ugyanezt az eredm´enyt, innen ad´odik a Havel-Hakimi algoritmus elnevez´es. ´tel. (Havel, Hakimi [8, 9]) Az F = (f1 , . . . , fn ) (n ≥ 3) szab´ 1. Te alyos foksorozat akkor ´es csak akkor helyre´ all´ıthat´ o, ha az F 0 = (f2 − 1, f3 − 1, . . . , ff1 − 1, ff1 +1 − 1, ff1 +2 , . . . , fn−1 , fn ) sorozat is helyre´ all´ıthat´ o. Bizony´ıt´ as. L´ asd [8, 9]. Az algoritmust k´es˝ obb kiterjesztett´ek egyszer˝ u ir´any´ıtott gr´afokra [6, 18, 19], valamint ir´ any´ıtatlan [4, 23] ´es ir´any´ıtott [10, 11] multigr´afokra is. 4
Lucz Lor´ and - P´ arhuzamos Erd˝ os-Gallai algoritmus A t´etel felhaszn´ al´ as´ aval fel´ırhat´o algoritmus nagy h´atr´anya, hogy felhaszn´al´asa sor´an minden egyes l´ep´esben u ´jra kell rendezni a sorozatot. M´asr´eszt az algoritmus egyes´evel cs¨ okkenti a foksz´ amokat, ez´ert p´eld´aul az F = (n − 1, . . . , n − 1) sorozatn´al Θ(n2 ) cs¨ okkent´est v´egez. Ez´ert az algoritmus fut´asi ideje legrosszabb esetben akkor is Ω(n2 ), ha line´ aris fut´ asi idej˝ u rendez˝o algoritmust haszn´alunk.
2.2.
Erd˝ os-Gallai algoritmus (EG)
Erd˝ os ´es Gallai 1960-ban adtak meg olyan ellen˝orz´esi m´odot, amely a sorozatot nem ´all´ıtja el˝ o, csup´ an eld¨ onti, hogy az helyre´all´ıthat´o-e vagy sem. ´tel. (Erd˝ 2. Te os, Gallai [5]) A szab´ alyos F = (f1 , . . . , fn ) sorozat akkor ´es csak akkor helyre´ all´ıthat´ o, ha n X fi p´ aros (1) i=1
´es
j X
fi − j(j − 1) ≤
i=1
n X
min(j, fk ) (j = 1, . . . , n − 1).
(2)
k=j+1
Bizony´ıt´ as. L´ asd [3, 5, 21].
A t´etel felhaszn´ al´ as´ aval megval´os´ıthat´o algoritmus fut´asi ideje a legjobb Θ(n) ´es legrosszabb Θ(n2 ) k¨ oz¨ ott v´ altozik. A k¨ ozelm´ ultban Tripathi ´es munkat´arsai [28] publik´altak egy konstrukt´ıv bizony´ıt´ ast, amely helyre´ all´ıthat´o sorozatok eset´en a helyre´all´ıt´ast is elv´egzi. Ennek az algoritmusnak a fut´ asi ideje legrosszabb esetben Θ(n3 ).
2.3.
R¨ ovid´ıtett Erd˝ os-Gallai algoritmus (EGR)
Tripathi ´es Vijay 2003-as cikk¨ ukben [27] le´ırtak egy lehets´eges r¨ovid´ıt´esi m´odot Erd˝os ´es Gallai m´ odszer´ere. A (2) egyenl˝otlens´eget elegend˝o csak azokban az esetekben ellen˝ orizni, ahol a Hi > i(i − 1) felt´etel teljes¨ ul. 1. Lemma. (Tripathi et al. [27]) Egy szab´ alyos F = (f1 , . . . , fn ) foksorozat akkor ´es csak akkor helyre´ all´ıthat´ o, ha Hn p´ aros (3) ´es Hi − i(i − 1) ≤
n X
min(i, fk ),
(4)
k=i+1
ahol i = 1, . . . , max (k | k(k − 1) < Hk ). 1≤k≤n
Bizony´ıt´ as. L´ asd [27].
(5) 5
Lucz Lor´ and - P´ arhuzamos Erd˝ os-Gallai algoritmus
2.4.
Ugr´ o Erd˝ os-Gallai algoritmus (EGU)
Tripathi ´es Vijay [27] megadtak egy tov´abbi lehets´eges r¨ovid´ıt´esi m´odot is. A r¨ovid´ıt´es azt haszn´ alja ki, hogy ha egy ellen˝orizend˝o sorozatban egy foksz´am t¨obbsz¨or is el˝ ofordul, akkor azt elegend˝o csup´an egyszer ellen˝orizni, m´eghozz´a abban a pontban, ahol teljes¨ ul, hogy fi 6= fi+1 . A sorozatok utols´o elemeit pedig nem sz¨ uks´eges ellen˝ orizni. Vezess¨ uk be a gi jel¨ ol´est azokra az i indexekre, amelyekre teljes¨ ulnek az fi 6= fi+1 ´es az i 6= n felt´etelek. Ezeket a pontokat ellen˝ orz˝ opontoknak nevezz¨ uk. Ha q jel¨oli az ellen˝ orz˝ opontok sz´ am´ at, akkor az F sorozat fg1 , . . . , fgq elemei ellen˝orz˝opontok. ´tel. (Tripathi, Vijay [27]) A szab´ 3. Te alyos F = (f1 , . . . , fn ) sorozat akkor ´es csak akkor helyre´ all´ıthat´ o, ha Hn p´ aros (6) ´es Hgi − gi (gi − 1) ≤
n X
min(gi , fk ) (i = 1, . . . , q).
(7)
k=gi +1
Bizony´ıt´ as. L´ asd [27].
2.5.
Line´ aris Ugr´ o Erd˝ os-Gallai algoritmus (EGLU)
Az algoritmust tov´ abb gyors´ıthatjuk, ha kihaszn´aljuk az F sorozat monotonit´as´at, teh´ at azt, hogy a felt´etelben szerepl˝o ¨osszegz´est nem kell minden egyes iter´aci´oban elv´egezni, mivel a szumm´ aban szerepl˝o min f¨ uggv´eny egy wi indexig (s´ ulypont) mindig az els˝ o, majd att´ ol kezdve mindig a m´asodik param´eter´et fogja visszaadni. A monotonit´ as miatt pedig ez az ´ert´ek csak az egyik ir´anyban v´altozhat, ´ıgy el´eg az egyes iter´ aci´ ok k¨ oz¨ ott n´eh´ any l´ep´esben eltolni, ´ıgy nyer¨ unk egy explicit k´epletet a szumm´ ara. A szumm´ ak ´ert´ek´enek kisz´am´ıt´asa ´ıgy a legrosszabb esetben is csak line´ aris id˝ ot vesz ig´enybe. ´tel. A szab´ 4. Te alyos F = (f1 , . . . , fn ) sorozat akkor ´es csak akkor helyre´ all´ıthat´ o, ha Hn p´ aros (8) ´es
( Hn − Hgi + gi (gi − 1), Hgi ≤ Hn − Hwi + gi (wi − 1),
ha wi ≤ gi ha wi > gi .
(9)
Bizony´ıt´ as. L´ asd [21]. Az ellen˝ orz˝ opontok el´egs´egess´eg´et Tripathi ´es munkat´arsai [27] m´ar bebizony´ıtott´ ak. A t´etelben megadott felt´etel ezeket az ellen˝orz´eseket v´egzi el, kihaszn´ alva a sorozat elemeinek monoton cs¨okken´es´et, azaz a n X
min(i, fk )
(10)
k=gi +1
6
Lucz Lor´ and - P´ arhuzamos Erd˝ os-Gallai algoritmus o¨sszeget nem sz´ amoljuk u ´jra minden esetben, pontosabban nem ebben a form´aban v´egezz¨ uk el a sz´ am´ıt´ ast, hanem explicit m´odon. A kifejez´es ´ert´eke a (11) form´aban adhat´o meg, m´egpedig az´ert, mert a sorozat monotonit´ asa garant´ alja, hogy a wi s´ ulypontig a min(i, fk ) kifejez´es ´ert´eke minden esetben i, majd a wi -n´el nagyobb k-k eset´eben mindv´egig fk . Ebb˝ol k¨ovetkezik, hogy ( n X Hn − Hgi , ha wi ≤ gi (11) min(i, fn ) = H − H + g (w − g ), ha w > g . n w i i i i i i k=g +1 i
Az eddigiek alapj´ an az eredeti felt´etelt ´at´ırhatjuk a k¨ovetkez˝o alakba: ( Hn − Hgi , ha wi ≤ gi Hgi − gi (gi − 1) ≤ Hn − Hwi + gi (wi − gi ), ha wi > gi . A (12) egyenl˝ otlens´eget ´ atrendezve megkapjuk a ( Hn − Hgi + gi (gi − 1), ha wi ≤ gi Hgi ≤ Hn − Hwi + gi (wi − 1), ha wi > gi kifejez´est, ami pontosan egyezik a (9) egyenl˝otlens´eggel.
(12)
(13)
´tel. A line´ 5. Te aris Erd˝ os-Gallai ugr´ o algoritmus fut´ asi ideje line´ aris. Bizony´ıt´ as. L´ asd [21].
3.
Lesz´ aml´ al´ asi eredm´ enyek
Ebben a r´eszben a gr´ afsorozatok sz´am´ara, valamint az n-szab´alyos ´es n-p´aros sorozatok sz´ am´ anak ar´ any´ ara vonatkoz´oan ismertet¨ unk n´eh´any k´epletet. Megmutathat´ o, hogy ha l, u ´es m eg´eszek, valamint u ≥ l, m ≥ 1 ´es l ≤ fi ≤ u (i = 1, . . . , m), akkor az (l, u, m)-szab´ alyos sorozatok sz´ama K(l, u, m) = (u − l + 1)m .
(14)
Tudjuk, hogy (l´ asd [17], 65. oldal) ha l, u, m eg´eszek ´es u ≥ l, m ≥ 1, u ≥ f1 ≥ · · · ≥ fn ≥ l, akkor az (l, u, m)-korl´ atos szab´alyos sorozatok sz´ama u−l+m Q(l, u, m) = . (15) m Az ¨ osszes ´ altalunk vizsg´ alt sorozat sz´am´ara vonatkoz´oan Sloane ´es Ploffe [25], valamint Stanley [26] k¨ onyveiben ´es a The On-Line Encyclopedia of Integer Sequences [24] honlapon tal´ alhatunk adatokat (l´asd 1. t´abl´azat). 1987-ben Ascher adott meg explicit formul´at az n-hossz´ u p´aros sorozatok sz´am´ anak meghat´ aroz´ as´ ara. 7
Lucz Lor´ and - P´ arhuzamos Erd˝ os-Gallai algoritmus 2. Lemma. (Ascher [1], Sloane, Pfoffe [25]) Ha n ≥ 1, akkor a p´ aros sorozatok sz´ ama 1 2n − 1 n−1 En = + . (16) 2 n n Bizony´ıt´ as. L´ asd [1].
A nagy mennyis´eg˝ u sorozatot ellen˝orz˝o program megval´os´ıt´asa sor´an hasznos lesz a k´es˝ obbiekben az Rn nagys´ agrendj´ere, valamint az Rn ´es En ´ert´ekek ar´any´ara vonatkoz´ o lemma. 3. Lemma. Ha n ≥ 1, akkor
Rn+1 Rn+2 > , Rn+1 Rn
(17)
Rn+1 = 4, Rn
(18)
lim
n→∞
tov´ abb´ a
4n √ 4πn
1 4n 1 1− < Rn < √ 1− 2n 8n + 8 4πn
Bizony´ıt´ as. L´ asd [13].
(19)
A k¨ ovetkez˝ o lemma megadja az En ´ert´ekek nagys´agrendj´et. 4. Lemma. Ha n ≥ 1, akkor
En+2 En+1 > En+1 En
(20)
En+1 =4 n→∞ En
(21)
4n 4n √ (1 − D3 (n)) < En < √ (1 − D4 (n)) πn πn
(22)
lim
tov´ abb´ a
ahol a D3 (n) ´es D4 (n) monoton cs¨ okken˝ o ´es null´ ahoz tart. Bizony´ıt´ as. L´ asd [13].
Ahogy a 1. t´ abl´ azatb´ ol is leolvashat´o, az En /Rn ar´any monoton cs¨okken ´es 1/2-hez tart. ¨ vetkezme ´ny. Ha n ≥ 1, akkor 1. Ko
´es
En+1 En < Rn+1 Rn
(23)
En 1 = . n→∞ Rn 2
(24)
lim
8
Lucz Lor´ and - P´ arhuzamos Erd˝ os-Gallai algoritmus
n 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
1 4 16 63 247 973 3 824 15 033 59 132
1 4 17 68 269 052 116 123 205 959 469 345 633 290
1 5 20 77 300 166 537 672 923 128 049 715 801 303 266 712 300 249 782
1 6 24 92 352 352 200 058 558 540 803 567 631 264 937 481 363 841 218 474 824 380 770 430
Rn 1 3 10 35 126 462 716 435 310 378 716 078 300 300 760 195 110 650 900 410 220 860 800 550 876 052 056 220 520 712
2 8 31 123 486 1 912 7 516 29 566
2 8 34 134 526 058 061 602 979 734 172 816 145
2 10 38 150 583 268 836 461 564 024 358 901 652 635 861 660 644 429
3 12 46 176 676 600 030 781 273 407 795 340 678 560 917 034 596 961 837 612 219 943 994
En 1 2 6 19 66 236 868 235 190 252 484 270 612 008 096 315 990 980 260 394 988 288 616 814 516 176 328 260 559 736
En /Rn 1,0000000000 0,6666666667 0,6000000000 0,5428571429 0,5238095238 0,5108225108 0,5058275058 0,5027195027 0,5014397367 0,5006819806 0,5003572279 0,5001708481 0,5000888410 0,5000427753 0,5000221252 0,5000107057 0,5000055151 0,5000026787 0,5000013756 0,5000006702 0,5000003432 0,5000001676 0,5000000857 0,5000000419 0,5000000214 0,5000000105 0,5000000053 0,5000000026 0,5000000013 0,5000000007
1. t´ abl´ azat. A szab´ alyos ´es p´aros sorozatok sz´ama ´es azok ar´anya.
9
Lucz Lor´ and - P´ arhuzamos Erd˝ os-Gallai algoritmus Bizony´ıt´ as. L´ asd [13]. A k¨ ovetkez˝ o lemma megadja a nullmentes sorozatok ar´any´at a szab´alyos sorozatokhoz viszony´ıtva. 5. Lemma. Az n-szab´ alyos nullmentes sorozatok sz´ ama 2n − 2 Rnz = n−1 ´es
Rnz 1 = . n→∞ Rn 2 lim
(25)
(26)
Bizony´ıt´ as. L´ asd [13]. Szimul´ aci´ os eredm´enyeink szerint [13] az is igaz, hogy a p´aros sorozatoknak k¨or¨ ulbel¨ ul a fele nullmentes. A G ´ert´ekek nagys´ agrendj´ere vonatkoz´oan Burns adott meg aszimptotikus korl´ atokat. 6. Lemma. (Burns [2]) L´eteznek olyan c ´es C pozit´ıv konstansok, hogy a Gn ´ert´ekre az al´ abbi korl´ atok adhat´ ok: 4n 4n √ . < Gn < cn (log n)C n
(27)
Bizony´ıt´ as. L´ asd [2]. Ebb˝ ol k¨ ovetkezik, hogy a grafikus sorozatok s˝ ur˝ us´ege a p´aros sorozatok k¨oz¨ott a null´ ahoz tart. ¨ vetkezme ´ny. Ha n ≥ 1, akkor l´etezik olyan pozit´ıv C konstans, hogy 2. Ko
´es
Gn 1 < En (log2 n)C
(28)
Gn = 0. n→∞ En
(29)
lim
Bizony´ıt´ as. (28) a (16) ´es a (27) k¨ozvetlen k¨ovetkezm´enye ´es a (28) egyenl˝ otlens´egb˝ ol k¨ ovetkezik a (29) hat´ar´ert´ek. Tov´ abbi eredm´enyek ´es ¨ osszef¨ ugg´esek tal´alhat´oak a [13] cikkben.
4.
A Holzhacker program
A Gn ´ert´ekek meghat´ aroz´ asa komoly er˝oforr´asig´ennyel b´ır, ez´ert sz´am´ıt´asainkat az al´abbi technik´ ak felhaszn´ al´ as´ aval igyekezt¨ unk felgyors´ıtani: - a feladat r´eszekre bont´ asa ´es sz´etoszt´asa t¨obb sz´am´ıt´og´ep k¨oz¨ott, 10
Lucz Lor´ and - P´ arhuzamos Erd˝ os-Gallai algoritmus - a nyilv´ anval´ oan nem grafikus sorozatok elhagy´asa, - annak kihaszn´ al´ asa, hogy a lexikografikus sorrendben az u ´j sorozatok a r´eszfeladaton bel¨ ul O(1) v´arhat´o id˝o alatt el˝o´all´ıthat´oak, - csak nullmentes sorozatok vizsg´alata, - ellen˝ orz´es elv´egz´ese csak ugr´opontokban, - annak kihaszn´ al´ asa, hogy az ellen˝orz˝opontok ´es s´ ulypontok list´aja a r´eszfeladaton bel¨ ul O(1) v´arhat´o id˝o alatt friss´ıthet˝o, ha a vizsg´aland´o nullmentes, p´ aros sorozatokat lexikografikus sorrendben ´all´ıtjuk el˝o. A feladat p´ arhuzamos´ıt´ asa a processzorok sz´am´aval ar´anyosan cs¨okkenti a sz¨ uks´eges fut´ asi id˝ ot, azaz min´el t¨obb sz´am´ıt´og´eppel dolgozunk, ann´al kevesebb ideig tartanak a sz´ am´ıt´ asok. Nyilv´ anval´ oan nem helyre´ all´ıthat´o sorozatoknak tekintj¨ uk azokat a sorozatokat, amelyekben a foksz´ amok ¨ osszege p´aratlan. A null´ as sorozatok vizsg´ alat´anak elhagy´asa pedig az´ert hasznos, mert a p´aros sorozatok megk¨ ozel´ıt˝ oleg fel´eben szerepel nulla. Mivel minden egyszer˝ u gr´afhoz tartoz´ o foksorozatra teljes¨ ul, hogy egy null´at hozz´av´eve a kapott sorozathoz tov´abbra is megadhat´ o hozz´ a egy gr´ af, ez´ert ezeket a sorozatokat felesleges megvizsg´alnunk, mert Gn sz´ am´ıt´ asa sor´ an u ´jra leellen˝orizn´enk minden Gn−1 sz´am´ıt´asa sor´an kor´ abban m´ ar megvizsg´ alt sorozatot. Ezt az ¨otletet haszn´alja fel a k¨ovetkez˝o lemma. 7. Lemma. Ha n > 1, akkor az n cs´ ucs´ u gr´ afok sz´ ama megadhat´ o az n − 1 cs´ ucs´ u helyre´ all´ıthat´ o foksorozatok ´es az n hossz´ u helyre´ all´ıthat´ o nullmentes sorozatok ¨ osszegek´ent, azaz Gn = Zn + Gn−1 . Bizony´ıt´ as. L´ asd [13, 21].
Ennek k¨ ovetkezm´enyek´epp a Gn ´ert´ek kisz´am´ıthat´o az azt megel˝oz˝o G ´ert´ekek felhaszn´ al´ as´ aval. ¨ vetkezme ´ny. Ha n ≥ 1, akkor az n cs´ 3. Ko ucs´ u egyszer˝ u gr´ afok foksorozatainak sz´ ama megadhat´ o a 2 ≤ i ≤ n cs´ ucs´ u egyszer˝ u gr´ afok nullmentes foksorozatainak felhaszn´ al´ as´ aval a k¨ ovetkez˝ o m´ odon: Gn = 1 +
n X
Zn
(30)
i=2
Bizony´ıt´ as. L´ asd [13].
A program m˝ uk¨ od´es´enek le´ır´asa sor´an d˝olt kisbet˝ uk jel¨olik a felhaszn´alt v´altoz´okat ´es d˝ olt nagybet˝ uk a konstansokat, valamint a fontosabb h´al´ozati primit´ıveket. A programot n´egy r´eszben ismertetj¨ uk, ezek pedig a k¨ovetkez˝ok: a 4.1. r´eszben le´ırjuk a szerver program m˝ uk¨od´es´et, amit folyamat´abr´ak seg´ıts´eg´evel ismertet¨ unk, 11
Lucz Lor´ and - P´ arhuzamos Erd˝ os-Gallai algoritmus a 4.2. r´eszben pszeudok´ oddal ismertetj¨ uk a szerver feladatokat kioszt´o r´esz´et, azaz eltekint¨ unk a h´ al´ ozati kommunik´aci´oval kapcsolatos r´eszek r´eszletez´es´et˝ol. A 4.3. r´eszben a kliens m˝ uk¨ od´es´et ´ırjuk le folyamat´abr´akkal, majd ezt a program grafikus sorozatokat lesz´ aml´ al´ o r´esz´enek ismertet´ese k¨oveti a 4.4. r´eszben, pszeudok´odok felhaszn´ al´ as´ aval.
4.1.
Kiszolg´ al´ o program
Programunkban egy k¨ ozponti kiszolg´al´o program osztja ki a r´eszfeladatokat a sz´ am´ıt´ asokhoz csatlakoz´ o kliensek k¨oz¨ott. Ennek k´esz´ıt´esekor az els˝odleges szempontunk a lehet˝ o legnagyobb megb´ızhat´os´ag, rugalmass´ag ´es sebess´eg el´er´ese volt. Megb´ızhat´ os´ agon azt ´ertj¨ uk, hogy a rendszer m˝ uk¨od´es´et k¨ uls˝o term´eszeti vagy ak´ar hum´ an t´enyez˝ ok ne befoly´asolj´ak. A kiszolg´al´o program ez´ert b´armikor le´all´ıthat´ o ´es u ´jraind´ıthat´ o an´elk¨ ul, hogy ez eredm´enyek elveszt´es´evel j´arna. A szerver le´ all´ asa a klienseket nem befoly´asolja. Ez egyben azt is jelenti, hogy amennyiben sz¨ uks´eges, a szerver programot egy komolyabb sz´am´ıt´asi projekt sor´an b´armikor kicser´elhetj¨ uk vagy megv´altoztathatjuk. A szerver rugalmass´ aga abban rejlik, hogy m˝ uk¨od´ese semmilyen m´odon nem f¨ ugg ¨ ossze azzal, hogy a kliensekben mi t¨ort´enik, csup´an annyi a teend˝oje, hogy r´eszfeladatokat oszt ki ´es eredm´enyeket gy˝ ujt be. Az sem jelent probl´em´at, ha k¨ozben minden klienst meg´ all´ıtunk, mert ezzel a szerver egy´altal´an nem foglalkozik. Ez els˝ ore ugyan ´erdektelennek t˝ unhet, de nem az, ha figyelembe vessz¨ uk, hogy a kliens b´ arki sz´ am´ ara szabadon el´erhet˝o az interneten, ´ıgy sz´am´ıtani kell arra, hogy valaki u ´gy d¨ ont, hogy r´eszt vesz egy komoly sz´am´ıt´asban ´es elind´ıtja a klienst, majd meggondolja mag´ at ´es m´egis ink´abb le´all´ıtja azt. Ehelyett gondolhatunk ak´ar egy egyszer˝ u ´ aramsz¨ unetre is. Tov´abb l´epve, mivel nincs ´allad´o h´al´ozati kapcsolat a kiszolg´ al´ o ´es a t¨ obbi g´ep k¨ oz¨ ott, ´ıgy nincs limit´alva a r´esztvev˝o sz´am´ıt´og´epek sz´ama sem. Ha valaki elind´ıt a sz´ am´ıt´og´ep´en egy klienst, az kap egy r´eszfeladatot ´es sz´amol. Harmadik szempontunk a sebess´eg volt, ez´ert programunkat C nyelven val´os´ıtottuk meg. V´ alaszt´ asunk az´ert erre a nyelvre esett a kezdeti MATLAB programok helyett, mert a MATLAB ugyan egy nagyon kellemes ´es j´ol ´atl´athat´ o fut´ asi fel¨ uletet biztos´ıt, de m´er´eseink alapj´an C-vel megk¨ozel´ıt˝oleg sz´azszoros gyorsul´ as ´erhet˝ o el. Programunk teh´at C-ben k´esz¨ ult, Berkeley Socketek felhaszn´ al´ as´ aval. M˝ uk¨ od´ese pedig a k¨ovetkez˝o: - A szerver ind´ıt´ asakor l´etrehoz egy csatlakoz´ot (SOCKET ), amit azt´an egy csatlakoz´ asi ponthoz (PORT ) k¨ot (BIND). A csatlakoz´asi pont a programban el˝ ore defini´ alt ´ert´ek. Amint l´etrej¨ott a csatlakoz´asi pont ´es a szerver alkalmas a kapcsolatok fogad´ as´ ara, ellen˝orzi, hogy van-e k´esz eredm´eny a napl´of´ajlban. Amennyiben a napl´ o nem u ¨res, u ´gy az abban szerepl˝o r´eszfeladatokat k´esznek jel¨ oli. Ezut´ an elkezd˝odhet a kliensek bej¨ov˝o kapcsolatainak kezel´ese (LISTEN ). - Mindaddig, am´ıg a befejezett r´eszfeladatok sz´ama (finished jobs) el nem ´eri az 12
Lucz Lor´ and - P´ arhuzamos Erd˝ os-Gallai algoritmus
1. ´ abra. A szerver m˝ uk¨od´es´enek folyamat´abr´aja. osszes r´eszfeladat sz´ ¨ am´ at (NUM JOB ), addig u ´jra ´es u ´jra klienseket fogadunk, majd a fogadott kliens u ¨zenet´eb˝ol eld¨ontj¨ uk, hogy mi c´elb´ol j¨ott. A kliens k´et okb´ ol csatlakozhatott: u ´j r´eszfeladatot k´er vagy elk´esz¨ ult egy r´eszeredm´ennyel ´es azt szeretn´e visszak¨ uldeni. - Ha a kliens u ´j r´eszfeladatot k´er, akkor a 2. ´abr´an l´athat´o m´odon kiosztjuk neki a soron k¨ ovetkez˝ ot a k¨ ovetkez˝o algoritmus alapj´an: + Megn¨ ovelj¨ uk az ´eppen aktu´alis r´eszfeladat sorsz´am´at t´arol´o ´ert´eket (actual job), majd ellen˝orizz¨ uk, hogy nem l´ept¨ unk-e t´ ul a lehets´eges legnagyobb sorsz´ amon (NUM JOB ), valamint hogy a r´eszfeladatok st´ atusz´ at t´ arol´ o vektorunk (job status) alapj´an nincs-e m´ar teljes´ıtve a megadott r´eszfeladat. + Addig ism´etelgetj¨ uk ezt a m˝ uveletet, am´ıg meg nem tal´altuk a kiosztand´o r´eszfeladatot. + Miut´ an a r´eszfeladat kik¨ uld´esre ker¨ ult, lebontjuk a kapcsolatot. Itt megjegyezz¨ uk, hogy ha el´ert¨ uk az utols´o r´eszfeladatot, akkor m´odszeresen elkezdj¨ uk u ´jra kiosztani a m´ar legr´egebben kiadott r´eszfeladatokat arra az esetre sz´ am´ıtva, hogy a kliens, amely azt a r´eszfeladatot v´egezte volna, valamilyen okb´ol (sz´am´ıt´og´ep le´all´ıt´asa, ´aramsz¨ unet stb.) nem tudta azt befejezni. Ez nyilv´an azt eredm´enyezi, hogy amikor m´ar nagyon kev´es munka van vissza, akkor sok kliens fogja ugyanazt a r´eszfeladatot 13
Lucz Lor´ and - P´ arhuzamos Erd˝ os-Gallai algoritmus
´ r´eszfeladat kioszt´asa a kliensnek. 2. ´ abra. Uj megkapni, ´ıgy a r´eszfeladatok befejez˝od´es´evel egyre robusztusabb´a v´alik a rendszer.
3. ´ abra. R´eszfeladat eredm´eny´enek ment´ese. - Ha a kliens eredm´enyt k¨ uld, akkor azt a 3. ´abr´an l´athat´o algoritmus szerint a k¨ ovetkez˝ o m´ odon dolgozzuk fel: + Fogadjuk az u ¨zenet´et ´es ellen˝orizz¨ uk, hogy a be´erkez˝o eredm´eny nem szerepel-e m´ ar a teljes´ıtett r´eszfeladatok list´aj´aban (job status); amennyiben nem szerepel, u ´gy elmentj¨ uk ´es befejezettnek tekintj¨ uk. + A ment´es sor´ an a kliens ´altal k¨ uld¨ott u ¨zenet eredeti form´aban ker¨ ul hozz´ af˝ uz´esre a napl´o f´ajlhoz (LOG FILE ). A napl´o f´ajlban csv form´ atumban ker¨ ulnek r¨ogz´ıt´esre az adatok. A f´ajl pontos form´atum´at a 4.3. r´eszben ismertetj¨ uk. 14
Lucz Lor´ and - P´ arhuzamos Erd˝ os-Gallai algoritmus
4.2.
Feladatokat kioszt´ o algoritmus (DJ)
Az el˝ oz˝ o r´eszben ismertetett kiszolg´al´o program feladatokat kioszt´o r´esz´et ´ırjuk le ebben a r´eszben, a feladatok kioszt´as´ara koncentr´alva. Ebb˝ol kifoly´ olag a h´ al´ ozati kommunik´aci´oval kapcsolatos r´eszeket a most k¨ovetkez˝o pszeudok´ od nem tartalmazza. A program teljes forr´ask´odja el´erhet˝o a http://people.inf.elte.hu/lulsaai/Holzhacker/ oldalon. Bemenet. n: a gr´ af cs´ ucsainak sz´ama; N : a r´eszfeladatok sz´ ama; M : a r´eszfeladatok param´etereit t´arol´o m´atrix. Kimenet. Zn : Az n cs´ ucs´ u nullmentes grafikus sorozatok sz´ama. Munkav´ altoz´ ok. S: a r´eszfeladatok st´atusz´at t´arol´o vektor; f j: az elk´esz¨ ult r´eszfeladatok sz´ama; aj: a legut´ obb kiosztott r´eszfeladat sz´ama; ji: bej¨ ov˝ o r´eszfeladat eredm´eny´enek indexe; c: kliens azonos´ıt´ o (a h´ al´ ozati kommunik´aci´on´al ker¨ ul alkalmaz´asra); msg: a klienst˝ ol bej¨ ov˝ o u ¨zeneteket t´arolja (szint´en a h´al´ozati kommunik´aci´on´al fontos). Distributing-Jobs(n, N, M ) 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22
S0 = true B 01–05. sor: r´eszfeladatok st´atusz´at t´arol´o vektor be´all´ıt´asa SN +1 = true for j = 1 to N + 1 Sj = false end while f j < N B 06. sor: am´ıg el nem k´esz¨ ul minden r´eszfeladat accept(c) B 07. sor: csatlakoz´o kliens fogad´asa recv(c, msg) B 08. sor: u ¨zenet fogad´asa a klienst˝ol if msg == 0 B 09. sor: a kliens u ´j feladatot k´er aj = aj + 1 B 10. sor: az aktu´alis feladat index´et n¨ovelj¨ uk for i = Maj−1,0 to n B 11–13. sor: friss´ıtj¨ uk a kezd˝osorozatot Fi = n + Maj−1,1 end while Saj == true or aj > N B 14–22. sor: u ´j feladat keres´ese aj = aj + 1 if aj > N B 16. sor: t´ ull´ept¨ unk a maxim´alis indexen aj = 1 B 17. sor:visszal´ep¨ unk az els˝oh¨oz end for i = Maj−1,0 to n B 19–21. sor: kezd˝osorozat friss´ıt´ese Fi = n + Maj−1,1 end end 15
Lucz Lor´ and - P´ arhuzamos Erd˝ os-Gallai algoritmus 23 if aj < N B 23–29. sor: feladat kil´ep´esi felt´eteleinek be´all´ıt´asa 24 a = Maj,0 25 b = n + Maj,1 26 else 27 a=1 28 b=1 29 end 30 send(c, F, a, b) B 30. sor: r´eszfeladat elk¨ uld´ese a kliensnek 31 else 32 recv(c, ji, Finit , Flast , zn,m , time) B 32. sor: eredm´enyek fogad´asa 33 if Sji == false B 33. sor: ha a feladat eddig nem volt k´esz 34 Sj = true B 34. sor: k´eszre ´all´ıtjuk 35 fj = fj + 1 B 35. sor: k´esz feladatok sz´am´at n¨ovelj¨ uk 36 Zn = Zn + zn,m B 36. sor: Zn r´eszeredm´eny sz´am´ıt´asa 37 end 38 end 39 close(c) B 39. sor: h´al´ozati kapcsolat bont´asa 40 end 41 return Zn B 41. sor: eredm´enyek visszaad´asa
4.3.
Kliens program
A kliens program elk´esz´ıt´esekor a f˝o c´el a lehet˝o legnagyobb egyszer˝ us´eg el´er´ese volt. Olyan programot akartunk k´esz´ıteni, amely nem ig´enyel semmif´ele felhaszn´al´oi beavatkoz´ ast, be´ all´ıt´ ast vagy ak´armi m´ast az elind´ıt´as´an k´ıv¨ ul. Ez az´ert fontos, mert a sz´ am´ıt´ asokat a lehet˝ o legt¨ obb sz´am´ıt´og´ep k¨oz¨ott szeretn´enk sz´etosztani, tekintettel az ´ori´ asi fut´ asi id˝ okre. Fontos volt az is, hogy ha egy komolyabb sz´am´ıt´as befejez˝odik, akkor se kelljen minden egyes g´epen u ´jra ´es u ´jra elind´ıtani a programot, hanem az a lehet˝o legkisebb er˝oforr´ as ig´ennyel maradjon a h´att´erben ´es v´arjon mindaddig, am´ıg r´eszt nem vehet egy u ´jabb sz´ am´ıt´ asban. Ez sokat seg´ıtett, amikor az u ´j G ´ert´ek sz´am´ıt´as´at v´egezt¨ uk t¨obb mint 200 sz´ am´ıt´ og´ep felhaszn´al´as´aval. Ezek k¨oz¨ott a g´epek k¨oz¨ott voltak olyanok, ahol a processzorban n´egy mag is volt, ´ıgy egyszerre n´egy klienst kellett volna u ´jraind´ıtani, amikor az egyik G ´ert´ek kisz´am´ıt´as´at k¨ovet˝oen ´att´ert¨ unk egy nagyobbra. Jogosan felmer¨ ul a k´erd´es, hogy mi´ert nem elegend˝o egyetlen kliens futtat´asa t¨obb sz´ alon g´epenk´ent. A sz´ am´ıt´asokat nem csak laborg´epekkel v´egezt¨ uk, hanem programunkat publikusan el´erhet˝ov´e tett¨ uk az interneten, ´ıgy b´arki csatlakozhatott, ez´ert nem szerett¨ uk volna, hogy valaki, aki egy klienst futtatva a g´ep´en seg´ıthetn´e munk´ ankat, az´ert ne haszn´ alja azt, mert az teljesen leterheli a sz´am´ıt´og´ep´et. A kliens program m˝ uk¨ od´ese a k¨ovetkez˝o: - Miut´ an l´etrehoztuk a csatlakoz´ashoz sz¨ uks´eges csatlakoz´ot (SOCKET ), megpr´ ob´ alunk csatlakozni a kiszolg´al´o programhoz. Ha ez nem lehets´eges, mert a szerver nem el´erhet˝o, akkor wait time ideig v´arakozunk ´es egy´ uttal 16
Lucz Lor´ and - P´ arhuzamos Erd˝ os-Gallai algoritmus feladat sorsz´ ama
els˝ o sorozat utols´ o sorozat
fut´asi id˝o
grafikus sorozatok sz´ama
2. t´ abl´ azat. A kliens ´altal k¨ uld¨ott eredm´enyek szerkezete. megk´etszerezz¨ uk a v´ arakoz´asi id˝ot. (A wait time a programban el˝ore defini´alt ´ert´ek. Alap´ertelmez´ese DEFAULT WAIT TIME.) Ezt addig ism´etelgetj¨ uk, am´ıg fel nem ´ep¨ ul a kapcsolat vagy el nem ´erj¨ uk a MAX WAIT TIME ´ert´eket. Ezt k¨ ovet˝ oen m´ ar nem n¨ovelj¨ uk tov´abb a v´arakoz´as id˝otartam´at. A m´odszer alap¨ otlet´et Jacobson 1988-as [16], lass´ u kezd´est biztos´ıt´o protokollja adta. Megjegyezz¨ uk, hogy a neve ellen´ere a m´odszer egy´altal´an nem lass´ u, hiszen exponenci´ alis n¨ oveked´est eredm´enyez. - A kapcsolat l´etrej¨ ott´et k¨ovet˝oen u ¨zenetet k¨ uld¨ unk a szerver programnak, amellyel egy r´eszfeladatot k´er¨ unk t˝ole, majd miut´an megkaptuk azt, lebontjuk a h´ al´ ozati kapcsolatot ´es a 4.4. r´eszben ismertetett algoritmus seg´ıts´eg´evel el˝ o´ all´ıtjuk ´es ellen˝ orizz¨ uk a kiosztott r´eszfeladatba tartoz´o sorozatokat. - A kliens az ellen˝ orz´esek sor´an csak olyan sorozatokat ´all´ıt el˝o ´es ellen˝oriz, amelyek p´ arosak ´es nullmentesek. Ez al´ol egyetlen kiv´etel lehets´eges: p´aratlan n ´ert´ekek eset´en az utols´o ellen˝orz¨ott sor nem az 1, 1, . . . , 1, hanem a −1, −1, . . . , −1, mivel a sorozatokat gener´al´o algoritmus kettes´evel l´epteti a sorozatok tagjait an´elk¨ ul, hogy 0 el˝ofordulna, ´ıgy az utols´o el˝otti ellen˝orz¨ott sorozat a 2, 1, 1, . . . , 1, amely a k¨ovetkez˝o l´ep´esben – mivel nulla nem lehet – −1, −1, . . . , −1-re v´ alt. Ez azonban nem jelent probl´em´at, mert az ellen˝orz˝o algoritmus elutas´ıtja. - A sz´ am´ıt´ asok v´egezt´evel a kapott eredm´enyeket elk¨ uldj¨ uk a szervernek, amely azt´ an azokat a 2. t´ abl´ azatban l´athat´o form´atumban menti. A t´abl´azat u ¨res cell´ ai k´es˝ obbi felhaszn´ al´ asra vannak fenntartva. - A kisz´ am´ıtott eredm´enyek elk¨ uld´ese is hasonl´o m´odon t¨ort´enik, mint ahogy a r´eszfeladatot k´ert¨ uk a szervert˝ol. Azonban most nem pr´ob´alkozunk ¨ a v´egtelens´egig. Osszesen MAX RECONNECT TRY alkalmat k¨ovet˝oen abbahagyjuk a pr´ ob´ alkoz´ast. Ez az´ert fontos, mert ha a szerver megkapott minden r´eszeredm´enyt, le´all, de a kliensek tov´abb dolgoznak. Ezzel az els˝ odleges c´elunk, hogy ne kelljen a klienseinket minden egyes projekt eset´en u ´jra ´es u ´jra elind´ıtani minden¨ utt, hanem ha a szerver huzamosabb ideig nem ´erhet˝ o el, akkor dobj´ak el r´eszeredm´enyeiket ´es folytass´ak a norm´alis m˝ uk¨ od´est, azaz k´erjenek u ´j r´eszfeladatot, pontosabban v´arakozzanak u ´j r´eszfeladatra. Ezzel ism´et csak a rendszer haszn´alat´anak egyszer˝ us´ıt´es´et ´es nagyobb hibat˝ ur´est akartunk el´erni.
17
Lucz Lor´ and - P´ arhuzamos Erd˝ os-Gallai algoritmus
4.4.
Felsorol´ o Erd˝ os-Gallai algoritmus (EGE)
A 2.5. r´eszben ismertetett line´aris idej˝ u algoritmust felhaszn´alva megadhat´o egy olyan algoritmus, amely lexikografikus sorrendben el˝o´all´ıtja az ¨osszes nullmentes, p´aros sorozatot ´es ellen˝ orzi azokat. Ez az algoritmus k´epezi a 4.3. r´eszben ismertetett program alapj´ at, m´eghozz´ au ´gy, hogy az el˝oz˝o r´eszben ismertetett program r´eszek´ent p´arhuzamosan t¨ obb sz´ am´ıt´ og´epen, t¨obb p´eld´anyban fut ´es sz´amol. Az algoritmus megtal´ ahat´ o a [12] cikk¨ unkben, angol nyelven. Az algoritmust a k¨ onnyebb ´erthet˝os´eg ´erdek´eben k´et r´eszre bontottuk: az els˝o ˝ s-Gallai-Check) a sorozat ellen˝orz´es´et elv´egz˝o algoritmust, a m´asodik r´esz (Erdo ˝ s-Gallai-Enumerating) az ellen˝orizend˝o sorozatok el˝o´all´ıt´as´at ´es a pedig (Erdo hozz´ ajuk kapcsol´ od´ o tov´ abbi ´ert´ekek (F, H, c, D) friss´ıt´es´et v´egz˝o programot. Bemenet. F = (f1 , . . . , fn ): ellen˝orizend˝o sorozat; H: els˝ o i elem ¨ osszeg´et tartalmaz´o ´ert´ekek; c: ellen˝ orz˝ opontok sz´ ama; D: ellen˝ orz˝ opontok. Munkav´ altoz´ o. J: dinamikusan v´altoz´o m´eret˝ u vektor, ami a s´ ulypontokat t´arolja. Kimenet. L: logikai ´ert´ek, ami true, ha a sorozat helyre´all´ıthat´o, ´es false, ha a sorozatot nem lehet helyre´ all´ıtani. ˝ s-Gallai-Check(F, H, c, D) Erdo 01 i = 1 02 while i < c and Hi > i(i − 1) 03 p = Di 04 while Jp < n and fJp+1 > p 05 Jp = Jp + 1 06 end 07 while Jp > p and fJp ≤ p 08 Jp = Jp − 1 09 end 10 if Hp > Hn − HJp + p(Jp − 1) 11 L = f alse 12 return L 13 end 14 i=i+1 15 end 16 L = true 17 return L
B 01. sor: i kezd˝o´ert´ek´enek be´all´ıt´asa B 02–15. sor: sorozat ellen˝orz´ese B 03. sor: kezdeti s´ ulypont B 04–09. sor: s´ ulypont friss´ıt´ese
B 10. sor: ellen˝orz´es B 12. sor: rossz sorozat
B 17. sor: helyre´all´ıthat´o sorozat
Bemenet. n: a cs´ ucsok sz´ ama; F : az els˝ o r´eszfeladat eset´eben a kezd˝osorozat, egy´ebk´ent az aktu´alis r´eszfeladatot 18
Lucz Lor´ and - P´ arhuzamos Erd˝ os-Gallai algoritmus megel˝ oz˝ o feladat utols´ o ellen˝ orz¨ott sorozata; a: az utols´ o sorozat azonos´ıt´ as´ara haszn´alt index; b: az utols´ o sorozat a-adik elem´enek ´ert´eke. Kimenet. zn,m : a Zn m-edik r´eszlet¨osszege (Zn jel¨oli azoknak a helyre´all´ıthat´o sorozatoknak a sz´ am´ at, amelyek nem tartalmaznak null´at, azaz nullmentesek ). ˝ s-Gallai-Enumerating(n, F, a, b) Erdo 01 H1 = f1 B 01. sor: H1 be´all´ıt´asa 02 for i = 2 to n B 02–04. sor: H ´ert´ekek sz´am´ıt´asa 03 Hi = Hi−1 + fi 04 end 05 if fn 6= n − 1 B 05. sor: ha nem a teljes gr´af foksorozata 06 if Hn p´ aratlan B 06–12. sor: aktualiz´al´as 07 fn = fn − 3 08 Hn = Hn − 3 09 else 10 fn = fn − 2 11 Hn = Hn − 2 12 end 13 end 14 for i = 1 to n B 14–16. sor: s´ ulypontok el˝ok´esz´ıt´ese 15 Ji = n − 1 16 end 17 c = 0 B 17. sor: ellen˝orz˝opontok sz´am´anak be´all´ıt´asa 18 for i = 1 to n − 2 B 18–23. sor: ellen˝orz˝opontok meghat´aroz´asa 19 if fi 6= fi+1 and fi 6= fn 20 c=c+1 B 20. sor: ellen˝orz˝opontok sz´am´anak n¨ovel´ese 21 Dc = i 22 end 23 end ˝ s-Gallai-Check(F, H, c, D) 24 L = Erdo B 24. sor: els˝o sorozat ellen˝orz´ese 25 zn,m = zn,m + L 26 while fa > b B 26. sor: am´ıg el nem ´erj¨ uk az utols´o ellen˝orizend˝o sort 27 k=n B 27. sor: munkav´altoz´o inicializ´al´asa 28 if fk == 1 B 28. sor: ha a sorozat 1-re v´egz˝odik 29 j =n−1 B 29–32. sor: nem 1 tagjainak meghat´aroz´asa 30 while fj ≤ 1 31 j =j−1 32 end 33 if fj == 2 B 33. sor: ha az 1-et nem tartalmaz´o r´esz 2-re v´egz˝odik 34 fj−1 = fj−1 − 1 B 34. sor: a sorozat friss´ıt´ese 35 Hj−1 = Hj−1 − 1 B 35. sor: H ´ert´ekek friss´ıt´ese 36 if j > 2 B 36–49. sor: ellen˝orz˝opontok friss´ıt´ese 19
Lucz Lor´ and - P´ arhuzamos Erd˝ os-Gallai algoritmus 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
if (c ≤ 2 or (c > 2 and Dc−2 6= j − 2)) and (c > 1 and Dc−1 6= j − 2) if c > 1 and Dc−1 > j − 2 Dc+1 = Dc Dc = Dc−1 Dc−1 = j − 2 c=c+1 else Dc+1 = Dc Dc = j − 2 c=c+1 end end end for k = j to n fk = fj−1 B 51. sor: a sorozat v´eg´enek friss´ıt´ese Hk = Hk−1 + fk B 52. sor: H ´ert´ekek friss´ıt´ese end while c > 1 and Dc > j − 1 B 54–56. sor: ellen˝orz˝opontok c=c−1 end if Hn p´ aratlan B 57. sor: rossz parit´as eset´en fn = fn−1 − 1 B 58. sor: sorozat friss´ıt´ese Hn = Hn−1 + fn B 59. sor: H sz´am´ıt´asa c=c+1 B 60–61. sor: ellen˝orz˝opontok b˝ov´ıt´ese Dc = n − 1 end else fj = fj − 1 B 64. sor: sorozat friss´ıt´ese Hj = Hj − 1 B 63. sor: H friss´ıt´ese if j > 1 B 66–74. sor: ellen˝orz˝opontok friss´ıt´ese if (c == 1 and Dc 6= j − 1) or (c > 1 and Dc−1 6= j − 1) if c > 0 and Dc > j − 1 Dc+1 = Dc Dc = j − 1 c=c+1 end end end for k = j + 1 to n fk = fj B 76. sor: sorozat friss´ıt´ese Hk = Hk−1 + fk B 77. sor: H sz´am´ıt´asa end while c > 1 and Dc > j − 1 B 79–81. sor: ellen˝orz˝opontok 20
Lucz Lor´ and - P´ arhuzamos Erd˝ os-Gallai algoritmus 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 end
c=c−1 end if Hn p´ aratlan fn = fn − 1 Hn = Hn − 1 c=c+1 Dc = n − 1 end
B 82. sor: parit´as ellen˝orz´ese B 83. sor: sorozat friss´ıt´ese B 84. sor: H sz´am´ıt´asa B 85. sor: ellen˝orz˝opontok sz´am´anak n¨ovel´ese B 86. sor: u ´j ellen˝orz˝opont hozz´aad´asa
end else if fk == 2 fk−1 = fk−1 − 1 B 91. sor: sorozat friss´ıt´ese Hk−1 = Hk−1 − 1 B 92. sor: H friss´ıt´ese if (c == 1 and Dc 6= n − 2) B 93–101. sor: ellen˝orz˝opontok or (c > 1 and Dc−1 6= n − 2 and Dc 6= n − 2) if c > 0 and Dc > n − 2 Dc+1 = Dc Dc = n − 2 else c=c+1 Dc = n − 2 end end if fk−1 p´ aratlan B 102. sor: parit´as ellen˝orz´ese fk = fk−1 B 103. sor: sorozat friss´ıt´ese if c > 0 and Dc == n − 1 c=c−1 B 105. sor: ellen˝orz˝opontok end else fk = fk−1 − 1 B 108. sor: sorozat friss´ıt´ese end Hk = Hk−1 + fk B 110. sor: H sz´am´ıt´asa else fk = fk − 2 B 112. sor: sorozat friss´ıt´ese Hk = Hk − 2 B 113. sor: H sz´am´ıt´asa if c < 1 or Dc 6= n − 1 B 114–117. sor: ellen˝orz˝opontok c=c+1 Dc = n − 1 end end end ˝ s-Gallai-Check(F, H, c, D) B 120. sor: ellen˝orz´es zn,m = zn,m + Erdo
Ez az algoritmus lehet˝ ov´e teszi, hogy egyszerre p´arhuzamosan t¨obb g´eppel 21
Lucz Lor´ and - P´ arhuzamos Erd˝ os-Gallai algoritmus v´egezz¨ uk a Z ´ert´ekek kisz´ am´ıt´as´at, u ´gy, hogy a kezd˝osorozatt´ol az utols´o sorozatig minden sorozatot tesztel¨ unk. Az utols´o sorozatot – a kezd˝o sorozattal ellent´etben – nem adjuk meg bemenetk´ent, csup´an az azonos´ıt´as´ahoz haszn´alt k´et ´ert´eket: a, b. Ezekkel az ´ert´ekekkel a k¨ ovetkez˝o m´odon azonos´ıthat´o a sorozat: mivel a sorozatokat lexikografikus sorrendben ´ all´ıtjuk el˝o, a sorozat egyetlen elem´enek ellen˝orz´es´evel (fa ) eld¨onthet˝ o, hogy el´ert¨ uk-e m´ ar az utols´o ellen˝orizend˝o sorozatot, azaz teljes¨ ul-e, hogy fa < b. Ha igen, akkor a kiosztott r´eszfeladatot elv´egzettnek tekintj¨ uk.
5.
A feladat r´ eszekre bont´ asa
A programok m˝ uk¨ od´es´et kor´abban m´ar ismertett¨ uk. Most le´ırjuk azt is, hogy a probl´em´ at milyen technik´ ak seg´ıts´eg´evel osztottuk fel a sz´am´ıt´og´epek k¨oz¨ott. Els˝ ok´ent le´ırjuk a legegyszer˝ ubb naiv megk¨ozel´ıt´est, amely kisebb n ´ert´ekek eset´en m´eg megfelel˝ o, majd ´ att´er¨ unk arra, hogy nagyobb n-ekn´el milyen m´odszerekkel pr´ob´ altuk kiegyens´ ulyozni az egyes sz´am´ıt´og´epek terhel´es´et.
5.1.
Naiv megk¨ ozel´ıt´ es
Legels˝ o megk¨ ozel´ıt´es¨ unk szerint a probl´em´at kisebb n ´ert´ekek eset´en tapasztalt fut´asi id˝ ok alapj´ an igyekezt¨ unk azonos m´eret˝ u darabokra osztani. Ez G24 eset´en m´eg elfogadhat´ o elt´er´eseket eredm´enyezett, de sajnos nagyobb n-ekre m´ar olyan m´ert´ek˝ u lett volna az elt´er´es, ami rontotta volna a p´arhuzamos´ıt´as hat´ekonys´ag´at. Ezt a megk¨ ozel´ıt´est felhaszn´alva a probl´em´at ¨osszesen 23 r´eszprobl´em´ara (szelet, job) bontottuk. A fut´ asi id˝ okre vonatkoz´o adataink k¨ozl´es´et˝ol eltekint¨ unk, tekintve, hogy a r´eszfeladatok t¨ obb, egym´ast´ol elt´er˝o hardverrel felszerelt sz´am´ıt´og´epen futottak.
5.2.
Feloszt´ as kor´ abbi n ´ ert´ ekekre alapozva
Az el˝ oz˝ o megk¨ ozel´ıt´es legnagyobb hi´anyoss´aga a rendszertelens´eg volt, hiszen se az ¨osszesen megvizsg´ alt sorozatok sz´am´at, sem az elfogadott sorozatokat nem vette sz´am´ıt´ asba. Az elfogadott sorozatok sz´am´at fontos t´enyez˝ok´ent kell kezelni, hiszen ezekben az esetekben a teszt minden egyes ellen˝orz˝opontban lefut, ´ıgy ezek a tesztek veszik ig´enybe a legt¨ obb id˝ ot. A sorozatok szerinti feloszt´ast a k¨ovetkez˝o m´odon gener´altuk. A kor´abban sorozatok gener´ al´ as´ ara felhaszn´alt programunkat u ´gy alak´ıtottuk ´at, hogy a tesztet elt´avol´ıtottuk, csup´ an azt figyelt¨ uk, hogy h´any sorozaton vagyunk t´ ul. Mivel az ¨osszes ´es a p´ aros sorozatok sz´am´at ismert¨ uk, ´ıgy k¨onnyed´en meghat´arozhat´o volt, hogy mikor vagyunk k´et lehets´eges r´eszfeladat hat´ar´an. A kapott sorozatot teljes eg´esz´eben t´ arolni azonban nem lett volna c´elszer˝ u, hiszen az rendk´ıv¨ ul nagy m´ert´ekben lass´ıtan´ a a sz´ amol´ast, ha minden egyes sorozat ellen˝orz´es´et k¨ovet˝oen ellen˝ orizn¨ unk kellene az ´eppen aktu´alis sorozat minden elem´et, hogy nem ´ert¨ uk-e el az utols´ o ellen˝ orizend˝ o sort. A kapott sorozatokr´ol teh´at csak annyi inform´aci´ot t´aroltunk, hogy mi az els˝ o elem indexe, ami elt´er az azt megel˝oz˝o sorozatt´ol, ´es 22
Lucz Lor´ and - P´ arhuzamos Erd˝ os-Gallai algoritmus hogy mi ez az ´ert´ek. Ezeket az inform´aci´okat felhaszn´alva m´ar elegend˝o egyetlen ellen˝ orz´est elv´egezni, hogy eld¨onthess¨ uk, v´egezt¨ unk-e a kapott r´eszfeladattal. Ez a csonkol´ as” azonban u ´jra csak azt eredm´enyezi, hogy a r´eszfeladatok elt´er˝o ” m´eret˝ uek lesznek. Ez a probl´ema azt´an egyre nagyobb elt´er´eseket okoz, ha az n ´ert´ek n¨ovekszik. Ezzel a technik´ aval egy 435 r´eszfeladatot tartalmaz´o feloszt´ast k´esz´ıtett¨ unk ´es haszn´ altunk fel a Z25 ´es Z26 ´ert´ekek sz´am´ıt´as´ahoz. Ezekben az esetekben m´ar nem a G ´ert´ekeket sz´ am´ıtottuk. Ennek oka, hogy a 7. lemma alapj´an G ´ert´ek´et k¨onnyed´en meghat´ arozhatjuk Z ismeret´eben ´es ´ıgy a sz¨ uks´eges sz´amol´asi id˝o a szab´ alyos bemenetekhez tartoz´o id˝o 14 -´ere cs¨okken [13].
5.3.
Feloszt´ as a m˝ uveletsz´ amok alapj´ an
Az el˝ oz˝ o megold´ asunk m´ ar viszonylag j´o eloszl´ast biztos´ıtott a fut´asi id˝ok tekintet´eben, azonban el˝ ofordul benne 2–3 ´ori´as r´eszfeladat is, amelyek megold´asa ak´ar t´ızszer annyi ideig is tartott, mint a t¨obbiek´e. Ezt a jelens´eget az al´abbi m´odon pr´ob´ altuk meg kik¨ usz¨ ob¨ olni. A gener´ alt r´eszsorozatokat m´ar nem fut´asi idej¨ uk vagy az ellen˝orz¨ott sorozatok sz´ama alapj´ an osztottuk fel, hanem az ellen˝orz´esek sor´an elv´egzett m˝ uveletek sz´ama adta a sorozatok k¨ ozti hat´ arokat. Ezt u ´gy hajtottuk v´egre, hogy egy alacsonyabb n ´ert´ekre kisz´ am´ıtottuk a teljes m˝ uveletig´enyt, majd ennek ismeret´eben gener´altuk az u ´j r´eszfeladatokat. Nyilv´ an ennek a feloszt´asnak is velej´ar´oja volt, hogy sorozatainkat csonkoltuk” a nagyobb sebess´eg el´er´es´enek ´erdek´eben. ” A Z28 ´ert´ek´et ezt a feloszt´ ast felhaszn´alva sz´am´ıtottuk ki.
5.4.
Feloszt´ as a p´ aros sorozatok sz´ ama alapj´ an
A kor´ abbi megval´ os´ıt´ asok ugyan k¨ozel´ıt˝oleg megfelel˝o feloszt´ast eredm´enyeztek, azonban mindegyikben fordultak el˝o – m´eg ha csak kis sz´amban is – mamutok (az ´atlagos fut´ asi id˝ o t¨ obbsz¨ or¨ os´et ig´enyl˝o r´eszfeladatok). Ennek elker¨ ul´es´ehez hasznos a (15) egyenlet. A (15) egyenletb˝ ol kiindulva kisz´am´ıthat´o, hogy h´any olyan sorozat l´etezik, amelyiknek m-edik tagja p. Ezt felhaszn´alva megadhat´o egy m´atrix, amely megadja, hogy k¨ ozel´ıt˝ oleg h´ any olyan sorozat van, amely az f1 ´ert´ekkel kezd˝odik ´es f2 ´ert´ekkel folytat´ odik stb. Ezt a t´ abl´ azatot felhaszn´alva a k¨ovetkez˝o m´odon adhat´o meg a feloszt´ as: - V´ alasszuk meg a maxim´alis r´eszfeladat m´eretet (eset¨ unkben ez akkora szeleteket jelentett, amelyek egy ´ejszaka alatt kisz´am´ıthat´oak). - Induljunk el a m´ atrix als´o sor´anak els˝o elem´et˝ol ´es kezdj¨ uk a m´atrix tov´abbi sorait kiolvasni ´es ¨ osszegezni mindaddig, am´ıg az aktu´alis kapacit´as vagy a kiolvasand´ o ´ert´ekek el nem fogytak. - Ha egy ´ert´ek t´ ul nagy az adott maxim´alis m´erethez viszony´ıtva, akkor l´epj¨ unk egy sorral feljebb ´es kezdj¨ uk el azt a sort kiolvasni addig az oszlopig, ahonnan 23
Lucz Lor´ and - P´ arhuzamos Erd˝ os-Gallai algoritmus 1 1 1 1 1
1 2 3 4 5
1 3 6 10 15
1 4 10 20 35
3. t´ abl´ azat. A feloszt´ashoz haszn´alt m´atrix n = 5 eset´en. 2, 3, 3, 4, 4, 4, 4,
2, 2, 3, 2, 3, 4, 4,
2, 2, 3, 2, 3, 3, 4,
2, 2, 3, 2, 3, 3, 4,
2 2 3 2 3 3 4
4. t´ abl´ azat. n = 5-¨os feloszt´as hat´arsorozatai. fell´ept¨ unk. - Folytassuk ezt az algoritmust, am´ıg az utols´o sor v´eg´ere nem ´ert¨ unk. A kor´ abban ismertetett algoritmus szerint n = 5-re a 3. t´abl´azatb´ol kiolvashat´o a 4. t´ abl´ azatban l´ athat´ o feloszt´ as. A t´ abl´ azatban l´ athat´ o sorozatok a k¨ovetkez˝o m´odon ´ertend˝oek: az els˝o szelet az 1, 1, 1, 1, 1 sorozatt´ ol a 2, 2, 2, 1, 1 sorozatig tart, a m´asodik pedig a 2, 2, 2, 2, 2 sorozatt´ ol a 3, 2, 2, 1, 1 sorozatig ´es ´ıgy tov´abb. Ez a m´ odszer ugyan nem garant´alja, hogy a r´eszfeladatok hossza pontosan ugyanakkora legyen, azonban megsz¨ unteti a kor´abbiakban tapasztalt mamut” ” hat´ ast. Ezt a m´ odszert haszn´ altuk fel Z29 kisz´am´ıt´asakor. A teljes sz´am´ıt´ast ¨osszesen t¨obb mint 15.000 r´eszfeladatra felosztva v´egezt¨ uk. A teljes feloszt´ as gener´ al´ as´anak els˝o l´ep´ese a 3. t´abl´azathoz hasonl´o m´atrix el˝o´all´ıt´ asa a megfelel˝ o n ´ert´ekhez. A m´atrix felt¨olt´es´et v´egzi el az al´abbi program. Bemenet. n: a cs´ ucsok sz´ ama (n ≥ 4); M axSize: a maxim´ alis megengedett szeletm´eret” (nullmentes p´aros sorozatok ” maxim´ alis sz´ ama a szeletben). Kimenet. A k´eperny˝ ore ´ırjuk a szeleteket hat´arol´o sorozatokat. GenMatrix(n, M axSize) 01 for j = n − 1 downto 1 02 M1,j = 1 03 end
B 01–03. sor: a m´atrix els˝o sor´anak kit¨olt´ese
24
Lucz Lor´ and - P´ arhuzamos Erd˝ os-Gallai algoritmus 04 for i = n downto 2 B 04–08. sor: a m´atrix felt¨olt´ese 05 for j = 1 to n − 1 06 Mi,j = i+j−2 i−1 07 end 08 end 09 GenSequences(M, n, n, 1, n − 1, M axSize, 0) B 09. sor: szelet gener´al´as Miut´ an megvan a m´ atrixunk, m´ar csak ki kell olvasnunk bel˝ole a szeletek hat´ arsorozatait (a 4. t´ abl´ azathoz hasonl´o alakban) az al´abbi algoritmus seg´ıts´eg´evel. Bemenet. M : a feloszt´ ashoz tartoz´o m´atrix, amit a GenMatrix algoritmussal kaptunk; n: a cs´ ucsok sz´ ama (n ≥ 1); i, j, J: rekurz´ıv seg´edparam´eterek; M axSize: a maxim´ alis megengedett szeletm´eret (nullmentes p´aros sorozatok maxim´ alis sz´ ama a szeletben). Kimenet. A szeleteket hat´ arol´o sorozatok (rekurz´ıv). GenSequences(M, n, i, j, jm , M axSize, J) 01 C = 0 B 01. sor: a szelet m´eret´enek inicializ´al´asa 02 while j < jm + 1 03 if C + Mi,j ≤ M axSize B 03. sor: ha b˝ov´ıthet˝o a szelet 04 C = C + Mi,j B 04. sor: b˝ov´ıt´es 05 if j ≤ jm B 05–07. sor: tov´abb l´ep¨ unk a m´atrixban 06 j =j+1 07 end 08 else B 08. sor: nem b˝ov´ıthet˝o a szelet 09 if C 6= 0 B 09. sor: a szelet nem u ¨res 10 for k = 2 to size(J, 2) B 10–16. sor: ki´ır´as 11 print(Jk ) 12 end 13 for k = 1 to n − size(J, 2) + 1 14 print(j − 1) 15 end 16 print newline B 16. sor: sort¨or´es 17 C=0 18 end 19 if Mi,j > M axSize and j ≤ jm B 19. sor: felbonthat´os´ag ellen˝orz´ese 20 GenSequences(M, n, i − 1, 1, j, M axSize, [J, j]) 21 j =j+1 22 end 23 end 24 end 25 if C 6= 0 B 25. sor: az utols´o szelet nem u ¨res 25
Lucz Lor´ and - P´ arhuzamos Erd˝ os-Gallai algoritmus 26 for k = 2 to size(J, 2) 27 print(Jk ) 28 end 29 for k = 1 to n − size(J, 2) + 1 30 print(J(size(J, 2))) 31 end 32 print newline 33 end
6.
B 26–32. sor: utols´o szelet ki´ır´asa
Eredm´ enyek
A kor´ abban ismertetett Holzhacker program seg´ıts´eg´evel b˝ov´ıtett¨ uk a The OnLine Encyclopedia of Integer Sequences [24] adatb´azist, amely G23 -ig tartalmazta a foksorozatok sz´ am´ at. Programunk seg´ıts´eg´evel megadtuk a hi´anyz´o ´ert´ekeket eg´eszen G29 -ig. Ezek az ´ert´ekek megtal´alhat´oak a 5. t´abl´azatban (az u ´j ´ert´ekek f´elk¨ov´erek). Sz´ am´ıt´ asaink sor´ an ig´enybe vett¨ unk laborg´epeket (Komputeralgebra labor, Nyelvi labor, Adatb´ azis labor, Lovarda) valamint mag´anszem´elyek seg´ıts´eg´et is. A sz´am´ıt´ og´epek sz´ am´ıt´ asi teljes´ıtm´eny´et ¨osszegezve azt mondhatjuk, hogy sz´am´ıt´asi kapacit´ asunk elm´eleti maximuma el´erte a 6 TFLOPS sebess´eget. R´eszletesebb adatok tal´ alhat´ oak a 6. t´ abl´ azatban. A t´abl´azat helyenk´ent hi´anyos, mivel a gy´art´ok honlapjain sajnos nem minden processzor t´ıpus eset´en ´erhet˝oek el a t´abl´azatban szerepl˝ o teljes´ıtm´eny adatok. A sz´ am´ıt´ asok sor´ an l´etrej¨ ott napl´of´ajlok a forr´ask´odokkal egy¨ utt megtal´alhat´oak a honlapomon (http://people.inf.elte.hu/lulsaai/Holzhacker). Az ´ altalunk kisz´ am´ıtott Gn ´ert´ekek napl´oi k¨oz¨ ul a legr¨ovidebbet tartalmazza a 7. t´abl´ azat r¨ ovid´ıtett form´ aban, azaz nem tartalmazza a szeletek kezd˝o ´es befejez˝o sorozatait, csak a sorsz´ amot, fut´asi id˝ot ´es az elfogadott sorozatok sz´am´at. Itt megjegyezz¨ uk, hogy ebben a sz´am´ıt´asban m´eg nem vettek r´eszt a laborok g´epei. A k¨ ul¨ onb¨ oz˝ o Zn ´ert´ekek r´eszfeladatainak fut´asi id˝ot ¨osszegezve megkaphatjuk, hogy a teljes sz´ am´ıt´ as egy g´eppel mennyi id˝ot vette volna ig´enybe. Ezeket az adatokat tartalmazza a 8. t´ abl´ azat.
7.
¨ Osszefoglal´ as
A dolgozat t´em´ aja gr´ afok foksorozatainak gyors tesztel´ese. A klasszikus m´odszerek ismertet´ese mellett megadtunk egy u ´j, line´aris fut´asi idej˝ u m´odszert, bemutattunk egy foksorozatokat lesz´amol´o p´arhuzamos programot ´es az azzal el´ert eredm´enyeinket. Az els˝ o r´eszben r¨ oviden bemutattuk az alap probl´em´at, annak alkalmaz´asi ter¨ uleteit ´es a dolgozatban el´erni k´ıv´ant c´elokat. A m´ asodik r´eszben ismertett¨ uk az eredeti Erd˝os-Gallai m´odszert ´es a Tripathi ´ ris-Erdo ˝ s-Gallai´es Vijay ´ altal megadott gyors´ıt´asokat. Ezut´an le´ırtuk a linea 26
Lucz Lor´ and - P´ arhuzamos Erd˝ os-Gallai algoritmus
n 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 3 29 15
1 4 16 63 247 973 824 033
1 4 17 68 269 052 116 123 205 959 469 345 633
1 5 20 77 300 166 537 672 923 128 049 715 801 303 266 712 300 249
1 6 24 92 352 352 200 058 558 540 803 567 631 264 937 481 363 841 218 474 824 380 770
Rn 1 3 10 35 126 462 716 435 310 378 716 078 300 300 760 195 110 650 900 410 220 860 800 2 550 8 876 31 052 123 056 486 220 1 912 520 7 516
2 8 34 134 526 058 061 602 979 734 172 816
2 10 38 150 583 268 836 461 564 024 358 901 652 635 861 660 644
3 12 46 176 676 600 030 781 273 407 795 340 678 560 917 034 596 961 837 612 219 943
En 1 2 6 19 66 236 868 235 190 252 484 270 612 008 096 315 990 980 260 394 988 288 616 814 516 176 328 260 559 2
2 8 34 132 518 022
Gn 1 2 4 11 31 102 342 1 213 4 361 16 016 59 348 222 117 836 315 3 166 852 12 042 620 45 967 479 176 005 709 675 759 564 2 600 672 458 10 029 832 754 38 753 710 486 149 990 133 774 581 393 603 996 256 710 139 346 770 547 818 956 125 389 919 850 919 443 189 544 232 001 761 434 337 118 015 338
5. t´ abl´ azat. Szab´ alyos, p´aros ´es helyre´all´ıthat´o sorozatok sz´ama.
27
Lucz Lor´ and - P´ arhuzamos Erd˝ os-Gallai algoritmus Labor / Tulajdonos Adatb´ azis labor Komputeralgebra labor Lovarda Nyelvi labor Ballagi D´ aniel K´ asa Zolt´ an K´ asa Zolt´ an ´ M´ anyoki Ad´ am ´ am M´ anyoki Ad´ ´ am M´ anyoki Ad´ M´ereg Bal´ azs
G´ep 60 20 110 60 1 1 1 2 1 1 1
Processzor i5-650 E 5300 E 7500 i5-650 E7300 875P i7-2600 E5405 Q6600 X4 920 T4500
Mag 2 2 2 2 2 ? 4 ? 4 4 2
GFLOPS 25.6 20.8 23.4 25.6 21.2 ? 70.3 ? 38.4 52.9 ?
6. t´ abl´ azat. A sz´ am´ıt´ asaink sor´an felhaszn´alt sz´am´ıt´og´epek adatai. Sorsz´ am 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
Fut´asi id˝o 886m38.590s 936m21.676s 505m47.829s 547m59.627s 511m25.114s 508m55.076s 542m10.017s 488m0.130s 643m54.655s 1518m44.534s 776m9.764s 585m91.666s 429m36.930s 429m26.178s 396m12.822s 375m33.124s 462m35.083s 471m41s 697m17.387s 565m3.692s 393m20.431s 549m59.291s 678m19,125s
10 28 41 69 58 102 118 151 78 147 70 99 49 58 118 80 115 56 207 133 151 158 148
029 723 658 578 589 412 800 600 547 524 426 949 782 135 914 117 347 764 784 860 426 301 434
G24,m 832 755 877 732 148 450 274 838 929 879 209 899 436 447 893 997 565 915 314 179 738 550 294 037 771 161 313 980 450 088 065 415 245 437 861 564 332 910 267 289 892 693 007 132 414 999
7. t´ abl´ azat. A G24 sz´am´ıt´as´anak r¨ovid´ıtett napl´oja. 28
Lucz Lor´ and - P´ arhuzamos Erd˝ os-Gallai algoritmus n 25 26 27 28 29
Fut´ asi id˝o (nap) 26 70 316 1130 6733
R´eszfeladatok sz´ama 435 435 435 2 001 15 119
8. t´ abl´ azat. A sz´ am´ıt´ asok sor´ an m´ert fut´asi id˝ok ¨osszege ´es a r´eszfeladatok sz´ama. ´ algoritmust, amit a k´es˝obbiekben a gr´afsorozatokat lesz´aml´al´o programban ugro felhaszn´ altunk. A harmadik r´eszben ismertett¨ unk n´eh´any eredm´enyt az ¨osszes n-szab´alyos ´es np´aros sorozat sz´ am´ aval ´es azok ar´any´aval kapcsolatban. A dolgozat negyedik r´esz´eben adtuk meg a Holzhacker program le´ır´as´at, kit´erve a program f˝ obb saj´ atoss´ agaira, valamint a megval´os´ıt´as´at meghat´aroz´o f˝obb ir´anyelvekre ´es c´elokra. Ebben a r´eszben ismertett¨ uk a szerver ´es a kliens program lesz´ amol´ assal kapcsolatos r´eszeinek pszeudok´odjait is, azaz a Distribute-Jobs ´es ˝ s-Galla-Enumerating algoritmusokat. az Erdo Az ¨ ot¨ odik r´esz tartalmazta azokat a m´odszereket ´es algoritmusokat, amelyeket felhaszn´ altunk az u ´j Z ´es G ´ert´ekek kisz´am´ıt´asakor. A dolgozat hatodik r´esz´eben ismertett¨ uk eredm´enyeinket (az u ´jonnan megadott Zn ´es Gn ´ert´ekeket, az u ´j algoritmus ´es a r´egi algoritmus fut´asi idej´enek ¨osszehasonl´ıt´ as´ at), valamint n´eh´any technikai r´eszletet a sz´am´ıt´asok elv´egz´es´enek k¨or¨ ulm´enyeir˝ ol (napl´ of´ ajlok ´es el´erhet˝os´eg¨ uk, felhaszn´alt sz´am´ıt´og´epek t´ıpusa, rendelkez´esre ´ all´ o maxim´ alis sz´am´ıt´asi teljes´ıtm´eny). Az ebben a r´eszben ismertetett, ´altalunk kisz´ amolt u ´j Gn ´ert´ekek 2011. november 15. ´ota megtal´alhat´oak az OEIS adatb´ azis A004251-es sorozat´ aban [24]. A dolgozatban le´ırt eredm´enyeket a [12, 13, 14] cikkekben publik´altuk. Az eddig el´ert eredm´enyeket szeretn´enk a k´es˝obbiekben felhaszn´alni focisorozatok [7, 22] ´es p´ aros gr´ afok sorozatainak ellen˝orz´ese sor´an, mivel ezeknek a probl´em´aknak r´esze az egyszer˝ u gr´ afok foksorozatainak ellen˝orz´ese.
Hivatkoz´ asok [1] Ascher, M.: Mu torere: an analysis of a Maori game. Math. Mag. 60, (1987) 90–100. ⇒ 8 [2] Burns, J. M.: The Number of Degree Sequences of Graphs. PhD Dissertation, MIT, 2007. ⇒ 10 [3] Choudum, S. A.: A simple proof of the Erd˝ os-Gallai theorem on graph sequences. Bull. Austral. Math. Soc. 33, (1986) 67–70. ⇒ 5 29
Lucz Lor´ and - P´ arhuzamos Erd˝ os-Gallai algoritmus [4] Chungphaisan, V.: Conditions for sequences to be r-graphical. Discrete Math. 7, (1974) 31–39. ⇒ 3, 4 ˝ s, P., Gallai, T.: Gr´ [5] Erdo afok el˝ o´ırt fok´ u pontokkal. Mat. Lapok 11, (1960) 264–274. ⇒ 3, 5 ˝ s, P. L., Miklo ´ s, I., Toroczkai, Z.: A simple Havel-Hakimi type [6] Erdo algorithm to realize graphical degree sequences of directed graphs. Elec. J. Comb. 17, (2010) R66. ⇒ 3, 4 [7] Frank, A.: Connections in Combinatorial Optimization. Calderon Oxford Univ. Press, Oxford, (2011) 640 p. ⇒ 29 [8] Hakimi, S. L.: On the realizability of a set of integers as degrees of the vertices of a simple graph. J. SIAM Appl. Math. 10, (1962) 496–506. ⇒ 3, 4 ˘ [9] Havel, V.: A remark on the existence of finite graphs (Czech). Casopis P˘est. Mat. 80, (1955) 477–480. ⇒ 3, 4 ´ nyi, A.: Reconstruction of complete interval tournaments. Acta Univ. [10] Iva Sapientiae, Inform. 1, (2009) 71–88. ⇒ 3, 4 ´ nyi, A.: Reconstruction of complete interval tournaments. II. Acta Univ. [11] Iva Sapientiae, Math. 2, (2010) 47–71. ⇒ 3, 4 ´ nyi, A., Lucz, L., Pirzada, S.: Parallel Erd˝ [12] Iva os-Gallai algorithm. CEJOR Cent. Eur. J. Oper. Res., (2011) beny´ ujtva. ⇒ 18, 29 ´ nyi, A., Lucz, L., Mo ´ ri, F. T., So ´ te ´r, P.: On the Erd˝ [13] Iva os-Gallai and Havel-Hakimi algorithms. Acta Univ. Sapientiae, Inform. 3(2), (2011) 230–268. El´erhet˝ o: http://www.acta.sapientia.ro/acta-info/ ⇒ 3, 4, 8, 10, 11, 23, 29 ´ nyi, A., Lucz, L., Mo ´ ri, F. T.: Line´ [14] Iva aris Erd˝ os-Gallai teszt. Alk. Mat. Lapok., (2011) beny´ ujtva. ⇒ 29 ´ nyi, A., Pirzada, S.: Comparison based ranking. In (ed. A. Iv´anyi): [15] Iva Algorithms of Informatics, 3, AnTonCom, Budapest, 2011, 1209–1256. ⇒ 3 [16] Jacobson, V.: Congestion avoidance and control. In: Proc. of SIGCOMM ’88, Stanford, CA (1988), ACM, 314–329. ⇒ 17 ´ rai, A. (szerk.): Bevezet´es a matematik´ [17] Ja aba. ELTE E¨otv¨os Kiad´o, Budapest, (2005). ⇒ 7 [18] Kleitman, D. J., Wang, D. L.: Algorithms for constructing graphs and digraphs with given valences and factors. Disc. Mat., 6, (1973) 79–88. ⇒ 3, 4 [19] LaMar, M. D.: Algorithms for realizing degree sequences of directed graphs. arXiv (2009). El´erhet˝ o: http://arxiv.org/abs/0906.0343 ⇒ 3, 4 30
Lucz Lor´ and - P´ arhuzamos Erd˝ os-Gallai algoritmus [20] Landau, H. G.: On dominance relations and the structure of animal societies. III. The condition for a score sequence. Bull. Math. Biophys. 15, (1953) 143–148. ⇒3 ´ te ´r, P.: Foksorozatokat ellen˝ [21] Lucz, L., So orz˝ o algoritmusok. TDK dolgozat, ELTE IK, Budapest, 2011. ⇒ 3, 4, 5, 6, 7, 11 ´ nyi, A.: Testing and enumeration of football sequences. In (ed. [22] Lucz, L., Iva Z. Cs¨ ornyei): Abstracts of MaCS 2012, Si´ofok, Febru´ar 9–12, 2012. ⇒ 29 ¨ [23] Ozkan, S.: Generalization of the Erd˝ os-Gallai inequality. Ars Combin. 98 (2011) 295–302. ⇒ 3, 4 [24] Sloane, N. J. A.: Number of graphical partitions. In (ed. N. J. A. Sloane): The On-line Encyclopedia of Integer Sequences (2011). El´erhet˝o: http://oeis.org/ ⇒ 3, 7, 26, 29 [25] Sloane, N. J. A., Plouffe, S.: The Encyclopedia of Integer Sequences., Academic Press, 1995. ⇒ 7, 8 [26] Stanley, R. P.: Enumerative Combinatorics, Cambridge University Press, Cambridge, 1997. ⇒ 7 [27] Tripathi, A., Vijay, S.: A note on a theorem of Erd˝ os & Gallai. Disc. Math. 265, (2003) 417–420. ⇒ 3, 5, 6 [28] Tripathi, A., Venugopalan, S., West, D. B.: A short constructive proof of the Erd˝ os-Gallai characterization of graphic lists. Disc. Math. 310, (2010) 833–834. ⇒ 5
31