Търсене в лъч (Beam search)
beam_search(Beam,[[Goal|Path]|_],Goal,FinalPath):-
reverse([Goal|Path],FinalPath).
beam_search(Beam,[Path|List],Goal,FinalPath):-
append(List,NewPaths,NewList),
sort(NewList,Goal,SortedList),
trim(Beam,SortedList,TrimedList),
beam_search(Beam,TrimedList,Goal,FinalPath).