Одна часть программы, которую я пишу в Prolog, связана с поиском всех возможных вариантов пути от исходного местоположения до конечного местоположения.Prolog - поиск всех вариантов пути
Вот то, что я до сих пор:
findAllRoutes(Start, End, Path) :-
findAllRoutes(Start, _, End, Path),
print('Successful route: '), print(Route).
findAllRoutes(End, _, End, [End]). %route was successfully finished
findAllRoutes(Start, Temp, End, [Start|Rest_of_List]) :-
path(Start, Temp),
findAllRoutes(Temp, _, End, Rest).
Вот данные, которые должны быть прочитаны в:
%path(Start, End).
path(1, 4). %find all the possible paths from location 1 to location 4.
%paths_in_place[[Start, End, Distance]].
paths_in_place[[1, 2, 250], [2, 4, 250], [1, 3, 400], [3, 4, 300]].
Мой вопрос, является ли это точный способ перебрать paths_in_place
в то же время сохранить порядок точек, достигнутых на пути от исходного местоположения до конечного местоположения?
Кроме того, что происходит с Distance
, когда findAllRoutes
называется без упоминания поля Distance
? Является ли законным в Prolog передавать параметры Start, End, Route
, хотя в paths_in_place
поля Start, End, Distance
?
Любая помощь очень ценится. Дайте мне знать, если мне нужно что-то разъяснить.