习题23.1-11 给定图G和一棵最小生成树T,假设减少了位于T之外的某条边的权重。因为T内的边,是连接所有结点的权重最小的,那么首先将T外的减少权重的边(u, v)加入T,然后在u, v中寻找所有的路径,去掉路径中权重最大的边。
习题23.2-3 使用斐波那契堆实现的Prim算法与使用二叉堆比较。因为斐波那契堆实现优先队列,使Prim算法的运行时间为O(E+VlgV),而二叉堆实现优先队列的Prim算法运行时间为O(VlgV+ElgV),前者更小。同时,稠密图使用斐波那契堆实现Prim算法更有优势。因为E越大,需要更新堆中元素次数越多。
习题23.2-4 边权重为1~|V|整数的图的Kruskal算法。边排序用计数排序,时间为O(E),有O(V)次make_set与O(E)次find_set和union,总时间为O(E+α(V)*(E+V))。如果边权重为1~W,则取决于W与|V|中最大值。
习题23.2-5 边权重为1~|V|整数的图的Prim算法。若最小优先队列用斐波那契堆,总运行时间为O(E+VlgV)。前一项代表执行更新堆中元素值的时间,后一项代表出堆时间。但若W