图搜索基础课件.pptx
《图搜索基础课件.pptx》由会员分享,可在线阅读,更多相关《图搜索基础课件.pptx(84页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1树型结构树型结构(非线性结构非线性结构)结点之间有分支结点之间有分支 具有层次关系具有层次关系 例 自然界:树 人类社会 家谱 行政组织机构 计算机领域 编译:用树表示源程序的语法结构 数据库系统:用树组织信息 算法分析:用树描述执行过程 国务院 山东省 北京市 西藏自治区 济南市 青岛市 威海市 历下区 市中区 历城区 树的意义?1 树与图的回顾第1页/共84页2树的定义和基本术语 定义:定义:树(Tree)是n(n0)个结点的有限集。若n=0,称为空树;若n0,则它满足如下两个条件:(1)有且仅有一个特定的称为根根(Root)的结点;(2)其余结点可分为m(m0)个互不相交的有限集T1,
2、T2,T3,Tm,其中每一个集合本身又是一棵树,并称为根的子树(SubTree)。树的定义是一个递归的定义。树的定义是一个递归的定义。第2页/共84页3树的逻辑结构:树的逻辑结构:树的逻辑结构:树的逻辑结构:树中任一结点都可以有零个或多个直接后继结点树中任一结点都可以有零个或多个直接后继结点但至多只能有一个直接前趋结点。但至多只能有一个直接前趋结点。T3T2T1基本术语:基本术语:结点的结点的度:度:度:度:结点拥有的子树数。结点拥有的子树数。度度=0叶子叶子叶子叶子终端结点终端结点终端结点终端结点 度度0分支结点分支结点分支结点分支结点 非终端非终端非终端非终端 结点结点结点结点 根结点以根
3、结点以 外的分支外的分支 结点称为结点称为 内部结点内部结点内部结点内部结点 树的树的度:度:度:度:树内各结点的度的最大值。树内各结点的度的最大值。双亲双亲孩子孩子兄弟兄弟结点的结点的祖先:祖先:祖先:祖先:从根到该结点所经分支上的所有结点。从根到该结点所经分支上的所有结点。结点的结点的子孙:子孙:子孙:子孙:以某结点为根的子树中的任一结点。以某结点为根的子树中的任一结点。第第1层层第第2层层第第3层层第第4层层堂兄弟堂兄弟双亲在同一层的结点双亲在同一层的结点树的树的深度:深度:深度:深度:树中结点的最大层次。树中结点的最大层次。有序树:有序树:有序树:有序树:树中结点的各子树从左至右有次序
4、树中结点的各子树从左至右有次序(最左边的为第一个孩子最左边的为第一个孩子)。无序树:无序树:无序树:无序树:树中结点的各子树无次序。树中结点的各子树无次序。结点:结点:数据元素数据元素+指向子树的分支指向子树的分支根结点:根结点:非空树中无前驱结点的结点非空树中无前驱结点的结点森林:森林:森林:森林:是是m(m0)棵互不相交的树的集合。棵互不相交的树的集合。一棵树可以看成是一个特殊的森林。一棵树可以看成是一个特殊的森林。把根结点删除树就变成了森林。把根结点删除树就变成了森林。给森林中的各子树加上一个双亲结点,森林就变成了树。给森林中的各子树加上一个双亲结点,森林就变成了树。树树森林森林一定是一
5、定是 不一定是不一定是 E F G H I A B C D J K L M 第3页/共84页4定义:定义:图(Graph)是一种复杂的非线性数据结构,由顶点集合及顶点间的关系(也称弧或边)集合组成。可以表示为:G(V,VR)其中V是顶点的有穷非空集合;VR是顶点之间关系的有穷集合,也叫做弧或边集合。弧是顶点的有序对,边是顶点的无序对。图的定义和基本术语 第4页/共84页5图的意义图是一种限制最少的数据结构。更接近现实;实际问题中很多数据关系都可以抽象成图,相关问题则可利用图的基本算法进行求解,很早就有专门研究图的是一门数学学科“图论”。图论中著名算法:求最小生成树的Kruskal算法、求最短路
6、径的Dijkstra算法和Floyd算法、求二分图最大匹配(指派问题)的匈牙利算法、求一般图最大匹配的Edmonds“花”算法、求网络最大流量和最小割集算法等。其中一些算法在数据结构课程中已经学习过。第5页/共84页6基本术语:基本术语:有向图有向图无向图无向图顶点:顶点:图中的数据元素。v2v1v3v4G1v2v1v3v4v5G2弧:弧:若 VR,则表示从v 到w 的一条弧,且称v为弧尾弧尾,称w为弧头弧头,此时的图称为有向图有向图。G1=(V1,A1)V1=v1,v2,v3,v4A1=,边:边:若 VR 必有 VR,则以无序对(v,w)代表这两个有序对,表示v 和w 之间的一条边,此时的图
7、称为无向图无向图。G2=(V2,E2)V2=v1,v2,v3,v4,v5E2=(v1,v2),(v1,v4),(v2,v3),(v2,v5),(v3,v4),(v3,v5)第6页/共84页7无向图中边的取值范围:无向图中边的取值范围:0en(n-1)/2。(n 表示图中顶点数目,e表示边的数目,且不考虑顶点到自身的边)完全图:完全图:完全图:完全图:有 n(n-1)/2条边的无向图(即:无向图中每两个顶点间都存在一条边)称为完全图完全图完全图完全图。有向完全图:有向完全图:有向完全图:有向完全图:有n(n-1)条弧的有向图(即:有向图中每两个顶点间都存在着方向相反的两条弧)称为有向完全图有向完
8、全图有向完全图有向完全图。v2v1v3v4v5有向图中弧的取值范围:有向图中弧的取值范围:0en(n-1)。(n 表示图中顶点数目,e表示弧的数目,且不考虑顶点到自身的弧)v2v1v3v4简单图简单图简单图简单图:没有环且每两个顶点间最多只有一条边相连的图。第7页/共84页8稀疏图:稀疏图:稀疏图:稀疏图:含有很少条边或弧的图。稠密图:稠密图:稠密图:稠密图:含有很多条边或弧的接近完全图的图。权:权:权:权:与图的边边或弧弧相关的数,这些数可以表示从一个顶点到另一个顶点的距离或耗费。网:网:网:网:带权的图。V1V2 1215V1 V27第8页/共84页9v3v4v5子图:子图:如果图G=(V
9、,E)和G=(V,E),满足:V V且E E,则称G为G的子图。v2v1v3v4v2v1v3v4v5v1v1v3v2v1v4v2v1v5v2v1v4v5v2v1v5邻接点:邻接点:若(v,v)是一条边,则称顶点v 和v互为邻接点,或称v 和v相邻接;称边(v,v)依附依附于顶点v和v,或称(v,v)与顶点v和v相关联相关联。若是一条弧,则称顶点v邻接到到v,顶点v邻接自自顶点v。并称弧与顶点v和v相关联相关联。v2v1v4第9页/共84页10度:度:度:度:无向图中顶点v的度是和v相关联的边的数目,记为TD(v)。v2v1v3v4v5入度:入度:入度:入度:有向图中以顶点v为终点的弧数目称为v
10、的入度,记ID(v)。出度:出度:出度:出度:有向图中以顶点v为起点的弧数目称为v的出度,记OD(v)。度:度:度:度:入度和出度之和,即:TD(v)=ID(v)+OD(v)。v2v1v3v4如果顶点vi的度为TD(vi),则一个有n个顶点e条边(弧)的图,满足如下关系:终端顶点终端顶点终端顶点终端顶点:有向图中把出度为0的顶点称为终端顶点。第10页/共84页11路径:路径:路径:路径:从顶点v到v的路径是一个顶点序列(v=vi,0,vi,1,vi,m=v),满足(vi,j-1,vi,j)VR或 VR(1 j m)。对于有向图,路径也是有向的。对于有向图,路径也是有向的。v2v1v3v4v5v
11、2v1v3v4路径长度:路径长度:路径长度:路径长度:路径上边或弧的数目。回路回路回路回路(环环环环):第一个顶点和最后一个顶点相同的路径。简单路径:简单路径:简单路径:简单路径:序列中顶点(两端点除外)不重复出现的路径。简单回路简单回路简单回路简单回路(简单环简单环简单环简单环):前后两端点相同的简单路径。连通:连通:连通:连通:无向图中从顶点v到v有路径,则说v和v是连通的。连通图:连通图:连通图:连通图:无向图中任意两个顶点都是连通的。v2v1v3v4v5第11页/共84页12连通分量:连通分量:连通分量:连通分量:无向图的极大连通子图;任何连通图的连通分量只有一个,即其本身;非连通图有
12、多个连通分量(非连通图的每一个连通部分)。v2v1v3v4v5v2v1v3v4v5强连通图:强连通图:强连通图:强连通图:有向图G中,若对于V(G)中任意两个不同的顶点vi和vj,都存在从vi到vj以及从vj到vi的路径,则称G是强连通图。v2v1v3v4强连通分量:强连通分量:强连通分量:强连通分量:有向图的极大强连通子图;任何强连通图的强连通分量只有一个,即其本身;非强连通图有多个强连通分量。v2v1v3v4v2v1v3v4第12页/共84页13 对于一个具有n个顶点的图,可用两个数组存储。其中一个一维数组存储数据元素(顶点)的信息,另一个二维数组(图的邻接矩阵)存储数据元素之间的关系(边
13、或弧)信息。邻接矩阵:邻接矩阵:邻接矩阵:邻接矩阵:设G=(V,VR)是具有n个顶点的图,顶点的顺序依次为v1,v2,vn,则G 的邻接矩阵是具有如下性质的n阶方阵:图的存储结构之数组表示法(邻接矩阵表示法)第13页/共84页14v2v1v3v4G1v2v1v3v4v5G2v1v2v3v4v1v2v3v4v5v1v2v3v4v1v2v3v4v5特点:特点:无向图的邻接矩阵对称,可压缩存储;有n个顶点的无向图需存储空间为n(n-1)/2。有向图邻接矩阵不一定对称;有n个顶点的有向图需存储空间为n,空间复杂度O(n2),用于稀疏图时空间浪费严重。无向图中顶点vi的度TD(vi)是邻接矩阵中第i行1
14、的个数。有向图中顶点vi的出度出度是邻接矩阵中第i行行1的个数。顶点vi的入入度度是邻接矩阵中第i列列1的个数。第14页/共84页15网的邻接矩阵可定义为:网的邻接矩阵可定义为:v2v1v3v4v5v65489755613v1v2v3v4v5v6v1v2v3v4v5v6第15页/共84页16顶点表结点顶点表结点 data firstarc 边表结点边表结点 adjvex nextarc info v2v1v3v4v5G2v1v3v4v2v501234314204312021链域链域链域链域,指示下一条边或弧。,指示下一条边或弧。特点:特点:若无向图中有若无向图中有n个顶点、个顶点、e条边,则其
15、邻接表需条边,则其邻接表需n个顶点表结个顶点表结点和点和2e个边表结点。适宜存储稀疏图。个边表结点。适宜存储稀疏图。无向图中顶点无向图中顶点vi的度为第的度为第i个单链表中的结点数。个单链表中的结点数。邻接点域邻接点域邻接点域邻接点域,存放与,存放与vi邻接的邻接的结结点在表头数组中的位置。点在表头数组中的位置。图的存储结构之邻接表(类似于树的孩子链表表示法)第16页/共84页17v2v1v3v4G101232130v1v3v4v20123302v1v3v4v20邻接表邻接表 逆邻接表逆邻接表 顶点顶点vi的的出度出度出度出度为第为第i个单链个单链表中的结点个数。表中的结点个数。特点:特点:顶
16、点顶点vi 的的入度入度入度入度为整个为整个单链表单链表中邻接点域值是中邻接点域值是i-1的结点的结点个数个数。找出度易,找入度难。找出度易,找入度难。找入度易,找出度难。找入度易,找出度难。顶点顶点vi的的入度入度入度入度为第为第i个单链个单链表中的结点个数。表中的结点个数。顶点顶点vi 的的出度出度出度出度为整个为整个单链表单链表中邻接点域值是中邻接点域值是i-1的结点的结点个数个数。第17页/共84页18方法:方法:根结点根结点 左子树左子树 右子树右子树 依次遍历二叉树中的三个组成 部分,从而遍历整个二叉树。假设:L:遍历左子树D:遍历根结点R:遍历右子树则遍历整个二叉树方案共有:DL
17、R、LDR、LRD、DRL、RDL、RLD六种。目的:目的:得到树中所有结点的一个得到树中所有结点的一个线性线性排列。排列。二叉树的遍历第18页/共84页19若规定先左后右,则只有前三种情况:DLRDLR先(根)序遍历LDRLDR中(根)序遍历LRDLRD后(根)序遍历ABDELHMIJ递归的定义ABC第19页/共84页201、先根、先根(次序次序)遍历遍历:2、后根、后根(次序次序)遍历遍历:若树不空,则先访问根结点,然后依次先根遍历各棵子树。若树不空,则先依次后根遍历各棵子树,然后访问根结点。遍历结果:遍历结果:先根遍历:先根遍历:ABCDE后根遍历:后根遍历:BDCEA3、按层次遍历、按
18、层次遍历:若树不空,则自上而下自左至右访问树中每个结点。按层次遍历:按层次遍历:ABCEDACBED一般树的遍历第20页/共84页21从图的任意指定顶点出发,依照某种规则去访问图中所有顶点,且每个顶点仅被访问一次,此过程叫做图的遍历图的遍历。图的遍历按照广度优先和深度优先规则去实施,通常有广度优先遍历法广度优先遍历法(Breadth_FristSearchBFS)和深度优深度优先遍历法先遍历法(Depth_FirstSearchDFS)两种。V1V2V4V5V3V7V6V8图的遍历第21页/共84页22方法:方法:从图的某一结点出发,首先依次访问该结点的所有邻接顶点Vi1,Vi2,Vin,再依
19、次访问与Vi1,Vi2,Vin 相邻接的所有未被访问的顶点,重复此过程,直至所有顶点均被访问为止。例:V1V2V4V5V3V7V6V8广度优先遍历:广度优先遍历:V1 V2V3V4V5V6V7V8V1 V3V2V7V6V5V4V8V1 V2V3V5V4V7V6V8图的遍历之广度优先遍历(BFS)第22页/共84页23 V2V4V5V1V1 V2V3V4V5V6实现:实现:V1V2V4V5V3V7V6V801234567V1V2V3V4V5V6V7V8210101223354677654 0 0 0 0 0 0 0 0 0123456711111V3V71V6V811FRRFRRFRRFV7V8
20、FFFFFRRR第23页/共84页24方法:方法:首先访问指定的起始顶点,然后在与该顶点邻接的顶点中选择一个未被访问的顶点进行访问,接着再从现在访问的顶点的邻接顶点中任意选择一个未被访问的顶点任意选择一个未被访问的顶点进行访问,如此继续,若到达无未被访问的邻接顶点的顶点时,则退回退回到最近访问过的那个顶点,若它还有未被访问的邻接顶点,则选择一个进行访问。重复上述过程,直到全部顶点都访问完毕。例:V1V1V2V4V5V3V7V6V8深度优先遍历:深度优先遍历:V2V4V8V5V3V6V7V1 V2V5V8V4V3V6V7V1 V2V4V8V5V3V7V6V1 V2V5V8V4V3V7V6V1 V
21、3V6V7V2V4V8V5图的遍历之深度优先遍历(DFS)第24页/共84页25 V2V4V8V5V1V1 V2V4V8V5V3实现:实现:V1V2V4V5V3V7V6V801234567V1V2V3V4V5V6V7V8210101223354677654 0 0 0 0 0 0 0 0 0123456711111V3V61V6V71V71第25页/共84页26 V2V4V8V1V1 V2V4V8V5V301234567V1V2V3V4V5V6V7V8213156776 0 0 0 0 0 0 0 0 0123456711111V3V61V6V71V71V1V2V4V5V3V7V6V8V5第2
22、6页/共84页272 显式图&隐式图在路径问题、连通性问题和网络优化等问题中,图的结构是显式给出的,包括图中的顶点、边及权重,这类图称为显式图,即一般意义上的图。n隐式图是由问题的初始结点,为了求解或求证问题,根据问题的规则(一般是由题目的意思隐含给出的),也就是生成子结点的约束条件,逐步扩展结点,直至得到目标结点为止的一个隐式的图。q两种典型的隐式图:子集树,排列树第27页/共84页282 显式图&隐式图-子集树n当要求解的问题需要在n个元素的子集中进行搜索,其搜索空间树被称作子集树(subsettree)。这n个元素都在子集中或被选取记为1,不在子集中或被舍去记为0,这样搜索空间为:(0,
23、0,0,0),(0,0,0,1),(0,0,1,0),(0,0,1,1),(1,1,1,1)。第28页/共84页292 显式图&隐式图-子集树共2n 个状态。若表示为树形结构就是一棵有2n个叶结点的二叉树,对树中所有分支进行遍历的算法都必须耗时O(2n)第29页/共84页302 显式图&隐式图-排列树当要求解的问题需要在n个元素的排列中搜索问题的解时,解空间树被称作排列树(permutation tree)。搜索空间为:(1,2,3,n-1,n),(2,1,3,n-1,n),(2,3,1,n-1,n),(2,3,4,1,n-1,n),.(n,n-1,3,2,1)n第一个元素有n种选择,第二个元
24、素有n-1种选择,第三个元素有n-2种选择,第n个元素有1种选择,共计n!个状态。若表示为树形就是一个n度树,这样的树有n!个叶结点,所以每一个遍历树中所有节点的算法都必须耗时O(n!)第30页/共84页312 显式图&隐式图-排列树第31页/共84页323 图搜索术语&方法分类穷举搜索(盲目搜索)是对图的最基本的搜索算法,是蛮力策略的一种表现形式。即不考虑给定问题的特有性质,按事先定好的顺序,依次运用规则,盲目搜索的方法。q启发式搜索是利用一些启发信息,提前判断出先搜索哪些状态可能尽快找到问题的解或某些情况不可能取到最优解,从而可以提前舍弃对这些状态的尝试。即考虑给定问题的特有性质,选用合适
25、的细则,提高搜索的效率。n搜索分为两大类:隐含地检查所有可能情况第32页/共84页333 图搜索术语&方法分类问题状态:树中的每一个结点确定所求解问题的一个问题状态。状态空间:由根结点到其它结点的所有路径(分支),就确定了这个问题的状态空间。解状态:是这样一些问题状态S,对于这些问题状态,由根到S的那条路径确定了该解空间中的一个元组。答案状态:是这样一些解状态S,对于这些解状态而言,由根到S的这条路径确定了这问题的一个解(即它满足隐式约束条件)。状态空间树:解空间的树结构,又称隐式图。第33页/共84页343 图搜索术语&方法分类n活结点:如果已生成一个结点而它的所有儿子结点还没有全部生成,则
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 搜索 基础 课件
限制150内