六角网格,以n步找到所有可能的路径

时间:2016-10-26 10:33:45

标签: python python-3.x

我遇到了同样的问题,例如this问题。

可悲的是,我需要在六角网格中的两个字段之间的所有可能路径,只需n步,但没有循环。现在,如果n_steps比这些字段之间的最短路径大得多,我会有很多循环。

我正在努力寻找一个合适的递归函数,这将帮助我写下列表中的路径。

我的功能如下:

def find_paths_from_to_with_length(self, pos_1,pos_2,n_steps):
    coordinate_1= self.find_coordinates(pos_1)
    neighbour_pos_1= self.coordinates[coordinate_1].neighbour_list
    if n_steps == 1:
        if pos_2 in neighbour_pos_1:
            return [[(pos_1,pos_2)]]
        return []
    if pos_1 == pos_2:
        return []

    all_paths = []

    for node in neighbour_pos_1:
        neighbor_all_paths = self.find_paths_from_to_with_length(node,pos_2,n_steps-1)
        for path in neighbor_all_paths:
                print("PATH: ",path)
                all_paths.append([(pos_1,node)] + path)
    return all_paths

任何人都有解决此问题的方法吗?

0 个答案:

没有答案