Data structures 如何从警察和强盗的问题建立一个图表?

Data structures 如何从警察和强盗的问题建立一个图表?,data-structures,graph,graph-algorithm,path-finding,Data Structures,Graph,Graph Algorithm,Path Finding,这是一个由两部分组成的问题,我对此进行了一些思考 问题陈述: 在一个m乘n的矩形区域中,有一个强盗R和两个警察C1和C2。每个 三个从一开始的某个广场出发,在追逐的开始,R,C1,C2全部 了解彼此的立场 R先移动,然后是C1和C2。它们只能上下左右移动。一些 广场无法进入,因为存在障碍物。如果C1或C2到达一个正方形 那个R是开着的,然后他们抓住了R 为了逃逸,R必须到达网格周长上的正方形X。如果R在被C1或C2捕获之前到达正方形X,则R成功逃脱。否则,R无法逃脱 作为输入,我们提供了:m(行

这是一个由两部分组成的问题,我对此进行了一些思考

问题陈述:

在一个m乘n的矩形区域中,有一个强盗R和两个警察C1和C2。每个 三个从一开始的某个广场出发,在追逐的开始,R,C1,C2全部 了解彼此的立场

R先移动,然后是C1和C2。它们只能上下左右移动。一些 广场无法进入,因为存在障碍物。如果C1或C2到达一个正方形 那个R是开着的,然后他们抓住了R

为了逃逸,R必须到达网格周长上的正方形X。如果R在被C1或C2捕获之前到达正方形X,则R成功逃脱。否则,R无法逃脱

作为输入,我们提供了:m(行数)和n(列数)的值,R、C1、C2的初始坐标,以及不可访问的正方形列表

一) 使用提供的输入,如何使用邻接列表构造图形来解决问题。分析图形创建的运行时

由于网格表示,我实际上在考虑使用邻接矩阵,但要求我们使用和邻接列表。因此,我对在这个问题中什么应该被视为顶点和边感到困惑。我认为网格中的每个正方形都是一个顶点,它的边是所有相邻的正方形,至少是它能到达的,4个正方形是最大值。那么,我的邻接列表是否应该存储所有的m×n对,然后为每一对维护一个邻接的链表,即可以到达的正方形?如果我沿着这条路线走,将会有(m*n)个顶点,然后对于每个顶点,我必须检查哪些方块是可到达的(上、下、左、右),以及该方块是否不可访问,因此我必须扫描作为输入提供的不可访问列表,这需要O(n)个时间。所以我想这会使我在创建图形时的运行时间达到O(m*n)。我能做得更好吗

二) 给出您在第(I)部分中创建的图,描述一个检查R是否可以转义的算法

*假设:R、C1和C2可忽略不计的策略。不管R、C1、C2是以“智能”方式移动还是完全随机移动

因为R在追逐开始之前就声明了它的目的地,所以我认为这只是一个问题,即从R开始的地方到它的目的地广场是否存在一条路径。那么,我可以运行DFS并检查R是否可以到达其目的地吗?但是,我不知道R能够避免C1和C2


非常感谢您的指导。

听起来您非常了解如何构建图形,但最好为每个顶点指定一个数字,而不是维护(m,n)元组

  • 分配一个N*M列表数组。网格上的每个位置(x,y)将对应于该阵列中的插槽x+n*y。该插槽将包含相邻可访问号码的列表,如果有障碍,则为空
  • 现在,在每个位置用空列表初始化数组
  • 对于每个障碍物,将其对应的阵列插槽设置为空
  • 对于栅格位置(x,y),如果它是一个顶点
    (数组[x+n*y]!=null)
    ,则检查它的邻居以填写它的邻接列表。如果
    数组[x+1+n*y]=例如,如果为null,则
    [x+n*y]
    处的列表将包括
    [x+1+n*y]

  • 结果表示非常紧凑,适用于多种用途。因为顶点有一定的羊皮。标签甚至特别指出,不能将其与“深度优先搜索”混淆。唉……你对II的假设是完全错误的。例如,假设除从R到C1的路径(其中C1位于正方形X上)外,所有栅格正方形都是障碍物。那么,即使抢劫犯有一条通往X的路,他也完全不可能逃走。我认为一个合理的假设是,抢劫犯总是尽可能直接地走到目标,因为如果警察能够追上抢劫犯当前的广场,它也可以与抢劫犯同时到达X,所以你可以把问题归结为两条边中哪一条可以先到达X。我认为R要逃逸,需要找到一个X,因为R到路径上任何一点的距离小于c1和c2到同一点的距离。@C要逃逸,R必须落在网格周长上的一个正方形上。那么R应该在周长上寻找它最接近的正方形吗?还是应该探索周界上的所有广场,看看它是否能到达那里?@MichaelHuang R不再宣布它想要到达的广场。相反,只有当R成功地降落在网格外围的一个正方形上时,它才能逃脱。这很有趣。忽略这个假设,你能详细介绍一下路径查找算法吗?(参见我的)如果没有假设,您将使用minimax搜索状态图,其中每个状态有两个警察位置和一个强盗位置。然后你就可以确定,如果警察玩得很好,强盗是否能逃脱。游戏图可能很大,以便于极小极大搜索的方式表示棋盘图非常重要。看见