第6章:变治法——《算法笔记
1.预排序
优化:及时回溯
排序过程中的语义
应用:唯一元素,最多元素,
2.高斯消元
矩阵运算相关,先跳过
3.AVL树
每个节点维护一个平衡因子:左子树高度-右子树高度
AVL树失去平衡,旋转
旋转平衡因子+-2的节点
旋转保证满足定义
保持二叉树
恢复平衡
删除的效率低
灵感:旋转树,不破坏结构,保持平衡
因为avl树不是太有用就不记了,但可以总结下
左右是相对的,所有旋转情况可分为对称的两部分,只需考虑一半情况
父节点将子树划分为两个区间
简单旋转可能破坏二叉结构,则选择上提动作
旋转与上提都需考虑相关节点的其他子节点
交换的两个节点的区间内存在其他节点
2-3树
节点为一个数:两个子树
两个数:三个子树,对应三段区间
高度平衡:每个叶子节点可以为多个数(1,2个
插入:插入叶,节点中数>2,分裂,中间数向上提升
提升引起父节点数目>2?
列举所有溢出情况
堆
元素包含元素优先级的可排序属性
操作:找,删,添
完全二叉树
父>子
删:将最后一个元素放至顶部:保持完全二叉树结构
交换操作:保持语义
堆排序:保证最差时间,且在位
霍纳法则
多项式转换为乘积式
二进制幂
问题转化
最小公倍数,最大公约数
图中指定长路径数,邻接矩阵,邻接矩阵的平方???
最大化,最小化
线性规划:单纯型法
整数线性规划,背包
过河问题:状态空间图
习题
6.1
n个数字最接近
预排序
无序数字集合交集
最大最小元素
选择预排序的标准:原问题复杂度与排序复杂度
穿过所有点的简单多边形
数组中k元素=指定和
数字填空
已有比较符号,填入指定数字集合
向量集合
最大点
查找所有变位词
计算树的值域
min,max,max-min
树构造算法
树合并
比较不同的查找树
删除
6.4
检测数组满足堆属性
构造,增,删,改,合并,输出序
堆作为排序算法,属性考察:在位,稳定
使用了优先队列的排序算法:除堆排序外
堆排序体现变治?
6.5
多项式求解
递归——非递归
6.6
i-j长度k不同路径数=邻接矩阵的k次
三角形检测
a+b=n
ab max?
0-1线性规划表述分配问题
点着色,边着色
二维邮局位置问题
不同距离衡量标准
吃醋丈夫问题:妻子+其他男人同岸 &&自己不在
n对
双n成环