zoukankan      html  css  js  c++  java
  • C#数据结构_图

    顶点的度=顶点的入度+顶点的出度。

    顶点 v 的入度是指以该顶点 v 为弧头的弧的数目;顶点 v 的出度是指以该顶点 v 为弧尾的弧的数目。

    简单路径:一条路径上顶点不重复出现。

    回路:第一个顶点和最后一个顶点相同的路径。

    简单回路:除第一个顶点和最后一个顶点相同其余顶点都不重复的回路。

    连通:在无向图中,若两个顶点之间有路径。

    连通图:无向图 G 中任意两个顶点之间都是连通的。

    强连通图:在有向图中,若图中任意两个顶点之间都存在从一 个顶点到另一个顶点的路径。

    最小生成树:边的权值总和最小的生成树。

    构造有 n 个顶点的无向连通网的最小生成树必须 满足以下三个条件:

    (1)构造的最小生成树必须包括 n 个顶点;

    (2)构造的最小生成树有且仅有 n-1 条边;

    (3)构造的最小生成树中不存在回路。

     构造最小生成树的方法:普里姆(Prim);克鲁斯卡尔(Kruskal)算法。

    普里姆(Prim):

    假设 G=(V,E)为一无向连通网,其中,V 为网中顶点的集合,E 为网中 边的集合。设置两个新的集合 U 和 T,其中,U 为 G 的最小生成树的顶点的集 合,T 为 G 的最小生成树的边的集合。普里姆算法的思想是:令集合 U 的初值 为 U={u1}(假设构造最小生成树时从顶点 u1 开始),集合 T 的初值为 T={}。从 所有的顶点 u∈U 和顶点 v∈V-U 的带权边中选出具有最小权值的边(u,v),将顶 点 v 加入集合 U 中,将边(u,v)加入集合 T 中。如此不断地重复直到 U=V 时, 最小生成树构造完毕。此时,集合 U 中存放着最小生成树的所有顶点,集合 T中存放着最小生成树的所有边。

    克鲁斯卡尔(Kruskal)算法:对一个有 n 个顶点的无向连通网,将图中的 边按权值大小依次选取,若选取的边使生成树不形成回路,则把它加入到树中; 若形成回路,则将它舍弃。如此进行下去,直到树中包含有 n-1 条边为止。

     

    最短路径:狄克斯特拉(Dikastra)算法:设置 两个顶点的集合 S 和 T,集合 S 中存放已找到最短路径的顶点,集合 T 中存放当 前还未找到最短路径的顶点。初始状态时,集合 S 中只包含源点,设为 v0,然 后从集合 T 中选择到源点 v0 路径长度最短的顶点 u 加入到集合 S 中,集合 S 中 每加入一个新的顶点 u 都要修改源点 v0 到集合 T 中剩余顶点的当前最短路径长 度值,集合 T  中各顶点的新的最短路径长度值为原来的当前最短路径长度值与 从源点过顶点 u 到达该顶点的新的最短路径长度中的较小者。此过程不断重复, 直到集合 T 中的顶点全部加到集合 S 中为止。

  • 相关阅读:
    集合总结(非常重要)
    day18_Map案例
    Map代码案例
    重踏学习Java路上_Day18(Map,Collections)
    TreeSet概述(源码和内部图 进行解析,包含练习案例)
    HashSet保证元素唯一性的代码体现(源码和内部图 进行解析)
    重踏学习Java路上_Day17(登录注册案例,Set集合,Collection集合总结,在集合中常见的数据结构)
    Java 泛型解析,太难了,认真读才能理解
    题解 【BZOJ4700】适者
    题解 楼房重建
  • 原文地址:https://www.cnblogs.com/shirln/p/8780652.html
Copyright © 2011-2022 走看看