阅读本文需有一定的搜索算法基础。
一、什么是图论?
图论是离散数学的一个分支。
从狭义上来讲,图可以理解为地图。地图上有地点与路径,显示地点与路径之间的连接;
例如一张北京的地图
我们可以继续将实际的地图抽象成更简洁的结点与路径,就像地铁的路线图。
再例如著名的七桥问题就也可以通过抽象把实际的地图抽象成点与线来表示
广义上来说,图表示的是事物与事物之间的关系,地图即是表示地点与地点之间的关系,路径可以表示相连两个地点之间的距离。
从上述内容可以发现,图有两个重要的组成部分,即节点与边;图论即是探究结点与边关系的学科。
二、图的存储
一个图主要由三个因素确定:点的个数、边的个数、点与边的连接关系。
想要确定一条边,需要明确这条边的起点,终点,权值。这里就涉及到了边的方向问题,确定起点与终点后,边就可以想象成一个由起点指向终点箭头,我们日常生活中常见的没有方向的边(无向边)也可以理解为两条起点与终点相反的有向边。
在解决图论相关问题之前,首先要明确如何存储图。
这里以一张简单的图为例子介绍两种存储图的方式