Пример #1
0
 private function buildAlgorithm($syntax)
 {
     $grid = $this->parseGrid($syntax);
     $distance = new Distances\Euclidean();
     $algorithm = new Algorithms\ShortestDistance\Dijkstra($distance);
     $algorithm->setGrid($grid);
     return $algorithm;
 }
 protected function computeGraph($syntax)
 {
     $converter = new ASCIISyntax();
     $grid = $converter->convertToGrid($syntax);
     $distance = new Distances\Euclidean();
     $algorithmShortestDistance = new Algorithms\ShortestDistance\Dijkstra($distance);
     $algorithmShortestDistance->setGrid($grid);
     $matrix = $converter->convertToMatrix($syntax);
     $nodes = $converter->findAndCreateNodes($matrix, 'o');
     $graph = new NodeGraph($nodes);
     if (count($nodes) < 2) {
         return $graph;
     }
     $pairs = new Pairs($nodes);
     foreach ($pairs as $pair) {
         list($source, $target) = $pair;
         $length = $algorithmShortestDistance->computeLength($source, $target);
         $graph->createEdgeBetween($source, $target, $length);
     }
     return $graph;
 }