第4题
①设计一个算法求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!",
第5题
将每个顶点视作一棵树,并将所有边按权重非降排序;
依次考查各边,只要其端点分属不同的树,则引入该边,并将端点所分别归属的树合二为一;
如此迭代,直至累计已引入n-1条边时,即得到一棵极小支撑树。
试证明:
a)算法过程中所引入的每一条边,都是某一割的极短跨越边(因此亦必属于某棵极小支撑树);
b)算法过程中的任一时刻,由已引入的边所构成的森林,必是某棵极小支撑树的子图;
第6题
算法设计:对于给定的树T,计算树T的最大连通分支.
数据输入:由文件input.txt给出输入数据.第1行有1个正整数n,表示树T有n个顶点.树T的顶点编号为1,2,...,n.第2行有n个整数,表示n个顶点的权值.接下来的n-1行中,每行有表示树T的一条边的2个整数u和v,表示顶点u与顶点v相连.
结果输出:将计算出的最大连通分支的权值输出到文件output.txt.
第7题
第9题
每条边(u,v)的边长d(u,v)可以看作运输费用.如果在顶点u处未设置服务机构,则将顶点u处的服务需求沿有向树的边(u,v)转移到顶点v处服务机构所需付出的服务转移费用为w(u).d(u,v).树根处已设置了服务机构,现在要在树T中增设k处服务机构,使得整棵树T的服务转移费用最小.
算法设计:对于给定的有向树T,计算在树T中增设k处服务机构的最小服务转移费用.数据输入:由文件input.txt给出输入数据.第1行有2个正整数n和k.n表示有向树T的边数,k是要增设的服务机构数.有向树T的顶点编号为0,1,...,n.根结点编号为0.在接下来的n行中,每行有表示有向树T的一条有向边的3个整数.第i+1行的3个整数wi、vi、di,分别表示编号为i的顶点的权为wi,相应的有向边为(i,vi),其边长为di.
结果输出:将计算的最小服务转移费用输出到文件output.txt.
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!