随笔分类 -  算法

摘要:注1:N为定点数,M为边数 注2: Floyd的编码复杂度较小,均摊到每个点上的时间复杂度并不算太高,如果是求所有点对间的最短路径,或数据范围较小,Floyd算法较为合适 注3: Dijkstra用堆优化后,时间复杂度可以达到O(MlogN),具有良好的扩展性,最大的缺点是不能解决负权的问题 阅读全文
posted @ 2017-08-23 22:08 戴林甫 阅读(628) 评论(0) 推荐(0)
摘要:实现思路: 1.准备一个一维数组h存放数组和一个变量记录n堆的个数 2.创建堆。只分析前一半的节点,因为后面的节点都是这些节点的子节点。然后从第一个节点开始。找到其左右节点。比较大小。需要改变顺序的就改变。 3.堆排序。每次都取出堆顶点,存入一个数组。改变堆的现有数量并进行调整,使该二叉树依旧是最小 阅读全文
posted @ 2017-08-23 21:07 戴林甫 阅读(183) 评论(0) 推荐(0)
摘要:【啊哈!算法】算法9:开启“树”之旅 http://ahalei.blog.51cto.com/4767671/1403823 我们先来看一个例子。 这是什么?是一个图?不对,确切的说这是一棵树。这哪里像树呢?不要着急我们来变换一下。 是不是很像一棵倒挂的树,也就是说它是根朝上,而叶子朝下的。不像? 阅读全文
posted @ 2017-08-23 09:35 戴林甫 阅读(164) 评论(0) 推荐(0)
摘要:图片素材借鉴啊哈磊的博客 该算法用于解决一个点到其余各顶点的最短路径 先来一张图,求1点到6点的最短路径 这让我想起了差点挂科的运筹学 先用一个二维数组 还有一个一维数组存储1点到各点的距离 这个一维数组的值称为估计值。在1点可直接到达的点中选择一个最近的点,即点2.然后点2的值也就成为了确定值。 阅读全文
posted @ 2017-08-19 22:02 戴林甫 阅读(1043) 评论(0) 推荐(0)
摘要:floyd-warshall算法用来求最短路径(即动态规划)求任意两点的最短距离 时间复杂度为O(N3),空间复杂度为O(N2)。 到达目的地有两种方法,一:直接点对点,没有中转站。二:经过中转站直接到达。 在求最短路径前,先谈谈地图的存储 如图,使用二元数组存储。图中无穷大代表没有道路,e[1][ 阅读全文
posted @ 2017-08-19 20:29 戴林甫 阅读(281) 评论(0) 推荐(0)