Упрощенный коммивояжер на Прологе

Я просмотрел похожие вопросы, но не могу найти ничего, имеющего отношение к моей проблеме . Я изо всех сил пытаюсь найти алгоритм или набор «циклов», которые найдут путь от CityA к CityB , используя базу данных

distance(City1,City2,Distance)

фактов. То, что мне удалось сделать до сих пор, находится ниже, но он всегда возвращается в write (X), , а затем завершается последней итерацией, что я и хочу, чтобы она делала, но только до определенной степени. .

Например, я не хочу, чтобы он печатал названия городов, которые находятся в тупике, или использовал последнюю итерацию. Я хочу, чтобы он в основном проложил путь от CityA к CityB , написав названия городов, в которые он идет по пути.

Надеюсь, кто-нибудь мне поможет!

all_possible_paths(CityA, CityB) :-
    write(CityA),
    nl,
    loop_process(CityA, CityB).

loop_process(CityA, CityB) :- 
    CityA == CityB.
loop_process(CityA, CityB) :-
    CityA \== CityB,
    distance(CityA, X, _),
    write(X),
    nl,
    loop_process(X, CityB).
9
задан false 9 December 2012 в 16:36
поделиться