前置芝士: dfs,强连通分量 一般的k-sat问题就是给你n个变量$a_i$,每个变量有k个取值,然后给你一堆条件让你求出满足所有条件的一组解。 而当k>2时已经被证明为NP完全问题,没有多项式复杂度的解法(只能暴搜),故我们只考虑2-sat问题。 2-sat问题就是每个变量只有两种取值(当做0和 ...
分类:
其他好文 时间:
2020-05-01 16:46:39
阅读次数:
67
介绍: 贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。 贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后效性,即某个状态以前的过程不会影响以后的状态,只与 ...
分类:
编程语言 时间:
2020-04-30 21:41:07
阅读次数:
75
import java.util.*; public class Main { static int ans; static int num[]; public static void main(String args[]) { Scanner scan = new Scanner(System.i ...
分类:
移动开发 时间:
2020-04-30 19:18:28
阅读次数:
65
给定一个可包含重复数字的序列,返回所有不重复的全排列 这题与上题的全排列问题类似,问题在于如何将重复序列排除在外。 这里就需要剪枝思想,即去掉多余的子树。 我们先看图,令nums=[1,1`,2] 图中可以看出,[1 ]节点选择子节点时与[1]节点选择时一致,故应该去除。类推。 再看如何判断剪枝: ...
分类:
其他好文 时间:
2020-04-30 13:58:16
阅读次数:
54
问题:给定一个 没有重复 数字的序列,返回其所有可能的全排列 全排列问题实际可以看作是树形结构 而dfs算法在树形结构中的应用就是回溯算法。 接下来详细解释回溯算法的思想: 如图所示:在本题中,树形结构的根节点为空,根节点的第一个子节点通过遍历找到[1],继续遍历找到[1]的子节点[2],[2]的子 ...
分类:
编程语言 时间:
2020-04-30 12:03:09
阅读次数:
102
1,棋盘问题:poj1321 思路:显然,是一个深度搜索问题,对列进行标记一下,题中显示要同一行,同一列不能有两个,那么标记之后,就从下一行开始搜索,然后就一直递归下去; code: 1 #include<cstdio> 2 #include<algorithm> 3 #include<iostre ...
分类:
其他好文 时间:
2020-04-29 23:36:00
阅读次数:
63
"Description" 思路 这题的思想有点类似求树的重心。 首先思考一下如果只要求一个点的差值。那么显然,将这个点看作根节点,然后只要dfs一下,将与它连接的所有子树中各个最大差值求个和就是答案。 在dfs的过程中把每个结点的求的值记录下来,那么对于每个结点,下面的最大差值都已经求好了,就剩下 ...
分类:
其他好文 时间:
2020-04-29 23:25:21
阅读次数:
52
1.dfs 树 上图右图是左图以 为起点进行 时产生的生成树。 有向图的 生成树主要有 种边(不一定全部出现): 1. 树边( ):绿色边,每次搜索找到一个还 没有访问过的结点 ( 白点 )的时候就形成了一条树边。 2. 返祖边( ):黄色边,也被叫做回边,即 指向祖先 结点( 灰点 )的边。 3. ...
分类:
其他好文 时间:
2020-04-29 21:41:38
阅读次数:
56
题目: 思路: 因为是无向图,构造的时候别忘了双向赋值,判断有无路径,可以利用全局变量数组visited,我通过深度优先搜索DFS,从起点i开始搜索,如果走过一个点,更改visited即可,结束搜索后,判断visited[j]是否为1,就可以判断i和j之间是否存在路径了。图的创建可以从函数题里复制粘 ...
分类:
其他好文 时间:
2020-04-29 20:13:52
阅读次数:
256
经验分布,也可以考虑有单个顶点、边,或局部的? loss 怎么定的问题 【Graph Embedding】LINE:算法原理,实现和应用 之前介绍过DeepWalk,DeepWalk使用DFS随机游走在图中进行节点采样,使用word2vec在采样的序列学习图中节点的向量表示。 DeepWalk:算法 ...
分类:
编程语言 时间:
2020-04-29 14:28:15
阅读次数:
110