У меня есть вопрос, который я хотел бы задать вам о фрагменте кода:
insert_pq(State, [], [State]) :- !.
insert_pq(State, [H|Tail], [State, H|Tail]) :-
precedes(State, H).
insert_pq(State, [H|T], [H|Tnew]) :-
insert_pq(State, T, Tnew).
precedes(X, Y) :- X < Y. % < needs to be defined depending on problem
функция довольно четко добавляет элемент в приоритетную очередь. У меня проблема с оператором обрезания в первой строке. Предположительно, всякий раз, когда вызов достигает этой строки кода, это единственно возможное решение для запроса, и вызовы функций просто раскручиваются (или это заканчивается?), Не будет необходимости отслеживать и искать другое решение для запрос.
Так что это отсечение здесь излишне. Я прав в своем выводе?