| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 图的总结 -> 正文阅读 |
|
[数据结构与算法]图的总结 |
1.图的定义
<x,y>?表示从顶点x到顶点y的一条弧, x:弧尾或起始点 y:弧头或终端点 < >表示有向图 ,()表示无向图 2.基本术语 n:图中顶点个数? ? e:图中边或弧的数目 如果不考虑顶点到自身的边或弧 对于无向图,边数范围(0,n(n-1)/2)。若图中每个顶点和其余n-1?个顶点都有边相连,则边数为n(n-1)/2,那么这样的无向图为无向完全图。 对于有向图,边数范围(0,n(n-1))。若图中每个顶点和其余n-1?个顶点都有弧相连,则边树为n(n-1),那么这样的有向图为有向完全图。 对于有很少条边的图称为稀疏图。 3.度 无向图:顶点v的度是指和v相关联边的数目,记作TD(v) 无向图:度分入度和出度。以顶点v为弧头的弧的数目称为该顶点的入度,记为ID(v)。以顶点v? ? ? ? ? ? ? ? 为弧尾的弧的数目称为该顶点的的出度,记为OD(v)。TD(v)=ID(v)+OD(v) 4.权与网 在实际应用中,图的边或弧往往与具有一定意义的数字有关,即每一条边都有与他相关的数,称为权。这种带权的图称为赋权图或网。 5.路径与回路 路径的长度是指路径上经过的弧或边的数目。 在一个路径中,若第一个顶点和最后一个顶点是相同的,则称该路径为回路或环。 若表示路径的顶点序列中的各顶点各不相同,则称这样的路径为简单路径。 除了第一个和最后一个顶点外,其余各顶点均不重复的回路为简单回路 6.连通图 无向图:若从x到y有路径相通,则称顶点x,y是连通的。若无向图中任意两个顶点都是连通的,则称该无向图G为连通图。 有向图:若对于每对顶点有双向路径,则称该有向图为强连通图。 3.图的存储结构 邻接矩阵表示法:也称作数组表示法。用两个数组来表示图,一个用来存储顶点信息的一维数组,一个用来存储图中顶点之间关联关系的二维数组。这个关联关系数组被称为邻接矩阵。
存储空间 无向图:无向图的邻接矩阵是对称矩阵,可以采用特殊矩阵的压缩存储,即只存储其下三角。 ? ? ? ? ? ? 需要 n(n-1)/2?个存储空间。 有向图:存储空间需要 n2 个。 对于无向图,其邻接矩阵第i行元素之和就是图中第i个顶点的度 对于有向图,其邻接矩阵第i行元素之和是图中第i个顶点的出度,第i列元素之和是图中第i个顶点的入度 采用邻接矩阵法创建有向图
邻接表表示法 邻接表表示法实际上是图的一种链式存储结构,对于图中存在的边信息则存储,而不相邻接的顶点则不保留信息。一个n个顶点的图的邻接表表示由表头结点表与边表两部分组成。 表头结点表:由所有表头结点以顺序结构的形式存储,以便随机访问任一顶点的边链表。 表头结点有两部分组成:数据域vexdata(存储顶点的名或其他有关信息)---链域firstarc(指向链表中第一个顶?点) 边表:由表示图中顶点间的邻接关系的n个边链表组成。 边链表中结点有三个部分组成:? ? 邻接点域adjvex(存放与顶点相邻接的顶点在图中的位置)----数据域info(存放与边或弧相关的信息)-----链域nextarc(指向与顶点v相关联的下一条边或弧的结点) ? ? ? ? ? ? ? ? ? ? 4.图的遍历? ? ? ? ? ? ? 为了保证图的各顶点在遍历过程中访问且仅访问一次,需要为每个顶点设一个访问标志,因此要设置一个访问标志数组,用于标记图中每个顶点是否被访问过。初始值为0 ,一旦顶点访问过,则标志数组置为1,表示该?顶点已访问。? ?? 深度优先搜素?:类似于根的先根遍历。 基本思想: 1.从图中某个顶点v0出发,首先访问v0 2.找到刚访问过的顶点的第一个未被访问的邻接点,然后访问该顶点。以该顶点为新顶点,重复此步骤,直到刚访问过的顶点没有未被访问的邻接点为止。 3.返回前一个访问过的且仍有未被访问的邻接点的顶点,找出该顶点的下一个未被访问的邻接点,访问该顶点,然后执行步骤2. 邻接矩阵的深度优先遍历
邻接表的深度优先遍历
非递归实现深度优先遍历 首先将v0入栈 只要栈不空,则重复下述处理:栈顶顶点出栈,如果未访问,则访问并置访问标志,然后将该顶点所有未访问的邻接点入栈。
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 12:23:27- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |