算法
answers1993ai
这个作者很懒,什么都没留下…
展开
-
java 队列与栈实现(链表与数组)
我们经常会问到java数据结构可以怎么实现,看过了算法之后得到很大启发,这里整理如下。 队列是一种先进先出(FIFO)的集合模型,而栈则是后进先出(LIFO)的集合模型,我们经常使用它们用来保存元素的相对顺序。Java中在java.util.LinkedList类中实现了关于队列和栈的实现,但是这是一个宽接口的例子,这里我们自己实现它以研究它的思路。 有两种基础可以用来实现:数组和链表 数组原创 2017-03-14 10:53:54 · 616 阅读 · 0 评论 -
拓扑排序
介绍拓扑排序之前首先介绍一下调度问题 一种应用广泛的模型是给定一组任务并安排它们的执行顺序,限制条件是这些任务的执行方法和起始时间。最重要的一种限制条件叫做优先级限制,它指明了哪些任务必须在哪些任务之前完成。 优先级限制下的调度问题: 给定一组需要完成的任务,以及一组关于任务完成的先后次序的优先级限制。在满足限制条件的前提下应该如何安排并完成所有任务? 在有向图中,优先级限制下的调度问题等原创 2017-12-24 09:28:48 · 252 阅读 · 0 评论 -
DFS算法分析
深度优先算法与广度优先算法可谓是图论中的两个基础算法。本科时候被这两个算法折磨的也是很惨。今天来分析一下DFS的过程。原创 2017-11-29 21:17:30 · 3947 阅读 · 0 评论 -
BFS算法解析
深度优先搜索得到的路径不仅取决于图的结构,还取决于图的表示和递归调用的性质。我们很自然的还经常对下面的这些问题感兴趣。 单点最短路径。“从s到给定目的顶点v是否存在一条路径?如果有,找出其中最短的那条(所含边数最少)。” 解决这个问题的经典方法叫做广度优先搜索(BFS)。 要找到从s到v的最短路径,从s开始,在所有由一条边就可以到达的顶点中寻找v,如果找不到我们就继续在与s距离两条边的所有顶原创 2017-12-21 18:49:18 · 1681 阅读 · 0 评论