(cells, vertex_count)
| 36024 | |
| 36025 | //Computes connected components for a dense cell complex |
| 36026 | function connectedComponents_dense(cells, vertex_count) { |
| 36027 | var labels = new UnionFind(vertex_count) |
| 36028 | for(var i=0; i<cells.length; ++i) { |
| 36029 | var c = cells[i] |
| 36030 | for(var j=0; j<c.length; ++j) { |
| 36031 | for(var k=j+1; k<c.length; ++k) { |
| 36032 | labels.link(c[j], c[k]) |
| 36033 | } |
| 36034 | } |
| 36035 | } |
| 36036 | var components = [] |
| 36037 | , component_labels = labels.ranks |
| 36038 | for(var i=0; i<component_labels.length; ++i) { |
| 36039 | component_labels[i] = -1 |
| 36040 | } |
| 36041 | for(var i=0; i<cells.length; ++i) { |
| 36042 | var l = labels.find(cells[i][0]) |
| 36043 | if(component_labels[l] < 0) { |
| 36044 | component_labels[l] = components.length |
| 36045 | components.push([cells[i].slice(0)]) |
| 36046 | } else { |
| 36047 | components[component_labels[l]].push(cells[i].slice(0)) |
| 36048 | } |
| 36049 | } |
| 36050 | return components |
| 36051 | } |
| 36052 | |
| 36053 | //Computes connected components for a sparse graph |
| 36054 | function connectedComponents_sparse(cells) { |
no outgoing calls
no test coverage detected
searching dependent graphs…