Propag(P,tr(B,F1/G,TT),Extr,Tree1,Is_solv,Solve)

suc_list(_,[],[]).

suc_list(G0,[B/C|BB],TT):-

G is G0+C,

h(B,H), % Эвристика h(B)

F is G+H,

Suc_list(G0,BB,TT1),

Insert(l(B,F/G),TT1,TT).

/**************************************************

*Вставка дерева Т в список деревьев ТТ с сохранением *

* упорядоченности по f-оценкам *

***************************************************/

insert(T,TT,[T|TT]):-

F(T,F),

Opt_f(TT,F1),

F=<F1,!.

insert(T,[T1|TT],[T1|TT1]):-

Insert(T,TT,TT1).

/******Проверка принадлежности элемента списку******/

member(X,[X|Q]).

member(X,[H|Q]):-member(X,Q).

/******* Получение f-оценки *********/

f(l(_,F/_),F). % f-оценка листа

f(tr(_,F/_,_),F). % f-оценка дерева

opt_f([T|_],F):- % наилучшая f-оценка для

f(T,F). % списка деревьев

opt_f([],Fmax):- % нет деревьев:

max_f(Fmax). % плохая f-оценка

Min(X,Y,X):-

X=<Y,!.

Min(X,Y,Y).

max_f(9999). % Макимальное значение f-оценки

При определении этих отношений применяется следующее вспомогательное отношение:


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: