void Start() { EdgeGraph testgraph = new EdgeGraph(15); ProcessingUtil graphprocessing = new ProcessingUtil(); for (int i = 0; i < 20; i++) { testgraph.AddVertex(); } //TestGraph | Build graph //first connected component set of edges testgraph.AddEdge(1, 2); testgraph.AddEdge(2, 3); testgraph.AddEdge(3, 1); testgraph.AddEdge(3, 5); testgraph.AddEdge(5, 6); testgraph.AddEdge(6, 4); testgraph.AddEdge(4, 5); testgraph.AddEdge(7, 6); testgraph.AddEdge(3, 8); testgraph.AddEdge(8, 1); testgraph.AddEdge(6, 9); testgraph.AddEdge(9, 4); testgraph.AddEdge(8, 10); testgraph.AddEdge(10, 11); testgraph.AddEdge(11, 12); testgraph.AddEdge(12, 10); //second component (not connected to first) testgraph.AddEdge(15, 18); testgraph.AddEdge(18, 19); testgraph.AddEdge(17, 18); //TestGraph | Analysis int componentcount = 0; int closurecount = 0; List <HashSet <int> > components = new List <HashSet <int> >(); _graphprocessing.CountClosures(testgraph, out componentcount, out closurecount, out components); float closurerate = (float)closurecount / (float)testgraph.EdgeCount; //TestGraph | Debug Print Results Debug.Log("TestGraph | Components Count = " + componentcount); for (int i = 0; i < components.Count; i++) { HashSet <int> set = components[i]; string setstring = string.Join(",", components[i]); Debug.Log("TestGraph | ConnectedComponent# " + (i + 1) + " = " + setstring); } float[] normalizedcomponents = _graphprocessing.RemapComponentsToArray(testgraph, components); string normalizedcomponentsstring = string.Join(",", normalizedcomponents); Debug.Log("TestGraph | NormalizedComponents = " + normalizedcomponentsstring); Debug.Log("TestGraph | Closures Count = " + closurecount); Debug.Log("TestGraph | Closures Rate = " + closurerate); }
private void UpdateAnalysis() { if (_graphExtractor != null && _tileModelManager != null) { if (_tileModelManager.Status == CollapseStatus.Complete) { _graphExtractor.ExtractSharedEdgeGraph(_analysisGraph); //Extracted Graph | Analysis GetClosures(); CollectStructureInformation(); //normalized/remapped components to an array for graph coloring _normalizedcomponents = _graphProcessing.RemapComponentsToArray(_analysisGraph.Graph, _connectedComponents); _normalizedcomponentsbysize = _graphProcessing.RemapComponentsSizeToArray(_analysisGraph.Graph, _connectedComponents); //analyze/get 1) ground support sources, 2) list of vertex depths 3) max depth _sources = _graphProcessing.GetGroundSources(_analysisGraph.Graph, _analysisGraph.Vertices, 2f); _depths = _graphProcessing.DepthsFromGroundSources(_analysisGraph.Graph, _analysisGraph.Vertices, 2f); _maxDepth = _graphProcessing.MaxDepth(_depths); //analyze/get 1) unreachable vertices, 2) remapped vertex depths between 0,1, 3) edgeless vertices _normalizeddepths = new float[_analysisGraph.Graph.VertexCount]; _unreachablevertices = new List <int>(); _edgelessvertices = new List <int>(); _graphProcessing.RemapGraphDepths(_analysisGraph.Graph, _depths, 0, 1, out _normalizeddepths, out _unreachablevertices, out _edgelessvertices); StoreAnalysis(); DebugResults(); } } else { Debug.Log("No Graph Extractor OR WFC Incomplete"); } }