№ 6'2015 ВЕСТНИК МГУП ИМЕНИ ИВАНА ФЕДОРОВА ISSN ON-LINE: 2409-6652 © Московский государственный университет печати имени Ивана Федорова_vestnik.mgup.ru
УДК 004.832.23:004.424.4
АНАЛИЗ АЛГОРИТМОВ ПОИСКА В ПРОСТРАНСТВЕ
СОСТОЯНИЙ
Попов Дмитрий Иванович
заведующий кафедрой информатики и информационных технологий, доктор технических наук, профессор Московский государственный университет печати имени Ивана Федорова 127550 Россия, г. Москва, ул. Прянишникова, д. 2А popov@hi-edu. гы
Виноградов Дмитрий Валерьевич
ассистент кафедры информатики и информационных технологий Московский государственный университет печати имени Ивана Федорова 127550 Россия, г. Москва, ул. Прянишникова, д. 2А winamp24@mail.ru
Аннотация. В работе проводится сравнительный анализ информированных и неинформированных алгоритмов поиска на примере алгоритма поиска в ширину и алгоритма А * соответственно. На основании программной реализации приводятся цифры и примеры.
Ключевые слова: эвристический поиск, поиск в ширину, пространство состояний, комбинаторный взрыв.
Поиск решения в пространстве состояний, как правило, выполняется в задачах искусственного интеллекта или теории игр. В подобных задачах определяется некое множество состояний, а также правила перехода между ними.
Алгоритмы поиска выполняют последовательную проверку состояний в заданном пространстве с целью найти искомое решение. В то же время, они должны быть как можно более эффективными и не приводить к комбинаторному взрыву. В данном случае они делятся на два типа.
Алгоритмы полного перебора (их также называют неинформированными методами поиска), которые последовательно просматривают все состояния заданного пространства до тех пор, пока не будет найдено решение. В качестве примера можно привести алгоритмы поиска в ширину, в глубину и т.д.
Алгоритмы эвристического поиска (или информированные методы) перебирают состояния, основываясь на дополнительной информации. Это позволяет исключать бесперспективные варианты и выбирать наиболее подходящие. Примерами таких алгоритмов могут служить алгоритм жадного поиска, алгоритм лучевого поиска, алгоритм А* и т.д.
Ниже на примере конкретной задачи проводится сравнительный анализ временных затрат на выполнение алгоритма поиска в ширину и алгоритма эвристического поиска.
В качестве задачи была выбрана задача поиска пути шахматного коня из части шахматной доски в другую (рис. 1). Рассматривается поле, состоящее из пхп клеток, где начальное положение коня задано координатами (0, 0), а конечная цель находится в ячейке с координатами (п, п). Представленная программная реализация позволяет динамически
изменять параметр п, определяя, таким образом, размер поля.
В данной статье подробный пример выполнения алгоритмов, и обзор возможного дерева состояний будет приводиться для а равного 6.
Рис. 1. Изображение начального положения шахматного коня и конечной цели на поле при п = 6
Согласно правилам хода, конь может пойти на любое поле доски, если оно расположено на другом конце буквы «Г». Таким образом, конь вначале перемещается на два поля по горизонтали или вертикали, а затем на одну клетку перпендикулярно начальному направлению (рис. 2).
На основании данных правил можно сформулировать массив из 8 возможных смещений коня по горизонтали и вертикали соответственно:
[(1, 2), (2, 1), (-1, 2), (2, -1), (1, -2), (-2, 1), (-1, -2), (-2, -1)]
№ 6'2015 ВЕСТНИК МГУП ИМЕНИ ИВАНА ФЕДОРОВА
© Московский государственный университет печати имени Ивана Федорова
ISSN ON-LINE: 2409-6652 _vestnik.mgup.ru
Для нахождения пути от начальной точки (0, 0) до конечной точки (п, п), уровень за уровнем строится дерево состояний (рис. 3), то есть всех возможных ходов коня в пределах доски, а затем производится поиск по полученному дереву в соответствии с выбранным алгоритмом поиска. Если п = 6, то дерево состояний насчитывает 358 вершин, расположенных на 4 уровнях (на 4-м уровне находится ближайшее решение), и выглядит следующим образом:
Рис. 2. Возможные ходы коня в шахматах
Рис. 3. Дерево состояний при п = 6 (последние два уровня изображены схематически)
Исходя из принципов действия алгоритмов, очевидно, что они просматривают дерево состояний по-разному. Так, алгоритм поиска в ширину сканирует каждый узел на каждом уровне до тех пор, пока не будет достигнута конечная цель, а алгоритм эвристического поиска, просмотрев все состояния, полученные из текущего, проводит их анализ по выбранному критерию, давая числовую оценку каждому состоянию, а затем выбирает наиболее перспективное, и в следующий уровень дерева войдут только те состояния, которые вытекают из выбранного. В качестве такого критерия использовалось расстояние от текущей позиции до конечной цели, которое в ходе алгоритма высчитывается для каждого просматриваемого состояния, полученного из текущего, по формуле
показан результат работы алгоритма эвристического поиска в виде траектории пути, отрисованной на поле с промежуточными точками 1, 2 и 3.
у}(п - х)2 + (п - у)2
Ь = ^{п - х) + (п
где Ь — это искомое расстояние, п — размер поля, х и у — текущие координаты шахматного коня соответственно.
Существуют также и некоторые исключения. Например, поля с такими координатами, как (п-2, п-2), (п-1, п-1), (п-1, п) или (п, п-1), несмотря на свою близость к цели, являются заведомо бесперспективными и алгоритмом не рассматриваются.
Также следует отметить, что наивысший приоритет у алгоритма имеют те поля, расположенные в непосредственной близости к цели,
расстояние Ь от которых до этой цели равно -У5, поскольку такие поля находятся в одном шаге шахматного коня от искомого поля.
Используя данную базу правил, полученный алгоритм успешно отсекает худшие варианты и рассматривает лучшие, позволяя, таким образом, достигнуть конечной цели, просматривая минимальное количество состояний дерева. На рис. 4
Рис. 4. Результат работы алгоритма — кратчайший
путь из начального положения до конечной цели
На рис. 5 показана та часть дерева состояний, которая рассматривалась полученным алгоритмом в ходе его выполнения. По рис. 5 становится видно, что алгоритму потребовалось рассмотреть всего 15 вершин, прежде, чем было найдено решение. С использованием возможностей написанной программы, рассматриваемые алгоритмы были протестированы на полях, размерами от 3*3 до 15*15 включительно. Результаты тестирования,
показывающие количество пройденных алгоритмами шагов и время в миллисекундах, затраченное на поиск решения, представлены в табл. 1.
Рис. 5. Фрагмент дерева состояний
№ 6'2015 ВЕСТНИК МГУП ИМЕНИ ИВАНА ФЕДОРОВА ISSN ON-LINE: 2409-6652 © Московский государственный университет печати имени Ивана Федорова_vestnik.mgup.ru
Таблица 1. Результаты тестирования
Размер поля Количество шагов Время выполнения, мс
Поиск в ширину Эвристический поиск Поиск в ширину Эвристический поиск
3x3 17 7 0 0
4x4 3 3 0 0
5x5 58 13 1 1
6x6 76 15 1 1
7x7 83 17 1 1
8x8 2838 31 14 1
9x9 3067 31 16 1
10x10 3211 33 16 1
11x11 143782 47 79 1
12x12 147393 47 80 1
13x13 149338 49 80 1
14x14 7453202 63 1370 1
15x15 7514325 63 1421 1
Табл. 1 наглядно показывает разницу в скорости выполнения неинформированного метода поиска и информированного. Полученный алгоритм эвристического поиска позволяет мгновенно найти решение рассматриваемой задачи даже при п = 100, в то время, как при выполнении алгоритма поиска в ширину увеличение входных данных приводит к комбинаторному взрыву и уже при п = 17 поиск решения становится очень затруднительным.
БИБЛИОГРАФИЧЕСКИИ СПИСОК
1. Поиск в пространстве состояний [Электронный ресурс] // Википедия: сайт. — URL: https://ru.wikipedia.org/wiki/Поиск_в_пространс тве_состояний (дата обращения: 16.11.2015).
2. Поиск в пространстве состояний [Электронный ресурс] // Хабрахабр: сайт. — URL: https://habrahabr.ru/company/abbyy/blog/217839 (дата обращения: 16.11.2015).
3. Шахматы [Электронный ресурс] // Википедия: сайт. — URL: https://ru.wikipedia.org/wiki/Шахматы (дата обращения: 16.11.2015).
ANALYSIS OF THE ALGORITHMS OF STATE SPACE SEARCH
Dmitry Ivanovich Popov
Moscow State University of Printing Arts 127550Russia, Moscow, Pryanishnikova st., 2A
Dmitry Valerevich Vinogradov
Moscow State University of Printing Arts 127550Russia, Moscow, Pryanishnikova st., 2A
Annotation. In this work we consider and analyze of breadth-first search and heuristic search (A * search algorithm) in state space. In addition, here are examples and characteristics based on JavaScript realization.
Keywords: heuristic search, breadth-first search, state space, combinatorial explosion.