python邻接矩阵创建有向图
时间: 2023-08-28 16:12:09 浏览: 89
在Python中,可以使用二维列表来表示邻接矩阵,其中每个元素表示两个顶点之间的边,如果有边则为1,否则为0。
下面是一个简单的示例代码,用于创建一个有向图的邻接矩阵:
```python
# 创建一个有向图的邻接矩阵
num_vertices = 4
# 初始化邻接矩阵
adj_matrix = [[0] * num_vertices for _ in range(num_vertices)]
# 添加边
adj_matrix[0][1] = 1
adj_matrix[1][2] = 1
adj_matrix[2][3] = 1
adj_matrix[3][0] = 1
# 打印邻接矩阵
for row in adj_matrix:
print(row)
```
该代码创建了一个包含4个顶点的有向图,其中顶点0指向顶点1,顶点1指向顶点2,顶点2指向顶点3,顶点3指向顶点0。
输出结果如下:
```
[0, 1, 0, 0]
[0, 0, 1, 0]
[0, 0, 0, 1]
[1, 0, 0, 0]
```
可以看到,邻接矩阵的行和列分别表示图中的顶点,而每个元素表示顶点之间是否存在边。1表示存在边,0表示不存在边。
相关问题
python根据邻接矩阵创建有向无权图
要根据邻接矩阵创建有向无权图,首先需要明确图的基本概念。有向图是由顶点集和边集构成的,而邻接矩阵则是通过一个二维矩阵表示了图中各个顶点之间是否存在边的信息。
对于给定的邻接矩阵,我们可以通过遍历矩阵中的每一个元素来创建相应的有向无权图。具体的步骤如下:
1. 创建一个空的有向无权图,使用字典来表示图中的顶点和边。每一个顶点对应一个键值对,键为顶点的名称,值为一个空列表,用来存储以该顶点为起点的边。
2. 遍历邻接矩阵的每一个元素,如果矩阵中的值为1,表示起点顶点到终点顶点存在一条有向边。
3. 根据矩阵的行和列的下标,找到对应的顶点名称,将终点顶点添加到起点顶点对应的边列表中。
4. 重复步骤2和3,直到遍历完整个邻接矩阵。
5. 返回创建好的有向无权图。
以一个简单的邻接矩阵为例,假设矩阵如下所示:
[[0, 1, 0],
[0, 0, 1],
[1, 0, 0]]
根据上述步骤,将矩阵转化为有向无权图,可以得到如下结果:
{
"A": ["B"],
"B": ["C"],
"C": ["A"]
}
其中,顶点的名称分别为A、B、C,A到B存在有向边,B到C存在有向边,C到A存在有向边。
这样就实现了通过给定的邻接矩阵创建有向无权图的过程。
用邻接矩阵创建有向图
在计算机科学中,用邻接矩阵创建有向图是一种常用的数据结构表示方法。邻接矩阵是一个二维数组,其中行代表源节点,列表示目标节点,每个元素值通常表示从源节点到目标节点是否有边以及边的权重。如果图中存在从节点i到节点j的有向边,对应的矩阵元素A[i][j]为1或者一个非零值;若无边,则为0。
具体步骤如下:
1. 初始化一个大小为VxV的矩阵,其中V是图的顶点数。
2. 对于每条有向边 (u, v),在邻接矩阵A中,将A[u][v]设置为1或者其他特定标识(比如整数值、布尔值等),表示边的方向是从u指向v。
3. 如果需要存储边的权重,可以将邻接矩阵的元素替换为实际的权重值。
例如,在Python中,如果有一个简单的一对一有向图:
```python
graph = {
'A': ['B'],
'B': ['C', 'D'],
'C': [],
'D': []
}
# 可以转换为邻接矩阵:
adj_matrix = [[0 for _ in range(len(graph))] for _ in range(len(graph))]
for node, neighbors in graph.items():
for neighbor in neighbors:
adj_matrix[node.index(neighbor)][node.index(node)] = 1
```
阅读全文