前言
楼主打模拟赛自闭就出来写blog了
本编blog目的是写一篇全网最详细的图论从基础到各种算法(在我会的范围,因此目前会不断更新)。
图
Q :什么是图?
A :在计算机科学里,图大概长这个样子(这是一张我随手画的图):
因此,图的非正式定义很简单,就是 有一些结点(node),有一些边(edge)将点连起来。
我们可以形象的理解为 有若干个城市,每个城市间有一些道路相连,其中,城市就是结点,道路就是边。图就是整个城市群(这个是最短路里常用的图论模型)
我们发现图就两个东西 :结点和边,因此可以看见一些学术性的blog或百科里把图抽象成 点集 \(V\) 和 边集 \(E\) (这里是集合知识,不知道不大要紧)。
因此,我们要保存一个图,或获得一个图的信息,就只要知道它的 结点与边 的情况即可。接下来我们从 结点 与 边 角度继续来了解图(下面还是基础知识,只要了解,理解,留下印象)
有向图 与 无向图
这里是从边的角度来了解图
Q :什么是有向图和无向图?
A :这你得知道什么是有向边和无向边。
Q :那什么是有向边和无向边?
A :
上图是一条无向边,我们称这是一条由 1 到 2 的无向边,(标了 1 就是编号为 1 的结点)。边的一般形式是 \((u,v)\) , 所以这里就是\((1,2)\)
在无向边里,1可以通向2, 2可以通向1
用城市群这个比喻:我们可以把它看成 城市1 与 城市2 之间有一条道路,这条路是双向公路。这就是无向边的意义。
上图是一条有向边。与上上这条无向边一样,就是多了一个箭头。这个箭头表示 只能由 1 通向 2
我们同样可以把它看成 城市1 与 城市2 之间有一条道路,但是是一条单向公路
所谓 无向图 与 无向边,就是在一张图中的边是无向边还是有向边。
无向图中的边就是无向边,每条边的两个端点可以互相到达。相当于城市之间全部是双向公路,汽车可以来回通行
有向图中的边就是有向边,端点只能沿箭头方向走到另一边。相当于城市之间是单向公路,汽车只能沿公路方向通行
(下图是一张经典的有向图)
有向图与无向图一般会由题目给出
小问题:有向图中的两个城市可否互相到达(达到无向图这个效果)?
可以。其实无向图就相当于一种特殊的有向图。就是建了方向相反的两条有向边。
从边的角度浅显的了解了一下图,接下来抽象地来理解一下图
状态与状态间的关系 和 图的联系
之前一直在用城市来理解图,为了能让自己的知识与思维扩展开来,我们要从图的本质上来理解它。
图可以用来表示状态与状态之间的关系
Q :如果来理解 图可以表示状态与状态间的关系?
我们可以把一个状态看成一个结点,如果能从状态\(u\) 通过某些方式达到 状态\(v\) 我们就可以在图上把 \(u->v\) 连一条边。连完边后,整个状态之间就变成