Метод розгалужень і меж. Евристичні алгоритми. Застосування принципу оптимальності
Отже, алгоритм розв'язання багатьох задач за методом розгалужень і меж має таку загальну структуру:
Для кожного можливого a1 занести до черги частковий розв'язок
Обчислити нижню оцінку E вартості його нащадків, що є
повними розв'язками;
Cmin:= ;
while (черга не порожня) and (її перший елемент має оцінку E
do
begin
Вилучити з черги її перший елемент Node;
if синами вузла Node є листки then
Обчислити вартість синів Node та за необхідності
запам'ятати нову поточну мінімальну вартість Cmin
elseОбчислити оцінку вартості синів вузла Node та
додати до черги лише тих із них, чия оцінка не більше Cmin
end.
2. Евристичні алгоритми
Повернемося до задачі про розподіл завдань по трьох процесорах і спробуємо розв'язати її у зовсім інший спосіб.
Нехай ми маємо неповний розподіл (S1, S2, S3) усіх завдань, крім останнього. У цьому випадку найкраще розподілити останнє завдання, додавши його час до найменшого з S1, S2, S3, тобто передати його до найменш завантаженого процесора.
Тепер правилом "передати чергове завдання до найменш завантаженого процесора" будемо керуватися при розподілі кожного з завдань. Застосування цього правила виражається алгоритмом, за яким завдання розподіляються без будь-якого перебирання варіантів:
розподілити перші три завдання по одному на процесор;
for i:=4 to n do
begin
обчислити k – номер найменшого з S[1], S[2], S[3];