设使用Pratt序列:
对长度为n的任一向量S做希尔排序。
试证明:
a)若S已是(2,3)-有序,则只需o(n)时间即可使之完全有序;
b)对任何,若S已是(2hk,3hk)-有序,则只需o(n)时间即可使之hk-有序;
c)针对序列中的前o(logtn)项,希尔排序算法需要分别迭代一轮;
d)总体的时间复杂度为o(log2n)。
假设n为2的乘幂,并且n>2,试求下列算法的时间复杂度及变量count的值(以n的函数形式表示) 。
int Time(in tn) {
count=0; x=2;
while(x<n p="" {<="">
x*=2; count++;
}
return count;
}
在多叉堆(d-heap)中,每个节点至多可拥有d≥3个孩子,且其优先级不低于任一孩子。
a)试证明,多叉堆decrease()接口的效率可改进至O(logdn);(当然,delMax()接口的效率因此会降至O(d-logn))。
b)试证明,若取d=e/n+2,则基于d叉堆实现的Prim算法的时间复杂度可降至O(e·logdn);
c)这种改进策略是否也适用于Dijkstra算法?
算法设计:对于给定的设置了堡垒的n×n格棋盘,设计一个随机化算法,在棋盘上放置尽可能多的彼此不受攻击的车.
数据输入:由文件input.txt给出输入数据.第1行有1个正整数n.接下来的n行中,每行有1个由字符“.”和“X"组成的长度为n的字符串.
结果输出:将计算的在棋盘上可以放置的彼此不受攻击的战车数输出到文件output.txt.
A.h(x)≤h*(x)
B.h(x)≥h*(x)
C.h(x)>h*(x)
D.h(x)≠h*(x)