数据结构教程(简答易懂)第六章
《数据结构教程》第6章 递归

第6章 递归
6Hale Waihona Puke 1 什么是递归6.2 递归算法的设计 6.3 递归算法到非递归算法的转换
本章小结
6.1 什么是递归
6.1.1 递归的定义
f(s1)=m1 ↓ f(s2)=g(f(s1),c1) ↓ f(s3)=g(f(s2),c2) ↓ … ↓ f(sn)=g(f(sn-1),cn-1)
这样f(sn)便计算出来了,因此,递归的执行过程 由分解和求值两部分构成。
求解fun(5)的过程如下:
fun(5) fun(5)=120
d1:fun(4)
有许多数学公式、数列等的定义是递归的。例如,
求n!和Fibonacci数列等。这些问题的求解过程可以
将其递归定义直接转化为对应的递归算法。
2. 数据结构是递归的 有些数据结构是递归的。例如,第2章中介绍过的单 链表就是一种递归数据结构,其结点类型定义如下:
typedef struct LNode
{
1.等值关系 等值关系是指“大问题”的函数值等于“小问题” 的函数值的某种运算结果,例如求n!对应的递归模 型就是等值关系。 仍以例6.1讨论等值关系递归模型的转换方法。 分析:该递归模型有一个递归出口和一个递归体 两个式子,分别称为(1)式和(2)式。 (2)式中有一次分解过程: f(n) f(n-1) 对应的求值过程是: f(n-1) f(n)=n*f(n-1)。
把递归算法转化为非递归算法有如下三种基本方法: (1)对于尾递归和单向递归的算法,可用循环结构的算 法替代。
数据结构第六章习题答案

删除40 删除70 删除60struct node { int data;struct node *lchild, *rchild;};typedef struct node NODE;NODE *create_tree(a,i,j)int a[ ],i,j;{NODE *p;int k;if(i>j) return(NULL);k=(i+j)/2;p=(NODE *)malloc(sizeof(NODE));p->data=a[k];p->lchild=create_tree(a,i,k-1);p->rchild=create_tree(a,k+1,j);return(p);}6. 3int check(root)NODE *root;{int x;if(root==NULL)return(0);if(root->data<root->rchild->data&&root->data>root->lchild->data) {x=check(root->rchild);if(!x) return(check(root->lchild));}return(1);}6. 4int height(root)NODE *root;{int h,k;if(root==NULL)return(-1);else if(root->lchild==NULL&&root->rchild==NULL)return(0);elseh=height(root->lchild);k=height(root->rchild);if(h>k)return(h+1);elsereturn(k+1);}}6. 5#include “math.h”int check_beltree(root)NODE *root;{int a;if(root==NULL)return(1);if(check_beltree(root->lchild)==0||check_beltree(root->rchild)==0) return(0);a=abs(height(root->rchild)-height(root->lchild)); //上题函数if(a<=1)return(1);}6.76.8结点k1 k2 k3 k4 k5结点值10 30 50 70 90相对使用频率(pi)p1 p2 p3 p4 p55 6 3 7 4外部结点使用频率(qi) q0 q1 q2 q3 q4 q54 2 1 2 3 4 本题的分析与计算,请参考“习题6.8”(Excel表),最后结果为:。
数据结构第六章图练习题及答案详细解析(精华版)

数据结构第六章图练习题及答案详细解析(精华版)第一篇:数据结构第六章图练习题及答案详细解析(精华版) 图1.填空题⑴ 设无向图G中顶点数为n,则图G至少有()条边,至多有()条边;若G为有向图,则至少有()条边,至多有()条边。
【解答】0,n(n-1)/2,0,n(n-1)【分析】图的顶点集合是有穷非空的,而边集可以是空集;边数达到最多的图称为完全图,在完全图中,任意两个顶点之间都存在边。
⑵ 任何连通图的连通分量只有一个,即是()。
【解答】其自身⑶ 图的存储结构主要有两种,分别是()和()。
【解答】邻接矩阵,邻接表【分析】这是最常用的两种存储结构,此外,还有十字链表、邻接多重表、边集数组等。
⑷ 已知无向图G的顶点数为n,边数为e,其邻接表表示的空间复杂度为()。
【解答】O(n+e)【分析】在无向图的邻接表中,顶点表有n个结点,边表有2e个结点,共有n+2e个结点,其空间复杂度为O(n+2e)=O(n+e)。
⑸ 已知一个有向图的邻接矩阵表示,计算第j个顶点的入度的方法是()。
【解答】求第j列的所有元素之和⑹ 有向图G用邻接矩阵A[n][n]存储,其第i行的所有元素之和等于顶点i的()。
【解答】出度⑺ 图的深度优先遍历类似于树的()遍历,它所用到的数据结构是();图的广度优先遍历类似于树的()遍历,它所用到的数据结构是()。
【解答】前序,栈,层序,队列⑻ 对于含有n个顶点e条边的连通图,利用Prim算法求最小生成树的时间复杂度为(),利用Kruskal算法求最小生成树的时间复杂度为()。
【解答】O(n2),O(elog2e)【分析】Prim算法采用邻接矩阵做存储结构,适合于求稠密图的最小生成树;Kruskal算法采用边集数组做存储结构,适合于求稀疏图的最小生成树。
⑼ 如果一个有向图不存在(),则该图的全部顶点可以排列成一个拓扑序列。
【解答】回路⑽ 在一个有向图中,若存在弧、、,则在其拓扑序列中,顶点vi, vj, vk的相对次序为()。
数据结构教程李春葆课后答案第6章数组和广义表

int length; }
//元素值 //重复元素的个数
如数组 A[]={1,1,1,5,5,5,5,3,3,3,3,4,4,4,4,4,4},共有 17 个元 素,对应的压缩存储 B 为:{1,3},{5,4},{3,4},{4,6}}。从中看出,如果重复元素 越多,采用这种压缩存储方式越节省存储空间。
6. 利用三元组存储任意稀疏数组 A 时,假设其中一个元素和一个整数占用的存储空间 相同,问在什么条件下才能节省存储空间。
答:设稀疏矩阵 A 有 t 个非零元素,加上行数 rows、列数 cols 和非零元素个数 nums (也算一个三元组),那么三元组顺序表的存储空间总数为 3(t+1),若用二维数组存储时占 用存储空间总数为 m×n,只有当 3(t+1)<m×n 即 t<m×n/3-1 时,采用三元组存储才能节省存 储空间。
解:对于稀疏矩阵三元组表 a,从 a.data[0]开始查看,若其行号等于列号,表示是一
个对角线上的元素,则进行累加,最后返回累加值。算法如下:
bool diagonal(TSMatrix a,ElemType &sum)
数据结构第六章题目讲解

数据结构第六章题⽬讲解02⼀选择题:1、以下说法错误的是①树形结构的特点是⼀个结点可以有多个直接前趋②线性结构中的⼀个结点⾄多只有⼀个直接后继③树形结构可以表达(组织)更复杂的数据④树(及⼀切树形结构)是⼀种"分⽀层次"结构⑤任何只含⼀个结点的集合是⼀棵树2.深度为6的⼆叉树最多有( )个结点①64 ②63 ③32 ④313 下列说法中正确的是①任何⼀棵⼆叉树中⾄少有⼀个结点的度为2②任何⼀棵⼆叉树中每个结点的度都为2 ⼆叉树可空③任何⼀棵⼆叉树中的度肯定等于2 ④任何⼀棵⼆叉树中的度可以⼩于24 设森林T中有4棵树,第⼀、⼆、三、四棵树的结点个数分别是n1,n2,n3,n4,那么当把森林T转换成⼀棵⼆叉树后,且根结点的右⼦树上有()个结点。
①n1-1 ②n1③n1+n2+n3④n2+n3+n4⼆.名词解释:1 结点的度 3。
叶⼦ 4。
分⽀点 5。
树的度三填空题⼆叉树第i(i>=1)层上⾄多有_____个结点。
1、深度为k(k>=1)的⼆叉树⾄多有_____个结点。
2、如果将⼀棵有n个结点的完全⼆叉树按层编号,则对任⼀编号为i(1<=i<=n)的结点X有:若i=1,则结点X是_ ____;若i〉1,则X的双亲PARENT(X)的编号为__ ____。
若2i>n,则结点X⽆_ _____且⽆_ _____;否则,X的左孩⼦LCHILD(X)的编号为____。
若2i+1>n,则结点X⽆__ ____;否则,X的右孩⼦RCHILD(X)的编号为_____。
4.以下程序段采⽤先根遍历⽅法求⼆叉树的叶⼦数,请在横线处填充适当的语句。
Void countleaf(bitreptr t,int *count)/*根指针为t,假定叶⼦数count的初值为0*/ {if(t!=NULL){if((t->lchild==NULL)&&(t->rchild==NULL))__ __;countleaf(t->lchild,&count);countleaf(t->rchild,&count);}}5 先根遍历树和先根遍历与该树对应的⼆叉树,其结果_____。
数据结构课件第六章

6
广义表表示法
( A ( B ( E ( K, L ), F ), C ( G ), D ( H ( M ), I, J ) )
根作为由子树森林组成的表的名字写在表的左边
data link 1 link 2 ... 麻烦问题:应当开设多少个链域? link n
7
左孩子-右兄弟表示法
( A ( B ( E ( K, L ), F ), C ( G ), D ( H ( M ), I, J ) ) ) 数据 右兄弟 左孩子
数据结构课程的内容
1
第6章 树和二叉树( Tree & Binary Tree )
特点:非线性结构,一个直接前驱,但可能有多个 直接后继(1:n)
6.1 6.2 6.3 6.4 6.5
树的基本概念 二叉树 遍历二叉树和线索二叉树 树和森林 赫夫曼树及其应用
2
6.1
1.
2 3. 4. 5.
树的基本概念
24
3. 二叉树的存储结构
一、顺序存储结构 按二叉树的结点“自上而 B 下、从左至右”编号,用 一组连续的存储单元存储。 D E
H I A
T[0]一 般不用
C F G
问:顺序存储后能否复原成唯一对应的二叉树形状? 答:若是完全/满二叉树则可以做到唯一复原。 而且有规律:下标值为i的双亲,其左孩子的下标值必为 2i,其右孩子的下标值必为2i+1(即性质5) 例如,对应[2]的两个孩子必为[4]和[5],即B的左孩子必 是D,右孩子必为E。
(除根结点外,每个结点必有一个直接前趋,即一个分支)
而 总分支数B= n1+2n2 (1度结点必有1个直接后继,2度结点必有2个)
三式联立可得: n0+n1+n2= n1+2n2 +1, 即n0=n2+1
数据结构第6章习题答案
第6章树和二叉树习题解答一、下面是有关二叉树的叙述,请判断正误(每小题1分,共10分)(√)1. 若二叉树用二叉链表作存贮结构,则在n个结点的二叉树链表中只有n—1个非空指针域。
(×)2.二叉树中每个结点的两棵子树的高度差等于1。
(√)3.二叉树中每个结点的两棵子树是有序的。
(×)4.二叉树中每个结点有两棵非空子树或有两棵空子树。
(×)5.二叉树中每个结点的关键字值大于其左非空子树(若存在的话)所有结点的关键字值,且小于其右非空子树(若存在的话)所有结点的关键字值。
(应当是二叉排序树的特点)(×)6.二叉树中所有结点个数是2k-1-1,其中k是树的深度。
(应2i-1)(×)7.二叉树中所有结点,如果不存在非空左子树,则不存在非空右子树。
(×)8.对于一棵非空二叉树,它的根结点作为第一层,则它的第i层上最多能有2i—1个结点。
(应2i-1)(√)9.用二叉链表法(link-rlink)存储包含n个结点的二叉树,结点的2n个指针区域中有n+1个为空指针。
(正确。
用二叉链表存储包含n个结点的二叉树,结点共有2n个链域。
由于二叉树中,除根结点外,每一个结点有且仅有一个双亲,所以只有n-1个结点的链域存放指向非空子女结点的指针,还有n+1个空指针。
)即有后继链接的指针仅n-1个。
(√)10. 〖01年考研题〗具有12个结点的完全二叉树有5个度为2的结点。
最快方法:用叶子数=[n/2]=6,再求n2=n0-1=5二、填空(每空1分,共15分)1.由3个结点所构成的二叉树有5种形态。
2. 【计算机研2000】一棵深度为6的满二叉树有n1+n2=0+ n2= n0-1=31 个分支结点和26-1 =32个叶子。
注:满二叉树没有度为1的结点,所以分支结点数就是二度结点数。
3.一棵具有257个结点的完全二叉树,它的深度为9。
(注:用⎣ log2(n) ⎦+1= ⎣ 8.xx ⎦+1=94.【全国专升本统考题】设一棵完全二叉树有700个结点,则共有350个叶子结点。
数据结构第六章
K
L
M
任何一棵非空树是一个二元组 Tree = (root,F) 其中:root 被称为根结点, F 被称为子树森林
6.2 二叉树
定义
定义:二叉树是n(n0)个结点的有限集,它或为空树 (n=0),或由一个根结点和两棵分别称为左子树和右子树 的互不相交的二叉树构成 二叉树,度为2的树? 特点
树和二叉树
树是一类重要的非线性数据结构,以分支 关系描述数据元素之间的层次结构 6.1 树 定义: 树(tree)是n(n≥0)个结点的有限集。在任意一棵非
空树中:
有且仅有一个特殊的结点,称为树的根结点(root)
当n>1时,除根结点之外的其余结点可分为
m(m>0)个 互不相交的有限集合T1,T2,……Tm,其 中每一个集合本身又是一棵树,称为根的子树 (subtree)
证明:用归纳法证明之 i=1时,只有一个根结点,2i-1 = 20 = 1; 假设对所有j(1j<i)命题成立,即第j层上至多有2j-1 个结 点,那么,第i-1层至多有2i-2个结点 又二叉树每个结点的度至多为2 第i层上最大结点数是第i-1层的2倍,即2i-2 2 = 2i-1 故命题得证 k 性质2:深度为k的二叉树至多有 2 1 个结点(k1) 证明:由性质1,可得深度为k 的二叉树最大结点数是
基本操作 P :
插入类:
InitTree(&T) // 初始化臵空树 CreateTree(&T, definition) // 按定义构造树 Assign(T, cur_e, value) // 给当前结点赋值 InsertChild(&T, &p, i, c) // 将以c为根的树插入为 结点p的第i棵子树
数据结构第6章
V’ V且E’ E,则称G’为G的子图。
下图所示是子图的一些例子。
子图是在原图上删去若干条边或若干个点剩下的图。 删边指删去图中的某一条边但仍保留边的顶点。
删点指删去图中某一点以及与这点相连的所有边。 图中删去一点所得的子图称为主子图。 设有一个n阶无向图,在其中添加一些边后,可使其成 为n阶完全图。 由这些新添加的边和其顶点构成的图称为原图的补 图。
有向图中的极大强连通子图称为有向图的强连通分量。 例如,下图不是强连通图,但它有两个强连通分量。
在图的顶点或边上表明某种信息的数称为权,含 有权的图,称为赋权图。
例如,下图就是一个赋权图。
最短路径问题的算法: 先求出到某一顶点的最短路径,然后利用这个结 果再去确定到另一顶点的最短路径,如此继续下去, 直到找到最短路径为止。 如果图中存在一条通过图中各边一次且仅一次的 回路,则称此回路为欧拉回路,具有欧拉回路的图称 为欧拉图。
0 1 1 1
对于无向图G=(V,E),顶点v的度是和v相连的边的 数目,记为D(v)。
对于有向图G=(V,R),以顶点t为弧头的弧的数目 称为顶点t的入度,记为ID(t);以顶点t为弧尾的弧的 数目称为顶点t的出度,记为OD(t);顶点t的度记为 D(t)=ID(t)+OD(t)。
特殊情况下,度数为零的顶点称为孤立点,度数为 1的顶点称为悬挂点。
定理6:设图G是有向连通图,图G是半欧拉图的 充要条件是至多有两个顶点的出度和入度不相等,其 中一个顶点的入度比它的出度大1,另一个顶点的入度 比它的出度小1,而其他顶点的入度和出度相等。
一个连通图的生成树是一个极小的连通子图,它 含有图中全部顶点,但只有构成一棵树的n-1条边。
数据结构课后习题答案第六章
第六章树和二叉树(下载后用阅读版式视图或web版式可以看清)习题一、选择题1.有一“遗传”关系:设x是y的父亲,则x可以把它的属性遗传给y。
表示该遗传关系最适合的数据结构为( )。
A.向量B.树C图 D.二叉树2.树最合适用来表示( )。
A.有序数据元素 B元素之间具有分支层次关系的数据C无序数据元素 D.元素之间无联系的数据3.树B的层号表示为la,2b,3d,3e,2c,对应于下面选择的( )。
A. la (2b (3d,3e),2c)B. a(b(D,e),c)C. a(b(d,e),c)D. a(b,d(e),c)4.高度为h的完全二叉树至少有( )个结点,至多有( )个结点。
A. 2h_lB.h C.2h-1 D. 2h5.在一棵完全二叉树中,若编号为f的结点存在右孩子,则右子结点的编号为( )。
A. 2iB. 2i-lC. 2i+lD. 2i+26.一棵二叉树的广义表表示为a(b(c),d(e(,g(h)),f)),则该二叉树的高度为( )。
A.3B.4C.5D.67.深度为5的二叉树至多有( )个结点。
A. 31B. 32C. 16D. 108.假定在一棵二叉树中,双分支结点数为15,单分支结点数为30个,则叶子结点数为( )个。
A. 15B. 16C. 17D. 479.题图6-1中,( )是完全二叉树,( )是满二叉树。
10.在题图6-2所示的二叉树中:(1)A结点是A.叶结点 B根结点但不是分支结点C根结点也是分支结点 D.分支结点但不是根结点(2)J结点是A.叶结点 B.根结点但不是分支结点C根结点也是分支结点 D.分支结点但不是根结点(3)F结点的兄弟结点是A.EB.D C.空 D.I(4)F结点的双亲结点是A.AB.BC.CD.D(5)树的深度为A.1B.2C.3D.4(6)B结点的深度为A.1B.2C.3D.4(7)A结点所在的层是A.1B.2C.3D.411.在一棵具有35个结点的完全二叉树中,该树的深度为( )。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(a) 结点
num
next
(b) 带权的结点 num val
next
num域用于存放图中某个结点的编号 3. 用一个一维数组存放每个单链表的结点u和头指针, 以表示一个图。 data
• 路径长度:指一条路径上 “边”的数目。 • 简单路径:除起点和终点可以相同外,路径上其 余顶点各不相同。 • 回路:起点和终点相同的简单路径。
2013-3-3
14
示例:路径
• 路径(0,1,2,3) 简单路径,路径长度=3 • 路径(0,1,2,3,4,2,0) 非简单路径,路径长度=6 • 路径(0,1,2,3,4,0) 简单路径、回路,路径长度=5
1 0
4
1
2
3
0 4
2 3
有向图: ID(v0) = 3 OD(v0) = 1 TD(v0) = 4
13
基本概念
• 路径(从s到t):
– 无向图G中 一个顶点序列( s,v1,v2,…,vk, t ),使得(s,v1), (v1,v2), …, (vk,t)都是图G中的边。 – 有向图G中 顶点序列( s,v1,v2,…,vk,t )应使<s,v1>,<v1,v2>,…,<vk , t> 都是图G中的边。
关联矩阵特点
1. 无向图的关联矩阵是对称的
即: A[i,j]=A[j,i]=1 只存储其上三角阵n*(n+1)/2个元素即可。
2. 一般有向图的关联矩阵是不对称的
A[i,j]不一定等于A[j,i]
3. 关联矩阵用二维数组存储
int
2013-3-3
adjmatrix [n][n];
21
问:用关联矩阵表示图时,矩阵元素的个 数不顶点个数是否有关?不边的条数是 否有关?
8
基本概念
• 完全图: 如果一个图有最多的边数,称为完全图。
–无向完全图有n个顶点,则有n(n-1)/2条边; –有向完全图有n个顶点,则有n(n-1)条边。 –例如: 有10条边 1 有6条边 1 2 0 2 4
2013-3-3
3
3
9
• 邻接:
基本概念
– 如果(u, v)是无向图中的一条边,则称顶点u和v 相”邻接”,并称边(u, v)与顶点u和v相”关 联”; w
A B A B
D
(a) 无向图G1
C 对称
D
C
(b) 有向图G2
A B C D
A 0 1 0 1
B 1 0 1 1
C 0 1 0 1
D 1 1 1 0
A B C D
A 0 1 0 1
B 0 0 0 1
C 0 1 0 0
D 0 0 1 0
20
(d) 图G1的邻接矩阵
2013-3-3
(e) 图G2的邻接矩阵
u
v
– 如果<u, v>是有向图中的一条边,则称顶点u邻 接到v;称顶点v邻接自u,并称边<u, v>与顶点 w u和v相关联。 u v
2013-3-3 10
基本概念
• 子图: 图G的一个子图是图G’ = ( V’ , E’ ),其中 – V ’ ( G’ ) V( G ),E ’ ( G’ ) E( G ) 1 0 4
1
0 4
G1
2013-3-3
1
2 3 0 4
G2
15
2 3
6.2 图的存储结构
2013-3-3
17
6.2.1 图的矩阵表示法
• 关联矩阵(邻接矩阵) 假设图中共有n个结点,首先用一个长 度为n的一维数组来存放图中各数据结点的 信息,再用一个n阶的二维数组来存放各结 点的关联信息,这个二维数组就称为该图 的关联矩阵。
2013-3-3
18
6.2.1 图的矩阵表示法
• 关联矩阵(邻接矩阵)
一个有n个顶点的图G=(V,E),其 “关联矩阵” 的 每个元素定义如下: 1,(u,v)E 或(v,u)E
无向图
有向图
A[u][v]= 0 其它 1, <u,v>E A[u][v]= 0 其它
19
2013-3-3
例: 图的关联矩阵
第六章
图
2013-3-3
1
引
•
言
图是比线性表、树和集合更一般、更 复杂的数据结构。
•
区别于线性结构、树结构,在图结构 中,数据元素之间的关系是任意的, 每个元素都可以和任何其它元素相关。
2013-3-3
2
目标……
• • •
•
能叙述图及相关概念; 理解图的邻接矩阵、邻接链表的存储结构; 了解图的邻接多重表的存储结构; 理解图的深度优先及广度优先遍历,能写出 图的邻接表类; 了解生成树和最小生成树,会求解最短路径, 能写实现代码。
12
基本概念
• 顶点的度TD(vi):与该顶点相关联的边的数目。
• 在有向图中, – 入度 ID (vi):以v为终点的边的数目; – 出度 OD(vi) :以v为始点的边的数目 – 顶点 vi 的度 = 入度 + 出度
即:
无向图: TD(v1)=2 TD(v2)=4
2013-3-3
TD(vi) = ID ( vi ) + OD( vi )
2013-3-3
23
例: 图的求值矩阵
A
2 D 4 6
B
5 C
3
(c) 网G3
A B C D
2013-3-3
A B C 0 4 0 5 0 2 6
D 3 0
24
(f) 网G3的求值矩阵
6.2.2 图的邻接表表示法
• 邻接表:是一种“顺序-索引-链接”结构 , 构造如下:
2013-3-3
27
例:图的邻接表
0 a
04 25 11
G3 a
1
4 1
b
5
1 b 2 c 3 d
33
01
d
3
c
(c) 图G3的邻接表
2013-3-3
28
6.2.3 邻接多重表
有时,需要同时找到表示一条边的两个结点,用邻接表存储 就丌太方便了,可以该用邻接多重表作为图的存储结构。 在邻接多重表中,每条边用一个存储结点表示,结点结构如 下图所示:mark为标志域;di 、 dj分别为不该条边关联的 两个结点; di -link用来指向下一条关联于di的边, dj -link 用来指向下一条关联于dj的边 mark di dj di –link dj -link
7
4
2013-3-3
3
基本概念
• 有向图:
若G的E是有向边(有序对)的集合,则称该图为 “有向图”,其任意一边用偶对<v1,v2>表示,v1 为始点,v2为终点。 例:有向图G2
V = { 0,1,2,3,4 }
1
0 4
2013-3-3
2 3
E = { <0,1>,<1,2>,<2,3>, <4,0>,<4,2>,<4,3>,} ≠ <3,4>
2013-3-3 6
基本概念
• 无向图:
若图G的E是无方向边组成的集合,则称该图为“无 向图”,其任意一边(弧)用顶点偶对(v1,v2)表 示。 例:无向图G1 1 0 2
V = { 0,1,2,3,4 } E = { (0, 1), (0, 4),(1, 2), (2, 3), (2, 4),(3, 4) } = (4,3)
答:有n个顶点的图的邻接矩阵式一个n*n 的方阵,共有n2个矩阵元素,而且不边 的条数无关。
2013-3-3
22
6.2.1 图的矩阵表示法
• 求值矩阵 对一个有n个顶点的图G=(V,E),有时还需要对两个
关联结点之间的值进行运算,即还必须存储图中每两 个结点之间的求值函数。用另外一个求值矩阵来存储 。 • 假设有值图有n个结点,则求值矩阵是一个n阶矩阵, 其中第i行、第j列的元素V(i,j)表示图中第i个结 点到第j个结点之间的求值函数f(di,dj)。当第i个 结点到第j个结点不存在边时,可以置与求值函数的一 切函数值不同的其他值,例如 或其他值(如-1)
R1
C2
C3
R2
R1
C2
C3
R2
V1 ~ n5
图:电路示例及对应的图表示
2013-3-3 5
n5
6.1.1 基本概念
• 图 :是数据结构 G=(V,E)
其中: – V(Vertex) --- 顶点有限非空集,每个顶 点可以标不同的字符或数字; – E(Edge)--- 边的集合,每条边由其所连 接的两个顶点(偶对)表示,E可以是空集。
G1
1 2 3 0 4
G2
2 3 1 2 3
11
1
0
4
2013-3-3
2
0 4
图G2的子图
图G1的子图
基本概念
• 权和网络: – 若图中每条边对应一数值,则 该数值 叫做对应边的“权”(Weight)。 – 边带权的图称为”带权图”、“有值 图”,也称为”网络” (Network)。
2013-3-3
2013-3-3
Hale Waihona Puke link25(c) 顶点
例:图的邻接表
0 a
1 0 1 0
3 2 3 1 3
G1 a d
1 b
b c
2 c 3 d