Търсене в ширина (Breadth-first)
breadth_first([[Goal|Path]|_],Goal, FinalPath):-
reverse([Goal|Path],FinalPath).
breadth_first([Path|Queue],Goal,FinalPath) :-
append(Queue,NewPaths,NewQueue),
breadth_first(NewQueue,Goal,FinalPath).
extend([Node|Path],NewPaths) :-
findall([NewNode,Node|Path],
not member(NewNode,[Node|Path])),