Cvičení předmětu MI-PAR P. Tvrdík, I. Šimeček, M. Šoch pavel.tvrdik,xsimecek,soch@fit.cvut.cz Katedra počítačových systémů FIT České vysoké učení technické v Praze 2011 MI-PAR, ZS2011/12, Cv.1-6 Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti
adání semestrálních prací [MI-PAR Paralelní algoritmy a systémy] of 15 22.12.2011 13:09 Zadání semestrálních prací Seznam zkratek a názvů semestrálních úloh Úlohy pro dvojice PRP: přesun na šachovnici s penalizací TDG: trojúhelníková dekompozice grafu SVL: světla ZHV: zobecněné hanoiské věže DOM: i-dominující množina grafu KGM: kostra grafu s minimálním stupněm SAQ: skládání čtveřic HUT: optimalizace hutí LDL: L dlaždičkování NSR: nejkratší společný řetězec Úlohy pro jednotlivce OCE: symetrický obchodní cestující HG: Hamiltonovský graf UPO: uzlové pokrytí grafu Zadání úloh pro dvojice Architektura virtuálního paralelního počítače Ve všech ulohách uvažujeme paralelní počítač s distribuovanou pamětí s p procesory očíslovanými 0, 1, 2,, p-1, propojenými úplnou propojovací sítí (tzv. topologie úplný graf (UG)), kdy pro všechny dvojice různých čísel i a j, procesor i může přímo poslat zprávu procesoru j. Velikost vstupní instance Ve všech úlohách volte rozsah vstupních dat tak, aby sekvenční výpočet na 1 procesoru trval nejméně jednotky minut a nejvýše 20 minut. Vstupní parametry úlohy se zadávají jako parametry příkazové řádky a vstupní data se načítají ze souboru! Strategie dělení zásobníku a hledání dárce Na třetím cvičení si každá dvojice k zadané úloze vybere jednu strategii dělení zásobníku (R-ADZ, D-ADZ, D-R-ADZ) a jednu strategii hledání dárce (ACZ-AHD, GCZ-AHD, NV-AHD). Výběr je třeba zdůvodnit cvičícímu a na konci semestru do zprávy. Úloha PRP: přesun na šachovnici s penalizací n = přirozené číslo představující velikost strany čtvercové šachovnice S[1..n,1..n], n>= 5
2 of 15 22.12.2011 13:09 P[1..n,1..n] = množina celých kladných čísel z intervalu <1,255> ohodnocení políček šachovnice (představující penalizaci) k = celé číslo představující počet jezdců na šachovnici S, 2n k n*(n+1)/2 Pravidla a cíl hry: Počáteční stav je tvořen k jezdci umístěnými po řádcích v horní trojúhelníkové části šachovnice S, kterou nazveme oblast X. Každý jezdec se může na šachovnici pohybovat podle šachových pravidel (tah ve tvaru písmene L a může táhnout pouze na volné pole). Cílem hry je převést počáteční stav na cílový, ve kterém jsou jezdci symetricky umístěni po řádcích v dolní trojúhlenikové části šachovnice S, kterou nazveme oblast Y (oblast Y je středově symetrická s oblastí X). Nalézt posloupnost tahů jezdců pro dosažení cíloveho stavu tak, aby součet penalizací navštívených políček byl minimální. Číslo udávající minimální penalizaci a posloupnost tahů vedoucích z počátečního do cíloveho stavu. Tahy zapisujte ve formátu dvojice (startovní a koncová pozice jezdce v tomto tahu = odkud a kam jezdec v danem tahu táhnul). Počáteční a cílový stav pro n=5 a k=15. Počáteční a cílový stav pro n=5 a k=10. Sekvenční algoritmus je typu BB-DFS s neomezenou hloubkou stavového prostoru (při tazích jezdců mohou vznikat cykly). Hloubku prohledávání musíme omezit horní mezí (viz dále). Cena, kterou minimalizujeme, je součet penalizací použitých políček. Algoritmus končí, když je cena rovna dolní
3 of 15 22.12.2011 13:09 mezi a nebo když prohledá celý stavový prostor do hloubky dané horní mezí. Těsná dolní mez není známa. Triviální dolní mez na minimální penalizaci určíme nasledujícím způsobem: pro každého jezdce z oblasti X určíme minimální počet tahů, které musí provést, aby se dostal na libovolnou pozici v oblasti Y. Následně pro každého jezdce vygenerujte všechny existující cesty s minimálním počtem tahů a ze všech těchto cest vybereme tu, která má nejmenší penalizaci. Součet těchto k minimálních penalizací tvoří odhad triviální dolní meze. Horní mez na penalizaci, vhodnou k ořezávání stavového prostoru, stanovte jako dvojnásobek triviální dolní meze. Paralelni algoritmus: Paralelní algoritmus je typu PBB-DFS-V. Úloha TDG: trojuhelniková dekompozice grafu G(V,E) = jednoduchý neorientovaný neohodnocený souvislý graf o n uzlech, m hranách a průměrném stupni k n = přirozené číslo představující počet uzlů grafu G, n >= 5 k = přirozené číslo řádu jednotek představující průměrný stupeň uzlu grafu G, n>=k>=3 Doporučení pro algoritmus generování G: Použijte generátor grafu s typem grafu -t AD, který vygeneruje souvislý neorientovaný neohodnocený graf. Úkolem je nalezení rozdělení množiny hran E na dvě disjuktní podmnožiny E a E takové, že v 1 2 žádném z grafu G (V,E ) a G (V,E ) neleží trojúhelník, tj. tři vrcholy navzájem spojené hranami, a 1 1 2 2 současně mohutnost množin E a E je co nejrovnoměrnější. 1 2 Výpis hran z množin E 1 a E 2. Problém můžeme definovat i alternativně. Je třeba nalézt obarvení hran grafu G dvěmi barvami tak, aby žádné 3 hrany obarvené stejnou barvou netvořily trojúhelník. Tuto alternativní definici využijeme i pro sekvenční algoritmus. Postupně budeme z grafu vybírat ještě neobarvené hrany a ty budeme postupně obarvovat dvěmi barvami tak, aby nevznikl jednobarevny trojúhelník. Sekvenční algoritmus typu BB-DFS s hloubkou prohledávaného prostoru omezenou na E. Přípustný mezistav je definovaný 2 jednobarevnými disjuktními podmnožinami hran, ve kterých neexistuje trojúhelník. Přípustný koncový stav je úplné obarvení 2 barvami všech hran bez trojúhelníků. Algoritmus končí po prohledání celého prostoru. Návrat se provádí ve stavu, kdy již není možné pokračovat v obarvování hran tak, aby nevznikl jednobarevný trojúhelník. Cena, kterou optimalizujeme, je velikost množin E 1 a E 2. Triviální horní mez je polovina počtu hran.
4 of 15 22.12.2011 13:09 Paralelní algoritmus je typu G-PBB-DFS-D. Úloha SVL: světla m,n = přirozené čísla, m >= n >= 5, reprezentující délky stran šachovnice S o velikosti m * n q = přirozené číslo řádu jednotek reprezentující počet rozsvícených světel na šachovnici S, q m*n F[1..q] = pole souřadnic rozsvícených světel Pravidla: Všechny pole šachovnice S představují světla s vypínači. Na počátku je nahodně q světel zapnutých. Stisknu-li vypínač na pozici [a,b] způsobím změnu stavu světel na následujících 5 pozicích: [a,b], [a-1,b], [a,b-1], [a+1,b], [a,b+1]. Změnou stavu se rozumí to, že zhasnutá světla se rozsvítí a rozsvícena zhasnou. Nalézt minimální posloupnost stisků vypínačů, která způsobí zhasnutí všech světel. Konstatovaní, zda řešení existuje. V případě pozitivní odpovědi výpis souřadnic vypínačů ve správném pořadí, které je potřeba zmáčknout, aby všechna světla zhasla. Příklad zmáčknutí červeného vypínače a změna konfigurace rozsvícených světel ze stavu a) do stavu b). Sekvenční algoritmus je typu BB-DFS s hloubkou stavového stromu omezenou na m * n. Pripustny koncovy stav je situace, kdy jsou všechna světla zhasnutá. Cena, kterou minimalizujeme, je počet zmáčknutí vypínačů. Algoritmus končí, pokud je počet stisků vypínačů po zhasnutí všech světel roven těsné dolní mezi, jinak algoritmus prohledává celý stavový prostor. Je známo, že pro čtvercovou šachovnici S a počáteční konfiguraci, kdy jsou všechna světla rozsvícená, řešení vždy existuje. (více zde [http://mathworld.wolfram.com/lightsoutpuzzle.html]). Těsná dolní mez je horni_cela_cast(q/5).
5 of 15 22.12.2011 13:09 Paralelní algoritmus je typu L-PBB-DFS-D. Úloha ZHV: zobecněné hanojské věže n = přirozené číslo představující celkový počet žetonů, n >= 16. Žeton i, i=1,..,n, má průměr i s = přirozené číslo představující počet tyček, n/4 >=s > 3 r = číslo cílové tyčky, 1 r s V[1,..,s] = množina neúplných hanoiských věží. Definice: Hanojská věž o výšce k je věž k různých žetonů, které jsou uspořádány od nejmenšího k největšímu a rozdíly ve velikostech sousedních žetonů jsou vždy 1. Neuplná hanojská věž o výšce k je věž k různých žetonů, které jsou uspořádány od nejmenších k největším a rozdíly ve velikostech alespoň 1 dvojice sousedních žetonů je alespoň 2. Například pro k=5 je to neúplná věž 2,3,7,8,10. Generování počátečního stavu: V pořadí průměrů žetonů n,n-1,..,1 se žetony náhodně rozhazují na s tyček, takže vznikne s obecně neúplných hanojských věží. Pravidla: Jeden tah je přesun žetonu z vrcholu jedné věže na jedné tyčce na jinou prázdnou tyčku nebo na vrchol věže začínající žetonem s větším průměrem. Na zadané tyčce r postavte úplnou hanojskou věž o výšce n pomoci minimálního počtu tahů. Výpis počtu tahů a jejich posloupností v nasledujícím formátu: žeton,původni tyčka cílová tyčka. Řešení musí existovat. Sekvenční algoritmus je typu BB-DFS s neomezenou hloubkou prohledávání (obecně se mohou pro s > 3 při prohledávání generovat cykly). Hloubku prohledávání musíme omezit horní mez (viz dále). Ve stavu, kdy nelze přesunout žádný žeton, se provede návrat. Cena, kterou minimalizujeme, je počet tahů. Algoritmus končí, když je počet tahů roven dolní mezi, jinak prohledává celý stavový prostor do hloubky dané horní mezí. Těsnou dolní mez počtu tahů lze určit takto: je-li žeton na cílové tyčce, ale není na správné pozici, pak musí provést aspoň 2 tahy. Je-li žeton na jiné než cílové tyčcce, pak musí provést aspoň 1 tah. Dolní mez je součet těchto minimálních počtů tahů pro všechny žetony. Tato dolni mez je dosažitelná pro dostatečně velká s. Těsná horní mez na počet tahů, kterou lze odvodit řešením rekurentní rovnice podle http://en.wikipedia.org/wiki/tower_of_hanoi [http://en.wikipedia.org/wiki/tower_of_hanoi] T(n,s) min 1 k<n 2T(k,s) + T(n k,s 1)
6 of 15 22.12.2011 13:09 a okrajová podmínka T(n,3)=2 n -1 nebo T n = 2 T n-s-2 + 2s-5 Její řešení je: (2 n/(s-2) -1)(2s-5) Při prohledávání stavového prostoru vznikají cykly, které prohledávání prodlužují. K jejich ořezání se používá horní mez, která prohledávání omezuje. V případě hanojských věží je ve většině případů rozdíl mezi nejmenším počtem tahů a horní mezi relativně velký. Pro některé instance byla empiricky stanovena horní mez, která je dostatečná pro nalezení nejlepšího řešení a je menší než mez vypočtená. s n horní mez 4 12 30 4 13 36 4 14 42 5 12 40 5 13 48 5 14 56 Empiricky nalezené horní meze pro konkrétní hodnoty s,n. Příklad jednoduchého cyklu pro n=5 a s=4. a) Počáteční stav. b) Příklad cyklu pro nejmenší červený žeton, který se během 4 tahů vrátí do počátečního stavu. Paralelní algoritmus je typu L-PBB-DFS-D. Úloha DOM: i-dominující množina grafu
7 of 15 22.12.2011 13:09 G(V,E) = jednoduchý souvislý neorientovaný neohodnocený graf o n uzlech a m hranách n = přirozené číslo představující počet uzlů grafu G, n >= 5 k = přirozené číslo řádu jednotek představující průměrný stupeň uzlu grafu G, n >= k >= 3 i = přirozené číslo, 1 i 6 Doporučení pro algoritmus generování G: Použijte generátor grafu s volbou typu grafu -t AD, který vygeneruje souvislý neorientovaný neohodnocený graf. Definice: Je-li dáno přirozené číslo i >= 0 a uzel u grafu G, pak i-okolí uzlu u je množina všech uzlů G ve vzdálenosti nejvýše i od u, včetně uzlu u samotného. Pak i-dominující množina grafu G je každa množina uzlů takových, že sjednocení jejich i-okolí obsahuje všechny uzly G. Nalezněte minimální i-dominující množinu W grafu G. Výpis uzlů nejmenší i-dominující množiny W. Řešení musí existovat. Pokud i >= poloměr grafu G, pak je řešením kterýkoli uzel v centru grafu, čili dolní mez na W je 1. Proto uvažujme pouze případ, že i < poloměr grafu, kdy není známa dolní mez. Pak se jedná o NP-těžkou úlohu a použijeme sekvenční algoritmus typu BB-DFS s hloubkou omezenou na horní mez. Přípustný mezistav je podmnožina uzlů W, která je i-dominující množinou. Cena, kterou minimalizujeme, je W. Těsná dolní mez je horní_celá_část(průměr(g)/(2i+1)). Holní mez je V /(2i+1). Paralelní algoritmus Paralelní algoritmus je typu L-PBB-DFS-D. Úloha KGM: kostra grafu s minimálním stupněm G(V,E) = jednoduchý souvislý neorientovaný neohodnocený graf o n uzlech a m hranách n = přirozené číslo představující počet uzlů grafu G, n >= 5 k = přirozené číslo řádu jednotek představující průměrný stupeň uzlu grafu G, n >= k >= 3 Doporučení pro algoritmus generování G: Použijte generátor grafu s volbou typu grafu -t AD, který vygeneruje souvislý neorientovaný neohodnocený graf.
8 of 15 22.12.2011 13:09 Definice: Stupeň stromu je definován jako maximální stupeň ze všech uzlů stromu. Nalezněte kostru grafu G (strom) s minimálním stupněm. Výpis kostry grafu G a hodnota stupně této kostry. Řešení existuje vždy, vždy lze sestrojit kostru grafu. Sekvenční algoritmus je typu BB-DFS s hloubkou prohledávaného prostoru omezenou na V. Přípustný mezistav je definovaný částečnou kostrou. Přípustný koncový stav je vytvořená kostra. Algoritmus končí po prohledání celého prostoru či při dosažení dolní meze. Cena, kterou minimalizujeme, je stupeň kostry. Těsná dolní mez je rovna 2. Holní mez je rovna nejvyššímu stupni v grafu G. Paralelní algoritmus Paralelní algoritmus je typu G-PBB-DFS-D. Úloha SAQ: skládání čtveřic a, b >= 3, rozměry obdelníkové oblasti herní desky, kde ab>=20 je dělitelné čtyřmi P = soubor čtveřic kostek (quatromin). Vzorová quatromina se označují písmeny I, L, O, T, Z, viz obrázek. Nalézt pokrytí obdélníku a x b quatrominy s maximální cenou. Cena se vypočítá jako: Cena=(p I +1)*(p L +1)*(p O +1)*(p T +1)*(p Z +1), kde p I je počet použitých quatromin typu I apod. Na obrázku jsou příklady vyplnění 3 malých obdélníků.
adání semestrálních prací [MI-PAR Paralelní algoritmy a systémy] of 15 22.12.2011 13:09 Popis vyplnění obdélníku a x b kostkami z množiny P (např. matici a * b písmen, odpovídajících quatromin, která pokrývají políčka), případně grafické znázornění řešení a nebo výpis, že pokrytí neexistuje. Sekvenční algoritmus je tedy typu BB-DFS s hloubkou prohledávaného prostoru omezenou na ab/4. Cena, kterou maximalizujeme, je počet různých quatromin, která na vyplnění plochy použijeme. Poznámka č.1: Vzorec pro výpočet ceny preferuje řešení s rovnoměrnou pestrostí, čili aby bylo použito co nejvíce různých (max.5) quatromin a každé mělo rovnoměrné zastoupení bez ohledu na rotace a zrcadlové klony (čili počet zastupců 2 různých kvatronim byl plus mínus 1). Poznámka č.2: Nepokládejte quatromina na náhodnou pozici, ale zaplňujte plochu systematicky, např. od levého horního rohu. Horní mez ceny není známá a algoritmus končí, když prohledá celý stavový prostor. Triviální horní mez je rovna ceně, kdy p I +p L +p O +p T +p Z = a*b. Uvedené hodnoty jsou rovny libovolné permutaci následujících pěti čísel: p 1 =dolní_celá_část(ab/5), p 2 =dolní_celá_část((ab+1)/5), p 3 =dolní_celá_část((ab+2)/5), p 4 =dolní_celá_část((ab+3)/5), p 5 =dolní_celá_část((ab+4)/5). Paralelní algoritmus je typu G-PBB-DFS-D. Úloha HUT: optimalizace hutí k, l = přirozená čísla, k l 3, reprezentující velikost obdélníkové matice. M[1..k][1..l] = matice inicializovaná náhodnými čísly z intervalu <0,100> m = přirozené číslo, 1 m k*l/2, představující maximální počet žetonů c = přirozené číslo, 1 c 100, představující cenu položení žetonu Zadání:
10 of 15 22.12.2011 13:09 V matici M rozmístíme 1 q m žetonů, pričemž každý žeton musí být umístěn na jiném políčku. Získáme tak nějakou konfiguraci žetonů Z (pole q dvojic souřadnic). Cenu dané konfigurace žetonů vypočítáme pomocí funkce f: f(z) = {SUMA (M[i,j]/[1 + vzd(i,j)])} - q*c, i,j kde vzd(i,j) je manhattanská vzdálenost prvků matice M[i,j] k nejbližšímu žetonu. Příklad vyhodnocení fce f pro k=3, c=10. Čísla znázorňují hodnoty prvků matice M, kroužky jednotlivé žetony. a) q=1, f(z)=1/3+2/2+7/3+4/2+5/1+6/2+3/3+8/2+9/3-1*10 b) q=2, f(z)=1/1+2/2+7/3+4/2+5/3+6/2+3/3+8/2+9/1-2*10 Nalezněte počet žetonů q a takovou jejich konfiguraci Z, aby funkce f(z) byla maximální. Počet žetonů a textový výpis jejich pozic ve formě dvourozměrného diagramu. Alternativní formulace úlohy: Dvourozměrná matice M představuje mapu neznámé krajiny, která obsahuje naleziště horniny a q hutí. Vydatnost horniny je určena číslem M[i,j] na dané pozici a výstavba hutě představuje investici o velikosti c. Úkolem je rozmístit zpracovatelské hutě tak. aby zisk reprezentovaný funkcí f byl maximální (zisk je maximální, pokud jsou celkové náklady na dopravu a investice do vystavby hutí qc minimální). Řešení vždy existuje. Sekvenční algoritmus je typu BB-DFS s hloubkou omezenou na m. Cena, ktery maximalizujeme, je hodnota funkce f. Horní mez ceny není známa a algoritmus končí, když prohledá celý stavový prostor do hloubky m. Horní mez není známá. Paralelní algoritmus je typu PBB-DFS-V.
11 of 15 22.12.2011 13:09 Úloha LDL: L dlaždičkování n,m = celé číslo představující velikost šachovnice P[1..n,1..m] k = celé číslo představující počet nutných děr v P D[1..k] = pole představující pozice nutných děr v P Najděte vydlazdičkování šachovnice P dlaždičkami L1, L2 a L3 (viz obrázek) kromě děr uvedených v poli d[1..k] s nejvyšší možnou cenou. Vydlaždičkování nemusí být dokonalé, tzn. mohou vzniknout i jiné díry. než ty uvedené v poli D[1..k], důležité je maximalizovat cenu. Cena pokrytí, ve kterém je a nových děr. je cena=3*počet použitých dlaždiček tvaru L3 + 2*počet použitých dlaždiček tvaru L2+počet použitých dlaždiček tvaru L1-6*a Poznámka: Každou z dlaždiček je možno libovolně natáčet a obracet(viz obrázek). Tvary dlaždiček L1,L2 a L3. Všechna možná natočení a obrácení dlaždičky L2. Číslo udávající maximální cenu pokrytí, dále pak souřadnice, pozici a tvar použitých dlaždiček. Sekvenční algoritmus je typu BB-DFS s omezenou hloubkou stromu stavů na h max =(n*m-k)/3. Řešení vždy existuje. Algoritmus končí, když je cena rovna horní mezi nebo když prohledá celý stavový prostor do hloubky dané horní mezí h max. Poznámka: Nepokládejte dlaždičky na náhodnou pozici, ale zaplňujte plochu systematicky, např. od levého horního rohu. Těsná dolní mez na cenu dlaždičkování je o min =-6*(n*m-k) pro k>=nm/2. Těsná horní mez na cenu dlaždičkování je 3*(n*m-k)/5. Paralelní algoritmus je typu G-PBB-DFS-D.
12 of 15 22.12.2011 13:09 Úloha NSR: nejkratší společný řetězec n = přirozené číslo představující počet řetězců, n >= 10 z = přirozené číslo představující maximální délku řetězců, z>log n R={r 1,..,r n } = množina n různých binárních řetězců r i o délkách log n < r i z Pro zadané n nejdříve vygenerujte množinu řetězců R délek nejméně log n a nejvýše z. Délka nejdelšího vygenerovaného řetězce nechť se značí m=max { r_i, i=1,,n}. Pak zvolte celé čislo k větší než m a současně menší než poloviční součet délek všech řetězců z R. Čili k je z otevřeného intervalu n ( m, SUMA r_i ) / 2 ) i=1 Nalezněte nejkratší binární řetězec w o délce nejvýše k takový, že každý řetězec z množiny R je jeho podřetězcem. Čili každý řetězec r z R může být doplněn na řetězec w=w 0 rw 1, kde w 0 a w 1 jsou binární řetězce (mohou být i prázdné). Takový řetězec w se nazývá nejkratší k-nadřetězec množiny R. Konstatování, zda existuje k-nadřetězec množiny R a pokud ano, pak výpis nejkratšího z nich a rozpis jeho n rozkladu w 0 r i w 1, kde r i in R. Sekvenční algoritmus je typu BB-DFS s hloubkou prohledávaného prostoru omezenou zdola m a shora k. Přípustný koncový stav je každý k-nadřetězec množiny R. Cena, kterou minimalizujeme, je délka takového nadřetězce. Algoritmus končí, když nalezne nadřetězec délky rovné dolní mezi a nebo když prohledá celý stavový prostor. Těsná dolní mez je rovna m. Paralelní algoritmus je typu G-PBB-DFS-D. Zadání úloh pro jednotlivce Výpočet typu Master-Slave Navrhněte paralelní algoritmus typu Master-Slave, který využije technologii MPI a OpenMP. Na začátku výpočtu MPI vytvoří celkem p procesů, kde jeden bude řídící proces Master a ostatní budou výpočetní procesy Slave. Master bude prohledávaný stavový prostor rozdělovat mezi ostatní výpočetní procesy. Aby to bylo možné, začne standardním sekvenčním algoritmem prohledávat
13 of 15 22.12.2011 13:09 stavový prostor do šířky a vygeneruje dostatečně velkou množinu počátečních konfigurací zásobníků pro výpočetní procesy Slave. Generování počátečních konfigurací metodou do šířky skončí v okamžiku, kdy je počet listů stavového prostoru poprvé větší než zp, kde p je počet procesorů a z >= 10 je předem zvolená konstanta (konstantu z experimentálně určete, závisí na typu úlohy - je potřeba dosáhnout optimální granularity, kdy výpočetní procesy Slave pracují dostatečně dlouho a počet konfigurací je dostatečně větší než počet procesorů). Pak začne Master nachystané počáteční konfigurace rozesílat výpočetním procesům Slave. Master vždy vybere jednu konfiguraci ze své fronty a zašle ho vybranému procesu Slave. Každý Slave si vždy přijatou konfiguraci uloží do své lokální fronty a následně vygeneruje dostatečný počet konfigurací procházením do šířky, které si uloží do lokální fronty. Tyto konfigurace se budou následně již řešit vlastním procházením do hloubky. Pomocí OpenMP bude možné zpracovávat více konfigurací paralelně, tj. každé vlákno vygenerované pomocí OpenMP zpracuje sekvenčně prohledáváním do hloubky vždy jednu konfiguraci vybranou z fronty (počet vláken volte jako násobek 4, protože každý uzel má 4 výpočetní jádra). Slave se už nikdy nevrací do stavu nad své počáteční konfigurace (tj. nad první expanze provedené Masterem). V okamžiku, kdy vlákno projde celý přidělený stavový prostor definovaný přidělenou počáteční konfigurací, vezme si z fronty další volnou konfiguraci. Pokud Slave ve frontě již nemá žádné volné počáteční konfigurace, informuje o tom Mastera, který mu zašle další volnou počátační konfiguraci ze své fronty. Pokud Master již žádné volné konfigurace nemá, informuje o tom žádající Slave proces, který zašlě Masteru své lokální řešení a následně se ukončí. Pokud Slave nalezene řešení s nejlepší možnou cenou, informuje Master, který pomocí komunikační operace jeden-všem ukončí výpočet. Musí být ošetřena i situace, kdy řešení nalezne současně více Slavu (např. pomocí paralelní redukce). Výpočet Master-Slave tedy využívá jak knihovny MPI pro komunikaci nad distribuovanou pamětí, tak i OpenMP pro výměnu dat nad pamětí sdílenou. Při měření aplikace plánujte vždy jeden MPI proces na jednu žiletku (blade ze svazku STAR) a na úrovni OpenMP vždy vytvářejte vlákna v násobku 4 (každá žiletka má 4 procesorová jádra). Uloha OCE: symetricky obchodni cestujici OCE: symetrický obchodní cestující n = přirozené číslo, označující počet měst G = uplný, hranově ohodnocený graf o n uzlech V={1,,n}, představujících města, reprezentovaný např. symetrickou maticí vzdáleností D[1..n,1..n], kde pro všechny dvojice i<>j, D[i,j] = D[j,i] je nenulová délka cesty mezi mesty i a j a kde pro všechna i je D[i,i] = 0. Zjistit nejkratší možnou okružní cestu (hamiltonovskou kružnici) po všech městech. Permutace uzlů V={1,,n}, odpovídající nejkratší hamiltonovské kružnici a délka této kružnice. Sekvenční algoritmus je typu BB-DFS s hloubkou stavového stromu omezenou na n. Mezistav je definován seznamem uzlů na dosud vybudované části možné okružní cesty. Přípustnými koncovými stavy jsou všechny permutace n čísel, reprezentující hamiltonovské kružnice. Cena řešení, kterou minimalizujeme, je délka těchto kružnic. Dolní mez není známa. Dolní mez je suma minimálních ohodnocení hran incidujícího se všemi uzly.
14 of 15 22.12.2011 13:09 Navrhněte paralelní algoritmus typu Master-Slave. Počáteční konfigurace je množina částí vybudovaných cest. Úloha HG: Hamiltonovský graf G(V,E) = jednoduchý neorietovaný neohodnocený k-regulární graf o n uzlech a m hranách n = přirozené číslo predstavující počet uzlu grafu G, n >= 5 k = přirozené číslo řádu jednotek představující stupeň uzlu grafu G, n >= k >= 3; n a k nejsou současně obě liché Doporučení pro algoritmus generování G: Použijte generátor grafu s typem grafu -t AD. Zjistěte, zda graf obsahuje hamiltonovskou cestu to jest cestu takovou, že každý jeho uzel je navštíven právě jednou s výjimkou uzlu výchozího, který je zároveň uzlem cílovým. Odpověď, zda zadaný graf obsahuje hamiltonovskou cestu. V případě pozitivní odpovědi výpis jedné takové cesty. Sekvenčni algoritmus: Sekvenční algoritmus je typu SB-DFS s hloubkou stavového stromu omezenou na n. Mezistav je definován seznamem uzlů na dosud vybudované části možné cesty. Přípustnými koncovými stavy jsou všechny permutace n čísel reprezentující hamiltonovské cesty. Návrat se provádí ve stavu, kdy již není možné pokračovat v konstrukci hamiltonovské cesty. Výpočet končí v okamžiku, kdy nalezne první hamiltonovskou cestu a nebo projde neúspěšně celý stavový prostor. Navrhněte paralelní algoritmus typu Master-Slave. Počáteční konfigurace je počáteční úsek hamiltonovské cesty dané délky. Úloha UPO: uzlové pokrytí grafu G(V,E) = jednoduchý neorietovaný neohodnocený graf o n uzlech, m hranách a průměrném stupni k n = přirozené číslo predstavující počet uzlů grafu G, n > 5 k = přirozené číslo řádu jednotek představující průměrný stupeň uzlu grafu G, n>=k>=3 Doporučení pro generování G: Použijte generátor grafu s volbou typu grafu -t AD.
adání semestrálních prací [MI-PAR Paralelní algoritmy a systémy] 5 of 15 22.12.2011 13:09 Nalézt minimální uzlové pokrytí grafu G, tj. minimální podmnožinu uzlů C grafu G, která pokrývá všechny hrany, tzn. každá hrana z E je incidentní s aspoň s jedním uzlem z C. Řešení vždy existuje. Výpis prvků množiny C ve formě matice incidence. Sekvenční algoritmus je BB-DFS s omezenou hloubkou prohledávaného prostoru. Mezistav je dán obsahem podmnožiny C. Stav je přípustný, je-li C uzlové pokrytí. Cena, kterou minimalizujeme, je C. Pokrytí C lze budovat buď přidáváním uzlů počínaje prázdnou množinou, kdy se provádí návrat, pokud jsou všechny hrany pokryty, nebo odebíráním uzlů z nadbytečně velkého pokrytí, kdy se návrat provádí, pokud nelze žadný uzel odebrat, aniž by se narušilo pokrytí. Uzly se stupněm 0 je zbytečné uvažovat. Těsnou dolní mez na C lze vypočítat takto: seřadíme uzly podle jejich stupně sestupně. Pak jednotlivé uzly od nejvyššího stupně sčítáme, dokud součet není vetší nebo roven m tzn. počtu hran. Počet sčítanců je hledaná dolní mez. Trivialní horní mez na C je min(n,m)/2. Navrhněte paralelní algoritmus typu Master-Slave. Počáteční konfigurace je dána podmnožinou C. /mnt/www/courses/mi-par/data/pages/labs/zadani_semestralnich_praci.txt Poslední úprava: 2011/09/22 08:12 autor: xsimecek