diff --git a/docs/api/Advanced.Algorithms.Graph.HopcroftKarpMatching-1.html b/docs/api/Advanced.Algorithms.Graph.HopcroftKarpMatching-1.html
index d0c26adb..276b5823 100644
--- a/docs/api/Advanced.Algorithms.Graph.HopcroftKarpMatching-1.html
+++ b/docs/api/Advanced.Algorithms.Graph.HopcroftKarpMatching-1.html
@@ -147,7 +147,7 @@
Declaration
-
public List<MatchEdge<T>> GetMaxBiPartiteMatching(IGraph<T> graph)
+
public HashSet<MatchEdge<T>> GetMaxBiPartiteMatching(IGraph<T> graph)
Parameters
@@ -176,7 +176,7 @@ Returns
- List<MatchEdge<T>> |
+ HashSet<MatchEdge<T>> |
|
diff --git a/docs/api/Advanced.Algorithms.Graph.MatchEdge-1.html b/docs/api/Advanced.Algorithms.Graph.MatchEdge-1.html
index 1e34d7df..a7770742 100644
--- a/docs/api/Advanced.Algorithms.Graph.MatchEdge-1.html
+++ b/docs/api/Advanced.Algorithms.Graph.MatchEdge-1.html
@@ -96,18 +96,12 @@ Inherited Members
-
-
@@ -222,6 +216,79 @@ Property Value
+ Methods
+
+
+
+
+ Equals(Object)
+
+
+ Declaration
+
+
public override bool Equals(object obj)
+
+ Parameters
+
+
+
+ Type |
+ Name |
+ Description |
+
+
+
+
+ Object |
+ obj |
+ |
+
+
+
+ Returns
+
+
+
+ Type |
+ Description |
+
+
+
+
+ Boolean |
+ |
+
+
+
+ Overrides
+
+
+
+
+ GetHashCode()
+
+
+ Declaration
+
+
public override int GetHashCode()
+
+ Returns
+
+
+
+ Type |
+ Description |
+
+
+
+
+ Int32 |
+ |
+
+
+
+ Overrides
+
diff --git a/docs/api/Advanced.Algorithms.Graph.html b/docs/api/Advanced.Algorithms.Graph.html
index fdd5efe9..1d34ea12 100644
--- a/docs/api/Advanced.Algorithms.Graph.html
+++ b/docs/api/Advanced.Algorithms.Graph.html
@@ -130,6 +130,9 @@
A ford-fulkerson max flox implementation on weighted directed graph using
adjacency list representation of graph and residual graph.
+
+
+ Compute Max BiParitite Edges using Hopcroft Karp algorithm.
A Johnson's shortest path algorithm implementation.
diff --git a/docs/api/toc.html b/docs/api/toc.html
index 5e228881..a67dd36a 100644
--- a/docs/api/toc.html
+++ b/docs/api/toc.html
@@ -397,6 +397,9 @@
FordFulkersonMaxFlow<T, W>
+
+ HopcroftKarpMatching<T>
+
IAStarHeuristic<T, W>
diff --git a/docs/index.json b/docs/index.json
index d4a575d5..be6b2fd3 100644
--- a/docs/index.json
+++ b/docs/index.json
@@ -549,10 +549,15 @@
"title": "Class FordFulkersonMaxFlow | Advanced Algorithms",
"keywords": "Class FordFulkersonMaxFlow A ford-fulkerson max flox implementation on weighted directed graph using adjacency list representation of graph and residual graph. Inheritance Object FordFulkersonMaxFlow Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Advanced.Algorithms.Graph Assembly : Advanced.Algorithms.dll Syntax public class FordFulkersonMaxFlow where W : IComparable Type Parameters Name Description T W Constructors FordFulkersonMaxFlow(IFlowOperators) Declaration public FordFulkersonMaxFlow(IFlowOperators operator) Parameters Type Name Description IFlowOperators operator Methods ComputeMaxFlow(IDiGraph, T, T) Compute max flow by searching a path and then augmenting the residual graph until no more path exists in residual graph with possible flow. Declaration public W ComputeMaxFlow(IDiGraph graph, T source, T sink) Parameters Type Name Description IDiGraph graph T source T sink Returns Type Description W ComputeMaxFlowAndReturnFlowPath(IDiGraph, T, T) Return all flow Paths. Declaration public List> ComputeMaxFlowAndReturnFlowPath(IDiGraph graph, T source, T sink) Parameters Type Name Description IDiGraph graph T source T sink Returns Type Description List < List >"
},
+ "api/Advanced.Algorithms.Graph.HopcroftKarpMatching-1.html": {
+ "href": "api/Advanced.Algorithms.Graph.HopcroftKarpMatching-1.html",
+ "title": "Class HopcroftKarpMatching | Advanced Algorithms",
+ "keywords": "Class HopcroftKarpMatching Compute Max BiParitite Edges using Hopcroft Karp algorithm. Inheritance Object HopcroftKarpMatching Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Advanced.Algorithms.Graph Assembly : Advanced.Algorithms.dll Syntax public class HopcroftKarpMatching Type Parameters Name Description T Methods GetMaxBiPartiteMatching(IGraph) Returns a list of Max BiPartite Match Edges. Declaration public HashSet> GetMaxBiPartiteMatching(IGraph graph) Parameters Type Name Description IGraph graph Returns Type Description HashSet < MatchEdge >"
+ },
"api/Advanced.Algorithms.Graph.html": {
"href": "api/Advanced.Algorithms.Graph.html",
"title": "Namespace Advanced.Algorithms.Graph | Advanced Algorithms",
- "keywords": "Namespace Advanced.Algorithms.Graph Classes AllPairShortestPathResult All pairs shortest path algorithm result object. AStarShortestPath A* algorithm implementation using Fibonacci Heap. BellmanFordShortestPath A Bellman Ford algorithm implementation. BiDirectional A BiDirectional Path Search on DiGraph. BiPartiteMatching Compute Max BiParitite Edges using Ford-Fukerson algorithm. BreadthFirst Bread First Search implementation. Bridge The bridge object. CycleDetector Cycle detection using Depth First Search. DepthFirst Depth First Search. DepthFirstTopSort Find Toplogical order of a graph using Depth First Search. DijikstraShortestPath A dijikstra algorithm implementation using Fibonacci Heap. EdmondKarpMaxFlow An Edmond Karp max flow implementation on weighted directed graph using adjacency list representation of graph and residual graph. FloydWarshallShortestPath A floyd-warshall shortest path algorithm implementation. FordFulkersonMaxFlow A ford-fulkerson max flox implementation on weighted directed graph using adjacency list representation of graph and residual graph. JohnsonsShortestPath A Johnson's shortest path algorithm implementation. KahnsTopSort Find Toplogical order of a graph using Kahn's algorithm. KosarajuStronglyConnected A Kosaraju Strong Connected Component Algorithm Implementation. Kruskals A Kruskal's alogorithm implementation using merge sort and disjoint set. MatchEdge The match result object. MColorer An m-coloring algorithm implementation. MColorResult M-coloring result object. MinCut Compute minimum cut edges of given graph using Edmond-Karps improved Ford-Fulkerson Max Flow Algorithm. MinCutEdge Minimum cut result object. MinVertexCover A minimum vertex conver algorithm implementation. MSTEdge Minimum spanning tree edge object. Prims A Prims algorithm implementation. PushRelabelMaxFlow A Push-Relabel algorithm implementation. ShortestPathResult Shortest path result object. TarjansArticulationFinder Articulation point finder using Tarjan's algorithm. TarjansBiConnected Finds if a graph is BiConnected. TarjansBridgeFinder Bridge finder using Tarjan's algorithm. TarjansStronglyConnected Strongly connected using Tarjan's algorithm. TravellingSalesman Uses dynamic programming for a psuedo-polynomial time runTime complexity for this NP hard problem. Interfaces IAStarHeuristic Search heuristic used by A* search algorithm. IBiPartiteMatchOperators Generic operator interface required by BiPartite matching algorithm. IFlowOperators Operators to deal with generic Add, Substract etc on edge weights for flow algorithms such as ford-fulkerson algorithm. IJohnsonsShortestPathOperators A concrete implementation of this interface is required by Johnson's algorithm. IShortestPathOperators Generic operators interface required by shorted path algorithms."
+ "keywords": "Namespace Advanced.Algorithms.Graph Classes AllPairShortestPathResult All pairs shortest path algorithm result object. AStarShortestPath A* algorithm implementation using Fibonacci Heap. BellmanFordShortestPath A Bellman Ford algorithm implementation. BiDirectional A BiDirectional Path Search on DiGraph. BiPartiteMatching Compute Max BiParitite Edges using Ford-Fukerson algorithm. BreadthFirst Bread First Search implementation. Bridge The bridge object. CycleDetector Cycle detection using Depth First Search. DepthFirst Depth First Search. DepthFirstTopSort Find Toplogical order of a graph using Depth First Search. DijikstraShortestPath A dijikstra algorithm implementation using Fibonacci Heap. EdmondKarpMaxFlow An Edmond Karp max flow implementation on weighted directed graph using adjacency list representation of graph and residual graph. FloydWarshallShortestPath A floyd-warshall shortest path algorithm implementation. FordFulkersonMaxFlow A ford-fulkerson max flox implementation on weighted directed graph using adjacency list representation of graph and residual graph. HopcroftKarpMatching Compute Max BiParitite Edges using Hopcroft Karp algorithm. JohnsonsShortestPath A Johnson's shortest path algorithm implementation. KahnsTopSort Find Toplogical order of a graph using Kahn's algorithm. KosarajuStronglyConnected A Kosaraju Strong Connected Component Algorithm Implementation. Kruskals A Kruskal's alogorithm implementation using merge sort and disjoint set. MatchEdge The match result object. MColorer An m-coloring algorithm implementation. MColorResult M-coloring result object. MinCut Compute minimum cut edges of given graph using Edmond-Karps improved Ford-Fulkerson Max Flow Algorithm. MinCutEdge Minimum cut result object. MinVertexCover A minimum vertex conver algorithm implementation. MSTEdge Minimum spanning tree edge object. Prims A Prims algorithm implementation. PushRelabelMaxFlow A Push-Relabel algorithm implementation. ShortestPathResult Shortest path result object. TarjansArticulationFinder Articulation point finder using Tarjan's algorithm. TarjansBiConnected Finds if a graph is BiConnected. TarjansBridgeFinder Bridge finder using Tarjan's algorithm. TarjansStronglyConnected Strongly connected using Tarjan's algorithm. TravellingSalesman Uses dynamic programming for a psuedo-polynomial time runTime complexity for this NP hard problem. Interfaces IAStarHeuristic Search heuristic used by A* search algorithm. IBiPartiteMatchOperators Generic operator interface required by BiPartite matching algorithm. IFlowOperators Operators to deal with generic Add, Substract etc on edge weights for flow algorithms such as ford-fulkerson algorithm. IJohnsonsShortestPathOperators A concrete implementation of this interface is required by Johnson's algorithm. IShortestPathOperators Generic operators interface required by shorted path algorithms."
},
"api/Advanced.Algorithms.Graph.IAStarHeuristic-2.html": {
"href": "api/Advanced.Algorithms.Graph.IAStarHeuristic-2.html",
@@ -602,7 +607,7 @@
"api/Advanced.Algorithms.Graph.MatchEdge-1.html": {
"href": "api/Advanced.Algorithms.Graph.MatchEdge-1.html",
"title": "Class MatchEdge | Advanced Algorithms",
- "keywords": "Class MatchEdge The match result object. Inheritance Object MatchEdge Inherited Members Object.ToString() Object.Equals(Object) Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetHashCode() Object.GetType() Object.MemberwiseClone() Namespace : Advanced.Algorithms.Graph Assembly : Advanced.Algorithms.dll Syntax public class MatchEdge Type Parameters Name Description T Constructors MatchEdge(T, T) Declaration public MatchEdge(T source, T target) Parameters Type Name Description T source T target Properties Source Declaration public T Source { get; } Property Value Type Description T Target Declaration public T Target { get; } Property Value Type Description T"
+ "keywords": "Class MatchEdge The match result object. Inheritance Object MatchEdge Inherited Members Object.ToString() Object.Equals(Object, Object) Object.ReferenceEquals(Object, Object) Object.GetType() Object.MemberwiseClone() Namespace : Advanced.Algorithms.Graph Assembly : Advanced.Algorithms.dll Syntax public class MatchEdge Type Parameters Name Description T Constructors MatchEdge(T, T) Declaration public MatchEdge(T source, T target) Parameters Type Name Description T source T target Properties Source Declaration public T Source { get; } Property Value Type Description T Target Declaration public T Target { get; } Property Value Type Description T Methods Equals(Object) Declaration public override bool Equals(object obj) Parameters Type Name Description Object obj Returns Type Description Boolean Overrides Object.Equals(Object) GetHashCode() Declaration public override int GetHashCode() Returns Type Description Int32 Overrides Object.GetHashCode()"
},
"api/Advanced.Algorithms.Graph.MColorer-2.html": {
"href": "api/Advanced.Algorithms.Graph.MColorer-2.html",
diff --git a/docs/xrefmap.yml b/docs/xrefmap.yml
index 0cec02c7..4b162b2b 100644
--- a/docs/xrefmap.yml
+++ b/docs/xrefmap.yml
@@ -12167,6 +12167,33 @@ references:
fullName.vb: Advanced.Algorithms.Graph.FordFulkersonMaxFlow(Of T, W).ComputeMaxFlowAndReturnFlowPath
nameWithType: FordFulkersonMaxFlow.ComputeMaxFlowAndReturnFlowPath
nameWithType.vb: FordFulkersonMaxFlow(Of T, W).ComputeMaxFlowAndReturnFlowPath
+- uid: Advanced.Algorithms.Graph.HopcroftKarpMatching`1
+ name: HopcroftKarpMatching
+ href: api/Advanced.Algorithms.Graph.HopcroftKarpMatching-1.html
+ commentId: T:Advanced.Algorithms.Graph.HopcroftKarpMatching`1
+ name.vb: HopcroftKarpMatching(Of T)
+ fullName: Advanced.Algorithms.Graph.HopcroftKarpMatching
+ fullName.vb: Advanced.Algorithms.Graph.HopcroftKarpMatching(Of T)
+ nameWithType: HopcroftKarpMatching
+ nameWithType.vb: HopcroftKarpMatching(Of T)
+- uid: Advanced.Algorithms.Graph.HopcroftKarpMatching`1.GetMaxBiPartiteMatching(Advanced.Algorithms.DataStructures.Graph.IGraph{`0})
+ name: GetMaxBiPartiteMatching(IGraph)
+ href: api/Advanced.Algorithms.Graph.HopcroftKarpMatching-1.html#Advanced_Algorithms_Graph_HopcroftKarpMatching_1_GetMaxBiPartiteMatching_Advanced_Algorithms_DataStructures_Graph_IGraph__0__
+ commentId: M:Advanced.Algorithms.Graph.HopcroftKarpMatching`1.GetMaxBiPartiteMatching(Advanced.Algorithms.DataStructures.Graph.IGraph{`0})
+ name.vb: GetMaxBiPartiteMatching(IGraph(Of T))
+ fullName: Advanced.Algorithms.Graph.HopcroftKarpMatching.GetMaxBiPartiteMatching(Advanced.Algorithms.DataStructures.Graph.IGraph)
+ fullName.vb: Advanced.Algorithms.Graph.HopcroftKarpMatching(Of T).GetMaxBiPartiteMatching(Advanced.Algorithms.DataStructures.Graph.IGraph(Of T))
+ nameWithType: HopcroftKarpMatching.GetMaxBiPartiteMatching(IGraph)
+ nameWithType.vb: HopcroftKarpMatching(Of T).GetMaxBiPartiteMatching(IGraph(Of T))
+- uid: Advanced.Algorithms.Graph.HopcroftKarpMatching`1.GetMaxBiPartiteMatching*
+ name: GetMaxBiPartiteMatching
+ href: api/Advanced.Algorithms.Graph.HopcroftKarpMatching-1.html#Advanced_Algorithms_Graph_HopcroftKarpMatching_1_GetMaxBiPartiteMatching_
+ commentId: Overload:Advanced.Algorithms.Graph.HopcroftKarpMatching`1.GetMaxBiPartiteMatching
+ isSpec: "True"
+ fullName: Advanced.Algorithms.Graph.HopcroftKarpMatching.GetMaxBiPartiteMatching
+ fullName.vb: Advanced.Algorithms.Graph.HopcroftKarpMatching(Of T).GetMaxBiPartiteMatching
+ nameWithType: HopcroftKarpMatching.GetMaxBiPartiteMatching
+ nameWithType.vb: HopcroftKarpMatching(Of T).GetMaxBiPartiteMatching
- uid: Advanced.Algorithms.Graph.IAStarHeuristic`2
name: IAStarHeuristic
href: api/Advanced.Algorithms.Graph.IAStarHeuristic-2.html
@@ -12551,6 +12578,40 @@ references:
fullName.vb: Advanced.Algorithms.Graph.MatchEdge(Of T).MatchEdge
nameWithType: MatchEdge.MatchEdge
nameWithType.vb: MatchEdge(Of T).MatchEdge
+- uid: Advanced.Algorithms.Graph.MatchEdge`1.Equals(System.Object)
+ name: Equals(Object)
+ href: api/Advanced.Algorithms.Graph.MatchEdge-1.html#Advanced_Algorithms_Graph_MatchEdge_1_Equals_System_Object_
+ commentId: M:Advanced.Algorithms.Graph.MatchEdge`1.Equals(System.Object)
+ fullName: Advanced.Algorithms.Graph.MatchEdge.Equals(System.Object)
+ fullName.vb: Advanced.Algorithms.Graph.MatchEdge(Of T).Equals(System.Object)
+ nameWithType: MatchEdge.Equals(Object)
+ nameWithType.vb: MatchEdge(Of T).Equals(Object)
+- uid: Advanced.Algorithms.Graph.MatchEdge`1.Equals*
+ name: Equals
+ href: api/Advanced.Algorithms.Graph.MatchEdge-1.html#Advanced_Algorithms_Graph_MatchEdge_1_Equals_
+ commentId: Overload:Advanced.Algorithms.Graph.MatchEdge`1.Equals
+ isSpec: "True"
+ fullName: Advanced.Algorithms.Graph.MatchEdge.Equals
+ fullName.vb: Advanced.Algorithms.Graph.MatchEdge(Of T).Equals
+ nameWithType: MatchEdge.Equals
+ nameWithType.vb: MatchEdge(Of T).Equals
+- uid: Advanced.Algorithms.Graph.MatchEdge`1.GetHashCode
+ name: GetHashCode()
+ href: api/Advanced.Algorithms.Graph.MatchEdge-1.html#Advanced_Algorithms_Graph_MatchEdge_1_GetHashCode
+ commentId: M:Advanced.Algorithms.Graph.MatchEdge`1.GetHashCode
+ fullName: Advanced.Algorithms.Graph.MatchEdge.GetHashCode()
+ fullName.vb: Advanced.Algorithms.Graph.MatchEdge(Of T).GetHashCode()
+ nameWithType: MatchEdge.GetHashCode()
+ nameWithType.vb: MatchEdge(Of T).GetHashCode()
+- uid: Advanced.Algorithms.Graph.MatchEdge`1.GetHashCode*
+ name: GetHashCode
+ href: api/Advanced.Algorithms.Graph.MatchEdge-1.html#Advanced_Algorithms_Graph_MatchEdge_1_GetHashCode_
+ commentId: Overload:Advanced.Algorithms.Graph.MatchEdge`1.GetHashCode
+ isSpec: "True"
+ fullName: Advanced.Algorithms.Graph.MatchEdge.GetHashCode
+ fullName.vb: Advanced.Algorithms.Graph.MatchEdge(Of T).GetHashCode
+ nameWithType: MatchEdge.GetHashCode
+ nameWithType.vb: MatchEdge(Of T).GetHashCode
- uid: Advanced.Algorithms.Graph.MatchEdge`1.Source
name: Source
href: api/Advanced.Algorithms.Graph.MatchEdge-1.html#Advanced_Algorithms_Graph_MatchEdge_1_Source
diff --git a/src/Advanced.Algorithms/Advanced.Algorithms.csproj b/src/Advanced.Algorithms/Advanced.Algorithms.csproj
index ae35e59f..c9be43a0 100644
--- a/src/Advanced.Algorithms/Advanced.Algorithms.csproj
+++ b/src/Advanced.Algorithms/Advanced.Algorithms.csproj
@@ -8,7 +8,7 @@
StrongNameKey.snk
False
True
- default
+ latest
diff --git a/tests/Advanced.Algorithms.Tests/Advanced.Algorithms.Tests.csproj b/tests/Advanced.Algorithms.Tests/Advanced.Algorithms.Tests.csproj
index c1e4c9ce..2b62d4df 100644
--- a/tests/Advanced.Algorithms.Tests/Advanced.Algorithms.Tests.csproj
+++ b/tests/Advanced.Algorithms.Tests/Advanced.Algorithms.Tests.csproj
@@ -36,6 +36,7 @@
true
+ latest
StrongNameKey.snk