public MultiSourceSinkGraphAugmentorAlgorithm(IMutableBidirectionalGraph <TVertex, TEdge> visitedGraph) : this(visitedGraph, FactoryCompiler.GetVertexFactory <TVertex>(), FactoryCompiler.GetEdgeFactory <TVertex, TEdge>() ) { }
public void GraphWithSelfEdges( [UsingLinear(2, 9)] int i, [UsingLinear(0, 10)] int j ) { if (i == 0 && j == 0) { return; } Random rnd = new Random(); g = new AdjacencyGraph <int, Edge <int> >(true); RandomGraphFactory.Create <int, Edge <int> >(g, new IntVertexFactory(), FactoryCompiler.GetEdgeFactory <int, Edge <int> >(), rnd, i, j, true); algo = new BreadthFirstSearchAlgorithm <int, Edge <int> >(g); try { algo.InitializeVertex += new VertexEventHandler <int>(this.InitializeVertex); algo.DiscoverVertex += new VertexEventHandler <int>(this.DiscoverVertex); algo.ExamineEdge += new EdgeEventHandler <int, Edge <int> >(this.ExamineEdge); algo.ExamineVertex += new VertexEventHandler <int>(this.ExamineVertex); algo.TreeEdge += new EdgeEventHandler <int, Edge <int> >(this.TreeEdge); algo.NonTreeEdge += new EdgeEventHandler <int, Edge <int> >(this.NonTreeEdge); algo.GrayTarget += new EdgeEventHandler <int, Edge <int> >(this.GrayTarget); algo.BlackTarget += new EdgeEventHandler <int, Edge <int> >(this.BlackTarget); algo.FinishVertex += new VertexEventHandler <int>(this.FinishVertex); parents.Clear(); distances.Clear(); currentDistance = 0; sourceVertex = RandomGraphFactory.GetVertex(g, rnd); foreach (int v in g.Vertices) { distances[v] = int.MaxValue; parents[v] = v; } distances[sourceVertex] = 0; algo.Compute(sourceVertex); CheckBfs(); } finally { algo.InitializeVertex -= new VertexEventHandler <int>(this.InitializeVertex); algo.DiscoverVertex -= new VertexEventHandler <int>(this.DiscoverVertex); algo.ExamineEdge -= new EdgeEventHandler <int, Edge <int> >(this.ExamineEdge); algo.ExamineVertex -= new VertexEventHandler <int>(this.ExamineVertex); algo.TreeEdge -= new EdgeEventHandler <int, Edge <int> >(this.TreeEdge); algo.NonTreeEdge -= new EdgeEventHandler <int, Edge <int> >(this.NonTreeEdge); algo.GrayTarget -= new EdgeEventHandler <int, Edge <int> >(this.GrayTarget); algo.BlackTarget -= new EdgeEventHandler <int, Edge <int> >(this.BlackTarget); algo.FinishVertex -= new VertexEventHandler <int>(this.FinishVertex); } }
public AllVerticesGraphAugmentorAlgorithm( IMutableVertexAndEdgeListGraph <TVertex, TEdge> visitedGraph ) : this(visitedGraph, FactoryCompiler.GetVertexFactory <TVertex>(), FactoryCompiler.GetEdgeFactory <TVertex, TEdge>() ) { }
public MaximumBipartiteMatchingAlgorithm( IMutableVertexAndEdgeListGraph <TVertex, TEdge> visitedGraph ) : this(visitedGraph, FactoryCompiler.GetVertexFactory <TVertex>(), FactoryCompiler.GetEdgeFactory <TVertex, TEdge>() ) { }
public GraphBalancerAlgorithm( IMutableBidirectionalGraph <TVertex, TEdge> visitedGraph, TVertex source, TVertex sink ) : this(visitedGraph, source, sink, FactoryCompiler.GetVertexFactory <TVertex>(), FactoryCompiler.GetEdgeFactory <TVertex, TEdge>() ) { }
public static void Create <TVertex, TEdge>( IMutableVertexAndEdgeListGraph <TVertex, TEdge> g, Random rnd, int vertexCount, int edgeCount, bool selfEdges ) where TEdge : IEdge <TVertex> { Create <TVertex, TEdge>( g, FactoryCompiler.GetVertexFactory <TVertex>(), FactoryCompiler.GetEdgeFactory <TVertex, TEdge>(), rnd, vertexCount, edgeCount, selfEdges ); }