@@ -4,7 +4,7 @@ Zadání semestrální práce je vytvořit program řešící problém nalezení
Pro tento problém je nejlepším algoritmem **Floyd-Warshallův algoritmus**. Tento je implementován jak v sériové verzi, tak v paralelní verzi.
Floy-Warshallův algoritmus používá princip dynamického programování, kdy iterativně zlepšuje možné cesty mezi všemi dvojicemi vrcholů přes jiný vrchol k. K tomu používá 2D matici o velikosti NxN, kde N je počet vrcholů grafu a je inicializovaná jako takzvaná matice sousednosti. To znamená, že na příslušných indexech i,j je cena hrany z vrcholu i do vrcholu j. Pokud taková hrana neexistuje, určíme cenu jako nekonečno.
Floyd-Warshallův algoritmus používá princip dynamického programování, kdy iterativně zlepšuje možné cesty mezi všemi dvojicemi vrcholů přes jiný vrchol k. K tomu používá 2D matici o velikosti NxN, kde N je počet vrcholů grafu a je inicializovaná jako takzvaná matice sousednosti. To znamená, že na příslušných indexech i,j je cena hrany z vrcholu i do vrcholu j. Pokud taková hrana neexistuje, určíme cenu jako nekonečno.
Paralelní verze používá C++ knihovnu pro práci s vlákny spolu s dalšími standardními knihovnami, které jsou použity i v sériové (jednovláknové) implementaci. Paralelní verze je implementována pomocí takzvané bariéry. Aby byla vlákna správně synchronizována, je nutné aby v kritické sekci kódu na sebe počkala. Poté může algoritmu pokračovat další iterací. Tento přístup přesně splňuje bariéra, kdy všechna vlákna čekají, dokud i poslední z nich není hotové s výpočtem.
...
...
@@ -13,7 +13,7 @@ Po zkompilování pomocí přiloženého *CMakeLists.txt* souboru lze program pu
```
./sem <INPUT_FILE> <OUTPUT_FILE>
```
Tento spustí sériovou verzi pro výpočet nejkratších cest grafu načteného se vstupního souboru (INPUT\_FILE) a vypíše výsledek do výstupního souboru (OUTPUT\_FILE).
Tento spustí sériovou verzi pro výpočet nejkratších cest grafu načteného se vstupního souboru (INPUT\_FILE) a vypíše výsledek do výstupního souboru (OUTPUT\_FILE). Argument OUTPUT_FILE je volitelný, pokud jej vynecháme, výsledek se vypíše na standardní výstup.
Paralelní verzi lze pustit přidáním přepínače `--parallel`. Konkrétní popis spouštění lze vypsat pomocí