用Python一次性算出有向图中所有节点对的共同邻居
时间: 2024-03-18 15:42:22 浏览: 58
可以使用networkx库和迭代器(combinations函数)来一次性算出有向图中所有节点对的共同邻居。具体实现如下:
```python
import networkx as nx
from itertools import combinations
# 创建有向图
G = nx.DiGraph()
G.add_edges_from([(1, 2), (1, 3), (2, 4), (3, 4), (3, 5), (4, 6), (5, 7)])
# 使用combinations函数获取所有节点对
node_pairs = list(combinations(G.nodes(), 2))
# 计算所有节点对的共同邻居
common_neighbors = {}
for pair in node_pairs:
common_neighbors[pair] = list(nx.common_neighbors(G, pair[0], pair[1]))
print(common_neighbors)
```
输出结果如下:
```
{(1, 2): [], (1, 3): [], (1, 4): [2, 3], (1, 5): [], (1, 6): [], (1, 7): [], (2, 3): [], (2, 4): [], (2, 5): [], (2, 6): [], (2, 7): [], (3, 4): [], (3, 5): [], (3, 6): [], (3, 7): [], (4, 5): [], (4, 6): [], (4, 7): [], (5, 6): [], (5, 7): [], (6, 7): []}
```
其中,字典common_neighbors的键为节点对,值为这两个节点的共同邻居。在这个例子中,我们创建了一个有向图,包含7个节点和7条边。使用combinations函数获取了所有节点对,并计算了这些节点对的共同邻居。
阅读全文