zoukankan      html  css  js  c++  java
  • 图的基本概念

    图的基本概念

    (graph)可视为一有序二元组G = (V,E), 其中V = {v1,v2,……,vn}为顶点集,V中的元素称为顶点(vertex),E = {e1,e2,……,en}称为边集,E中的元素成为(edge)。E中的每条边e连接V中的两个顶点,不妨用e = vi vj 来表示连接顶点vi和vj的边。

    有向图:点对vi与vj是有序的,即边是有方向的。
    赋权图:若给图的每条边赋以(weight),则G成为赋权图。
    简单图:既没有环,也不存在两条边的两个端点均相同的图。
    完全图:任何两个不同顶点之间都有边相连的简单图。
    无向图是连通的:无向图中从每一个顶点到其他顶点都存在一条路径。

    设v0v1v2^^^vn是一个顶点序列,其中v(i-1)vi表示一条边,则该顶点序列构成G中的一条途径(walk).
    长度:途径的长度一般为边的条数,对于赋权图,长度为通过的边的权值之和。
    :经过的边都不相同的途径称为迹。
    :经过的顶点都不相同的途径称为路。
    :除了起点和终点相同外,其他顶点均不相同的途径称为圈。

    设G = (V,E)和G‘ = (V’,E’)是两个图,若V’⊆V且E’⊆E,则称G‘为G的子图
    满足V’ = V的子图成为生成子图
    G(V’):若V‘⊆V ,以V’为顶点集,以G中的两端点均在V‘中的边组成的集合为边集的子图称为G的由V’导出的子图,记为G(V’).
    GV’:表示以VV’为顶点集,以E中删去所有至少有一个顶点在V’中的边后所得集合为边集的子图。
    G(E’):设E‘⊆E ,以E’为边集集,以所有E‘中的边的端点组成的集合为顶点集的子图称为的由E’导出的子图,记为G(E’).
    |E|:表示边的条数。

    图的表示

    我们考虑有向图,无向图可以类似表示。
    ①使用邻接矩阵(一个二维数组)
    对于每条边e = vi vj,我们令A[vi][vj] = 1,否则数组元素为0(0表示顶点vi 与 vj 之间没有边相连). 若为有权图,可以让A[vi][vj]等于该权值,用很大或很小的权作为标记表示不存子的边。
    注意:该表示方法优点是非常简单,但空间需求大,如果图的边很少,就会浪费大量的空间。因此最好用于稠密图的情况。
    ②使用邻接表(链表)
    对于每一个顶点,我们使用一个表存放所有邻接的顶点。


    实际应用中顶点都有名字而不是数字,我们不能通过未知的名字为数组做索引,可以用散列表,来实现从名字到数字的一个映射。这样所有的图论算法都将使用内部编号。

  • 相关阅读:
    MIPAV
    SPM12manual,统计部分(8-10)笔记
    Django中ORM介绍和字段及字段参数
    Django的路由系统
    django 连接mysql报错
    django启动创建用户失败
    django ORM操作
    Django创建App报错
    Web框架
    Bootstrap框架(组件)
  • 原文地址:https://www.cnblogs.com/xiao-xue-di/p/9709351.html
Copyright © 2011-2022 走看看