算法入门08

本文介绍了如何利用Dijkstra算法解决一个城市小河两岸建立最少费用通路的问题。通过将岛屿和桥梁转化为图论中的顶点和边,将问题转化为寻找从起点到终点的最短路径。通过算法实现,得出最少需要的费用为15百万元,涉及的小岛和桥梁分别为D、F和B9、B11、B10。
摘要由CSDN通过智能技术生成

一、如图所示,某城市有一条小河,河中间有8 座小岛(图中分别用 I A I_A IA I H I_H IH 表示)。为了方便市民出行,拟在两岸(河北岸用 N N N 表示,河南岸用 S S S 表示)之间建立一条通路,因此需要在这些小岛之间或者小岛与河岸之间建设桥梁。已知有 18 18 18 处可以建设桥梁的候选地址(图中分别用 B 1 B_1 B1 B 18 B_{18} B18 表示),以及各处建设桥梁所需要的费用(图中用桥旁边的数字表示费用,单位:百万元,例如:建设桥 B 1 B_1 B1 需要3 百万元)。在这些候选地址中,选择在哪几处建设桥梁可以构建出一条(只建一条)两岸的通路,且使用的费用最少?最少需要的费用是多少?需要写出分析的思路和过程。

在这里插入图片描述

  • 建立模型:将该题的河南岸 S S S 、河北岸 N N N 、8座小岛 I A I_A IA I H I_H IH 分别等价为十个顶点,将每座桥等价为连接十个点的边,将每座桥的建设费用等价为边的权重。则该图可看做一个带权无向图,该问题的求解可以转换为求从源 S S S 出发的单源最短路径问题。

    • p p p S ∼ N S\sim N SN 的路径,则路径长度为:
      w ( p ) = ∑ ( u , v ) ∈ p w ( u , v ) w(p)=\sum_{(u,v)\in p}w(u,v) w(p)=(u,v)pw(u,v)

    • 对于 S ∼ N S\sim N S

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值