Метод на най-доброто спускане (Best-first search)
sort(List,Goal,[MinPath|SortedList]):-
min(List,Goal,MinPath,NewList),
sort(NewList,Goal, SortedList).
min([Path1|List],Goal,Path2,[Path1|NewList]):-
min(List,Goal,Path2,NewList),
min([Path|List],Goal,Path,List).