算法导论第三次习题课
DESCRIPTION
算法导论第三次习题课. 16.1-1 动态规划时间复杂度为 ,贪心算法时间复杂度为 。. 16.1-2 略 16.1-3 用两个链表分别存放空闲教室和繁忙教室,把活动按开始时间递增排序,依次调度教室,就可以获得最少教室数。调度方案是在繁忙教室队列中寻找是否有教室已经空闲,再在空闲教室队列中寻找空闲教室,如果都没有,就再增加一个教室。 说明:本题直接调用书上的算法 GREDDY-ACTIVITYSELECTOR( ) 来求是不对的,如下实例,按 GREDDYACTIVITY-SELECTOR( ) 求得需要 3 个教室,实际上只要 2 个教室. - PowerPoint PPT PresentationTRANSCRIPT
16.1-2 略16.1-3 用两个链表分别存放空闲教室和繁忙教室,把活动按开始
时间递增排序,依次调度教室,就可以获得最少教室数。调度方案是在繁忙教室队列中寻找是否有教室已经空闲,再在空闲教室队列中寻找空闲教室,如果都没有,就再增加一个教室。
说明:本题直接调用书上的算法 GREDDY-ACTIVITYSELECTOR( ) 来求是不对的,如下实例,按GREDDYACTIVITY-SELECTOR( ) 求得需要 3 个教室,实际上只要 2 个教室
i 1 2 3 4 5 6 7
s 0 0 3 4 7 8 6
f 3 4 5 7 8 9 9
16.3-1 略16.3-2 略16.3-5
用 2n-1 位表示树的结构,内部结点用 1 表示,叶子结点用 0 表示,以树的遍历为序。用 nlog(n) 位表示字母序列,每个字母的二进制编码长度为 log(n) ,总共需要 nlog(n)位。
17.2-2
每个操作都支付 3 元费用,若 i 不是 2 的幂次,则只用 1 元,剩下的 2 元用于支付那些是 2 的幂次的操作。
17.2-3
当某位被置为 1 时,用 1 元支付置位的实际代价, 2 元作为存款,其中 1 元将来该位变为 0 时使用,另外 1元 RESET 此位时使用
17.3-2
总代价为 O(n) ,平摊代价为 O(1) 17.3-6 设有两个栈 A, B ENQUEUE 操作为: push A DEQUEUE 操作为: if B is empty 将 A 中元素导入 B 中 if B is not empty pop B 平摊代价为 O(1)
01 1
( ) ( ) O nn n
i i ni i
C C D D
22.2-2 略22.2-5 略22.2-7
先对 T 中任意一顶为根做 BFS ,记录最后遍历的顶点 u ,再以 u 为根做 BFS ,记录最后遍历的顶点 v, d(u,v)为 T 的直径。时间复杂度 O(V+E) 。
22.4-1 略22.4-2 先对图进行拓扑排序,然后从 t到 s 依次计算 Pu
(以 u 为起点 t 为终点的路径数) Pu=ΣPv, v Adj(u)∈ Pt=1 , Pu=0 ,出度为 0 或在 t 的右边22.4-3方法很多,有些方法需要对每个连通片都进行计算。
24.2-2 最后一个顶点没有出度24.2-4
先进行拓扑排序,然后从右往左依次计算Pu (以 u 为起点的路径数)
Pu=Σ( Pv+1 ) , v Adj(u)∈ Pu=0 , u 的出度为 0
最后对所有 Pu 累加就是路径总数。
25.2-1 略 25.2-4
25.2-6 检查 Floyd_Warshall( ) 输出矩阵主对角线上的元素,如果存在负数,则存在权为负的回路。
1 1 1
1 1
, ( , ) min( ( , ) , ( , ) ( , ) )
, ( , ) 0, ( , ) ( , ) ( , ) ( , )
k k
k k k k
x k k k k
if i k d k j d i j d k k d k j
x d k k d k j d k j d i k d i k
。同理,即对于最外层的循环,矩阵 行 列元素的值不变,其它元素对更新没有影响。
25.3-1 略25.3-3 h(v)=0, h(u)=0, =w+h(u)-h(v)=w
25.3-5
w
1 1 2 1
1 1 2 1
0 ( , ) ( , ) ( ) ( )
( , ) ( , ) ( , ) ( , ) ( , )
( , ) ( , ) ( , ) ( , ) ( , )
0
( , ) 0, ( , )
( , ) 0
n n n
n n n
w u v w u v h u h v
w u v w v v w v v w v v w v u
w u v w v v w v v w v v w v u
w u v u v E
w u v
有 圈,
又