集训二十天算法回顾.

    这二十天学到了什么?猛然一想好像确实也没什么。但细细一想,在这不知不觉中确实也学到了很多东西。能数出来的就挺多了,还有那些潜在意识中的学习,可以说是收获颇多啊。在这里感谢师兄们。

    能数出来的算法有,并查集,深搜,广搜,最短路径(floyd,dijkstral),最小生成树(kruskal,prim),素数筛选法,最大子串,拓扑排序,排序(冒泡,插入,堆排序,快速排序,希尔排序)。

    最开始学习的是并查集,我印象比较深刻,并查集大概讲的是,在一堆数据中,数据可能用某种共性,在一堆数据中可能可以分为几个不同的集合,这些集合中的数据是具有不同的共性的。

并查集可以用来解决求连通分支数的问题。既然可以求连通分支数这也可以求一个图中最少需要几条边可以变成一个连通图,将这个问题实际化,就可以解决一些交通网,电话线....的联通问题。

    深度优先搜索,是图论里面一种很重要的算法。深度优先搜索的大概过程是,找到一个点,一直不断的向下遍历,直到无法遍历,然后回塑到起点,选择没走过的点继续遍历这个图。如何判断有没有走过这就需要一个技巧,就是标记数组。深度优先搜索的算法是用递归来进行写的,由于在进行深度遍历的过程中每一步都是一样的,可以使用递归。最后进行回溯,这也符合递归。深度搜索算法,可以创建一颗解空间树,去穷举问题的各种可能,从而达到解决问题的目的。深度优先帮助我们可以图中找到想要查询的路径。还有可以应用在一些社交平台上进行好友的查找。

    广度优先搜索,也是图论中的一种很重要的算法。它和深度优先搜索都是对图进行遍历,但是不一样的是,广度优先搜索是对与当前结点所有相连的结点进行遍历。进行遍历的同时这些结点挨个挨个的进入一个队列。等到与当前结点所有的点遍历完成后,再从队列中得到队头,继续对这个队头进行四周的遍历,一直这样知道队列为空,即表示广度搜索对图的遍历完成。

    最短路径学了两种算法,一种是dijkstral,地杰斯特拉被称为单源最短路径算法,闻其名知其意,我们要知道一个起始点,才能算到这个起始点到这幅图各个节点的最短路径。

 

     floyd:Floyd运用到了局部最优解的思想,在运用三层循环一直不断选定一个点k,不断的对图内所有的点进行松弛操作,一旦松弛操作找到一条最优解就将其覆盖,这里运用到了动态规划

       在三重循环中,最外层是得到一个松弛点K,可以看到k点的取值是0—>n(n为图的结点数),所以所有的点都要成为一次松弛点,内层循环是得到两个点i,j. Dis[i][j]为i,j两个点之间的距离。(当然一开始将所有的点都进行初始化,INF=0x3fffffff,在进行输入数据之前所有的点都默认为无穷大,即两点之间没有边。)在执行完三重循环后可以得到任意两点间的最优路径(局部最优解,所以组成的整体也是最优的),所以Floyd可以得到图中任意两点间的最短路径。(这里有点难理解,但是事实就是这样,有的事情是比较难以明白的,有的算法难以理解很透彻的所以留下点印象或者感觉就行了)。   floyd可以得到图内任何两点的最优解。这是它相对于dijstra的一个优点,但是floyd用了三重循环遍历了所有的点,所有时间复杂度上会高于dijstra.对于最短路径的问题在解决不同的问题上可以选择这两种算法,看更倾向于哪一种更优。
 
           最小生成树:在一个具有几个顶点的连通图G中,如果存在子图G'包含G中所有顶点和一部分边,且不形成回路,则称G'为图G的生成树,代价最小生成树则称为最小生成树。最小生成树的算法有两种,一种是prim,另一种是Kruskal,我对prim的理解是,在图中找到一结点,找与他相邻权值最短的边,然后加入生成树中,继续找离这棵子树权值最小的点,知道所有的点都连在这棵生成树上,即为代价最小的生成树。
                kruskal,一样也是贪心算法,贪心的思想,一开始将图中间所有的边的权值进行排序,权值的记录我们是采用结构体的方式,创建一个结构体,一个结构体就是一条边,其中包含了权值和起始点。在输入的时候就是直接把所有的边存在一个结构体数组里。前面提到了对边的排序,我们从最短的一条边开始,得到结构体里的两个节点,判断他们是否在一棵树上,如果不在则可以将他们并在一棵树上,一直这样循环。就可以得到一棵最小生成树了。
               
 
                 拓扑排序。每次找到图中入度为零的点。然后将其切出,切除包括删边和标记,删边就是将切除点有有连系的点的边全部清除,同时这些点的入度也要减1。完成这两步后就要将切除的点比较,以免下次再次操作。反复执行上述步骤即可得到拓扑排序图,(在没有环的情况下。)
              先写这么多..以上还是有很多理解不够的地方,或者理解错误的地方,慢慢修正。
           
        
      
                   

 

   

posted @ 2012-09-10 16:54  岳凌哥来虐场不高兴  阅读(148)  评论(0)    收藏  举报