Python输出有向图的出度
时间: 2023-10-16 18:21:50 浏览: 57
假设你已经用 Python 表示了一个有向图,其中每个节点都被表示为一个数字。你可以使用以下代码来计算每个节点的出度:
```python
graph = {
1: [2, 3],
2: [3],
3: [1]
}
for node in graph:
out_degree = len(graph[node])
print(f"Node {node} has an out-degree of {out_degree}")
```
这个代码片段假设有向图已经被表示为一个字典,其中每个节点是一个键,对应的值是一个列表,其中包含该节点指向的其他节点。对于每个节点,我们使用 `len()` 函数来计算其出度,然后将其打印出来。
相关问题
python 有向图求度数
### 回答1:
对于一个有向图,每个节点的度数可以分为入度和出度两个方面。入度表示有多少条边指向该节点,出度表示该节点有多少条出边。
我们可以用 Python 中的字典来表示有向图,其中字典的键为节点,值为该节点所能到达的节点列表。遍历字典中的每个节点,统计其入度和出度即可。
以下是一个求有向图中每个节点的入度和出度的示例代码:
```python
graph = {
'A': ['B', 'C'],
'B': ['D', 'E'],
'C': ['E'],
'D': [],
'E': ['F'],
'F': []
}
in_degree = {}
out_degree = {}
# 初始化每个节点的入度和出度为 0
for node in graph:
in_degree[node] = 0
out_degree[node] = 0
# 遍历每个节点,统计其入度和出度
for node in graph:
for neighbor in graph[node]:
# 统计出度
out_degree[node] += 1
# 统计入度
in_degree[neighbor] += 1
# 输出结果
print("节点\t入度\t出度")
for node in graph:
print(node, "\t", in_degree[node], "\t", out_degree[node])
```
输出结果为:
```
节点 入度 出度
A 0 2
B 1 2
C 1 1
D 1 0
E 2 1
F 1 0
```
其中,节点 A 的出度为 2,入度为 0,节点 B 的出度为 2,入度为 1,以此类推。
### 回答2:
在Python中求有向图的度数相对比较简单。有向图中的度数分为入度和出度。
首先,我们可以使用字典来表示有向图的邻接表。键是每个顶点,值是与之相邻的顶点列表。
接着,我们遍历每个顶点,并计算其出度。通过获取邻接表中键对应的值列表的长度,即可得到每个顶点的出度。
同样地,我们可以通过遍历邻接表的值列表,计算每个顶点的入度。具体做法是,以每个顶点为键,在相邻顶点的字典值列表中搜索键,如果存在该键,则将入度加1。
下面是一个简单的示例代码,展示了如何使用Python求解有向图的度数:
```python
def get_indegree(graph):
indegree = {}
for vertex in graph:
indegree[vertex] = 0
for vertex in graph:
for adjacent_vertex in graph[vertex]:
indegree[adjacent_vertex] += 1
return indegree
def get_outdegree(graph):
outdegree = {}
for vertex in graph:
outdegree[vertex] = len(graph[vertex])
return outdegree
# 测试代码
graph = {
'A': ['B', 'C'],
'B': ['C', 'D', 'E'],
'C': ['D'],
'D': [],
'E': ['A']
}
indegree = get_indegree(graph)
outdegree = get_outdegree(graph)
print("每个顶点的入度:", indegree)
print("每个顶点的出度:", outdegree)
```
输出结果为:
```
每个顶点的入度: {'A': 1, 'B': 1, 'C': 2, 'D': 3, 'E': 1}
每个顶点的出度: {'A': 2, 'B': 3, 'C': 1, 'D': 0, 'E': 1}
```
这样,我们就完成了求解有向图的度数的过程。
### 回答3:
在Python中,求有向图的度数可以通过使用图论库networkx来实现。下面是一个简单的实例代码:
```python
import networkx as nx
# 创建有向图
G = nx.DiGraph()
# 添加有向边
G.add_edges_from([(1, 2), (1, 3), (2, 4), (3, 4), (4, 5), (5, 3)])
# 获取节点的入度和出度
in_degrees = G.in_degree()
out_degrees = G.out_degree()
# 输出节点的入度和出度
for node in G.nodes():
print(f"节点{node}的入度为:{in_degrees[node]}, 出度为:{out_degrees[node]}")
```
在上述代码中,我们首先创建了一个有向图G,并添加了一些有向边。然后,通过使用图的in_degree()和out_degree()方法,我们可以获取每个节点的入度和出度。最后,我们遍历所有节点,输出其对应的入度和出度。
需要注意的是,图论库networkx提供了丰富的有向图分析和操作方法,例如获取邻居节点、判断两个节点之间是否存在路径等等,可以根据具体需求进行调用。
创建一个有向图用python
在Python中,我们可以使用networkx库来创建有向图。下面是一个简单的示例:
```python
import networkx as nx
# 创建有向图
G = nx.DiGraph()
# 添加节点
G.add_node(1)
G.add_node(2)
G.add_node(3)
# 添加边
G.add_edge(1, 2)
G.add_edge(2, 3)
G.add_edge(3, 1)
# 输出图的信息
print("节点列表:", G.nodes())
print("边列表:", G.edges())
print("节点1的出度:", G.out_degree(1))
print("节点2的入度:", G.in_degree(2))
```
输出结果为:
```
节点列表: [1, 2, 3]
边列表: [(1, 2), (2, 3), (3, 1)]
节点1的出度: 1
节点2的入度: 1
```
在这个示例中,我们首先创建了一个有向图对象G,然后使用add_node()方法添加了3个节点,使用add_edge()方法添加了3条边,最后使用out_degree()和in_degree()方法计算了节点的出度和入度。