一道算法题,取自今年CUMCM数模竞赛B题

chenchenyangll 2011-09-13 03:26:37
题目取自今年CUMCM数模竞赛B题第2问第2题,我先描述一下(略作修改,方便表达)
详见:http://mcm.edu.cn/html_cn/node/a1ffc4c5587c8a6f96eacefb8dbcc34e.html

1 有一个城市,它有许多路口,路口间由路相连
2 路口中有一些为城市的出入口
3 警方为方便服务市民在一些路口上设置了警察局
4 每一个警察局的警力至多能够封锁一个路口

现某路口P发生重大刑事事件,在案发后约3分钟警方接到报案
问:怎样在城市的路口设置警力封锁路口,能够以最少时间围堵罪犯?

一些补充说明:
1 警车速度为60km/h,罪犯逃逸速度不明
2 围堵指:当警方封锁方案实施完毕后,无论多少时间,罪犯都无法抵达城市出入口
3 假设城市没有监控系统,警方无法掌握罪犯的实时位置。

语文不好。。不明白的看原题吧 = = 数据也在里边 = =
...全文
286 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenchenyangll 2011-09-14
  • 打赏
  • 举报
回复
up一下
mervynhit 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 liuxingjiaofu 的回复:]

我也参加过啊,参加的2005年的,才大二啊那会,最后整了个辽宁省2等奖
那会刚接触C语言和MATLAB
最后求解不是最重要的
你把你的分析,和数学模型设计好了,才是最看重的
[/Quote]

恩,赞成,我大一参加过,那时候数据结构都不会。其实主要是看数学模型,因为不可能找出一个完美无缺的解,要么是效率太低,要么是其他什么问题。只有不断的完善模型和算法。
mervynhit 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 chenchenyangll 的回复:]

引用 18 楼 mervynhit 的回复:



的确逃逸速度不明,所以我求一个算法 不求具体答案

另外,知道罪犯的速度,并不能简单的“在罪犯逃逸半径外的路口设置警力”

注意:一个警察局的警力至多能够封锁一个路口
[/Quote]

好吧, 如果警力足以布置逃逸半径外的路口,就布置,如果不行,这些逃逸半径边缘以外的路口A,以及逃逸半径以内的路口B,剩下的路口加入另一个集合。利用先广搜索找出交通要害。
1,找出C中与A中路口相邻的路口, 根据与A相邻边数得到权值w,根据w排序。根据权值w,且条件w>1,依次将C中的路口i加入A中,并把与i相邻的A中的路口返回到B中。
2,如果没有w>1的节点,那就从于A中节点间隔一个节点的集合中,找出交通要害。
3,还是不行,间隔两个节点。。。循环


chenchenyangll 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 liuxingjiaofu 的回复:]

我也参加过啊,参加的2005年的,才大二啊那会,最后整了个辽宁省2等奖
那会刚接触C语言和MATLAB
最后求解不是最重要的
你把你的分析,和数学模型设计好了,才是最看重的
[/Quote]

撇开帖子里CUMCM的部分吧。。。
我只是把它单纯的当成一个算法题发在这里 = =
  • 打赏
  • 举报
回复
我也参加过啊,参加的2005年的,才大二啊那会,最后整了个辽宁省2等奖
那会刚接触C语言和MATLAB
最后求解不是最重要的
你把你的分析,和数学模型设计好了,才是最看重的
chenchenyangll 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 mervynhit 的回复:]

[/Quote]

的确逃逸速度不明,所以我求一个算法 不求具体答案

另外,知道罪犯的速度,并不能简单的“在罪犯逃逸半径外的路口设置警力”

注意:一个警察局的警力至多能够封锁一个路口
mervynhit 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 chenchenyangll 的回复:]

引用 11 楼 mervynhit 的回复:



堵出入口应该不是一个最快的方案

另外你的收拢包围圈的算法不一定能缩小= =
[/Quote]


罪犯逃逸速度不明, 也就意味着只有去赌路口,如果知道罪犯的速度,可以在罪犯逃逸半径外的路口设置警力。

缩小半径的算法确实不一定能缩小,不过只需要改进计算权值的方法就行
碎碎念 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 chenchenyangll 的回复:]

引用 14 楼 lanxue_1988 的回复:



有人说用lingo解这题 软件直接崩溃了 我没试过
[/Quote]
那是约束没写好吧,当年有个学长用lingo解一个优化问题,好像是涉及上万个变量。。。软件都没崩溃。。
chenchenyangll 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 lanxue_1988 的回复:]

[/Quote]

有人说用lingo解这题 软件直接崩溃了 我没试过
chenchenyangll 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 mervynhit 的回复:]

[/Quote]

堵出入口应该不是一个最快的方案

另外你的收拢包围圈的算法不一定能缩小= =
碎碎念 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 chenchenyangll 的回复:]

引用 12 楼 lanxue_1988 的回复:

自己做吧,先建模。话说现在是不是正在比赛啊?我也参加过全国数模比赛,先要建模,这个是关键。然后才是写算法。。模型建的不好,怎么算也是白搭。。。


结束了。因为没有完全搞定,心有不甘,所以才来问的 = =
[/Quote]
哦,我看了一下你说的题目,我记得运筹学中有一款软件叫lingo吧,专门算这类优化问题的,只要你把问题和约束条件写清楚就好了,不需要写算法。。。
chenchenyangll 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 lanxue_1988 的回复:]

自己做吧,先建模。话说现在是不是正在比赛啊?我也参加过全国数模比赛,先要建模,这个是关键。然后才是写算法。。模型建的不好,怎么算也是白搭。。。
[/Quote]

结束了。因为没有完全搞定,心有不甘,所以才来问的 = =
碎碎念 2011-09-13
  • 打赏
  • 举报
回复
自己做吧,先建模。话说现在是不是正在比赛啊?我也参加过全国数模比赛,先要建模,这个是关键。然后才是写算法。。模型建的不好,怎么算也是白搭。。。
mervynhit 2011-09-13
  • 打赏
  • 举报
回复
步骤:
1,构架一个图 (可以用矩阵表示)
2,用Dijkstra最短路径算法,算出出入口到案发地点的最短路径
3,根据路径的长短,在出入口布置警力。

现在已经形成了包围圈,以下是缩小包围圈的步骤:
1, 设图中被警方占据的交通口的集合为A, 未被警方占据的交通口于警方占据的交通口的集合为B
2, 计算图中每条边的权值,A中点之间的边权值为0, 连接AB中点的边权值为1。
3, 计算集合A中每个点的权值,权值为与他相邻的每条边的权值之和。
4, 找到A中权值为1的点,像事发地点进军,也就是占据了B中的一个点,把他中B中移除,加入A中。
5, 重复,直到找到罪犯



设定图中每天节点的权值w,已被警方占据的交通口w(i)为0,i交通口。
chenchenyangll 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 shenyulv 的回复:]

..................
[/Quote]

这。。。。。。
chenchenyangll 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 trbbadboy 的回复:]

[/Quote]

大致和你的想法差不多,不过要注意每一个警察局至多只能对一个路口进行封锁。比较复杂
RobinTang 2011-09-13
  • 打赏
  • 举报
回复
下面是我的想法,可能说的有点乱七八糟,欢迎交流讨论
假设犯罪嫌疑人实施犯罪行为的地点(即犯罪现场或者事发点)为P0,因为犯罪嫌疑人的逃逸路线不确定,因此犯罪嫌疑人在案发后可能逃逸的方向应该是从P0逃往和P0相连的各个节点方向,假设和P0相连的节点有n个,这n个节点组成集合P0i(i=1,2,3,…,n),并假设案发时刻为T0,如果在T0时刻对犯罪嫌疑人进行逮捕的话,只需调动警力资源在犯罪嫌疑人到达P0i中某一点之前占据P0i各点便能将犯罪嫌疑人包围,之后再从P0i各点向P0靠拢(即缩小搜索半径),就一定在最短的时间内能够将犯罪嫌疑人。如果在P0i中存在着警力资源到达该点的时间比犯罪嫌疑人到达该点的时间要长,假设这样的点有m个,这m个点组成集合P01i(i=1,2,3,…,m),那么P01i就可能成为犯罪嫌疑人逃逸的缺口,此时对犯罪嫌疑人的逮捕除了需要对 中除P01i的点进行围堵之外,还得对和P01i相连并且原理犯罪现场的节点进行围堵。一直使用该方法,只到不存在可能成为犯罪嫌疑人逃逸的缺口的点为止。对犯罪嫌疑人完成包围以后,逐渐将警力资源向着犯罪现场的方向靠拢,以逐渐缩小包围半径,最终实现对犯罪嫌疑人的逮捕。
chenchenyangll 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 proteas 的回复:]

先要建模的,不知道什么数学模型满足这个题目,留名。
[/Quote]

如果把背景抽掉 应该就是一个图的算法题吧 = =
chenchenyangll 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yuyan_linger 的回复:]

没太听明白 是把城市出入口堵上就行了吗 帮你顶吧
[/Quote]

也行 但时间不是最优的
Proteas 2011-09-13
  • 打赏
  • 举报
回复
先要建模的,不知道什么数学模型满足这个题目,留名。
加载更多回复(3)

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧