На данный момент лучший способ решить мою проблему был найден в этом сообщении: Получить кратчайший путь к ячейке в массиве 2d python
Вот способ, который я использовал данный код. Работает отлично:
import collections
start = (2, 2)
end = (6, 2)
grid = [(2, 2), (4, 2), (5, 2), (2, 3), (4, 3), (2, 4), (3, 4), (4, 4), (2, 5), (4, 5), (5, 5), (6, 2)]
queue = collections.deque([[start]])
seen = set(start)
while queue:
path = queue.popleft()
(x, y) = path[-1]
if (x, y) == end:
return path
for x2, y2 in ((x+1, y), (x-1, y), (x, y+1), (x, y-1)):
if (x2, y2) not in seen and (x2, y2) in grid:
queue.append(path + [(x2, y2)])
seen.add((x2, y2))
print(path)
# path is [(2, 2), (2, 3), (2, 4), (3, 4), (4, 4), (4, 3), (4, 2), (5, 2), (6, 2)]