Программирование - это просто
Advertisement
Главная
19.04.2024 г.
Главное меню
Главная
Интернет магазин
Программные продукты
Биржевые роботы
Искусственный интеллект
Математика и информатика
1С:Предприятие
Уроки C#
Уроки Delphi
Уроки программирования
Web-программирование
Дизайн и графика
Компьютер для блондинок
Исходники
Статьи
Платный раздел
Рассказы про компьютеры
Хитрости и секреты
Системный подход
Размышления
Наука для чайников
Друзья сайта
Excel-это не сложно
Все о финансах
.
Создаем искусственный интеллект. Урок 11. Приступим к решению задачи поиска пути в лабиринте. Печать E-mail
Автор megabax   
12.03.2011 г.
unit AIObj

Создаем искусственный интеллект. Урок 11. Приступим к решению задачи поиска пути в лабиринте.

Исходники у уроку можно скачать здесь.

Для начала давайте опишем лабиринт,  виде графа пространства состояний и отразим его в нашей структуре данных, которую мы разрабатывали на прошлых уроках. Обращаю ваше внимание, что описание самих классов графа пространства состояний есть в исходниках к уроку. Еще обращу ваше внимание на тот факт, что в исходниках, начиная с этого урока, немного исправлено объявление класса TAIProblemSpace, а именно, свойство Items объявлено как default:

     property Items[index:integer]:TAIStateItem read GetItem; default;   

И так, пусть у нас есть вот такой лабиринт (данное изображение является цитатой из книги В. Н. Бондарев, Ф. Г. Аде "Искусственный интеллект"):

Создаем искусственный интеллект. Урок 11. Приступим к решению задачи поиска пути в лабиринте.

Представим его в виде графа (данное изображение является цитатой из книги В. Н. Бондарев, Ф. Г. Аде "Искусственный интеллект"):

Создаем искусственный интеллект. Урок 11. Приступим к решению задачи поиска пути в лабиринте.

Развернем этот граф, обозначим вершины номерами (цифрами):

Создаем искусственный интеллект. Урок 11. Приступим к решению задачи поиска пути в лабиринте.

Теперь опишем граф программно, используя класс TAIProblemSpace:

     PS:=TAIProblemSpace.Create;

 

      PS.Add(TAIStateItem.Create); //нулевая вершина

   PS.Add(TAIStateItem.Create); //вершина 1

   PS.Add(TAIStateItem.Create); //вершина 2

   PS.Add(TAIStateItem.Create); //вершина 3

   PS.Add(TAIStateItem.Create); //вершина 4

   PS.Add(TAIStateItem.Create); //вершина 5

   PS.Add(TAIStateItem.Create); //вершина 6

   PS.Add(TAIStateItem.Create); //вершина 7

   PS.Add(TAIStateItem.Create); //вершина 8

   PS.Add(TAIStateItem.Create); //вершина 9

 

      //добавим выходы нулевой вершины

   PS[0].AddExit(PS[1]);

 

      //выходы вершины 1

   PS[1].AddExit(PS[0]);

   PS[1].AddExit(PS[2]);

   PS[1].AddExit(PS[9]);

 

      //выходы вершины 2

   PS[2].AddExit(PS[1]);

   PS[2].AddExit(PS[3]);

   PS[2].AddExit(PS[5]);

 

      //выходы вершины 3

   PS[3].AddExit(PS[2]);

 

      //вершина 4 у нас целевая, она не имеет выходов

 

      //выходы вершины 5

   PS[5].AddExit(PS[4]);

   PS[5].AddExit(PS[2]);

   PS[5].AddExit(PS[6]);

 

      //выходы вершины 6

   PS[6].AddExit(PS[5]);

   PS[6].AddExit(PS[7]);

   PS[6].AddExit(PS[8]);

 

      //выходы вершины 7

   PS[7].AddExit(PS[6]);

   PS[7].AddExit(PS[9]);

   PS[7].AddExit(PS[8]);

 

      //выходы вершины 8

   PS[8].AddExit(PS[6]);

   PS[8].AddExit(PS[7]);

   PS[8].AddExit(PS[9]);

 

      //выходы вершины 9

   PS[9].AddExit(PS[1]);

   PS[9].AddExit(PS[7]);

   PS[9].AddExit(PS[8]);

 

 Выведя этот граф на экран методом Draw, мы увидим вот такую картинку:

Создаем искусственный интеллект. Урок 11. Приступим к решению задачи поиска пути в лабиринте.

И так, лабиринт в виде пространства состояний мы описали. На следящих уроках будем писать программу поиска выхода из этого лабиринта с применением различных алгоритмов интеллектуального поиска. 

Исходники у уроку можно скачать здесь.

Последнее обновление ( 12.03.2011 г. )
 
« След.   Пред. »
 
© 2024 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги