2016-11-21 55 views
2

我有一个节点A,B,C和这些节点之间的多条边的图。如何获得唯一对(A,B),(A,C),(B,C)?图中唯一的一对节点

一种算法可以说

alreadyVisited = []; 

for left in nodes: 
    for right in nodes: 
    if (left, right) not in alreadyVisited: 
     alreadyVisited.push((left, right)) 
     .. 

,但是这是最有效的算法来实现这一目标?

回答

2

您可以迭代节点并仅在嵌套循环中迭代其余节点。

var nodes = ['A', 'B', 'C'], 
 
    i, j, 
 
    edges = []; 
 

 
for (i = 0; i < nodes.length - 1; i++) { 
 
    for (j = i + 1; j < nodes.length; j++) { 
 
     edges.push([nodes[i], nodes[j]]); 
 
    } 
 
} 
 

 
console.log(edges);

+0

,将基本的'跨产品a'and'B',有你需要遍历了'和'B'的'所有项目。 –