| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- import _ from 'lodash'
- function addSubgraphConstraints (g, cg, vs) {
- const prev = {}
- let rootPrev
- _.forEach(vs, function (v) {
- let child = g.parent(v)
- let parent
- let prevChild
- while (child) {
- parent = g.parent(child)
- if (parent) {
- prevChild = prev[parent]
- prev[parent] = child
- } else {
- prevChild = rootPrev
- rootPrev = child
- }
- if (prevChild && prevChild !== child) {
- cg.setEdge(prevChild, child)
- return
- }
- child = parent
- }
- })
- /*
- function dfs(v) {
- const children = v ? g.children(v) : g.children();
- if (children.length) {
- const min = Number.POSITIVE_INFINITY,
- subgraphs = [];
- _.forEach(children, function(child) {
- const childMin = dfs(child);
- if (g.children(child).length) {
- subgraphs.push({ v: child, order: childMin });
- }
- min = Math.min(min, childMin);
- });
- _.reduce(_.sortBy(subgraphs, "order"), function(prev, curr) {
- cg.setEdge(prev.v, curr.v);
- return curr;
- });
- return min;
- }
- return g.node(v).order;
- }
- dfs(undefined);
- */
- }
- export default addSubgraphConstraints
|