IGraph ComputeReflexiveTransitiveClosure( IGraph firstGraph) { Closure closureComputer = new Closure( firstGraph ); ListGraph closureGraph = new ListGraph( firstGraph ); closureComputer.ReflexiveTransitive(); return closureGraph; }
IGraph CreateFirstLevelGraph( Hashtable sets) { ListGraph firstLevelGraph = new ListGraph(); Vertex emptyVertex = firstLevelGraph.AddVertex( Terminal.Empty ); foreach ( object setObject in sets ) { FirstSet firstSet = (FirstSet) setObject; Vertex nonTerminal = firstLevelGraph.AddVertex( firstSet ); if ( firstSet.HasEmpty ) { firstLevelGraph.AddEdge( nonTerminal, emptyVertex ); } } return firstLevelGraph; }
public ShortestPath( ListGraph graph) { _graph = graph; }