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

时间:2011-10-13 05:51:31

标签: algorithm graph

在一个城市犯下的罪行和嫌疑人开始逃跑。给出了城市地图。目前,某些地方有一些警车,他们试图阻止嫌犯。警察的汽车和嫌疑人的最高速度相同。如果嫌疑人比任何一辆警车更早到达,嫌疑人只能通过一个点。地图中有几个出口,如果他到达任何一个,嫌疑人就会逃避。找到一个分配警车的算法,这样嫌疑人就无法逃避。

例如,下面是一张可能的城市地图。

enter image description here

白色圆圈是嫌疑人开始的地方,黑色圆圈是警车,小方块是出口。在这种情况下,可以阻止嫌疑人。可能的计划是警车A前往A'B停留,C前往C'


我的问题的等效描述可能是:

  

一个化学工厂(用白色圆圈标记)爆炸,有毒液体开始以速度v的每个可能方向流动,救援队(标有黑圈)的最高速度也是{{1试图阻止它。小广场是他们正在保护的村民。


我的想法

如果我们有v警车,那么效率极低的方法是列出所有可能的n - 元素子集k顶点,以便:

  

a)k< = n;

     

b)删除地图中P中的所有顶点将导致任何出口无法到达嫌疑人;

     

c)删除P的任何适当子集,让至少一个出口可以到达嫌疑人。

然后我们可以很容易地确定P中的每个顶点是否都可以被警察覆盖,不迟于嫌疑人。

但是如何列出所有可能的P


@Lior Kogan:

看看这张地图:

enter image description here

如果这是一个双方都知道其他战略的转身游戏,那么警察就会赢,因为他可以保护嫌犯所在的一方。

但在我的问题上,警察输了,因为他永远不知道嫌犯可能选择哪一方。

2 个答案:

答案 0 :(得分:5)

编辑2:根据您的说明:

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

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

我认为提出的问题非常有趣。虽然我认为它是NP难的。

很抱歉无法继续提供帮助。

-

编辑1:警察和强盗游戏更改为图表保护游戏

新答案:

这是图形保护游戏的变体。

一个名为警卫的移动代理团队试图通过阻止所有可能的攻击来阻止入侵者离开指定区域。在此设置的图形模型中,代理和入侵者位于图形的顶点上,它们通过连接边缘从一个节点移动到另一个节点。

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

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

  • 你正试图守卫多个地区
  • 每个保护区域都是单个节点

-

原始回答:

这是经过充分研究的警察和强盗游戏的变体。

警察和强盗游戏是在无向图上播放的,其中一群警察试图抓住强盗。该游戏由Winkler-Nowakowski和Quilliot在20世纪80年代独立定义,并且自那时以来一直在深入研究。尽管如此,它的计算复杂性仍然是一个悬而未决的问题。

确定k警察是否可以在无向图上捕获强盗的问题,以及计算可以在给定图上捕获强盗的最小警察数量的问题被证明是NP难的。

以下是一些资源:

答案 1 :(得分:0)

现在我对我的问题有了更清晰的认识。虽然比警察和强盗游戏图形保护游戏更简单,但它仍然是NP难题。

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

  

任务a)查找可能的一组顶点,用于切断任何出口无法到达的嫌疑人。
  任务b)验证警察车是否可以及时覆盖这组顶点。

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

首先我们考虑何时只有一个退出。看看这个简单的地图:

enter image description here

如果被警察阻止,则将False分配给顶点,如果它可以通过,则True。我们知道,如果A & (B | D) & C == True,嫌犯可以逃避。现在我们清楚地看到任务a)等同于着名的NP-complete Boolean satisfiability problem

如果我们有几个出口,只需创建几个布尔表达式并将它们与AND(&)连接起来。

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

所以整个问题都是NP难题。