变治算法
写在前面的话
本文是本学渣因为考试需要写的一篇总结,只总结了需要考察的考点,所以可能有的内容引申的不多,请见谅。
一、思想
变,将问题的实例变得更容易求解
治,对变化后的实例进行求解
主要分为如下三种类型:
- 问题化简:将一个问题的实例变为另外一个问题的实例
例如堆排序 - 实例化简:将问题的实例变为更简单的实例
例如通过预排序,将问题变为排序好的列表的问题 - 改变表现:将同一个实例变成不同的表现
例如AVL树,多路查找树
二、实例化简——高斯消去法
本节考试重点:高斯消去法的过程
**思想:**用于求解形式如下的多元一次方程式,将方程组系数变为一个下三角全部是0的矩阵,也就是将一个不好求解的矩阵实例转换为一个好求解的上三角矩阵实例。
操作步骤:
- 用第一个方程的一个倍数和第二个方程求差,将第二个方程中x1系数变为0;同样与其它方程求差,将所有x1系数变为0;
- 再用第二个方程与其它方程作同样操作,将所有第二个方程后的所有x2系数变为0;
- 最终得到下三角为0的系数矩阵
三、改变表现——霍纳法则
本节考试重点:霍纳法则的来龙去脉
**思想:**用于快速计算多项式的值,而不用多次反复计算x1到xn的值,体现了改变实例的表现的思想,将实例从计算多次幂再分别相加的表现形式改变为依次乘上x的表现形式。
每一次先乘上X,然后加上下一个系数。
(初始从第一个系数2开始, 然后2x-1, 然后x(2x-1)-3…)
四、改变表现——二进制幂
用于求解an的问题
从左到右:
每一次,先平方,然后,如果n的二进制位为1,则乘上一个a。
(霍纳法则是每一次先乘上X,然后加上下一个系数。此处多项式在幂上,所以是每次先边乘为乘方进行x次方,然后变加为乘进行乘x,带入x=2得到上述结果)
霍纳法则,也可以延伸到X进制的情况。(例如三进制)
PS.幂的运算法则:
- 同底数幂的乘法,2m*2n = 2m+n
- 幂的乘方, (2m)n = 2mn