普利姆算法与克鲁斯卡尔算法例题,普利姆转换算法

首页 > 教育 > 作者:YD1662024-05-17 20:57:05

女士们,先生们,老少爷们儿们!在下张大少。

《文明》游戏想来诸位并不陌生,筑成后需要在城市之间修路。在下这种懒癌晚期的玩家,显然会把这种无聊的工作委任给电脑。但说出来你可能不信,高手认为这其中蕴含着数学算法。

如图:把6座城市连起来,且道路的总长度越小越好。可有方法?

普利姆算法与克鲁斯卡尔算法例题,普利姆转换算法(1)

闲言少叙,且看在下操作!

首先简化游戏画面,6座城市分别为A、B、C、D、E、F,两两之间标上距离。

普利姆算法与克鲁斯卡尔算法例题,普利姆转换算法(2)

由此可见,我们要求解的是上图的一个子图。此图要求6座城市相互连接,同时路的总长度最短。这便是数学中的最小生成树问题。

求解最小生成树有两种经典算法。一是普利姆(Prim)算法;二是克鲁斯卡尔(Kruskal)算法。

我们先看普利姆算法:

Step1,任取一顶点,我们取顶点A。

Step2,与A相连的边有3条,AB、AC、AD,取最短的边AB。

普利姆算法与克鲁斯卡尔算法例题,普利姆转换算法(3)

Step3,与A、B相连的边有4条,AC、AD、BE、BF,取最短的边AD。

普利姆算法与克鲁斯卡尔算法例题,普利姆转换算法(4)

首页 123下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.