在一个城市的某社区中,需要定期对社区道路进行洒水。下图是这个社区的街道示意图,其中“点”表示街道的交汇处,“边”表示需要洒水的街道,“边”上的数字表示每条街道的长度

(单位:m)。注意:洒水车只能按箭头方向行驶。

假定洒水车每次从“点”1处出发,每个方向的车道恰好只完成一次洒水任务,最后将洒水车停在“点”1处,假设洒水车的容量足够大,能够不需要中途加水就完成所有路面的洒水任

务。由于有些街道是单行线,因此有时候可能需要多次经过一条街道(每条街道的每个方向只洒水一次)。请为洒水车选择一条最佳路线,使得完成所有街道洒水任务所需的路程最

短。对于双向的街道,需要为每个方向的车道分别进行洒水。

记得第一次碰到这个题目是校赛建模的一个题目,当时刚拿到时还是有点懵逼的。后来google到HuangWei的这篇博客,关于中国邮递员问题和欧拉图应用才带给了我一定的思路。

虽然论文都已经交了两个月了,但今天在QQ群里看到一个类似的问题,又想了起,所以把它记录下来。

在洒水车问题上,若部分街道时双向,部分街道时单向时,已经被证明是NPC问题。不过这个题目看起来很巧,因为,我在把它看成两个图后,问题变得简洁多了。

首先,先把双向图抠出来。(手画见笑)

这直接一字画,不用多余的解释。接下来就只剩下单向的图了。

首先在原图上计算每个顶点的入度与出度之差。如果中所有的都有,那么G中已经存在欧拉回路。说明得加上出度。说明得加上入度。

而当,则不能做任何新增路径的端点。

这便成了一个网络流模型。

顶点对应于网络流模型中的源点,它发出个单位的流;顶点对应于网络流模型中的汇点,它接收个单位的流;而的顶点,则对应

于网络流模型中的中间结点,它接收的流量等于发出的流量。在原问题中还要求增加的路径总长度最小,我们可以给网络中每条边的费用值 设为图中对应边的长度。这样,在网络

中求最小费用最大流,即可使总费用最小。

在构建路径时,需要先判断,一个顶点周围四条边的大小。在这里,可将6顶点和9顶点看成一个整体。(图为经过构建网络流后,粗线是构建的路径)

最后可求出两个图的路径总和为5990。

转载于:https://www.cnblogs.com/clairvoyant/p/5815258.html

洒水车问题(路线有单向有双向)相关推荐

  1. WCF简单教程(6) 单向与双向通讯

    第六篇:单向与双向通讯 项目开发中我们时常会遇到需要异步调用的问题,有时忽略服务端的返回值,有时希望服务端在需要的时候回调,今天就来看看在WCF中如何实现. 先看不需要服务端返回值的单向调用,老规矩, ...

  2. 地址总线是单向还是双向_如何区分晶闸管的单双向问题?

    可控硅又叫做晶闸管,是一种常用的半导体器件,是一种能像闸门一样控制电流大小的半导体器件.因此,可控硅也具有开关控制.电压调整和整流等功能.可控硅的种类较多,强电电路采用的可控硅主要有单向晶闸管和双向晶 ...

  3. tomcat7.0.55配置单向和双向HTTPS连接

    HTTPS配置中分为单向连接和双向连接,单向连接只需要服务器安装证书,客户端不需要,双向连接需要服务器和客户端都安装证书 下面的配置都没有用CA签名来配置,都不能用于生产环境,实际配置中是需要CA的, ...

  4. 地址总线是单向还是双向_双向可控硅和单向可控硅的区别

    可控硅又叫做晶闸管,是一种常用的半导体器件,是一种能像闸门一样控制电流大小的半导体器件.因此,可控硅也具有开关控制.电压调整和整流等功能.可控硅的种类较多,强电电路采用的可控硅主要有单向晶闸管和双向晶 ...

  5. [经验教程]支付宝好友被删除了怎么知道及支付宝好友删除是单向还是双向?

    支付宝好友删除是单向还是双向? 支付宝好友删除是属于双向删除关系,单向删除好友列表:即支付宝好友删除后对方无法向您发送消息,但是已添加的支付宝好友还会显示在对方的好友列表中.单向删除好友是指自己删除好 ...

  6. 仿百度壁纸客户端(三)——首页单向,双向事件冲突处理,壁纸列表的实现

    仿百度壁纸客户端(三)--首页单向,双向事件冲突处理,壁纸列表的实现 百度壁纸系列 仿百度壁纸客户端(一)--主框架搭建,自定义Tab + ViewPager + Fragment 仿百度壁纸客户端( ...

  7. 仿百度壁纸客户端(三)——首页单向,双向事件冲突处理,壁纸列表的实现...

    仿百度壁纸客户端(三)--首页单向,双向事件冲突处理,壁纸列表的实现 百度壁纸系列 仿百度壁纸客户端(一)--主框架搭建,自定义Tab + ViewPager + Fragment 仿百度壁纸客户端( ...

  8. vue 单向绑定 双向绑定

    参考:[Vue]vue 单向绑定& 双向绑定 - vickylinj - 博客园 在react中是单向数据绑定,而Vue.js 最显著的特点就是响应式和数据驱动,也就是将Model和View进 ...

  9. 地址总线是单向还是双向_三端双向交流开关(TRIAC)

    三端双向交流开关(TRIAC=TRIode(三端)AC semiconductor switch)实质上是双向晶闸管,它是在普通晶闸管的基础上发展起来的,它不仅能代替两只反极性并联的晶闸管,而且仅用一 ...

最新文章

  1. coreseek最大检索数只有1000的问题!
  2. 定了!旗手苏炳添!却被23年前的科幻小说“神预言”?作者回应!
  3. laravel+vue.js的学习以及为什么浏览器中要有井号“#”
  4. Android studio如何使用SVN进行版本控制?
  5. 超出部分用省略号显示 以及 bootStrapTable 的属性一览表
  6. mysql 从库重新同步_mysql从库删除数据重新同步
  7. matlab里用fix函数,Matlab基本函数-fix函数
  8. python排名上升_TIOBE:2019年7月全球编程语言排行 Python热度继续上升
  9. ffmpeg播放器 android,Android使用FFmpeg(六)--ffmpeg实现音视频同步播放
  10. anaconda和python的区别_anaconda和python区别
  11. 打扰了!MacBook Pro 16英寸国行版正式开售:顶配46421元
  12. 极客大学架构师训练营 编程的本质与未来 第三课 听课总结
  13. 《Go程序设计语言》- 第13章:低级编程
  14. 朗文当代高级英语辞典android,朗文当代高级英语词典
  15. 4-7-4 校验ISBN-10编码 (10 分)
  16. 【bug】修复YYC松鼠短视频系统V2.7版本bug 注册输入验证码提示邀请码,输入邀请码提示错误
  17. Linux 下 setfacl访问控制的使用
  18. 编写吃c语言程序步骤,自己做的一个C语言小游戏——吃金子
  19. (转载)HCIA-GaussDB 华为认证数据库工程师
  20. 巴塞罗那,高迪的城市

热门文章

  1. linux恢复mysql数据库_linux下如何备份还原mysql数据库
  2. java关键字的用法_JAVA总结(一)-----关键字分类及使用
  3. 2022年4月24号MyBatis总结.
  4. 概率论与数理统计1:基础知识
  5. 手机上的廉价快感,真的得戒掉
  6. Docker 容器健康检查机制
  7. 一个小工具——随机产生汽车车牌号的Java实现
  8. 可持久化线段树13(区间内只出现一次的数)
  9. 莫烦tensorflow视频 和 LiYu's personal knowledge 和 sklearn
  10. Android Bilibili网站数据获取一 题目分类获取