2013年10月15日

算法打基础——算法基本分析

摘要: 因为基础实在太差,决定从看算法导论视频+书开始重新打打基础,希望能坚持下来!!第一节 算法基本分析个人认为 本节的主要知识点有:1 插入排序及其分析 2 算法复杂度基本符号 3 merge sort及其分析1 插入排序及其分析插入排序伪代码:INSERTION-SORT (A, n) ⊳A[1 . . n] for j ←2 to n do key ←A[ j] i ←j –1 while i > 0 and A[i] > key doA[i+1] ←A[i] i ←i –1 A[i+1] = key排序算法... 阅读全文

posted @ 2013-10-15 16:57 soyscut 阅读(348) 评论(0) 推荐(0) 编辑

最小生成树——Kruskal算法

摘要: 先上最小生成树定义:在一个给定的无向图G=(V,E)中, (u,v)代表连接顶点u和v的边,而w(u,v)代表这个边的权重。若存在T为E的子集,且为无循环图,使得中的w(T)最小,则这个T为G的最小生成树(MST)最小生成树的几个性质:最小生成树的边数必然是顶点数减一,|E| = |V| - 1。最小生成树不可以有循环。最小生成树不必是唯一的。求解一个图的最小生成树有很多算法,这里介绍Kruskal算法。算法的执行过程可以描述为:1.将图中所有的边按照从小到大的顺序排序2.从小到大依次考察每条边(u,v)是否要当前的生成树集中。考查结果分为两种情况: case 1: u和v在同一连通分量中,那 阅读全文

posted @ 2013-10-15 15:49 soyscut 阅读(1123) 评论(0) 推荐(2) 编辑

最小生成树——Prim算法

摘要: prim算法是生成最小生成树的一个重要方法,它非常类似于最短路径的Dijastra算法. Prim算法的特点是树的集合中的边总是形成单颗树。Prim算法的主要过程是:从图中某一顶点u出发,作为树集合U的根节点,然后在集合W=V-U和集合U中寻找两个顶点u∈U,w∈V-U, 使得这两个顶点的边(u,w)是这两个集合顶点连接的边中权值最小的, 然后将顶点w加入到集合U中,同时记录加入的这个边。重复这个过程只到集合W中所有的顶点w都加入到了U中,或者说W成为空集。Prim算法的主要步骤如下图演示:Prim的算法代码如下(这个代码中,寻找最小权值是用的遍历,并没有优化,算法导论里面用的是优先队列):# 阅读全文

posted @ 2013-10-15 15:46 soyscut 阅读(522) 评论(0) 推荐(0) 编辑

导航