src/MultiDijkstra.php
public static function getCheapestPathFromPredecesArray(Vertex $startVertex, Vertex $endVertex, array $predecesEdgesArray)
    {
        $edges = [];
        $currentVertex = $endVertex;
        while ($currentVertex !== $startVertex) {
            $predecessorEdges = $predecesEdgesArray[$currentVertex->getId()];
            if (count($predecessorEdges) > 1) {
                throw new MultiDijkstraAmbiguityException("There are many possible shortest paths to link vertex '".$startVertex->getId()."' to '".$endVertex->getId()."'");
            }
            /* @var $edge \Fhaculty\Graph\Edge\Base */
            $edge = $predecessorEdges[0];
            $edges[] = $edge;
            if ($currentVertex === $edge->getVerticesStart()->getVertexFirst()) {
                $currentVertex = $edge->getVerticesTarget()->getVertexFirst();
            } else {
                $currentVertex = $edge->getVerticesStart()->getVertexFirst();
            }
        }

        return array_reverse($edges);
    }
public static function getCheapestPathFromPredecesArray(Vertex $startVertex, Vertex $endVertex, array $predecesEdgesArray)
    {
        $edges = [];
        $currentVertex = $endVertex;
        while ($currentVertex !== $startVertex) {
            $predecessorEdges = $predecesEdgesArray[$currentVertex->getId()];
            if (count($predecessorEdges) > 1) {
                throw new MultiDijkstraAmbiguityException("There are many possible shortest paths to link vertex '".$startVertex->getId()."' to '".$endVertex->getId()."'");
            }
            /* @var $edge \Fhaculty\Graph\Edge\Base */
            $edge = $predecessorEdges[0];
            $edges[] = $edge;
            if ($currentVertex === $edge->getVerticesStart()->getVertexFirst()) {
                $currentVertex = $edge->getVerticesTarget()->getVertexFirst();
            } else {
                $currentVertex = $edge->getVerticesStart()->getVertexFirst();
            }
        }

        return array_reverse($edges);
    }
public static function getCheapestPathFromPredecesArray ( Vertex $ startVertex , Vertex $ endVertex , array $ predecesEdgesArray ) { $ edges = [ ] ; $ currentVertex = $ endVertex ; while ( $ currentVertex !== $ startVertex ) { $ predecessorEdges = $ predecesEdgesArray [ $ currentVertex -> getId ( ) ] ; if ( count ( $ predecessorEdges ) > 1 ) { throw new MultiDijkstraAmbiguityException ( "There are many possible shortest paths to link vertex '" . $ startVertex -> getId ( ) . "' to '" . $ endVertex -> getId ( ) . "'" ) ; } /* @var $edge \Fhaculty\Graph\Edge\Base */ $ edge = $ predecessorEdges [ 0 ] ; $ edges [ ] = $ edge ; if ( $ currentVertex === $ edge -> getVerticesStart ( ) -> getVertexFirst ( ) ) { $ currentVertex = $ edge -> getVerticesTarget ( ) -> getVertexFirst ( ) ; } else { $ currentVertex = $ edge -> getVerticesStart ( ) -> getVertexFirst ( ) ; } } return array_reverse ( $ edges ) ; }
@param array<string, Vertex[]> $predecesEdgesArray key is the destination vertex name and value is an array of possible origin vertex

@return Edge\Base[]
@param array<string Vertex [] > $predecesEdgesArray key is the destination vertex name and value is an array of possible origin vertex