图是一种相对复杂的数据结构由顶点和连接每队顶点的边构成的图形就是图。
1. 基础背景
假设你居住在旧金山,要从双子峰前往金门大桥。你想乘公交车前往,并希望换乘最少。可以做的公交车如下所示:
为了找到换乘最少的乘车路线,你将用什么样的算法?
一步就能到达金门大桥吗?下面突出了所有一步就能到达的地方。
金门大桥未突出,因此一步无法到达那里,两步能吗?
金门大桥也未突出,因此两步无法到达那里,三步呢?
金门大桥突出了!因此从双子峰出发,可以沿下面的路线三步到达金门大桥。
还有其他的路线,但是他们更远(需要四步)。这个算法发现,前往金门大桥的最短路径需要三步。这种问题被称为 最短路径问题(shortest-path problem)。你经常找出最短路径,这可能是前往朋友家的最短路径,也可能是国际象棋中把对方将死的最少步数。解决最短路径问题的算法被称为 广度优先搜索 。
要确定如何从双子峰前往金门大桥,需要两个步骤。
- 使用图来建立问题模型;
- 使用广度优先搜索解决问题。
下面介绍什么是图。
2. 图是什么?