code: 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);
      }
docs: @param array<string, Vertex[]> $predecesEdgesArray key is the destination vertex name and value is an array of possible origin vertex
  
  @return Edge\Base[]