背景
数据之间的关系有 3 种,分别是 "一对一"、"一对多" 和 "多对多",
“一对一” :线性表,一串从前到后的线性关系,前一个只对应后边的一个
“一对多” :树,前一个可以对应后边多个变量
此文中提到的回溯就是树中一种重要算法
子集位算法与回溯算法实现
“多对多” :图
像这种多个元素相互链结的形式就是图。
基础知识点
图分为无向图和有向图:
无向图 | 有向图 |
---|---|
弧头和弧尾:有向图中,无箭头一端的顶点通常被称为"初始点"或"弧尾",箭头直线的顶点被称为"终端点"或"弧头" | |
入度和出度:对于有向图中的一个顶点 V 来说,箭头指向 V 的弧的数量为 V 的入度(InDegree,记为 ID(V));箭头远离 V 的弧的数量为 V 的出度(OutDegree,记为OD(V))。拿图 2 中的顶点 V1来说,该顶点的入度为 1,出度为 2(该顶点的度为 3)。 | |
无向图中描述两顶点(V1 和 V2)之间的关系可以用 (V1,V2) 来表示 | 有向图中描述从 V1 到 V2 的"单向"关系用 <V1,V2> 来表示 |
无向图的集合 VR={(v1,v2),(v1,v4),(v1,v3),(v3,v4)} | 有向图的集合 VR={<v1,v2>,<v1,v3>,<v3,v4>,<v4,v1>} |
无论是无向图还是有向图,从一个顶点到另一顶点途径的所有顶点组成的序列(包含这两个顶点),称为一条路径。 | 如果路径中第一个顶点和最后一个顶点相同,则此路径称为"回路"(或"环") |
若路径中各顶点都不重复,此路径又被称为"简单路径" | 若回路中的顶点互不重复,此回路被称为"简单回路"(或简单环) |
另一方面,图中的顶点之间按有没有权重分为无权图和有权图
以城市之间相互来往举例:
无权图 | 有权图 |
---|---|
城市之间距离相等,都是1 | 城市之间距离不等,0-1:2;1-2:4; |
可以分别用这两个矩阵表示,python中可以用多层列表表示