Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Презентации 2часть / Лекция_19_20_Дерево_решений.ppt
Скачиваний:
33
Добавлен:
11.05.2015
Размер:
244.22 Кб
Скачать

Пояснения к методу

В процедуре Vbr(i,wt,oct) для более компактной

реализации суммирования веса и стоимости введены

дополнительно два формальных параметра – wt – суммарный

вес текущей выборки и oct

общая ее стоимость.

 

n

 

 

oct ci

 

 

Вначале

 

, т.е. максимальная стоимость

 

i 1

 

всех элементов.

Затем при движении вдоль выбираемого пути, по мере не включения элементов из oct вычитается их стоимость.

Таким образом oct в каждом узле имеет смысл стоимости, которую еще можно достичь, двигаясь от данного узла до листа.

02.07.19

31

Критерием

<приемлемо включение i-го элемента> является тот факт, что он подходит по весовым ограничениям, т.е:

tw+a[i].w<=Wmax.

Если элемент не подходит по этому критерию, то попытки добавить еще один элемент в текущую выборку можно

прекратить

02.07.19

32

Критерием

<приемлемости, не включения>

т.е. возможности продолжения построения текущей выборки без

данного элемента, будет то, что после данного исключения общая стоимость текущей выборки oct будет не меньше полученной до этого стоимости Cmax оптимальной выборки находящейся в Sopt:

oct-a[i].c>Cmax.

Ведь если выполняется это неравенство, то продолжение поиска, хотя он и может дать некоторое решение, не приведет к более оптимальному решению, чем то, что уже было достигнуто. Следовательно, дальнейший поиск на текущем пути бесполезен.

02.07.19

33

Вес

1

2

3 4 Wmax=5

Oct=10

Пример

Цена

2

1

4 3

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

+

 

 

 

 

 

 

 

 

 

+ 2

 

 

 

 

 

2

 

 

 

3

3

 

3

+

 

 

3

 

 

 

 

 

 

 

 

 

+

+

 

+

4

 

+

4

 

4

4

4

4

 

4

 

4

+

+ – + –

+ – +

 

+

+

+

 

 

 

 

C=3

C=6

 

 

 

 

 

 

 

 

 

 

w=3

w=4

 

 

 

 

 

 

 

 

 

 

1+2

1+3

 

 

 

 

 

 

 

 

02.07.19

34

Эвристические методы

Мы уже видели, что для программирования поиска в дереве решений рекурсивные процедуры оказываются довольно эффективным средством.

Если, однако, дерево очень большое, например, если в задаче оптимального выбора N=100 дерево содержит >1020 узлов, то даже современный компьютер методом ветвей и границ будет решать эту задачу >много лет.

Для огромных деревьев остается единственный способ – использовать эвристический метод.

Найденный эвристическим методом вариант может оказаться не наилучшим из возможных, но зачастую близким к нему. Эвристические методы позволяют исследовать практически любое дерево.

02.07.19

35

Метод максимальной стоимости

При каждом включении нового элемента в выборку выбирается элемент, имеющий максимальную цену, до тех пор, пока суммарный вес <Wmax.

Решается задача очень просто, без всяких рекурсий особенно если массив элементов вначале отсортировать по стоимости c.

02.07.19

36

 

Программа Метода максимальной стоимости

Procedure VbrMW(a:mas; wmax:extended;n:word;

var S:Tset;var wt,ct:extended);

Var mc:extended; i:word;

Function Imax():word; // № элем. с макс. ст.

Begin

// не вошедшего в S

mc:=0;

for

i:=1 to n do

 

if not(i in S) and (a[i].c>mc) then

begin mc:=a[i].c; Imax:=i end;

end; //Imin

Begin

S:=[]; i:=Imax; wt:=0; ct:=0; a[n+1].w:=wmax;

while wt+a[i].w<=wmax do

begin Include(S,i);

wt:=wt+a[i].w; ct:=ct+a[i].c;

i:=Imax;

end;

end;02.07.19

37

Метод наименьшего веса:

Эта стратегия в некотором смысле противоположна предыдущей

На каждом шаге выбирается элемент с минимальным весом.

В этом случае мы сформируем выборку с максимальным количеством элементов.

02.07.19

38

 

Программа Метода наименьшего веса

Procedure VbrMW(a:mas; wmax:extended;n:word;

var S:Tset;var wt,ct:extended);

Var mw:extended; i,k:word;

Function Imin():word; // № элем. с мин. весом

Begin

 

//не вошедших в S

mw:=Wmax;

 

for

i:=1 to n do

if

not(i

in S) and (a[i].w<mw) then

 

begin

mw:=a[i].w; Imin:=i end;

end; //Imin

 

Begin

S:=[]; i:=Imin; wt:=0; ct:=0; k:=1;

while (k<=n) and (wt+a[i].w<=wmax) do

begin k:=k+1; Include(S,i);

wt:=wt+a[i].w; ct:=ct+a[i].c;

i:=Imin;

end;

end;

02.07.19

39

a[i].c
a[i].w

Метод сбалансированной стоимости:

Эта эвристика состоит в том, что при включении очередного элемента в выборку сравнивается как стоимость так и вес, а именно, выбирается элемент с самым большим отношением стоимости к весу.

max

02.07.19

40