PYTHON DFS Бесконечный цикл while

#python #python-3.x #infinite-loop #depth-first-search

#python #python-3.x #бесконечный цикл #поиск в глубину

Вопрос:

Я пытаюсь реализовать dfs в матрице, но внутри моего цикла while в случаях, когда цель недостижима, цикл никогда не существует. Есть идеи, как с этим справиться? Некоторые указатели для кода: RowCol и RowNum имеют индексы достижимых соседей (т.е. Вправо, вниз, по правой диагонали вниз) Я добавляю это к индексам текущего узла, чтобы получить индексы соседей. Если он не посещен или является препятствием (равным 1), добавьте его в стек и повторите.

     while stack:

    curr = stack.get()  # Dequeue the front cell
    path.append(curr.pt)
    # If we have reached the destination cell,
    # we are done
    pt = curr.pt
    if pt == goal:
        print("Sequence  : ")
        print(path)
        print("Path : ")
        print(curr.path " to " str(pt))
        return curr.dist

    # Otherwise enqueue its adjacent cells
    for i in range(3):
        if i == 0 or i == 1:
            cost = 2
        elif i == 2:
            cost = 3
        row = pt[0]   rowNum[i]
        col = pt[1]   colNum[i]

        # if adjacent cell is valid, has path
        # and not visited yet, enqueue it.
        if isValid(row, col):
            if matrix[row][col] == "0" and not visited[row][col]:
                visited[row][col] = True
                Adjcell = queueNode([row, col], curr.dist   cost,curr.path " to " str(curr.pt))
                stack.put(Adjcell)

# Return -1 if destination cannot be reached
print(matrix[start[0]][start[1]])
print(matrix[goal[0]][goal[1]])
print("Can't reach goal")
return -1
  

Комментарии:

1. Покажите свой код для ответа.

2. Что должен делать ваш код, когда вы дойдете до конца строки? И да, мы не можем помочь вам с кодом, который вы не показываете.

3. Извините, чувак, только что отредактировал

Ответ №1:

Если вы хотите использовать цикл

 while True :
  

Комментарии:

1. братан, я пытаюсь выйти из цикла, он уже работает бесконечно