/// <summary> /// /// </summary> /// <returns></returns> public Digraph Extract() { if (_model == null) { Initialize(); } var g0 = _tileGraph.Graph; var g1 = new Digraph(g0.VertexCount); for (int v0 = 0; v0 < g0.VertexCount; v0++) { g1.AddVertex(); } var n = _map.TileDegree; for (int v0 = 0; v0 < g0.VertexCount; v0++) { var tile = _model.GetAssigned(v0); for (int i = 0; i < n; i++) { var label = _map.GetLabel(i, tile); if (label != "0") { int v1 = g0.GetVertexNeighborOut(v0, i); g1.AddEdge(v0, v1); } } } return(g1); }
/// <summary> /// /// </summary> public Digraph Extract() { // https://en.wikipedia.org/wiki/Single_responsibility_principle if (_model == null) { Initialize(); } var g0 = _tileGraph.Graph; var g1 = new Digraph(g0.VertexCount); var n = _map.TileDegree; for (int v0 = 0; v0 < g0.VertexCount; v0++) { g1.AddVertex(); var tile = _model.GetAssigned(v0); for (int i = 0; i < n; i++) { var label = _map.GetLabel(i, tile); if (_labelSet.Contains(label)) { var v1 = _tileGraph.Graph.GetVertexNeighborOut(v0, i); if (v0 != v1) { g1.AddEdge(v0, v1); } } } } return(g1); }
/// <summary> /// /// </summary> public Digraph Extract() { if (_model == null) { Initialize(); } var g0 = _tileGraph.Graph; var g1 = new Digraph(g0.VertexCount); for (int i = 0; i < g0.VertexCount; i++) { var tile = _model.GetAssigned(i); var n = _map.TileDegree; for (int j = 0; j < n; j++) { var label = _map.GetLabel(j, tile); if (_labelSet.Contains(label)) { g1.AddEdge(i, j); } } } return(g0); }
/// <summary> /// /// </summary> /// <returns></returns> public Digraph Extract() { if (_model == null) { Initialize(); } var g0 = _tileGraph.Graph; var g1 = new Digraph(g0.VertexCount); for (int v0 = 0; v0 < g0.VertexCount; v0++) { g1.AddVertex(); } var n = _map.TileDegree; for (int v0 = 0; v0 < g0.VertexCount; v0++) { var tile = _model.GetAssigned(v0); if (_applyTileFilter == true && _ignoreTiles.Contains(tile)) { continue; } for (int i = 0; i < n; i++) { var label = _map.GetLabel(i, tile); if (_labelSet.Contains(label)) { int v1 = g0.GetVertexNeighborOut(v0, i); g1.AddEdge(v0, v1); } } } return(g1); }