
- •Тема 2 Стратегии перебора
- •Задача перебора вариантов и модель дерева решений
- •Игра в крестики-нолики
- •Описание модели
- •Задача о почтальоне
- •Формализация задачи
- •Рекурсивная программа полного перебора
- •Пример (сколькими способами можно укомплектовать рюкзак тремя вещами)
- •Задача оптимального выбора (о рюкзаке)
- •Примеры задач
- •Дерево решений этой задачи для а1, а2, а3, а4
- •Метод полного перебора двоичного дерева
- •Описание типов и переменных
- •Вариант 1 программы полного перебора
- •Вызов подпрограммы
- •Вариант 2 программы полного перебора
- •Вариант 3 программы частичного перебора
- •Проект программы
- •Метод ветвей и границ
- •Рассмотрим преобразование
- •Программа полного перебора 4 без внутреннего цикла
- •Введем остаточную стоимость oct – как максимальную стоимость, которую можно достичь продвигаясь по
- •Упростим программу полного перебора за счет введения двух дополнительных формальных параметров
- •Базовая программа реализации метода ветвей и границ
- •Решение задачи оптимального выбора методом VG
- •Вызов подпрограммы
- •Пояснения к методу
- ••Критерием
- •Критерием
- •Эвристические методы
- •Метод максимальной стоимости
- •Метод наименьшего веса:
- •Метод сбалансированной стоимости:
- •Метод случайного поиска
- •Сравнение методов
- •Контрольные вопросы
- •Контрольные задачи
- •Контрольные задачи
- •Контрольные задачи
- •Конец темы 2
Тема 2 Стратегии перебора
вариантов
Задача перебора вариантов и модель дерева решений
Задача оптимального выбора (задача о рюкзаке)
Метод полного перебора двоичного дерева
Метод ветвей и границ
Эвристические методы
02.07.19 |
1 |
Задача перебора вариантов и модель дерева решений
Решение многих прикладных задач (особенно задач искусственного интеллекта) сводится к перебору большого числа возможных вариантов с целью нахождения наиболее приемлемого из них по заданному критерию.
В этом случае для наглядной интерпретации перебора вариантов удобно использовать модель в виде дерева решений.
Например, для задачи моделирования игры в крестики-нолики всевозможные ситуации можно представить в виде следующего дерева решений
02.07.19 |
2 |

Игра в крестики-нолики
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Корень (начало игры) |
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
О |
|
|
|
|
|
|
||||||||||
|
Первый ход |
|
|
. . . |
|
|
|
|
|
|
|
|
|
. . . |
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
О |
|
|
|
|
О |
|
|
|
|
О |
|
|
|
О |
|
|
|
|
|
О |
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
О |
О |
Второй ход |
|
|
|
|
|
|
О |
О |
О |
О |
лист |
|
О |
(конец |
|
|
|
|
|||
О |
|
|
О |
|
игры) |
|
|
|
|
|
|||
|
|
|
|
|
|
02.07.19 |
3 |
Описание модели
Каждый узел в дереве интерпретируется как результат выполнения некоторой последовательности шагов решения задачи перебора вариантов.
Ветвь в дереве при этом соответствует принятию очередного решения (шагу), которое ведет к более полному решению. В игровых деревьях, например, каждая ветвь соответствует ходу игрока.
Листы (узлы у которых нет выходящих ветвей) представляют собой окончательные варианты решений.
Цель состоит в том, чтобы из всех возможных вариантов решений найти наилучший по заданному критерию путь от корня до листа при выполнении некоторых условий-ограничений.
Форма дерева, критерий оптимальности и условия-ограничения
определяются конкретной задачей. |
4 |
02.07.19 |

Задача о почтальоне |
Дерево решений |
1 2
2
4
3 |
3 |
|
4
1
4
3
1
1
3 4
2 4 2 3
4 2 3 2
1 1 1 1
Почтальон выходит из пункта 1 Он должен обойти все пункты и возвратиться обратно
02.07.19 |
5 |

Формализация задачи
•Предположим, что на каждом i-том ходу возможен выбор из ki вариантов (ai1..aiki ) хода. Т.е. задана матрица возможных кандидатов на каждом ходу, например такая:
начало
a |
a |
|
|
|
|
|
11 |
12 |
|
|
|
|
|
|
a22 |
a23 |
|
|
|
|
A a21 |
a |
|
i-й ход (i=1..n) |
|||
a |
a |
a |
33 |
34 |
|
|
31 |
32 |
|
|
|
||
a41 |
a42 |
a43 |
|
|
|
J – вариант хода
Один из путей S=(a11, a22, a34, a42) Целевая функция
02.07.19
F(S)= a11+ a22+a34+a42
Попытайтесь
запрограммировать перебор вариантов с помощью операторов цикла и найти максимальный
6
Рекурсивная программа полного перебора
• Var S:array[1..n]of тип <кандидатов a11..ankn>;
•n,j:word;
•Procedure Vbr(i:word);
• |
Begin |
j:=0; |
• |
Repeat |
j:=j+1; |
•//выбор и запоминание j-го кандидата на i-том ходу
• |
S[i]:= a[i,j]; |
|
• |
if i<n then |
Vbr(i+1) |
• |
else begin |
|
• |
{лист решения сформирован в S[1..n], здесь возможна проверка |
|
|
приемлемости и оптимальности, печать или отображение |
|
|
варианта }; |
end; |
•until j=ki ;
•// список кандидатов на i – м ходу исчерпан; end;//Vbr
•Обращение к процедуре:
• |
Read(n); |
For i:=1 to n do S[i]:=0; |
|
|
• |
02.07.19 |
Vbr(1); |
7 |
|
|
|
|
Пример (сколькими способами можно укомплектовать рюкзак тремя вещами)
Матрица имеет двух |
Программа выдаст следующие 8 |
|
||||||
кандидатов на каждом |
вариантов массива S |
|
|
|||||
шагу |
|
|
|
1 |
2 |
3 |
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
1 |
0 |
|
|
1 |
2 |
0 |
|
|
|
|
|
0 |
|
|
|
||
|
|
|
1 |
3 |
|
|||
|
0 |
|
|
|
|
|
|
|
A 2 |
|
|
|
0 |
0 |
|
|
|
|
|
|
|
1 |
|
|
||
3 |
0 |
|
|
0 |
2 |
3 |
|
|
|
|
|
|
0 |
2 |
0 |
|
|
На основе такого алгоритма создаются |
|
|||||||
|
0 |
3 |
|
|
||||
программы игры в шахматы, карты, а также |
0 |
|
|
|||||
|
|
|
|
|
||||
решается множество задач искусственного |
|
0 |
0 |
|
|
|||
интеллекта |
|
|
|
8 |
||||
02.07.19 |
|
|
|
0 |
|
• |
Procedure Vbr(i:word); |
|
• |
Begin |
j:=0; |
• |
Repeat |
j:=j+1; |
• |
S[i]:= a[i,j]; |
•if i<n
• |
then Vbr(i+1) |
•else
•begin {печать S[1..n],} end;
•until j=2 ;
•end;
•n=3; Vbr(1);
02.07.19
i=1 j=1 s[1]=a[11]
i=2 j=1 s[2]= a[21] i=3 j=1 s[3]= a[31]
Печать (1,2,3)
i=3 |
j=2 |
s[3]= a[32] |
|
|
Печать |
(1,2,0) |
|
|
|
i=2 |
j=2 |
s[2]= a[22] |
|
|
i=3 |
j=1 |
s[3]= a[31] |
|
|
Печать |
(1,0,3) |
|
|
|
i=3 |
j=2 |
s[3]= a[32] |
|
|
Печать |
(1,0,0) |
|
|
|
i=1 j=2 s[1]=a[12] |
|
|
||
i=2 j=1 s[2]=a[21] |
|
|
||
i=3 j=1 s[3]=a[31] |
|
|
||
Печать |
(0,2,3) |
и т.д. |
9 |
Задача оптимального выбора (о рюкзаке)
Имеется n элементов a1...an
Каждый элемент ai характеризуется определенными
свойствами, например вес wi и цена ci
(это могут быть размер и время, объем инвестиций и ожидаемый доход, и т.д.).
Требуется найти оптимальную выборку ai1 ...aik
k n
т.е. такую для которой, при заданном ограничении на
суммарный вес достигается максимальная стоимость . |
||
k |
|
k |
wij |
Wmax |
max ci j |
j 1 |
|
j 1 |
02.07.19 |
10 |