Skip to content

Latest commit

 

History

History
74 lines (37 loc) · 2.04 KB

Toteutusdokumentti.md

File metadata and controls

74 lines (37 loc) · 2.04 KB

Toteutusdokumentti

Yleisrakenne

Ohjelman rakenne tällä hetkellä:

  • "pathfinding" paketti: PathFinding(Main)

  • "pathfinding.DataStructures" paketti: ArrayList, HashMap, HashSet, Node, PriorityQueue

  • "pathfinding.PathFinders" paketti: PathFinder (rajapinta), AStar, JPS

  • "pathfinding.Visuals" paketti: MapReader, UI, VisualRep

Aika- ja tilavaativuudet

Koska JPS on toinen versio A*:ista, niin molemmilla on samat Aika- ja tilavaativuudet.

Aikavaativuus on sama kuin Dijkstralla, mutta se riippuu mitä heuristiikkaa käyttää. Tässä tapauksessa käytän priority queue:tä, niin

pahimman tapauksen aikavaativuus on: O(|E| + |V|log|V|), missä E on "kaaret" ja V on "solmut".

Pahimman tapauksen tilavaativuus: O(|E| + |V|log|V|), missä E on "kaaret" ja missä V on "solmut".

Suorituskyky vertailu

Testasin A*:in ja JPS:sän suorituskyvyn suorittamalla molemmat 10 kertaa käyttäen eri karttoja.

Testattu 27.4.2018

test.map

A* suorituskyky keskiarvo: 11.8ms.

alt text

JPS suorituskyky keskiarvo: 9.1ms.

alt text

maze2.map

Testattu 8.5.2018

A* suorituskyky keskiarvo: 71.4ms.

alt text

JPS suorituskyky keskiarvo: 58.3ms.

alt text

Lähteet

Wikipedian sivu A*:ista

Daniel Harabor ja Alban Grastien dokumentti JPS:stä

.maps tiedostojen layout

Wikipedian sivu Dynamic Arrays:istä

Wikipedian sivu Hash Table:istä