当前位置:实例文章 » JAVA Web实例» [文章]数据结构day8(2023.7.25)

数据结构day8(2023.7.25)

发布人:shili8 发布时间:2025-03-07 19:10 阅读次数:0

**数据结构 Day8**

**2023 年7 月25 日**

### 前言在前面的几天里,我们已经学习了栈、队列、树等基本的数据结构。今天,我们将继续学习另一种重要的数据结构——图。

### 图的定义和特性图是一种非线性的数据结构,它由一组顶点(也称为结点)和一组边组成,每条边连接两个顶点。图可以看作是树的一般化形式,顶点可以有多个父节点,而不是只有一个父节点。

图的特性包括:

* 图中的每个顶点都可以有多个邻居。
* 每条边都连接两个顶点。
* 图中可能存在环(即一条边连接了一个顶点到另一个顶点,且从另一个顶点又回到了第一个顶点)。

### 图的应用图在计算机科学和其他领域有着广泛的应用。例如:

* 网络拓扑:图可以用来表示网络中的设备和连接。
* 路径规划:图可以用来找到从一地到另一地的最短路径。
* 社会网络分析:图可以用来研究社会关系。

### 图的存储图可以使用邻接矩阵或邻接链表来存储。邻接矩阵是一种二维数组,每个元素表示两个顶点之间是否存在边。如果有边,则该元素为1;否则,为0。邻接链表是一种链式数据结构,用于存储图中的每条边。

### 图的遍历图的遍历是指按照一定的顺序访问图中所有顶点的过程。常见的遍历算法包括:

* 深度优先搜索(DFS):从一个顶点开始,沿着边向下探索,直到达到叶子结点。
* 广度优先搜索(BFS):从一个顶点开始,沿着边向下探索,但每层都访问完毕后再往下一层。

### 图的应用代码示例

import networkx as nximport matplotlib.pyplot as plt# 创建一个空图G = nx.Graph()

# 添加顶点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)

# 使用DFS遍历图def dfs(graph):
 visited = set()
 def dfs_helper(node):
 visited.add(node)
 for neighbor in graph[node]:
 if neighbor not in visited:
 dfs_helper(neighbor)
 dfs_helper(1)
 return visitedvisited_nodes = dfs(G)
print("Visited nodes:", visited_nodes)

# 使用BFS遍历图from collections import dequedef bfs(graph):
 visited = set()
 queue = deque([1])
 while queue:
 node = queue.popleft()
 if node not in visited:
 visited.add(node)
 for neighbor in graph[node]:
 if neighbor not in visited:
 queue.append(neighbor)
 return visitedvisited_nodes_bfs = bfs(G)
print("Visited nodes (BFS):", visited_nodes_bfs)

# 使用matplotlib绘制图pos = nx.spring_layout(G)
nx.draw_networkx_nodes(G, pos, node_color='lightblue')
nx.draw_networkx_edges(G, pos, edge_color='gray', arrows=False)
nx.draw_networkx_labels(G, pos, font_size=10, font_family='sans-serif')

plt.show()


### 总结图是一种重要的数据结构,它可以用来表示复杂的关系和结构。通过学习图的定义、特性、应用和存储方式,我们可以更好地理解图在计算机科学中的作用。图的遍历是指按照一定的顺序访问图中所有顶点的过程,常见的遍历算法包括DFS和BFS。最后,我们使用matplotlib绘制了一个简单的图,以展示图的可视化效果。

### 后记本文主要介绍了图的基本概念、特性、应用和存储方式,以及图的遍历算法和代码示例。通过阅读本文,读者可以更好地理解图在计算机科学中的作用,并能够使用Python语言编写图相关的代码。

如果您有任何问题或建议,请随时与我联系。

其他信息

其他资源

Top