1.数据结构
数组、链表
栈、队列
图(有向/无向),表示:邻接矩阵、邻接列表(节点、边、每个节点的边)
树
集合、字典
2.常见问题
排序
查找:顺序、二分、堆
字符串处理:匹配、相似度计算
图问题:最短路径、遍历、拓扑排序(旅行商问题、着色问题)
组合问题:寻找组合对象,优化(遗传算法、蚁群算法、粒子群算法)
几何问题:最近对、凸包
数值问题:解方程(组)、计算定积分、求函数值
3.算法分析
时间复杂度、空间复杂度
4.算法类型
递归、循环
5.P、NP、NP完全问题
判定问题:答案是“是”/“否”的问题
P:能够在多项式时间内求解的判定问题
NP:不确定是否存在多项式类算法解决的问题(难解问题)
(哈密顿回路、旅行商问题、背包问题、划分问题、装箱问题、图着色问题、整数线性规划问题)
(计算规模按照输入规模呈指数增长,不能求所有解,但可以快速判断一个解是否是解空间中的)
不确定算法:猜测+验证
不确定多项式类型算法:验证阶段属于多项式类型算法的不确定算法
NP类问题:能够使用不确定多项式类算法解决的问题
NP完全问题:NP问题,且其他NP问题能够在多项式时间内化简为该问题
如果能找到任何一个NP完全问题的多项式解,则NP=P