1、梯度下降法 梯度下降法是最早最简单的,也是最为常用的最优化算法。梯度下降法实现简单,当目标函数是凸函数时,梯度下降法的解是全局解。一般情况下,其解不保证是全局最优解,梯度下降法的速度未必是最快的。梯度下降法的优化思想是用当前位置负梯度方向作为搜索方向,因为该方向为当前位置的最快下降方向,所以也被 ...
分类:
编程语言 时间:
2018-08-27 10:29:07
阅读次数:
164
IDDFS 思路:某些问题搜索时可能会存在搜索很深却得不到最优解的情况。设置一个 深度约束 ,当 搜索深度达到约束值却还没找到可行解 时结束搜索。如果我们在一个深度约束下没有搜索到答案,那么答案一定在更深的位置,把约束深度调整到更深,直到搜索到答案为止。 对当前的情况通过一个 乐观估计函数 进行预估 ...
分类:
编程语言 时间:
2018-08-25 18:49:34
阅读次数:
135
昨晚随便玩玩搞个div3结果浪翻了…… 强烈谴责D题hack数据卡常 考虑到本题中所要求的最短距离不会大于2,所以我们可以把所有结点到$1$的距离通过对$3$取模分类,考虑到直接自顶向下贪心不满足局部最优解可以推出全局最优解,所以我们可以自下向上这样可以考虑到所有条件。我们处理出一个结点$x$所有儿 ...
分类:
其他好文 时间:
2018-08-25 11:24:57
阅读次数:
132
你和你的朋友,两个人一起玩 Nim游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。 你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。 示例: 输入: 4 输出: false 解释: 如果堆中有 ...
分类:
其他好文 时间:
2018-08-25 00:43:45
阅读次数:
214
第二道单调队列。 这道题就是经典的滑动窗口问题了。要求你求某一个数的前$m$位中的最小元素。 先说一句话: 单调队列中,队首保存的是最优解,其实是次解,以此类推 。 所以我们可以构造一个上升的单调队列,队首弄出来的就是答案。 元素的加入不用说,就是那样子。 重点是这里多了元素的删除。因为窗口的长度有 ...
分类:
其他好文 时间:
2018-08-23 19:20:40
阅读次数:
148
这道题正解是 状压DP ,不过我不会所以写一下 随机化算法 来骗骗分。 听说当时考场上就有很多写 prim 然后挂掉的神仙,其实这道题是可以prim过的 prim是一种基于 贪心 的算法,在本题中由于盲目的选择 当前最优解 可能会使得后面的决策不优,于是我们请出 基于随机化的prim ~~我口胡的~ ...
分类:
其他好文 时间:
2018-08-21 20:14:48
阅读次数:
186
拉格朗日乘数法 拉格朗日乘数法是一个理论结果,用于求解带有等式约束的函数极值。对于如下问题: 构造拉格朗日乘子函数: 在最优点处对x和乘子变量的导数都必须为0: 解这个方程即可得到最优解。对拉格朗日乘数法更详细的讲解可以阅读任何一本高等数学教材。 机器学习中用到拉格朗日乘数法的地方有: 主成分分析 ...
分类:
其他好文 时间:
2018-08-21 12:15:32
阅读次数:
135
动态规划问题的步骤 1、描述最优解的结构 2、递归定义最优解的值 3、自底向上计算最优解的值 4、由计算的结果构造最优解 一般要在第3步记录一些附加信息, 自底向上逐步计算还有另外一种方法,可以带备忘录自顶而下计算。 15.1 装配线调度 15.2 矩阵链乘法 15.3 动态规划原理 最优化问题应该 ...
分类:
编程语言 时间:
2018-08-17 11:18:59
阅读次数:
172
P1004 题意 类似一个比较小的方格(NB的路径经过的点加上该点代表的数,求两次A B的最大解(最优解) 一个令人恼的问题是两条路径如果有重合点,那么势必回算两次,所以是不合题意的。而先得一次的最大解,并不一定是两次的最优解 这里可以控制两条路径dp[i][j][k][l],(i,j),(k,l) ...
分类:
其他好文 时间:
2018-08-12 23:40:49
阅读次数:
206
```python3
# 不是最优解,最优解应该用topK的思路
class Solution: def maximumProduct(self, nums): """ :type nums: List[int] :rtype: int """ nums.sort() res = [nums[-..... ...
分类:
编程语言 时间:
2018-08-09 17:17:54
阅读次数:
162