第4章基本搜索和遍历方法
- 格式:pptx
- 大小:447.07 KB
- 文档页数:48
第4章图结构及其应用算法数据结构与算法Data Structures andgAlgorithms张岩海量数据计算研究中心哈工大计算机科学与技术学院第4章图结构及其应用算法2016/11/20Slide 4-2——图论欧拉欧拉1707年出生在瑞士的巴塞尔城,19岁开始发表论文,直到76岁。
几乎每一个数学领域都可以表论文直到76岁几乎每个数学领域都可以看到欧拉的名字,从初等几何的欧拉线,多面体的欧拉定理,立体解析几何的欧拉变换公式,四次方程的欧拉解法到数论中的欧拉函数,微分方程的欧拉方程,级数论的欧拉常数,变分学的欧拉方程,复变函数的欧拉公式等等。
据统计他那不倦的一生,共写下了886本书籍和论文,其中分析、代数、数论占40%,几何占18%,物理和力学占28%,天文学占11%,弹道学、航海学、力学占28%天文学占11%弹道学航海学建筑学等占3%。
1733年,年仅26岁的欧拉担任了彼得堡科学院学教授年到林担任科了彼得堡科学院数学教授。
1741年到柏林担任科学院物理数学所所长,直到1766年,重回彼得堡,没有多久,完全失明。
欧拉在数学上的建树很多,对著名的哥尼斯堡七桥问题的解答开创了图论的研究。
哥尼斯堡七桥问题能否从某个地方出发,穿过所有的桥仅一次后再回到出发点?学习目标图结构是一种非线性结构,反映了数据对象之间的任意关系,在计算机科学、数学和工程中有着非常广泛的应用。
了解图的定义及相关的术语,掌握图的逻辑结构及其特点;了解图的存储方法,重点掌握图的邻接矩阵和邻接表存储结构;掌握图的遍历方法,重点掌握图的遍历算法的实现;了解图的应用,重点掌握最小生成树、双连通性、强连通性、最短路径、拓扑排序和关键路径算法的基本思想、算法原理和实现过程。
本章主要内容4.1 图的基本概念4.2 图的存储结构4.3 图的遍历(搜索)4.4 最小生成树算法4.5 双连通性算法4.5双连通性算法4.6 强连通性算法4.7最短路径算法4.7 最短路径算法4.8 拓扑排序算法4.9 关键路径算法本章小结本章的知识点结构基本的数据结构(ADT)图无向图有向图加权图网络图(无向图、有向图;加权图----网络)知识点结构定义及相关术语逻辑结构及其特征ADT定义A逻辑结构静态的结构基本操作(算法)存储结构(描述)ADT基本动态的操作存储结构特点存储结构的定义ADT实现数据结构存储结构静态的结构操作(算法)实现算法的性能应用:最小生成树最短路径拓扑排序和关键路径动态的操作,,图的搜索(遍历)算法是有关图问题的重要核心算法!4.1基本定义4.1定义1 图(Graph)图是由顶点(vertex)的有穷非空集合和顶点之间边(edge)的集合组成的一种数据结构,通常表示为:G = (V,E)其中:G表示一个图,V是图G中顶点的集合,E是图G中顶点之间边的集合。
离散数学(微课版)第4章1. 引言在离散数学的第4章中,我们将讨论图论的基本概念和应用。
图论是研究图及其在现实生活中的应用的数学分支,它在计算机科学、网络设计、运筹学等领域中具有重要的应用价值。
本章将介绍图的定义、图的表示方法、图的遍历算法等内容。
2. 图的定义图由一组节点和一组节点之间的边构成。
节点通常表示现实世界中的对象,而边则表示对象之间的关系。
图可以用于描述各种问题,如社交网络中的用户关系、城市之间的交通网络等。
2.1 有向图和无向图图可以分为有向图和无向图两种类型。
在有向图中,边具有方向,表示节点之间的单向关系。
而在无向图中,边没有方向,表示节点之间的双向关系。
2.2 顶点和边图由顶点和边组成。
顶点是图的节点,用来表示对象。
边连接两个顶点,表示两个对象之间的关系。
2.3 路径和环路径是指在图中从一个顶点到另一个顶点的连接序列。
环是一条路径,其起点和终点相同。
3. 图的表示方法在计算机中,图可以用不同的数据结构来表示。
常见的表示方法包括:3.1 邻接矩阵邻接矩阵是用二维数组表示图的连接关系。
对于无向图,邻接矩阵是对称的,而对于有向图,则不对称。
A B CA010B101C010上述邻接矩阵表示了一个无向图,其中顶点A与顶点B相连,顶点B与顶点C相连。
3.2 邻接表邻接表是用链表表示图的连接关系。
对于每个顶点,邻接表保存了与其相连的其他顶点的信息。
A ->B -> NULLB -> A ->C -> NULLC -> B -> NULL上述邻接表表示了一个无向图,顶点A与顶点B相连,顶点B与顶点A、C相连,顶点C与顶点B相连。
4. 图的遍历算法图的遍历算法是指按照一定的方式访问图中的所有节点。
常见的图的遍历算法有深度优先搜索和广度优先搜索。
4.1 深度优先搜索深度优先搜索从起点开始,尽可能深地访问尚未访问的节点,直到无法继续深入为止,然后回溯到上一个节点,继续深入其他未访问的节点。
第4章超越经典的搜索1 局部搜索算法和最优化问题1.1 爬山法(贪婪局部搜索)1.1.1 爬山法(最陡上升版本)1.1.2 随机爬山法1.1.3 首选爬山法1.1.4 随机重启爬山法1.2 模拟退火搜索1.2.1 特点1.3 局部束搜索(Local beam search)1.4 遗传算法(Genetic algorithm,GA)1.4.1 例子:八皇后问题1.4.2 遗传算法伪代码:2 使用不确定动作的搜索2.1 与或搜索树3 使用部分可观察信息的搜索3.1 无观察信息的搜索3.2 部分可观察问题的搜索3.2.1 联机搜索4 总结1 局部搜索算法和最优化问题在第3章中讨论的无信息搜索和有信息搜索有如下性质:环境都是在可观察、确定的、已知的,问题解是一个行动序列。
本章将不受这些环境性质的约束,讨论局部搜索(local search)算法,考虑对一个或多个状态进行评价和修改,而不是系统地搜索从初始状态开始的路径。
局部搜索(local search)算法:从单个当前结点出发,通常只移动到它的邻近状态而不保留搜索路径局部搜索不关心路径代价,但是关注解状态。
Agent不知道前面的状态,只知道当前的状态。
比如八皇后问题,不关心是怎么到目的状态的,只关心最终布局对不对,许多重要应用都有这样的性质,如作业空间调度,自动程序设计等。
虽然局部搜索算法不是系统化的,但是有两个关键优点:占用内存少,通常只用常数级的内存通常能在系统化算法不适用的很大或无限的(连续的)状态空间中找到合理的解。
此外,局部搜索算法对于解决纯粹的最优化问题十分有用,其目标是根据目标函数找到最佳状态。
如果存在解,最优的局部搜索算法总能找到全局最大/最小值???1.1 爬山法(贪婪局部搜索)定义:不断向值增大的方向移动,直到到达局部最优。
也被称为贪婪局部搜索,因为它只选择邻居中状态最好的一个,而不考虑下一步怎么走。
贪婪算法很容易改善一个坏的状态,但却经常陷入局部最优无法跳出。