SPFA算法 tarjan算法 Tarjan算法是用来求有向图的强连通分量的。 Tarjan算法是基于对图深度优先搜索的算法,每个强连通分量为搜索树中的一棵子树。搜索时,把当前搜索树中未处理的节点加入一个堆栈,回溯时可以判断栈顶到栈中的节点是否为一个强连通分量。 定义DFN(u)为节点u搜索的次序编 ...
分类:
其他好文 时间:
2016-11-02 17:25:33
阅读次数:
385
题目:有N*M格子的花园,W表示积水,'.'表示干地,积水附近8个区域只要有积水,那么这两处连通,并算作是同一处积水,问一共有几处积水? 思路:穷竭搜索,O(N*M),搜索到积水则变成‘.’,并搜索连通的积水将其变成‘.’,直到这块积水搜索结束,此时a+=1,此处积水全变为‘.’ 此处演示5*5,5 ...
分类:
其他好文 时间:
2016-11-02 14:27:50
阅读次数:
167
上篇博客我们聊了图的物理存储结构邻接矩阵和邻接链表,然后在此基础上给出了图的深度优先搜索和广度优先搜索。本篇博客就在上一篇博客的基础上进行延伸,也是关于图的。今天博客中主要介绍两种算法,都是关于最小生成树的,一种是Prim算法,另一个是Kruskal算法。这两种算法是很经典的,也是图中比较重要的算法 ...
分类:
编程语言 时间:
2016-10-28 09:42:36
阅读次数:
366
首先申明,本文根据微博博友 @JC向北 微博日志 整理得到,本文在这转载已经受作者授权! 1.概念 回溯算法 就是 如果这个节点不满足条件 (比如说已经被访问过了),就回到上一个节点尝试别的路径 也就是说 走到死胡同里边就往回走,直到找到出口. 回溯 是一种 选优搜索 。许多复杂规模较大的问题都可以 ...
分类:
其他好文 时间:
2016-10-25 09:28:32
阅读次数:
133
深度优先搜索 # Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: ...
分类:
编程语言 时间:
2016-10-24 13:41:11
阅读次数:
201
1、求数字 1~n 的全排列 2、若 abc + def = ghi,其中,a~i 为数字 1~9,请给出满足条件的全部组合; 3、最短路径 ...
分类:
其他好文 时间:
2016-10-01 22:14:22
阅读次数:
200
1、图的遍历--深度优先搜索 2、图的遍历--广度优先搜索 ...
分类:
其他好文 时间:
2016-10-01 21:52:56
阅读次数:
224
迭代加深搜索 一、算法简介 迭代加深搜索是在速度上接近广度优先搜索,空间上和深度优先搜索相当的搜索方式。由于在使用过程中引入了深度优先搜索,所以也可以当作深度优先搜索的优化方案。 迭代加深搜索适用于当搜索深度没有明确上限的情况。 例如上图的一棵搜索树,在进行深度优先搜索前先规定好这次搜索的最大深度d ...
分类:
其他好文 时间:
2016-09-25 13:10:55
阅读次数:
190
一种由Robert Tarjan提出的求解有向图强连通分量的线性时间的算法。 Tarjan算法是基于对图深度优先搜索的算法,每个强连通分量为搜索树中的一棵子树。搜索时,把当前搜索树中未处理的节点加入一个堆栈,回溯时可以判断栈顶到栈中的节点是否为一个强连通分量。 定义dfn(u)为节点u搜索的次序编号 ...
分类:
编程语言 时间:
2016-09-25 10:46:16
阅读次数:
352
数的全排列,是一个很简单的问题,平时我们用笔用纸就能列出答案,但是数列位多的时候,排列的结果就有非常多了,例如有1,2,3,4,5,6,7,8,9这一个数列,有9个数字,则有9!(9的阶乘)这么多种结果。那是非常大的。今天我就来介绍用深度优先搜索来解决这个数的全排列的问题。 深度优先搜索 首先简单介 ...
分类:
编程语言 时间:
2016-09-24 16:01:50
阅读次数:
518