Метод розгалужень і меж. Евристичні алгоритми. Застосування принципу оптимальності, Детальна інформація
Метод розгалужень і меж. Евристичні алгоритми. Застосування принципу оптимальності
Існує чимало задач, в яких розв'язок-послідовність будується шляхом "нарощування" часткових розв'язків новими компонентами ai. Умова (19.1) дозволяє відкидати ті часткові розв'язки та всіх їх нащадків, якщо їх вартість не може бути меншою вартості Cmin уже побудованого повного розв'язку. Таким чином, Cmin виступає верхньою межею для вартості розв'язків, які є сенс будувати. Але, як правило, обчислити вартість повного розв'язку можна лише після його побудови. Для запобігання побудови всіх повних розв'язків треба мати можливість оцінювати знизу їх вартість за вартістю побудованих часткових. Чим точнішою буде така оцінка, тим ефективнішим буде скорочення перебору.
Отже, алгоритм розв'язання багатьох задач за методом розгалужень і меж має таку загальну структуру:
Для кожного можливого a1 занести до черги частковий розв'язок
;
Обчислити нижню оцінку E вартості його нащадків, що є
повними розв'язками;
Cmin:=\xF0A5 ;
while (черга не порожня) and (її перший елемент має оцінку E
do
begin
Вилучити з черги її перший елемент Node;
if синами вузла Node є листки then
Обчислити вартість синів Node та за необхідності
запам'ятати нову поточну мінімальну вартість Cmin
else
Обчислити оцінку вартості синів вузла Node та
додати до черги лише тих із них, чия оцінка не більше Cmin
end.
2. Евристичні алгоритми
Повернемося до задачі про розподіл завдань по трьох процесорах і спробуємо розв'язати її у зовсім інший спосіб.
,
0
–
\x02DC
a
\x00F0
\x161C\xC268\x123D\x3500\x8108\x4A43$\x085C\x6181\x244A\x6D00\x0948\x7304\x0948\x3B04краще розподілити останнє завдання, додавши його час до найменшого з S1, S2, S3, тобто передати його до найменш завантаженого процесора.
Тепер правилом "передати чергове завдання до найменш завантаженого процесора" будемо керуватися при розподілі кожного з завдань. Застосування цього правила виражається алгоритмом, за яким завдання розподіляються без будь-якого перебирання варіантів:
розподілити перші три завдання по одному на процесор;
for i:=4 to n do
Отже, алгоритм розв'язання багатьох задач за методом розгалужень і меж має таку загальну структуру:
Для кожного можливого a1 занести до черги частковий розв'язок
Обчислити нижню оцінку E вартості його нащадків, що є
повними розв'язками;
Cmin:=\xF0A5 ;
while (черга не порожня) and (її перший елемент має оцінку E
do
begin
Вилучити з черги її перший елемент Node;
if синами вузла Node є листки then
Обчислити вартість синів Node та за необхідності
запам'ятати нову поточну мінімальну вартість Cmin
else
Обчислити оцінку вартості синів вузла Node та
додати до черги лише тих із них, чия оцінка не більше Cmin
end.
2. Евристичні алгоритми
Повернемося до задачі про розподіл завдань по трьох процесорах і спробуємо розв'язати її у зовсім інший спосіб.
,
0
–
\x02DC
a
\x00F0
\x161C\xC268\x123D\x3500\x8108\x4A43$\x085C\x6181\x244A\x6D00\x0948\x7304\x0948\x3B04краще розподілити останнє завдання, додавши його час до найменшого з S1, S2, S3, тобто передати його до найменш завантаженого процесора.
Тепер правилом "передати чергове завдання до найменш завантаженого процесора" будемо керуватися при розподілі кожного з завдань. Застосування цього правила виражається алгоритмом, за яким завдання розподіляються без будь-якого перебирання варіантів:
розподілити перші три завдання по одному на процесор;
for i:=4 to n do
The online video editor trusted by teams to make professional video in
minutes
© Referats, Inc · All rights reserved 2021