Вопрос из кода в эссе по теории графов Python - PullRequest
2 голосов
/ 18 ноября 2010

Код для определения пути между двумя узлами для ориентированных графов. Это код:

def find_path(graph, start, end, path=[]):
        path = path + [start]
        if start == end:
            return path
        if not graph.has_key(start):
            return None
        for node in graph[start]:
            if node not in path:
                newpath = find_path(graph, node, end, path)
                if newpath: return newpath
        return None

Будучи новичком в python, у меня два маленьких и тривиальных вопроса. Надеюсь, ты не возражаешь против этого.

Q1. Что означает if newpath: во второй последней строке кода?

Q2. Дает ли этот код все возможные пути в ориентированном графе?

Спасибо.

1 Ответ

3 голосов
/ 18 ноября 2010

Q1: проверяет, действительно ли вызов find_path что-то возвращает. См. Документацию по языку, чтобы узнать, что интерпретируется как истина, а что как ложь, если тип термина не является логическим для начала. (В этом случае None оценивается как false).

Q2: Нет: эта функция дает ровно один путь от начала до конца.

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