“对图 $G$ 中两个不交非空顶点集 $A,B$,定义边密度”
形式陈述
假设要记录四个人之间谁与谁认识。先列出全部人,再列出互相认识的二人组合,就已经确定了一张图;把姓名画在哪里,不改变记录的关系。本页先定义这样的顶点与边,图的表示再讨论怎样把它保存成矩阵或邻接表。改用有向、带权或多重图时,则需要在对象中保留更多信息。
本条中的图专指有限、简单、无向图。它是二元组
边是两个不同顶点组成的无序集合,因此
记
图同构表达“连接结构相同”。从
保边与保非边一起保证结构完全对应。重新命名顶点通常得到一个同构的图;若底层集合不同,它们并不是字面相等的二元组。
直觉
图把一个系统拆成“有哪些对象”和“哪些对象之间有联系”。顶点集负责保存全部对象,包括暂时没有联系的对象;边集只记录允许的成对关系。省略孤立点,会改变顶点数、连通性乃至算法输入,不能只从画出的线条反推整个图。
图画的位置、线段长度和弯曲方式通常不属于图本身。两条画线交叉,不会自动在交点产生新顶点;把顶点挪远,也不会改变它的度数。只有明确增加嵌入、距离或边权之后,这些额外数据才进入问题。
例子与边界
从一张小图读出结构
取
前三个顶点构成三角形,
按
读第三行时,三个
无向性对应矩阵对称,无自环对应对角线为零,简单性对应非对角项只有
度数能说明什么
每条边在两个端点各贡献一次度数,故
这就是握手恒等式。例子中左边为
度数序列却不能决定整张图。六顶点环
改变模型,会改变允许的边
有向图把边的方向纳入数据;
例如 Cuckoo Hashing 的键—槽图可能有不同键对应同一对候选槽,因而自然得到多重边。这里的简单图提供基础语言,但要分析那种模型,必须保留重复边,不能把边集合去重后继续计数。类似地,给边附非负权重得到的是加权图;权重不是多重边数,零权边在组合连接与某些算子中也可能发挥不同作用。
本条的图也可视为每条超边大小都等于
推论与应用
由于边只能从所有无序顶点对中选择,
达到上界的是完全图
图中的路与圈追踪连接如何连续延伸,连通性再把顶点划分为互相可达的部分。它们讨论的是边的组合结构,而不是画图时两点在平面上是否靠近。图与这些派生概念应分层定义,以免把“看上去是一整块”代替可达性证明。
表示会影响算法成本。邻接矩阵使用
参考资料
- Oscar Levin,Discrete Mathematics: An Open Introduction,第 4 版,开放在线教材,§2.1 Problems and Definitions:简单图、子图和基本例子。
- Robert Sedgewick 与 Kevin Wayne,Algorithms, §4.1 Undirected Graphs:图表示与遍历。其程序接口允许自环和并行边,使用时应与本条的简单图约定区分。
- Reinhard Diestel,Graph Theory,5th ed.,2017,§1.1–1.5:基本图论语言;进一步阅读。