- •Системы искуственного интеллекта.
- •Глава 8 Моделирование структуры мозга с помощью нейронных сетей………… 4
- •Глава 9 Моделирование деятельности человеческого коллектива
- •Глава 10 Поиск альтернативных решений…………………………………………………
- •Контрольные вопросы и задание……………………………………………………
- •Глава 11 Моделирование общения, восприятия и осуществления действий человеком.
- •8.1. Биологический нейрон.
- •11.15. Контрольные вопросы и задание
- •Глава 12 Настоящее и будущее искусственного интеллекта………………
- •Лекция 18 Глава 8 Моделирование структуры мозга с помощью нейронных сетей.
- •8.2. Модель искусственного нейрона.
- •8.3. Классификация нейронных сетей и их свойства.
- •Лекция 19
- •8.4. Теоретические основы построения и обучения нейронных сетей.
- •8.5. Алгоритм «обучение с учителем».
- •8.6. Алгоритм «обучение без учителем».
- •Лекция 20
- •8.7. Способы реализации нейронных сетей.
- •Практическое применение нейросетевых технологий.
- •Выводы по 8-ой главе.
- •Контрольные вопросы и задание.
- •Лекция 21
- •Глава 9 Моделирование деятельности человеческого коллектива
- •9.1. Основные понятия теории агентов.
- •Агент Датчики
- •Исполнительные механизмы
- •9.2. Поведение агентов.
- •Лекция 22
- •9.3. Определение характера среды.
- •Лекция 23
- •9.4. Структура агентов
- •Лекция 24
- •9.5. Мультиагентные системы.
- •9.6. Коллективное поведение агентов.
- •Лекция 25
- •9.7. Примеры мультиагентных систем
- •9.8. Технологии проектирования мультиагентных систем
- •9.9. Перспективы мультиагентных технологий.
- •9.10. Выводы по 9-ой главе.
- •9.11. Контрольные вопросы и задание.
- •Лекция 26
- •Глава 10 Поиск альтернативных решений.
- •Поиск в пространстве состояний.
- •Лекция 27
- •10.2. Алгоритмы поиска в пространстве состояний.
- •10.2.1. Алгоритм поиска с возвратом.
- •10.2.2. Алгоритм поиска в ширину.
- •Лекция 28.
- •10.2.3. Алгоритм поиска в глубину.
- •14 16 Цель
- •10.2.4. Поиск в глубину с итерационным заглублением.
- •10.3.1. "Жадный" алгоритм поиска
- •Лекция 29
- •10.4. Поиск на графах «и-или»
- •Лекция 30
- •10.5. Игровые модели и их классификация.
- •10.6. Игры с полной информацией и двумя участниками.
- •10.6.1. Оптимальные стратегии.
- •Лекция 31
- •10.6.2.Минимаксный алгоритм.
- •30Х30≈ 1000 позиций
- •10.6.3. Альфа-бета алгоритм.
- •10.6.4. Программы игры в шахматы.
- •10.6.5.Современные игровые программы.
- •Лекция 32
- •Локальный поиск.
- •10.7.1. Алгоритм поиска с восхождением к вершине
- •Лекция 33
- •10.7.2.Алгоритм отжига.
- •Лекция 34
- •10.7.3. Генетический алгоритм.
- •Анализ начальной популяции на первом шаге простого генетического алгоритма.
- •Контрольные вопросы и задание
- •Глава 11 Моделирование общения, восприятия и осуществления действий человеком.
- •12.15. Контрольные вопросы и задание.
- •Глава 13 Настоящее и будущее искусственного интеллекта.
10.2.2. Алгоритм поиска в ширину.
Алгоритм поиска в ширину работает следующим образом.
Дочерние состояния генерируются правилами вывода, допустимыми ходами игры, или другими операциями перехода состояний. На каждой итерации генерируются все дочерние вершины текущего состояния Х и записываются в open. Заметим, что список open действует как очередь и обрабатывает данные в порядке поступления (или "первым поступил - первым обслужен"). Это структура данных FIFO first-iп-firstout. Состояния добавляются в список справа, а удаляются слева. Таким образом в поиске участвуют состояния, которые находятся в списке open дольше всего, обеспечивая поиск в ширину. Дочерние состояния, которые были уже записаны в списки open или closed, отбрасываются. Алгоритм завершается, если текущее состояние буде равно целевому состоянию. Если алгоритм завершается из-за выполнения условия open= [пусто], то можно заключить, что весь граф исследован, а желаемая цель не достигнута. Следовательно, поиск потерпел неудачу.
Проследим путь алгоритма поиска в ширину breadth_first_search на графе, изображенном на рис. 10.10, при этом U - это желаемое целевое состояние.
0 итерация - Инициализируем списки. Список open =[A]; Список closed =[ ];
1 итерация – Выбираем первую вершину из списка open и определяем её как текущее состояние Х=А. Применяем процедуру определения потомков к Х=А, потомки есть, ими являются вершины В, С, D. Записываем справа налево эти вершины в список open, удаляя слева из этого списка вершину А и записывая эту вершину в список closed слева направо. Далее алгоритм переходит к следующей итерации.
2 итерация – Выбираем первую вершину из списка open и определяем её как текущее состояние Х=В. Применяем процедуру определения потомков к Х= В, потомки есть, ими являются вершины Е, F. Записываем справа налево эти вершины в список open, удаляя слева из этого списка вершину В и записывая эту вершину в список closed слева направо. Далее алгоритм переходит к следующей итерации.
Эти итерации продолжаются до тех пор пока текущее состояние Х не будет равно целевому состоянию U, либо список open окажется пустым.
Поскольку при поиске в ширину узлы графа рассматриваются по уровням, сначала исследуются те состояния, пути к которым короче. Поиск в ширину, таким образом, гарантирует нахождение кратчайшего пути от начального состояния к цели. Более того, поскольку вначале исследуются состояния, найденные по кратчайшему пути, при повторном проходе это состояние отбрасывается.
Иногда помимо имен состояний в ореn и closed необходимо хранить дополнительную информацию. Например, заметим, что алгоритм поиска в ширину не поддерживает список состояний на текущем пути к цели, как это делалось при поиске с возвратами (backtrack) в списке SL. Все посещенные состояния хранятся в closed. Если путь является решением, то он возвращается алгоритмом. Это может быть сделано путем накопления информации о предках для каждого состояния. Состояние хранится вместе с записью родительского состояния, Т.е. в виде пары (потомок- родитель).
После итерации |
Список open |
Список closed |
0 |
[А] |
[ ] |
1 |
[ В С D ] |
[А] |
2 |
[С D Е F ] |
[В А] |
3 |
[D Е F G Н] |
[С В А] |
4 |
[ Е F G Н I J] |
[ D С В А] |
5 |
[F G Н I J K L] |
[ Е D С В А] |
6 |
[ G Н I J K L M] |
[F Е D С В А] |
7 |
[ Н I J K L M N] |
[ G F Е D С В А] |
8 |
[I J K L M N O P] |
[ Н G F Е D С В А] |
9 |
[J K L M N O PQ] |
[ I Н G F Е D С В А] |
10 |
[K L M N O PQ R] |
[J I Н G F Е D С В А] |
11 |
[ L M N O PQ R S] |
[K J I Н G F Е D С В А] |
12 |
[M N O PQ R S T] |
[L K J I Н G F Е D С В А] |
13 |
[N O PQ R S T] |
[ M L K J I Н G F Е D С В А] |
14 |
[O PQ R S T] |
[ N M L K J I Н G F Е D С В А] |
15 |
[PQ R S T] |
[ O N M L K J I Н G F Е D С В А] |
16 |
[Q R S TU ] |
[P O N M L K J I Н G F Е D С В А] |
17 |
[R S TU ] |
[ Q P O N M L K J I Н G F Е D С В А] |
18 |
[S TU ] |
[ R Q P O N M L K J I Н G F Е D С В А] |
19 |
[TU ] |
[ S R Q P O N M L K J I Н G F Е D С В А] |
20 |
[U ] |
[ T S R Q P O N M L K J I Н G F Е D С В А] |
Таблица 10.2. Состояние списков после каждой итерации алгоритма поиска в ширину для графа на рис. 10.10.
-
После итерации
Список пар (потомок-родитель).
0
1
(B,A), (C,A), (D,A)
2
(B,A), (C,A), (D,A), (E,B), (F,B)
3
(B,A), (C,A), (D,A), (E,B), (F,B), (G,C), (H,C)
4
(B,A), (C,A), (D,A), (E,B), (F,B), (G,C), (H,C), (I,D),(J,D)
5
(B,A), (C,A), (D,A), (E,B), (F,B), (G,C), (H,C), (I,D),(J,D),(K,E), (L,E)
6
(B,A),(C,A),(D,A),(E,B),(F,B),(G,C),(H,C),(I,D),(J,D),(K,E),(L,E),(L,F), (M,F)
7
(B,A), (C,A), (D,A), (E,B), (F,B), (G,C), (H,C), (I,D),(J,D),(K,E), (L,E), (L,F), (M,F),( N, G)
8
(B,A), (C,A), (D,A), (E,B), (F,B), (G,C), (H,C), (I,D),(J,D),(K,E), (L,E), (L,F), (M,F),( N, G),(O,H), (P,H)
9
(B,A), (C,A), (D,A), (E,B), (F,B), (G,C), (H,C), (I,D),(J,D),(K,E), (L,E), (L,F), (M,F),( N, G),(O,H), (P,H),(P,I),(Q,I)
10
(B,A), (C,A), (D,A), (E,B), (F,B), (G,C), (H,C), (I,D),(J,D),(K,E), (L,E), (L,F), (M,F),( N, G),(O,H), (P,H),(P,I),(Q,I), (R,J)
11
(B,A), (C,A), (D,A), (E,B), (F,B), (G,C), (H,C), (I,D),(J,D),(K,E), (L,E), (L,F), (M,F),( N, G),(O,H), (P,H),(P,I),(Q,I), (R,J),(S,K)
12
(B,A), (C,A), (D,A), (E,B), (F,B), (G,C), (H,C), (I,D),(J,D),(K,E), (L,E), (L,F), (M,F),( N, G),(O,H), (P,H),(P,I),(Q,I), (R,J),(S,K),(T,L)
13
(B,A), (C,A), (D,A), (E,B), (F,B), (G,C), (H,C), (I,D),(J,D),(K,E), (L,E), (L,F), (M,F),( N, G),(O,H), (P,H),(P,I),(Q,I), (R,J),(S,K),(T,L)
14
(B,A), (C,A), (D,A), (E,B), (F,B), (G,C), (H,C), (I,D),(J,D),(K,E), (L,E), (L,F), (M,F),( N, G),(O,H), (P,H),(P,I),(Q,I), (R,J),(S,K),(T,L)
15
(B,A), (C,A), (D,A), (E,B), (F,B), (G,C), (H,C), (I,D),(J,D),(K,E), (L,E), (L,F), (M,F),( N, G),(O,H), (P,H),(P,I),(Q,I), (R,J),(S,K),(T,L)
16
(B,A), (C,A), (D,A), (E,B), (F,B), (G,C), (H,C), (I,D),(J,D),(K,E), (L,E), (L,F), (M,F),(N,G),(O,H), (P,H),(P,I),(Q,I), (R,J),(S,K),(T,L),(U,P)
17
(B,A), (C,A), (D,A), (E,B), (F,B), (G,C), (H,C), (I,D),(J,D),(K,E), (L,E), (L,F), (M,F),(N,G),(O,H), (P,H),(P,I),(Q,I), (R,J),(S,K),(T,L),(U,P)
18
(B,A), (C,A), (D,A), (E,B), (F,B), (G,C), (H,C), (I,D),(J,D),(K,E), (L,E), (L,F), (M,F),(N,G),(O,H), (P,H),(P,I),(Q,I), (R,J),(S,K),(T,L),(U,P)
19
(B,A), (C,A), (D,A), (E,B), (F,B), (G,C), (H,C), (I,D),(J,D),(K,E), (L,E), (L,F), (M,F),(N,G),(O,H), (P,H),(P,I),(Q,I), (R,J),(S,K),(T,L),(U,P)
20
(B,A), (C,A), (D,A), (E,B), (F,B), (G,C), (H,C), (I,D),(J,D),(K,E), (L,E), (L,F), (M,F),(N,G),(O,H), (P,H),(P,I),(Q,I), (R,J),(S,K),(T,L),(U,P)
Таблица 10.3. Состояние списка пар (потомок-родитель) после каждой итерации алгоритма поиска в ширину для графа на рис. 10.10.
Используя эту информацию, можно легко построить путь (А, В, F), ведущий от А к F. Когда цель найдена, можно создать алгоритм, который может восстановить путь решения, прослеживая его в обратном направлении от цели к начальному состоянию по родительским состояниям.
