在前面,我们讨论了图与广度优先搜索,解决了一个“找朋友”的问题。现在,让我们想一想,我们把问题换成了“找地方”——我们想从一个地方到达另一个地方,也按照最短路径到达——这样的问题中,我们使用图来建立模型时,会发现连接——也就是两个地方之间的路——是有权重,或者说长度的。这种情况下,广度优先搜索就不起作用了——它只能保证我们找到走过最少的连接数,而没有考虑这些连接有长度的情况。下面我们来考虑这个问题。
1. 两个术语
(1).加权图
就像上面所说,广度优先搜索适用于“连接没有长度值”的图,我们称之为非加权图。而连接存在长度值时,我们使用狄克斯特拉算法,此时的图称为加权图,连接的长度值称为权重。比如:
(2).有向无环图
之前我们介绍过有向图和无向图,其实无向图就是一个环: