找到一种算法来赢得这场打击犯罪的战斗!

11

在城市中发生了一起犯罪,犯罪嫌疑人开始逃跑。给出了城市地图。目前,有些警车停留在一些给定的地点,他们试图阻止犯罪嫌疑人。警车和犯罪嫌疑人的车辆拥有相同的最大速度。只有在犯罪嫌疑人比任何一辆警车更早到达某个点时,他才能通过该点。地图上有几个出口,如果犯罪嫌疑人到达任何一个出口,则逃脱成功。找到一种算法来分配警车,使得犯罪嫌疑人无法通过任何路径逃脱。

例如,以下是可能的城市地图。

enter image description here

白色圆圈是嫌疑人的起点,黑色圆圈是警车,小正方形是出口。在这种情况下,可以阻止嫌疑人。一个可能的计划是警车A前往A'B留在原地,C前往C'


我的问题可以等价地描述为:

一个化工厂(用白色圆圈标记)发生爆炸,有毒液体以速度v朝着各个方向流动,救援队伍(用黑色圆圈标记)的最大速度也是v,他们正在试图阻止它。小方块代表他们正在保护的村民。


我的想法

如果我们有 n 辆警车,一种高度低效的方法是列出所有可能的顶点 k 元子集 P,使得:

a) k <= n;

b) 从地图中移除 P 中的所有顶点将导致任何出口对嫌疑人不可达;

c) 移除 P 的任何真子集都将让至少一个出口对嫌疑人可达。

然后,我们可以轻松确定是否每个 P 中的顶点都可以在嫌疑人之前由警察覆盖。

但是,我该如何列出所有可能的 P 呢?


@Lior Kogan:

请看这张地图:

enter image description here

如果这是一场双方都知道对方策略的翻转游戏,警察会获胜,因为他可以守卫嫌疑人去的那一边。

但在我的问题中,警察输了,因为他永远不知道嫌疑人可能选择哪一边。


3
如果这是作业,你尝试了什么? - Filburt
1
嗯...正在寻找一种分割方式,它可以通过切割≤|警车数|个点来实现,在这种方式下,嫌疑人在一侧,出口在另一侧,而且警车在抓捕嫌疑人之前可以到达所有的切割点... - user684934
@Filburt:这不是作业。我不知道是否有人之前想过这个问题,但这个问题是我自己想出来的,而且这个例子是刚刚随机抽取的。我个人认为它与“cut”有关(任何将两组不可达顶点切割的顶点子集之一)。 - xzhu
@bdares:你的方法接近于我的。但是你如何找到这样的切割呢? - xzhu
@trVoldemort:当警车到达一个顶点时,它需要停留在那里吗?还是可以只设置路障(0时间成本)并移动到下一个顶点? - Lior Kogan
显示剩余5条评论
2个回答

5

编辑2: 根据您的澄清:

我找不到任何关于确切问题的研究。

另一个相关主题是网络中的病毒传播和接种。以下是一些论文:

我认为这个问题非常有趣。虽然我相信它是NP难的。

很抱歉无法提供更多帮助。

--

编辑1:警察和强盗游戏改为图形守卫游戏

新答案:

这是图形守卫游戏的一种变体。

一支移动代理团队,称为卫兵,试图通过阻止所有可能的攻击来将入侵者挡在分配区域之外。在此设置的图形模型中,代理和入侵者位于图形的顶点上,并且它们通过连接边从节点移动到节点。

请参见:Guard Games on GraphsHow to Guard a Graph?

在您的变体中,有两个不同之处:

  • 您正在尝试守卫多个区域
  • 每个受保护的区域都是单个节点

--

这是一个变种的广为人知的“警察和小偷游戏”。
“警察和小偷游戏”在无向图上进行,一组警察试图抓住小偷。该游戏由 Winkler-Nowakowski 和 Quilliot 在 1980 年代独立定义,并自那时以来得到了深入研究。尽管如此,它的计算复杂度仍然是一个未解决的问题。
确定 k 名警察是否能够在无向图上捉住小偷的问题,以及计算在给定图上可以抓住小偷的最少警察数量的问题被证明是 NP 难的。
以下是一些资源:

非常感谢。我之前听说过警察和强盗游戏,也觉得它非常有趣。但我的问题略有不同。我不需要警察捕获嫌疑人,我只需要他们形成所谓的“切割”。在我看来,这相对容易。此外,在警察和强盗游戏中,两个玩家是信息透明的,因此这是一个轮流进行的游戏。而在我的问题中,警察不知道嫌疑人可能走哪条路。 - xzhu
谢谢您的更新。图形守卫游戏确实更接近于我的问题,但它们本质上仍然有所不同。最重要的是要注意到,我的问题并不是一个旋转游戏。它更像是警车试图从犯罪现场守卫“洪水”喷口。我添加了一个示例以演示它们如何更改结果。 - xzhu

0

现在我对我的问题有了更清晰的认识。尽管比《警察和小偷游戏》或者《图形守卫游戏》要简单,但是它同样也是一个NP难题。

实际上,这个问题可以分为两个独立的任务:

任务a) 找到一组可能的顶点集合,使嫌疑人无法到达任何出口。
任务b) 验证是否这组顶点能够被警车及时覆盖。

现在我们要证明任务a)是NP完全问题。

首先,我们考虑当只有一个出口时。看看这张简单的地图:

enter image description here

如果一个顶点被警察封锁,则将其分配为False,如果可以通过,则为True。我们知道,如果A & (B | D) & C == True,则嫌疑人可以逃脱。现在我们清楚地看到,任务a)等同于著名的NP完全问题Boolean satisfiability problem

如果有多个出口,只需创建多个布尔表达式并使用AND(&)连接它们即可。

任务b)只是一个二分图匹配问题,可以轻松地通过Hungarian algorithm解决。它的时间复杂度为O(n^4)

因此,整个问题都是NP难的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接