《算法设计与分析基础》笔记1

第二章 算法效率分析基础
2.5 计算斐波那契数列的O(log n)算法:
利用矩阵, 当 n >= 1时, [F(n-1), F(n); F(n), F(n+1)] = [0,1; 1,1]^n
其中的乘方运算使用霍纳法则

第三章 蛮力法
凸包问题:链接任意两点,检查剩余的点是否都在连线的同侧。效率O(n^3)

分配问题:n个任务分配给n个人,其中将第j个任务分配给第i个人的成本为C[i,j],找出成本最小的分配方案。蛮力法:穷举n!种可能的方案。高效方法:匈牙利方法。

第四章 分治法
主定理:对于 T(n) = a T(n/b) + f(n), f(n)为 a = b^d, T(n) = Θ(n^d * log n)
如果 a > b^d, T(n) = Θ(n ^ (log a/log b))

大整数乘法:a=a1a0, b=b1b0, 其中a和b都是n位整数,低n/2位为a0,b0, 高位为a1,b1
需要三次n/2位的乘法即可完成 c = a*b = c2*10^2n + c1*10^n + c0
其中 c2=a1*b1, c0=a0*b0, c1=(a1+a0)*(b1+b0) - (c2+c0)
T(n) = n^(log3/log2)

最近点对问题:找到平面上n个点中的最近距离。先画一条竖线,将所有的点分成左右两半,找到两部分的最近距离d1,d2, 然后考察竖线附近的点。

凸包问题的快包算法(类似于快速排序):首先过最左边的点P……
posted @ 2010-01-28 13:28  mikejason  阅读(205)  评论(0编辑  收藏  举报