给我能实现以上功能的python源代码
时间: 2023-07-12 20:59:20 浏览: 141
好的,以下是一个简单的 Python 代码实现,可以创建一个包含10个景点和它们之间道路信息的无向图:
```python
class Vertex:
def __init__(self, id, name, desc):
self.id = id
self.name = name
self.desc = desc
class Graph:
def __init__(self, vertices):
self.vertices = vertices
self.adj_matrix = [[0] * len(vertices) for _ in range(len(vertices))]
def add_edge(self, v1, v2, weight):
i = self.vertices.index(v1)
j = self.vertices.index(v2)
self.adj_matrix[i][j] = weight
self.adj_matrix[j][i] = weight
if __name__ == '__main__':
# 初始化景点信息
v1 = Vertex(1, '天安门', '位于北京市中心,是中国现代历史的重要地标之一。')
v2 = Vertex(2, '故宫', '位于北京市中心,是中国明清两代的皇宫,也是世界文化遗产之一。')
v3 = Vertex(3, '颐和园', '位于北京市西郊,是中国古代皇家园林,也是世界文化遗产之一。')
v4 = Vertex(4, '鸟巢', '位于北京市奥林匹克公园,是2008年北京奥运会主体育场馆之一。')
v5 = Vertex(5, '水立方', '位于北京市奥林匹克公园,是2008年北京奥运会游泳馆。')
v6 = Vertex(6, '长城', '位于北京市北部山区,是中国古代的军事防御工程,也是世界文化遗产之一。')
v7 = Vertex(7, '颐南园', '位于北京市西南部,是清朝时期的古代皇家园林。')
v8 = Vertex(8, '中山公园', '位于上海市黄浦区,是一座历史悠久的公园。')
v9 = Vertex(9, '豫园', '位于上海市黄浦区,是上海古城区的一部分,也是一座园林。')
v10 = Vertex(10, '东方明珠', '位于上海市浦东新区,是一座高塔,也是上海的标志性建筑之一。')
# 创建无向图
graph = Graph([v1, v2, v3, v4, v5, v6, v7, v8, v9, v10])
graph.add_edge(v1, v2, 1)
graph.add_edge(v1, v3, 3)
graph.add_edge(v1, v6, 2)
graph.add_edge(v2, v3, 0)
graph.add_edge(v3, v7, 2.5)
graph.add_edge(v4, v5, 1.5)
graph.add_edge(v4, v6, 4)
graph.add_edge(v5, v6, 0)
graph.add_edge(v8, v7, 1)
graph.add_edge(v8, v9, 1.5)
graph.add_edge(v8, v10, 2)
graph.add_edge(v9, v10, 2.5)
# 打印邻接矩阵
for row in graph.adj_matrix:
print(row)
```
运行上述代码,会输出以下邻接矩阵:
```python
[0, 1, 3, 0, 0, 2, 0, 0, 0, 0]
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[3, 0, 0, 0, 0, 0, 2.5, 0, 0, 0]
[0, 0, 0, 0, 1.5, 4, 0, 0, 0, 0]
[0, 0, 0, 1.5, 0, 0, 0, 0, 0, 0]
[2, 0, 0, 4, 0, 0, 0, 0, 0, 0]
[0, 0, 2.5, 0, 0, 0, 0, 1, 0, 0]
[0, 0, 0, 0, 0, 0, 1, 0, 1.5, 2]
[0, 0, 0, 0, 0, 0, 0, 1.5, 0, 2.5]
[0, 0, 0, 0, 0, 0, 0, 2, 2.5, 0]
```
这个邻接矩阵就是我们前面所描述的无向图。
阅读全文