设有一个带权有向图G,编写一个算法,用深度优先搜索方法对该图中所有顶点.
第2题
不相交的子集A和B=V-A,并且这两个子集具有下列性质:
(a)A中任何两个顶点在G中都不是相互邻接的;(b)B中任何两个顶点在G中都不是相互邻接的。例如,图8-34就是二部图。对V(G)的一个划分可能是A=(0,3,4,6)和B=(1,2,5,7).
(1)试编写一个算法,判断图G是否是二部图。如果图G是二部图,则你的算法应当把项点划分成为具有上述性质的两个互不相交的子集A和B。证明:当用邻接表表示图G时,这个算法的复杂度可以做到O(n+e)。其中n是图G的顶点个数,e是边数。
(2)证明:任何-棵树都是二部图
(3)证明:当且仅当图G不包含奇数条边的回路时.它是二部图。
第3题
设G是一个有n个顶点的有向图,从顶点i发出的边的最小费用记为min(i).
(1)证明图G的所有前缀为x[1,i]的旅行售货员问路的费用至少为:
式中,a(u,v)是边(u,v)的费用.
(2)利用上述结论设计一个高效的上界函数,重写旅行售货员问题的回溯法,并与主教材中的算法进行比较.
第4题
设二元树t有t片树叶,v1,v2...vt权分别为w1,w2,...wt层深(根到叶的路径长)分为称为T的权,权最小的二元树称为最优二元树.求最优二元树的夫曼算法如下:
给定实数w1,w2,...,wt且w1≤w2≤,...,wt.
(1)连接权为w1,w2的两片树叶,得-一个分支点,其权为w1+w2.
(2)在w1+w2,...,w3,...,wt中选出两个最小的权,连接它们对应的结点(不一定是树叶),得新支点及所带的权.
(3)重复(2),直到形成t-1个分支点,t片树叶为止.
使用哈夫曼算法求带权2,2,3,3,5的最优二元树.
第5题
设有一个有向图G-(V,E),其中:
不属于该图的拓扑有序序列是()
A、
B、
C、
D、
第6题
①设计一个算法求T的最小顶点集S,使T/S是d森林(从叶向根移动).
②分析算法的正确性和计算复杂性.
③设T中有n个顶点,则算法的计算时间复杂性应为O(n)
算法设计:对于给定的带权树,计算最小分离集S.
数据输入:由文件input.txt给出输入数据.第1行有1个正整数n,表示给定的带权树有n个项点,编号为1,2,...,n.编号为1的顶点是树根.接下来的n行中,第计1行描述与i个项点相关联的边的信息.每行的第1个正整数k表示与该项点相关联的边数.其后2k个数中,每2个数表示1条边.第1个数是与该顶点相关联的另一个顶点的编号,第2个数是边权值.k=0,表示相应的结点是叶结点.文件的最后一行是正整数d,表示森林中所有树的从根到叶的路长都不超过d.
结果输出:将计算的最小分离集s的顶点数输出到文件output.txt.如果无法得到所要求的d森林则输出“NoSolution!",
第7题
第10题
此题为判断题(对,错)。