internal override void DeleteEdge(BipartiteGraphVertex <T> vertex1, BipartiteGraphVertex <T> vertex2) { var uVertex = GetUVertex(vertex1, vertex2); var vVertex = GetVVertex(vertex1, vertex2); Matrix[vVertex.Handle, uVertex.Handle] = EdgeData.Empty; }
internal override void CreateEdge(BipartiteGraphVertex <T> vertex1, BipartiteGraphVertex <T> vertex2, double weight) { var uVertex = GetUVertex(vertex1, vertex2); var vVertex = GetVVertex(vertex1, vertex2); Matrix[vVertex.Handle, uVertex.Handle] = new EdgeData(weight); }
protected override bool AllowEdge(BipartiteGraphVertex <T> vertex1, BipartiteGraphVertex <T> vertex2) { if (Data.AreVerticesAdjacent(vertex1, vertex2)) { return(false); } return(true); }
internal override void UpdateEdgeData(BipartiteGraphVertex <T> vertex1, BipartiteGraphVertex <T> vertex2, Func <EdgeData, EdgeData> updateFunc) { var uVertex = GetUVertex(vertex1, vertex2); var vVertex = GetVVertex(vertex1, vertex2); EdgeData edgeData = updateFunc(GetEdgeDataCore(vertex1, vertex2)); Matrix[vVertex.Handle, uVertex.Handle] = edgeData; }
public void DeleteEdge(BipartiteGraphVertex <T> vertex1, BipartiteGraphVertex <T> vertex2) { Guard.IsNotNull(vertex1, nameof(vertex1)); Guard.IsNotNull(vertex2, nameof(vertex2)); CheckVertexOwner(vertex1); CheckVertexOwner(vertex2); if (!Data.AreVerticesAdjacent(vertex1, vertex2)) { throw new InvalidOperationException(); } EdgeData edgeData = Data.GetEdgeData(vertex1, vertex2); Data.DeleteEdge(vertex1, vertex2); vertex1.Degree--; vertex2.Degree--; Properties.OnEdgeDeleted(edgeData); }
public GetMaximalMatchingFSetItem(BipartiteGraphVertex <T> vertex, Color bfsColor) { this.vertex = vertex; this.bfsColor = bfsColor; }
bool IsInFSet(BipartiteGraphVertex <T> vertex) { return(vertex.IsDataOfType <GetMaximalMatchingVertexInFSetData>()); }
bool IsMatchedEdge(BipartiteGraphVertex <T> vertex1, BipartiteGraphVertex <T> vertex2) { EdgeData edgeData = Data.GetEdgeData(vertex1, vertex2); return(edgeData.IsDataOfType <GetMaximalMatchingMatchedData>()); }
bool IsMatchedVertex(BipartiteGraphVertex <T> vertex) { return(vertex.IsDataOfType <GetMaximalMatchingMatchedData>()); }