Java - bonusová úloha
Zadání:
- Do balíku cz.muni.fi.pb162.project.geometry přidejte třídu Graph reprezentující neorientovaný graf. Uzly grafu budou uzly mnohoúhelníku s pojmenovanými hranami, tj. LabeledPolygon, spojnice mezi sousedními vrcholy však nebudeme používat. Místo nich přidejte třídu Edge, reprezentující hranu mezi dvěma uzly. Ve třídě Graph budou následující metody:
- getNodes( - vrátí uzly
- getEdges() - vrátí hrany
- void read(InputStream is) throws IOException - načte hrany ze vstupního proudu (pro načtení uzlů použijeme read z LabeledPolygon), formát zjistíte pohledem do souboru edges.txt.
- void read(File file) throws IOException - načte hrany ze souboru
- toString() - vrátí textový popis grafu
- Vytvořte třídu Edge implementující hranu mezi dvěma uzly. Nic jiného o hraně nevíme, vzdálenost budeme počítat euklidovskou (s použitím dříve implementovaných metod). Dopište do třídy metody:
- Vertex2D getFrom() a Vertex2D getTo(), které budou vracet počáteční/koncový uzel
- double length() - vrací délku hrany
- toString() - vrátí textový popis hrany ve tvaru [uzel-uzel] (délka)
- Implementujte nějaký algoritmus pro vyhledání nejkratší cesty. Pokud potřebujete, můžete přidat do třídy Vertex2D atributy, settery a gettery. Nepoužívejte žádné knihovny třetích stran. Nepoužívejte jiné třídy než ty, které jsme probírali v kurzu.
-
Třída Demo slouží pro vaši kontrolu funkčnosti kódu a vykreslení mapy. Měla by načíst mapu ze dvou souborů nodes.txt a edges.txt, vypočítat a vypsat nejkratší cestu, vykreslit mapu (nejkratší cesta se nevykresluje).