コード スニペットについてお聞きしたいことがあります。
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
この関数は、アイテムをプライオリティ キューに明確に追加します。私が抱えている問題は、最初の行のカットオフ演算子です。おそらく、呼び出しがこのコード行に到達するたびに、これがクエリに対する唯一の可能な解決策であり、関数呼び出しは単純に巻き戻されます (または巻き上げられますか?)。後戻りして別の解決策を検索する必要はありません。クエリ。
したがって、ここでのこのカットオフは不要です。私の推論は正しいですか?