глубинный поисковый питон - PullRequest
0 голосов
/ 28 октября 2019

проверка элемента в графе с использованием с использованием поиска в глубину. Почему всегда возвращать «True»?

graph1 = {1: [2, 7, 8],
          2: [3, 6],
          3: [4, 5],
          4: [],
          5: [],
          6: [],
          7: [],
          8: [9, 12],
          9: [10],
         10: [],
         11: [],
         12: []}
element = int(input("Введите значение "))


def search(graph, node):
    if node == element:
        return True
    else:
        for n in graph[node]:
            search(graph, n)
    return False


print(search(graph1, element))

Ответы [ 2 ]

1 голос
/ 28 октября 2019
element = int(input("Введите значение "))

Здесь вы присваиваете элементу значение, которое хотите найти, с помощью параметра «глубина вначале».

Вы вызываете функцию поиска следующим образом:

print(search(graph1, element))

И в функции,вы начинаете с:

def search(graph, node):
    if node == **element**:
    ...

element и node - это одни и те же значения, поэтому при сравнении они всегда возвращают true.

1 голос
/ 28 октября 2019

Это потому, что, как только при входе в функцию, она проверяет значение node и element, и поскольку вы вызвали функцию, используя element в качестве значения параметра для node, это условие всегда будетправда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...