Cvičení předmětu MI-PAR P. Tvrdík, I. Šimeček, M. Šoch

Podobné dokumenty
Úloha ve stavovém prostoru SP je <s 0, C>, kde s 0 je počáteční stav C je množina požadovaných cílových stavů

Prohledávání do šířky = algoritmus vlny

1 Definice problému a popis sekvenčního algoritmu

Základy umělé inteligence

Obsah prezentace. Základní pojmy v teorii o grafech Úlohy a prohledávání grafů Hledání nejkratších cest

Datové struktury 2: Rozptylovací tabulky

Řešení: PŘENESVĚŽ (N, A, B, C) = přenes N disků z A na B pomocí C

State Space Search Step Run Editace úloh Task1 Task2 Init Clear Node Goal Add Shift Remove Add Node Goal Node Shift Remove, Add Node

11. Tabu prohledávání

Dynamické programování

Vzdálenost uzlů v neorientovaném grafu

Algoritmizace prostorových úloh

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

Standardní algoritmy vyhledávací.

jednoduchá heuristika asymetrické okolí stavový prostor, kde nelze zabloudit připustit zhoršují cí tahy Pokročilé heuristiky

popel, glum & nepil 16/28

PROHLEDÁVÁNÍ GRAFŮ. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

Rekurzivní algoritmy

Časová a prostorová složitost algoritmů

Grafové algoritmy. Programovací techniky

Úvod do teorie grafů

Stromy, haldy, prioritní fronty

Základy informatiky. 07 Teorie grafů. Kačmařík/Szturcová/Děrgel/Rapant

TGH05 - aplikace DFS, průchod do šířky

Přednáška. Správa paměti II. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

TGH05 - aplikace DFS, průchod do šířky

Numerické metody a programování. Lekce 8

12. Globální metody MI-PAA

NEJKRATŠÍ CESTY I. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

Cvičení MI-PRC I. Šimeček

Základní datové struktury III: Stromy, haldy

Úvod do mobilní robotiky AIL028

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.

Algoritmy výpočetní geometrie

Základy informatiky. Teorie grafů. Zpracoval: Pavel Děrgel Úprava: Daniela Szturcová

STROMOVE ALGORITMY Prohledavani do sirky (level-order) Po vodorovnejch carach fronta

Zablokování (Deadlock) Mgr. Josef Horálek

3. úloha - problém batohu metodami branch & bound, dynamické programování, heuristika s testem

Třída PTIME a třída NPTIME. NP-úplnost.

Dijkstrův algoritmus

bfs, dfs, fronta, zásobník, prioritní fronta, halda

Grafové algoritmy. Programovací techniky

Cvičení předmětu MI-PAR P. Tvrdík, I. Šimeček, M. Šoch

Dobývání znalostí. Doc. RNDr. Iveta Mrázová, CSc. Katedra teoretické informatiky Matematicko-fyzikální fakulta Univerzity Karlovy v Praze

"Agent Hledač" (3. přednáška)

Datové struktury 1: Základní datové struktury

Principy operačních systémů. Lekce 7: Obrana proti deadlocku

Drsná matematika III 10. demonstrovaná cvičení Kostry grafů

Přednáška. Vstup/Výstup. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Arnoldiho a Lanczosova metoda

DobSort. Úvod do programování. DobSort Implementace 1/3. DobSort Implementace 2/3. DobSort - Příklad. DobSort Implementace 3/3

07 Základní pojmy teorie grafů

4. Úvod do paralelismu, metody paralelizace

Předmět: Algoritmizace praktické aplikace

TOKY V SÍTÍCH II. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

4EK213 Lineární modely. 10. Celočíselné programování

ALGORITMY A DATOVÉ STRUKTURY

Paralelní programování

Fakulta informačních technologií. Teoretická informatika

Základy algoritmizace. Pattern matching

bfs, dfs, fronta, zásobník, prioritní fronta, halda

Testování a spolehlivost. 1. Laboratoř Poruchy v číslicových obvodech

Přidělování paměti II Mgr. Josef Horálek

Vektorové podprostory, lineární nezávislost, báze, dimenze a souřadnice

5 Orientované grafy, Toky v sítích

Dynamické datové struktury I.

1. Implementace funkce počet vrcholů. Předmět: Algoritmizace praktické aplikace (3ALGA)

PDV /2018 Detekce selhání

Optimalizace & soft omezení: algoritmy

STROMY. v 7 v 8. v 5. v 2. v 3. Základní pojmy. Řešené příklady 1. příklad. Stromy

INFORMAČNÍ SYSTÉM VIDIUM A VYUŽITÍ MODERNÍCH TECHNOLOGIÍ

1. Převeďte dané číslo do dvojkové, osmičkové a šestnáctkové soustavy: a) b)

V každém kroku se a + b zmenší o min(a, b), tedy vždy alespoň o 1. Jestliže jsme na začátku dostali 2

OPTIMALIZACE. (přehled metod)

Amortizovaná složitost. Prioritní fronty, haldy (binární, d- regulární, binomiální, Fibonacciho), operace nad nimi a jejich složitost

5 Informace o aspiračních úrovních kritérií

Grafy. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 13.

Výpočet globálního stavu

10 Přednáška ze

V ypoˇ cetn ı sloˇ zitost v teorii graf u Martin Doucha

METODY DOLOVÁNÍ V DATECH DATOVÉ SKLADY TEREZA HYNČICOVÁ H2IGE1

ČVUT FEL X36PAA - Problémy a algoritmy. 5. úloha - Seznámení se se zvolenou pokročilou iterativní metodou na problému batohu

Cílem seminární práce je aplikace teoretických znalostí z přednášky na konkrétní úlohy. Podstatu algoritmu totiž

Zákony hromadění chyb.

Static Load Balancing Applied to Time Dependent Mechanical Problems

Aplikovaná numerická matematika

4EK213 LINEÁRNÍ MODELY

Přidělování CPU Mgr. Josef Horálek

= je prostý orientovaný graf., formálně c ( u, v) 0. dva speciální uzly: zdrojový uzel s a cílový uzel t. Dále budeme bez

Neinformované metody prohledávání stavového prostoru. Gerstner Laboratory Agent Technology Group, Czech Technical University in Prague

1 Úvod do celočíselné lineární optimalizace

Základy matematické analýzy

vyhledávací stromové struktury

Katedra informatiky a výpočetní techniky. 10. prosince Ing. Tomáš Zahradnický doc. Ing. Róbert Lórencz, CSc.

10. Složitost a výkon

Generování pseudonáhodných. Ing. Michal Dorda, Ph.D.

Konstrukce relace. Postupně konstruujeme na množině všech stavů Q relace i,

Automatizované řešení úloh s omezeními

Implementace LL(1) překladů

PB153 Operační systémy a jejich rozhraní

Transkript:

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

Sekvencni algoritmy prohledavani do hloubky (Depth-first search, DFS... 1 of 7 22.12.2011 13:10 Sekvencni algoritmy prohledavani do hloubky (Depth-first search, DFS) Algoritmus DFS prohledává stavový prostor s použitím zásobníku. Koncový stav je stav, který nemá následníky. Ostatní stavy budeme nazývat mezistavy. Cílem DFS je nalézt koncový stav, který vyhovuje podmínkam řešení, čili tzv. přípustný koncový stav. Pojmy řešení a přípustný koncový stav budeme používat zaměnitelně. Jednotlivé algoritmy DFS se liší podle následujících hledisek, která nejsou úplně ortogonalní: kritéria pro ukončení DFS, úplnost prohledávání stavového prostoru, omezenost hloubky prohledavaného stavového prostoru. Kritéria pro ukončení DFS Existuje několik kriterií pro ukončení DFS. V semestrálních pracech budeme uvažovat tyto případy ukončení DFS: 1. DFS s jednoduchým návratem (simple backtrack, SB-DFS) Cílem je nalézt první přípustný koncový stav (t.j., první řešení). V případě, že existuji řešení s různou cenou nebo dosažitelná různým počtem kroků, SB-DFS nemusí nalézt řešení optimální. SB-DFS se používá v případě, že všechna řešení mají stejnou cenu nebo jsou dosažitelné ve stejném počtu kroků. Návrat se provádí z nepřípustného koncového stavu (stavu, který nemá následníky a nevyhovuje podmínkám řešení) nebo z mezistavu, který nesplňuje vlastnosti řešení a nemůže tudíž vést k přípustnému koncovému stavu. Takovému mezistavu budeme říkat nepřípustný mezistav. Mezistavům, které mohou vést k přípustným koncovým stavům, budeme tedy říkat přípustné mezistavy. 2. DFS metodou větví a řezů (branch-and-bound DFS, BB-DFS) Cílem prohledávání stavového prostoru je nalezení přípustného koncového stavu s nejmenší cenou (úplně analogicky funguje tato metoda v případě, že hledáme řešení s maximální cenou). Cena je definována nějakou funkcí, která vrací hodnotu ordinálního typu. Při prvním nalezení přípustného koncového stavu se nastaví počáteční hodnota této ceny nebo je možné před spuštěním algoritmu prohledávání nastavit počáteční odhad ceny (to může být buď +/-nekonečno nebo hodnota odvozená ze vstupních data). Pokud to je možné, je také třeba předem určit spodní mez na cenu. Ta může být triviální (a často nedosažitelná), těsná (v závislosti na konkrétní instanci i dosažitelná), nebo nějaký odhad mezi tím. Kdykoli se nalezne nový přípustný koncový stav, zkontroluje se, zda je jeho cena menší než cena dosavadního nejlepšího řešení. Pokud ano, provede se aktualizace nejlepšího řešení. V každém případě se provede návrat. Stejně jako v SB-DFS, návrat se provádí z nepřípustných mezistavů. Navíc se ale návrat provádí i z přípustných mezistavů, které nemohou vést k řešením s nižší cenou, než je nejlepší dosud nalezené řešení. Úplnost prohledávání stavového prostoru V závislosti na existenci dolní meze na cenu řešení zde existují pouze dvě možnosti. 1. Vždy úplné (always exhaustive, AE) prohledávání: Je nutné u úloh BB-DFS, u kterých nelze určit (vypočítat) dolní mez ceny řešení a proto do poslední

Sekvencni algoritmy prohledavani do hloubky (Depth-first search, DFS... 2 of 7 22.12.2011 13:10 chvíle neznáme hodnotu minimální ceny řešení a proto nelze tedy vyloučit, že i to úplně poslední nalezené řešení má nejmenší cenu. 2. Úplné v závislosti na vstupních datech (data-dependent exhaustive, DDE) prohledávání: Týká se jednak SB-DFS a jednak BB-DFS, u kterých dokážeme předem určit (vypočítat) dolní mez ceny řešení. SB-DFS: Celý prostor se bude prohledávat pouze tehdy, neexistuje-li pro daná vstupní data žádné řešení nebo je-li existující řešení na konci stavového DFS prostoru. BB-DFS: Ze vstupních dat lze vypočítat dolní mez na cenu řešení. Pokud ji žádné řešení nedosahuje, je nutné prohledávat celý prostor. Jinak je výpočet ukončen nalezením prvního řešení s cenou rovnou dolní mezi. Hloubka prohledávaného stavového prostoru 1. Omezená hloubka prohledávaného stavového prostoru Počet kroků nutných pro dosažení všech řešení může být stejný anebo hloubka prohledávaného stavového prostoru, tudíž i maximální výška zásobníku, může být různá pro různá řešení, ale je zaručeně omezena a hodnota této meze závisí na vstupních datech. Vyskytuje se jak u SB-DFS, tak u BB-DFS. 2. Neomezená hloubka prohledávaného stavového prostoru Délka cesty z počátečního do přípustného koncového stavu není buď známa nebo vznikají cykly (při DFS procházení stavového prostoru se generují stejné stavy). V některých úlohách se setkáme s BB-DFS s neomezenou hloubkou hledání, ve kterém existuje pouze jediný přípustný koncový stav, tzv. cílový stav, kterého chceme dosáhnout v minimálním počtu kroků. Jedná se tedy o BB-DFS, ve kterém je cena, kterou ohodnocujeme řešení a kterou minimalizujeme, rovna délce nebo ceně cesty v stavovém stromu nutné pro dosažení cílového stavu. Pro nalezení konečné cesty k řešení je obvykle nutno použít omezení za pomoci horní meze ceny řešení. U těchto úloh buď dokážeme vypočítat těsnou horní mez na hloubku prohledávaného prostoru (zásobníku), kde se hledaný stav musí vyskytovat, nebo musíme provést odhad této horní meze (zásobníku), a zacyklení zabráníme omezením hloubky prohledávání na tuto mez bez újmy na řešitelnost úlohy. Obecný algoritmus pro paralelní DFS Ve všech úlohách uvažujeme paralelní počítač s distribuovanou pamětí s p procesory označovanými P 1, P 2,, P p, propojených propojovací sítí topologií úplný graf (UG) (čili každá dvojice procesorů je přímo propojena). Efektivní implementace prohledávání stavového prostoru pomocí více procesorů by měla splňovat následující podmínky: 1. 2. Všechny procesory by měly být pokud možno neustále vytíženy prohledáváním pokud možno disjunktních částí stavového prostoru. V případě, že je nalezeno první (u SB-DFS) nebo optimalní (u BB-DFS) řešení, je paralelní výpočet ukončen pomocí zprávy typu jeden-všem (one-to-all broadcast, OAB).

ekvencni algoritmy prohledavani do hloubky (Depth-first search, DFS... of 7 22.12.2011 13:10 3. V případě nutnosti prohledat celý stavový prostor, protože neznáme dolní mez ceny řešení (u BB-DFS), procesory prohledají jim přidělené podprostory a výpočet bude ukončen algoritmem pro detekci ukončení (TTDA). Splnění bodu 1) předpokládá existenci lokalních zásobníků procesorů a dynamické vyvažování výpočetní zátěže (load balancing). Vyvažování zátěže je implementováno pomocí 2 algoritmů: algoritmus pro dělení zásobníku (ADZ) a algoritmus pro hledání dárce (AHD), kterými nečinný procesor s prázdným lokálním zásobníkem (stav I=idle) získává práci od vhodného dárce, což je aktivní procesor s neprázdným zásobníkem (stav A=active), jehož zásobník odpovídá dostatečně velkému stavovému podprostoru. Na počátku procesor P.. 1 zná počet procesorů p, na kterých se úloha bude řešit. Provede dostatečný počet expanzí počátečního stavu, rozdělí svůj zásobník na p částí a rozešle jednotlivé části ostatním procesorům. Všechny procesory začnou prohledávat svůj přidělený podprostor a přitom realizují programovou smyčku naznačenou na tomto obrázku. Aktivní procesor, který vyčerpá svůj přidělený díl práce, se stane nečinný a pomocí algoritmu pro hledání dárce AHD vybere dárce a pošle mu žádost o práci. Pokud mu dárce práci pošle, přepne se zpět do stavu aktivní. Pokud se mu vrátí odmítnutí, vše se opakuje. Procesor ve stavu nečinný musí take periodicky kontrolovat, zda nemá ve frontě žádosti o práci, na které odpovídá odmítnutím, nebo zprávy o nalezení řešení jiným procesorem. V případě, že se jedná o optimální řešení, jsou to v podstatě žádosti o ukončení výpočtu. Aktivní procesor provádí fixní objem práce nad lokálním zásobníkem (expanduje určitý daný počet stavu na lokálním zásobníku) a pak kontroluje frontu zpráv. V té mohou být žádosti o práci, informace o nalezení řešení jiným procesorem a žádosti o ukončení výpočtu. Pořadí, ve kterém zprávy z fronty vybírá, záleží na typu DFS. Například nemá smysl dělit práci, je-li již ve frontě zpráva, že první/optimální řešení bylo nalezeno. Aktivní procesor zpracovává žádosti o práci následujícím způsobem: Zjistí počet žádostí ve frontě. Nechť je jich k>=1. Pak algoritmem ADZ rozdělí svůj zásobník na k+1 částí a k částí rozešle k žadatelům. Sám pak pokračuje ve výpočtu se zbytkem zásobníku. Pokud má sám nebo by mu zbylo jen podprahové množství práce (položky zásobníku nad prahem řezné výšky), část požadavků nebo všechny požadavky odmítne. Algoritmy pro hledání dárce (AHD)

Sekvencni algoritmy prohledavani do hloubky (Depth-first search, DFS... 4 of 7 22.12.2011 13:10 Existuje několik algoritmů pro hledání dárce. V rámci semestrálních projektů uvažujeme následující 3: 1. ACZ-AHD (asynchroní cyklické žádosti): Každý procesor si udržuje lokální čítač D, kde 1 D p, označující potenciálního dárce. Procesor s prázdným zásobníkem pošle žádost o práci procesoru P D a inkrementuje čítač D mod p. Může se stát, že jeden a tentýž procesor obdrží několik žádostí o práci. 2. GCZ-AHD (globální cyklické žádosti): Procesor P 1 centrálně udržuje globální čítač D. Kdykoli nějaký procesor potřebuje práci, požádá procesor P 1 o aktuální hodnotu D. P 1 poté inkrementuje D modulo p. 3. NV-AHD (náhodné výzvy): Procesor P i hledající práci si náhodně generuje číslo potenciálního dárce z množiny {1,..,p}-{i}. Generátor náhodných čísel nainicializujte v každém procesoru jiným semínkem. Algoritmy pro dělení zásobníku (ADZ) Zásobník je zobrazen obráceně, dno nahoře, vrchol dole, v souladu s odpovídajícím stavovým stromem. Má-li dárce za úkol rozdělit svůj zásobník na k+1 části, kde k je počet žadatelů o práci v jeho frontě (v praxi bude k řadu jednotek), pak provede dělení na nejbližší možné 1/2 i -tiny opakovaným dělením zásobníku na poloviny (i je horní celá část z log 2 (k+1)). Např. je-li k=2, pak si nechá polovinu a každému žadateli pošle jednu čtvrtinu. Je-li k=5, pak si nechá jednu čtvrtinu, prvnímu žadateli pošle jednu čtvrtinu a zbývajícím čtyřem žadatelům pošle po jedné osmině. Přestože není velikost stavového prostoru skrývajícího se za nerozvinutými stavy zásobníku odhadnutelná, předpokládáme, že podprostory jsou tím větší, čím je neexpandovaný stav blíže dnu zásobníku. Pro danou úlohu je třeba stanovit prah řezné výšky H, což je maximální výška zásobníku, do které se bude dělení provádět. Tuto výšku je pro danou úlohu nutno stanovit experimentalně jako funkci velikosti vstupních dat. Čili dělení se neprovádí, pokud by dělením vznikl zásobník pouze se stavy ve výšce větší než H. Není-li dárce schopen nalézt dost práce pro všech k čekajících žadatelů, uspokojí pouze první část a zbytek odmítne. Smysl dávají 3 strategie pro půlení zásobníku. Vysvětlíme si je na příkladu s počátečním stavem zásobníku dárce dle následujícího obrázku.

Sekvencni algoritmy prohledavani do hloubky (Depth-first search, DFS... 5 of 7 22.12.2011 13:10 1. D-ADZ (půlení u dna). Žadatel obdrží zásobník s jednou polovinou stavu co nejblíže dnu. 2. R-ADZ (půlení na prahu rezne vysky). Žadatel obdrží polovinu stavu z výšky H či menší. 3. D-R-ADZ (půlení všech stavů mezi dnem a prahem řezné výšky). Žadatel obdrží zásobník vznikly odříznutím poloviny stavu mezi dnem a prahem řezné výšky zásobníku H.

ekvencni algoritmy prohledavani do hloubky (Depth-first search, DFS... of 7 22.12.2011 13:10 Strategie průchodu a ukončování paralelního DFS Zpracování řešení a ukončování výpočtu závisí na typu DFS algoritmu. Paralelní DFS s jednoduchým návratem (PSB-DFS) Pokud má úloha alespoň jedno řešení, procesor, který nalezne první řešení, rozešle toto řešení spolu s žádostí o ukončení výpočtu všem procesorům. Pokud úloha řešení nemá, pak procesory pomocí algoritmu pro vyvažování zátěže společně prohledají celý stavový prostor, vyprázdní své zásobníky a distribuovaně provedou ukončení výpočtu pomocí algoritmu ADUV. Paralelní BB-DFS s vždy úplným prohledáváním stavového prostoru (PBB-DFS-V) Všechny procesory vědí nebo se dozvědí hodnotu horní meze ceny řešení a hodnota dolní meze není známa. Pak stačí, aby si každý procesor lokálně udržoval informaci o svém dosud nejlepším řešení. Po vyprázdnění všech zásobníků se provede distribuované ukončení výpočtu pomocí algoritmu ADUV a pak pomocí paralelní redukce se ze všech nejlepších lokálních řešení vybere globálně nejlepší. Paralelní BB-DFS s prohledáváním DDE stavového prostoru (PBB-DFS-D) Všechny procesory vědí nebo se dozvědí počáteční hodnotu horní i dolní meze ceny řešení. Budeme používat 2 strategie, jak minimalizovat prohledávání stavového prostoru. Lokální (L-PBB-DFS-D): Každý procesor si udržuje informaci o lokálně nejlepším řešení a pokud řešení s cenou rovnou dolní mezi neexistuje, bude prohledávat celý stavový prostor a po distribuovaném ukončení výpočtu pomocí algoritmu ADUV bude globálně nejlepší řešení ziskano paralelni redukci lokalnich reseni. Existuje-li reseni s cenou rovnou dolni mezi, procesor, který jej nalezne, ukončí výpočet vysláním zprávy typu jeden-všem. Globální (G-PBB-DFS-D):

ekvencni algoritmy prohledavani do hloubky (Depth-first search, DFS... of 7 22.12.2011 13:10 Každý procesor, který nalezne lepší řešení než jemu známé nejlepší řešení, neaktualizuje pouze svou informaci, ale rozešle zprávu typu jeden-všem ostatním procesorům, kteří si nastaví informaci o dosud nejlepším řešení. Je-li to optimalní řešení, pak opět dojde k ukončení výpočtu. Jinak proběhne po vyprázdnění všech zásobníků distribuované ukončení výpočtu pomocí algoritmu ADUV bez nutnosti nasledné redukce lokálních řešení. V porovnání s lokalní strategií vede tato strategie k vyšší komunikační režii, ale zase dovoluje eliminovat prohledávání větší části stavového prostoru, protože každy procesor zna momentálně nejlepší globální řešení a častěji pozná zbytečnost prohledávání v podprostorech. Algoritmus pro distribuované ukončení paralelního výpočtu (ADUV) Každý procesor může být obarven 2 barvami, B nebo W. Na počátku mají procesory barvu W. Pro zjištění, zda může celý výpočet skončit, cirkuluje mezi procesory pešek, který může být také dvou barev, B a W. Algoritmus ukončení funguje takto: 1. 2. 3. 4. 5. Jakmile se první procesor P stane idle, nastaví svou barvu na W a pošle peška barvy W 1 procesoru P. 2 Jestliže procesor P pošle práci procesoru P, kde i>j, pak P nastaví svou barvu na B. i j i Jestliže P obdrží peška, pak má-li P barvu B, nastaví barvu peška na B. Jakmile se P stane i i i idle, pošle peška po kružnici procesoru P a nastaví svoji barvu na W. i+1 Pokud P obdrží zpět peška barvy W, je možné výpočet ukončit. Pokud má pešek barvu B, P 1 1 zahájí nové kolo vysláním barvy W procesoru P. 2 Ukončení je detekováno, jakmile P obdrží zpět peška v barvě W. 1 /mnt/www/courses/mi-par/data/pages/labs/prohledavani_do_hloubky.txt Poslední úprava: 2010/09/17 12:02 autor: tvrdik