Professional Documents
Culture Documents
lr1 Ukr
lr1 Ukr
Звіт
Перевірив Сопов.О.О
(прізвище, ім'я, по батькові)
Київ 2021
ЗМІСТ
2 ЗАВДАННЯ...............................................................................................4
3 ВИКОНАННЯ...........................................................................................8
ВИСНОВОК...................................................................................................11
КРИТЕРІЇ ОЦІНЮВАННЯ........................................................................12
2
1 МЕТА ЛАБОРАТОРНОЇ РОБОТИ
Мета роботи – розглянути та дослідити алгоритми неінформативного,
інформативного та локального пошуку. Провести порівняльний аналіз
ефективності використання алгоритмів.
3
2 ЗАВДАННЯ
Записати алгоритм розв’язання задачі у вигляді псевдокоду, відповідно до
варіанту (таблиця 2.1).
Реалізувати програму, яка розв’язує поставлену задачу згідно варіанту
(таблиця 2.1) за допомогою алгоритму неінформативного пошуку АНП,
алгоритму інформативного пошуку АІП, що використовує задану евристичну
функцію Func, або алгоритму локального пошуку АЛП та бектрекінгу, що
використовує задану евристичну функцію Func.
Програму реалізувати на довільній мові програмування.
Увага! Алгоритм неінформативного пошуку АНП, реалізовується за
принципом «AS IS», тобто так, як є, без додаткових модифікацій (таких як
перевірка циклів, наприклад).
Провести серію експериментів для вивчення ефективності роботи
алгоритмів. Кожний експеримент повинен відрізнятись початковим станом.
Серія повинна містити не менше 20 експериментів для кожного алгоритму. За
проведеними серіями необхідно визначити:
середню кількість етапів (кроків), які знадобилось для досягнення
розв’язку (ітерації);
середню кількість випадків, коли алгоритм потрапляв в глухий кут
(не міг знайти оптимальний розв’язок) – якщо таке можливе;
середню кількість згенерованих станів під час пошуку;
середню кількість станів, що зберігаються в пам’яті під час роботи
програми.
Передбачити можливість обмеження виконання програми за часом (30
хвилин) та використання пам’яті (512 Мб)
Використані позначення:
8-ферзів – Задача про вісім ферзів полягає в такому розміщенні
восьми ферзів на шахівниці, що жодна з них не ставить під удар один одного.
Тобто, вони не повинні стояти в одній вертикалі, горизонталі чи діагоналі.
4
8-puzzle – гра, що складається з 8 однакових квадратних пластинок
з нанесеними числами від 1 до 8. Пластинки поміщаються в квадратну коробку,
довжина сторони якої в три рази більша довжини сторони пластинок,
відповідно в коробці залишається незаповненим одне квадратне поле. Мета гри
– переміщаючи пластинки по коробці досягти впорядковування їх по номерах,
бажано зробивши якомога менше переміщень.
LDFS – Пошук вглиб з обмеженням глибини.
BFS – Пошук вшир.
IDS – Пошук вглиб з ітеративним заглибленням.
A* – Пошук А*.
RBFS – Рекурсивний пошук за першим найкращим співпадінням.
F1 – кількість пар ферзів, які б’ють один одного з урахуванням
видимості (ферзь А може стояти на одній лінії з ферзем В, проте між ними
стоїть ферзь С; тому А не б’є В).
F2 – кількість пар ферзів, які б’ють один одного без урахування
видимості.
H1 – кількість фішок, які не стоять на своїх місцях.
H2 – Манхетенська відстань.
COLOR – Задача розфарбування карти самостійно обраної країни,
не менше 20 регіонів (областей). Необхідно розфарбувати карту не більше ніж у
4 різні кольори. Мається на увазі приписування кожному регіону власного
кольору так, щоб кольори сусідніх регіонів відрізнялись. Використовувати
евристичну функцію, яка повертає кількість пар суміжних вузлів, що мають
однаковий колір (тобто кількість конфліктів). Реалізувати алгоритм пошуку із
поверненнями (backtracking) для розв’язання поставленої задачі. Для
підвищення швидкодії роботи алгоритму використати евристичну функцію, а
початковим станом вважати випадкову вершину.
5
HILL – Пошук зі сходженням на вершину з використанням із
використанням руху вбік (на 100 кроків) та випадковим перезапуском (кількість
необхідних разів запуску визначити самостійно).
ANNEAL – Локальний пошук із симуляцією відпалу. Робоча
характеристика – залежність температури Т від часу роботи алгоритму t.
Можна розглядати лінійну залежність: T = 1000 - k∙t, де k – змінний коефіцієнт.
BEAM – Локальний променевий пошук. Робоча характеристика –
кількість променів k. Експерименти проводи із кількістю променів від 2 до 21.
MRV – евристика мінімальної кількості значень;
DGR – ступенева евристика.
6
1 8-puzzle LDFS A* H1
3
1 8-puzzle LDFS A* H2
4
1 8-puzzle LDFS RBFS H1
5
1 8-puzzle LDFS RBFS H2
6
1 8-puzzle BFS A* H1
7
1 8-puzzle BFS A* H2
8
1 8-puzzle BFS RBFS H1
9
2 8-puzzle BFS RBFS H2
0
2 8-puzzle IDS A* H1
1
2 8-puzzle IDS A* H2
2
2 8-puzzle IDS RBFS H1
3
2 8-puzzle IDS RBFS H2
4
2 COLOR HILL MRV
5
2 COLOR ANNEAL MRV
6
7
2 COLOR BEAM MRV
7
2 COLOR HILL DGR
8
2 COLOR ANNEAL DGR
9
3 COLOR BEAM DGR
0
3 COLOR HILL MRV
1
3 COLOR ANNEAL MRV
2
3 COLOR BEAM MRV
3
3 COLOR HILL DGR
4
3 COLOR ANNEAL DGR
5
3 COLOR BEAM DGR
6
8
3 ВИКОНАННЯ
3.1 Псевдокод алгоритмів
3.1.2 Псевдокод A*
program a-star
openlist.enqueue(startknote, 0)
repeat
currentNode := openlist.removeMin()
if currentNode == endknote then
return PathFound
expandNode(currentNode)
closedlist.add(currentNode)
until openlist.isEmpty()
return NoPathFound
9
end
function expandNode(currentNode)
foreach successor of currentNode
if closedlist.contains(successor) then
continue
tentative_g = g(currentNode) + c(currentNode, successor)
if openlist.contains(successor) and tentative_g >= g[successor] then
continue
successor.predecessor := currentNode
g[successor] = tentative_g
f := tentative_g + h(successor)
if openlist.contains(successor) then
openlist.decreaseKey(successor, f)
else
openlist.enqueue(successor, f)
end
end
10
Рисунок 3.2 – Алгоритм A*
11
Таблиця 3.1 – Характеристики оцінювання алгоритму
Початкові стани Ітерації К-сть гл. Всього Всього станів
кутів станів у пом’яті
Стан 1 4 0 1496373 124
Стан 2 ----------------- 0 ----------------- 0
Стан 3 ----------------- 0 ----------------- 0
Стан 4 ----------------- 0 ----------------- 0
Стан 5 4 0 1302000 109
Стан 6 ----------------- 0 ----------------- 0
Стан 7 4 0 3320408 76
Стан 8 1 0 28 7
Стан 9 2 0 561 5
Стан 10 ----------------- 0 3193 0
Стан 11 4 0 1838872 72
Стан 12 ----------------- 0 ----------------- -----------------
Стан 13 3 0 7281 129
Стан 14 ----------------- 0 ----------------- -----------------
Стан 15 3 0 10465 142
Стан 16 3 0 10579 128
Стан 17 ----------------- 0 ----------------- -----------------
Стан 18 ----------------- 0 ----------------- -----------------
Стан 19 4 0 457 191
Стан 20 4 0 5856 134
В таблиці 3.2 наведені характеристики оцінювання алгоритму A* задачі 8
Queens для 20 початкових станів.
12
Таблиця 3.3 – Характеристики оцінювання A*
Початкові стани Ітерації К-сть гл. Всього Всього станів
кутів станів у пом’яті
Стан 1 4 0 381 7
Стан 2 5 0 420 10
Стан 3 2 0 109 4
Стан 4 6 0 450 6
Стан 5 1 0 7 7
Стан 6 1 0 50 6
Стан 7 1 0 26 2
Стан 8 8 0 9000 40
Стан 9 5 0 578 23
Стан 10 6 0 5087 149
Стан 11 2 0 203 13
Стан 12 3 0 198 11
Стан 13 3 0 300 1
Стан 14 4 0 393 15
Стан 15 7 0 5795 108
Стан 16 1 0 57 2
Стан 17 9 0 7357 43
Стан 18 6 0 1574 33
Стан 19 4 0 456 22
Стан 20 3 0 465 9
Посилання на github:
13
ВИСНОВОК
При виконанні даної лабораторної роботи ми розглянули та дослідили
алгоритми неінформативного, інформативного та локального пошуку. Провели
порівняльний аналіз ефективності використання алгоритмів.
14
КРИТЕРІЇ ОЦІНЮВАННЯ
За умови здачі лабораторної роботи до 25.09.2021 включно максимальний
бал дорівнює – 5. Після 25.09.2021 максимальний бал дорівнює – 1.
Критерії оцінювання у відсотках від максимального балу:
псевдокод алгоритму – 10%;
програмна реалізація алгоритму – 60%;
дослідження алгоритмів – 25%;
висновок – 5%.
15