Python: сохранение ранее посещенных координат двоичного массива для AStar

Я создаю алгоритм A* в python и пытаюсь выяснить, как сохранить местоположения, которые мой алгоритм ранее посещал, в двоичном массиве, таком как приведенный ниже.

nmap = np.array([
    [0,0,0,0],
    [1,1,1,0],
    [0,0,0,0],
    [1,0,1,1],
    [0,0,0,0]
    ])

Единственный способ, которым я могу придумать, - сохранить местоположение ранее посещенных двоичных чисел через координаты. Например,

nmap[0][0]

сохранит первое двоичное число в списке или словаре и, следовательно, не будет пересматриваться. Проблема в том, что я не уверен, как этого добиться. Пожалуйста, имейте в виду, что я хочу сохранить координаты во время работы алгоритма, а не предварительно записывать координаты. Я рассуждаю так: если у меня есть массив с тысячами целых чисел, предварительная запись этого кода может быть довольно громоздкой. Кто-нибудь знает, как я могу это сделать?

2 ответа

Самый очевидный выбор - это Set, Это дает амортизированную производительность поиска O(1). Вы можете добавить посещенные узлы в visitedSet используя add метод, и вы можете проверить, есть ли узел в вашем visitedSet с использованием in оператор:

>>> from sets import Set
>>> visitedSet = Set()
>>> visitedSet.add( (1,2) )
>>> print( (0,0) in visitedSet )
False
>>> print( (1,2) in visitedSet)
True

Для этого вы можете легко сохранить индексы в координатах в списке кортежей:

visited = [(0,0), (2,0)...]
Другие вопросы по тегам