常见算法
Hash,音译为哈希,是一个典型的利用空间换取时间的算法,把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。贪心算法(又称贪婪算法)是指在对问题求解时,总是做出在当前看来是最好的选择。博弈/博弈论,又称为对策论(Game Theory)、赛局理论等,既是现代数学的一个新分支,也是运筹学的一个重要学科。
哈希算法
- 把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。
动态规划
态规划的基本思想是:问题的最优解如果可以由子问题的最优解推导得到,则可以先求解子问题的最优解,在构造原问题的最优解;若子问题有较多的重复出现,则可以自底向上从最终子问题向原问题逐步求解。
动态规划的特点:
a) 把原始问题划分成一系列子问题;
b) 求解每个子问题仅一次,并将其结果保存在一个表中,以后用到时直接存取,不重复计算,节省计算时间
c) 自底向上地计算。
d) 整体问题最优解取决于子问题的最优解(状态转移方程)(将子问题称为状态,最终状态的求解归结为其他状态的求解)
线性动规,区域动规,树形动规,背包动规。
最大不下降子序列
贪心算法
在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。
贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后效性,即某个状态以前的过程不会影响以后的状态,只与当前状态有关。
贪心算法的思想如下:
a)建立数学模型来描述问题;
b)把求解的问题分成若干个子问题;
c)对每一子问题求解,得到子问题的局部最优解;
d)把子问题的解局部最优解合成原来解问题的一个解。
博弈算法
博弈论主要研究公式化了的激励结构间的相互作用,是研究具有斗争或竞争性质现象的数学理论和方法,博弈论考虑游戏中的个体的预测行为和实际行为,并研究它们的优化策略。
博弈问题的特点
a) 博弈模型为两人轮流决策的非合作博弈。即两人轮流进行决策,并且两人都使用最优策略来获取胜利
b) 博弈是有限的。即无论两人怎样决策,都会在有限步后决出胜负
c) 公平博弈。即两人进行决策所遵循的规则相同
几种常用的博弈论模型有:巴什博弈,威佐夫博弈,斐波那契博弈,尼姆博弈