结构决定算法
- 表,树,图,网
- A: 在线性表中,数据元素之间仅有线性关系,每个数据元素只有一个直接前驱和一个直接后继。
B:在树型结构中,数据元素之间有明显的层次关系,并且每一层上的数据元素可能和下一层多个元素相关,但只能和上一层中一个元素相关。
C:图型机构中,结点之间的关系可以是任意的,图中任意两个数据元素之间都可能相关。 -
A.线型结构:1.线性表:N个数据元素的有限序列。
B.树型结构:1.树:N个结点的有限集。
C.图型结构:
1.顶点: 图中的数据元素。
2.弧:有向图v,w
表示v到w的一条弧
3.边:无向图(v,w)表示v和w之间的一条边
4.n: 图中顶点数目
5.e: 图中边或弧的数目
6.完全图:有1/2n(n-1)条边的无向图的称呼;有n(n-1)条弧 的有向图的称呼。
7.稀疏图:有很少条边或弧的图的称呼。
8.连通图:无向图中任意两个顶点都是连通的。
9.连通分量:无向图中的极大连通子图。
10.顶点v的度:和v相关联的边的数目,记作TD(V)。
11.无向图连通图的生成树:是一个极小连通子图,它含有图中的全部顶点,但只有足以构成一棵树的n-1条边。
12.有向树: 一个有向图恰有一个顶点的入度为0,其余顶点的入度均为1,则是一颗有向树。
13.有向图的生成树:由若干棵有向树组成,含有图中全部顶点,但只有足以构成若干棵不相交的有向树的弧。
14.顶点v的入度:以顶点v为头的弧的数目。(指向) D.网型结构:带权值图的通称。
15.权:与图的边或弧相关的数
赫夫曼树(Huffman):又称最优树,是一类带权路径长度最短的树。
A.路径:从树的一个结点到另一个结点之间的分支
B.路径长度:路径上的分支数目
C.结点的带权路径长度:该结点到树根之间的路径长度与节点上权的乘积
D.树的带权路径长度:书中所有叶子结点的带权路径长度。
在解决某些判定判定问题时,利用赫夫曼树可以得到最佳判定算法
如何构造赫夫曼树:
1.根据给定的n个权值{w1,w2,…wn}构成n棵二叉树的集合F={T1,T2,…Tn},其中每棵二叉树Ti中只有一个带权为wi的根结点,其左右子树均空。
2.在F中选取两棵根结点的权值最小的树作为左右子树构成一棵新的二叉树,且置新的二叉树的根结点的权值为其左右子树上根结点的权值之和。
3.在F中删除这两棵树,同时将新得到的二叉树加入到F中。
4.重复2和3,知道F只含一棵树为止。这棵便是赫夫曼树。
前缀编码:若要设计长短不等的编码,则必须是任一个字符的编码都不是另一个字符的编码的前缀,
赫夫曼编码:置每种字符在电文中出现的次数Wi为叶子节点的权,置每种字符的编码长度Li为根到叶子的路径长度,则电文总长恰为二叉树上带权路径长度。
赫夫曼树种没有度为1的结点,则一棵有n个叶子结点的赫夫曼树共有2n-1个结点,可以存储在一个大小为2n-1的一维数组中。那么选定结点结构?由于在构成赫夫曼树滞后,为求编码需从叶子结点出发走一条从叶子到根的路径;而为译码需从根出发走一条从根到叶子的路径。则对每个结点而言,既需知双亲的信息,又需知到孩子结点的信息。