Algorithm 确定用户在地图上可以到达的点

Algorithm 确定用户在地图上可以到达的点,algorithm,map,points,Algorithm,Map,Points,如果我有这样定义的PHP映射 $map = array( '0' => array('1','2','3','4'), '1' => array('0','5'), '2' => array('0','6'), '3' => array('0','7'), '4' => array('0','8'), '5' => array('1','9','10'), '6' => array('2','10'

如果我有这样定义的PHP映射

$map = array(
    '0' => array('1','2','3','4'),
    '1' => array('0','5'),
    '2' => array('0','6'),
    '3' => array('0','7'),
    '4' => array('0','8'),
    '5' => array('1','9','10'),
    '6' => array('2','10','11'),
    '7' => array('3','11','12'),
    '8' => array('4','12','9'),
    '9' => array('8','5'),
    '10' => array('5','6'),
    '11' => array('6','7'),
    '12' => array('7','8'),
);
看起来是这样的:

9-------5-------10
|       |       |
|       1       |
|       |       |
8---4---0---2---6
|       |       |
|       3       |
|       |       |
12------8-------11
现在,假设我在位置1,我可以移动4个(确切地说是4个)位置,我如何处理用户可以移动到的位置?

我将执行以下操作(伪代码):

对于每个迭代,
reachable
包含可能的位置,
newreachable
获取可以移动到的每个位置。

这听起来像BFS(广度优先搜索)。
reachable={1}
for i=0 to 4 (exclusive)
  newreachable={}
  for elem in reachable
    add map[elem] to newreachable
  reachable=newreachable