<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Два студента пишут лабы</title>
	<atom:link href="http://www.studcode.ru/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.studcode.ru</link>
	<description>Конспекты лекций, самостоятельные работы по  delphi, с++, php. Курсовые проекты. Все что мы сделали вы можете скачать без проблем!</description>
	<lastBuildDate>Wed, 27 Oct 2010 15:15:19 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Редукция задач</title>
		<link>http://www.studcode.ru/archiv/redukciya-zadach/</link>
		<comments>http://www.studcode.ru/archiv/redukciya-zadach/#comments</comments>
		<pubDate>Wed, 27 Oct 2010 15:15:04 +0000</pubDate>
		<dc:creator>archey</dc:creator>
				<category><![CDATA[Искусственный интеллект]]></category>
		<category><![CDATA[ии]]></category>
		<category><![CDATA[лекции]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=1109</guid>
		<description><![CDATA[Редукция задач
Кроме уже рассмотренного подхода – представления задач в пространстве состояний – для решения ряда задач возможен и другой, более сложный подход. При этом подходе производится анализ исходной задачи с целью выделения такого набора подзадач, решение которых означает решение исходной задачи. Каждая из выделенных подзадач в общем случае является более простой, чем исходная, и может [...]]]></description>
			<content:encoded><![CDATA[<p>Редукция задач</p>
<p>Кроме уже рассмотренного подхода – представления задач в пространстве состояний – для решения ряда задач возможен и другой, более сложный подход. При этом подходе производится анализ исходной задачи с целью выделения такого набора подзадач, решение которых означает решение исходной задачи. Каждая из выделенных подзадач в общем случае является более простой, чем исходная, и может быть решена каким-либо методом, в том числе – с использованием пространства состояний. Но можно продолжить процесс, выделяя последовательно из возникающих задач подзадачи – до тех пор, пока не получим <strong><em>элементарные задачи</em></strong>, решение которых уже известно. Такой путь называется подходом, основанным на <strong><em>сведении задач к</em></strong> <strong><em>подзадачам</em></strong>, или на <strong><em>редукции задач.<span id="more-1109"></span></em></strong>Для иллюстрации этого подхода рассмотрим один из вариантов известной головоломки – задачи о пирамидке, или ханойской башне. В ней используются 3 колышка (обозначим их буквами A, B, C) и 3 диска разного диаметра, которые можно нанизывать на колышки через отверстия в центре. В начале все диски расположены на колышке А, причем диски меньшего диаметра лежат на дисках большего диаметра – см. рис. 6 (диски занумерованы в порядке возрастания диаметра). Требуется переместить все диски на колышек С, двигая их по очереди и соблюдая следующие правила. Перемещать можно только самый верхний диск, и нельзя никакой диск класть на диск меньшего размера. На рис.6 показаны начальное и целевое состояния задачи о пирамидке.</p>
<p>Эта задача легко может быть формализована в пространстве состояний: состояние задачи задается списком из трех элементов, каждый из которых указывает местоположение соответствующего диска (первый элемент – первого диска, второй – второго, третий – третьего). Начальное состояние описывается списком (ААА), а целевое – (ССС). При этом предполагается, что если на одном колышке находится более одного диска, то любой больший диск расположен ниже любого меньшего.</p>
<p><a href="http://www.studcode.ru/wp-content/uploads/2010/10/clip_image0054.gif"><img class="aligncenter size-full wp-image-1110" title="clip_image0054" src="http://www.studcode.ru/wp-content/uploads/2010/10/clip_image0054.gif" alt="clip_image0054" width="604" height="177" /></a></p>
<p>Посмотрим, как можно решить эту задачу методом редукции задач. Ключевая идея редукции состоит в том, что для перемещения всей пирамидки необходимо переложить самый нижний диск 3, а это возможно, только если располагающаяся над ним пирамидка из двух меньших дисков 1 и 2 перенесена на колышек В – см. рис. 7(а). Таким образом, исходную задачу можно свести к следующим подзадачам:</p>
<p>1) переместить диски 1 и 2 с колышка А на колышек В ( 1, 2 : А ® В);</p>
<p>2) переместить диск 3 с колышка А на колышек С ( 3 : А ® С);</p>
<p>3) переместить диски 1 и 2 с колышка В на колышек С ( 1, 2 : В ® С).</p>
<p>Каждая из трех указанных задач проще исходной: действительно, в первой и в третьей задачах требуется переместить всего два диска, вторая же задача может рассматриваться как элементарная, так как ее решение состоит ровно из одного хода – перемещения диска. В первой и третьей задачах можно вновь применить метод редукции задач, и свести их к элементарным задачам. Весь процесс редукции можно схематически представить в виде дерева на рис. 8. Вершины дерева соответствуют решаемым задачам/подзадачам, причем листья дерева – элементарным задачам перемещения дисков, а дуги связывают редуцируемую задачу с ее подзадачами.</p>
<p>Заметим, что рассмотренная стратегия сведения задачи к совокупности подзадач может быть применена и в случае, когда начальная конфигурация задачи о пирамидке содержит не три, а большее число дисков. В любом случае, существенным является порядок, в котором решаются результирующие задачи: например, вторая задача не может быть решена ранее первой.</p>
<p>Таким образом, в случае подхода, основанного на редукции задач, мы получаем также пространство, но состоящее не из состояний, а из задач/подзадач (точнее, их описаний). При этом роль, аналогичную операторам в пространстве состояний, играют операторы, сводящие задачи в подзадачи. Точнее, каждый <strong><em>оператор редукции</em></strong> преобразует описание задачи в описание множества результирующих подзадач, причем это множество таково, что решение всех подзадач обеспечивает решение редуцированной задачи.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/redukciya-zadach/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Понятие о генетических алгоритмах</title>
		<link>http://www.studcode.ru/archiv/ponyatie-o-geneticheskix-algoritmax/</link>
		<comments>http://www.studcode.ru/archiv/ponyatie-o-geneticheskix-algoritmax/#comments</comments>
		<pubDate>Wed, 27 Oct 2010 15:12:40 +0000</pubDate>
		<dc:creator>archey</dc:creator>
				<category><![CDATA[Искусственный интеллект]]></category>
		<category><![CDATA[Конспекты лекций]]></category>
		<category><![CDATA[ии]]></category>
		<category><![CDATA[лекции]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=1104</guid>
		<description><![CDATA[Понятие о генетических алгоритмах
Генетические алгоритмы (ГА) &#8211; это стохастические, эвристические оптимизационные методы, впервые предложенные Холландом (1975). Они основываются на идее эволюции с помощью естественного отбора, выдвинутой Дарвином.
ГА работают с совокупностью &#8220;особей&#8221; &#8211; популяцией, каждая из которых представляет возможное решение данной проблемы. Каждая особь оценивается мерой ее &#8220;приспособленности&#8221; согласно тому, насколько &#8220;хорошо&#8221; соответствующее ей решение задачи. [...]]]></description>
			<content:encoded><![CDATA[<h2>Понятие о генетических алгоритмах</h2>
<p><strong><em>Генетические алгоритмы</em></strong> (ГА) &#8211; это стохастические, эвристические оптимизационные методы, впервые предложенные Холландом (1975). Они основываются на идее эволюции с помощью естественного отбора, выдвинутой Дарвином.</p>
<p>ГА работают с совокупностью &#8220;<strong>особей</strong>&#8221; &#8211; популяцией, каждая из которых представляет возможное решение данной проблемы. Каждая особь оценивается мерой ее &#8220;<strong>приспособленности</strong>&#8221; согласно тому, насколько &#8220;хорошо&#8221; соответствующее ей решение задачи. В природе это эквивалентно оценке того, насколько эффективен организм при конкуренции за ресурсы. Наиболее приспособленные особи получают возможность &#8220;воспроизводить&#8221; потомство с помощью &#8220;перекрестного скрещивания&#8221; с другими особями популяции. Это приводит к появлению новых особей, которые сочетают в себе некоторые характеристики, наследуемые ими от родителей. Наименее приспособленные особи с меньшей вероятностью смогут воспроизвести потомков, так что те свойства, которыми они обладали, будут постепенно исчезать из популяции в процессе эволюции. Иногда происходят мутации, или спонтанные изменения в генах.<span id="more-1104"></span>Таким образом, из поколения в поколение, хорошие характеристики распространяются по всей популяции. Скрещивание наиболее приспособленных особей приводит к тому, что исследуются наиболее перспективные участки пространства поиска. В конечном итоге популяция будет сходиться к оптимальному решению задачи. Преимущество ГА состоит в том, что он находит приблизительные оптимальные решения за относительно короткое время.</p>
<p>ГА состоит из следующих компонентов: 1) <strong>Хромосома </strong>(Решение рассматриваемой проблемы. Состоит из генов); 2) <strong>Начальная популяция</strong> хромосом; 3) <strong>Набор операторов</strong> для генерации новых решений из предыдущей популяции; 4) <strong>Целевая функция</strong> для оценки приспособленности (fitness) решений.</p>
<p>Чтобы применять ГА к задаче, сначала выбирается метод кодирования решений в виде строки. Фиксированная длина (<em>l</em>-бит) двоичной кодировки означает, что любая из 2<em><sup>l</sup></em> возможных бинарных строк представляет возможное решение задачи.</p>
<p>Стандартные операторы для всех типов генетических алгоритмов это: <em>селекция, скрещивание</em> и <em>мутация</em>.</p>
<h3>Селекция</h3>
<p>Оператор селекции (reproduction, selection) осуществляет отбор хромосом в соответствии со значениями их функции приспособленности. Существуют как минимум два популярных типа оператора селекции: рулетка и турнир.</p>
<ul>
<li><strong>Метод рулетки</strong> (roulette-wheel selection) &#8211; отбирает особей с помощью <em>n</em> &#8220;запусков&#8221; рулетки. Колесо рулетки содержит по одному сектору для каждого члена популяции. Размер i-ого сектора пропорционален некоторой величине вычисляемой по формуле.</li>
</ul>
<ul>
<li><strong>Турнирный отбор</strong> (tournament selection)      реализует <em>n</em> турниров, чтобы      выбрать <em>n</em> особей. Каждый турнир      построен на выборке <em>k</em> элементов      из популяции, и выбора лучшей особи среди них. Наиболее распространен      турнирный отбор с <em>k=2</em>.</li>
</ul>
<h3>Скрещивание</h3>
<p>Оператор скрещивания (crossover) осуществляет обмен частями хромосом между двумя (может быть и больше) хромосомами в популяции. Может быть одноточечным или многоточечным. Одноточечный кроссовер работает следующим образом. Сначала, случайным образом выбирается одна из <em>l-1</em> точек разрыва. Точка разрыва &#8211; участок между соседними битами в строке. Обе родительские структуры разрываются на два сегмента по этой точке. Затем, соответствующие сегменты различных родителей склеиваются и получаются два генотипа потомков.</p>
<p><a href="http://www.studcode.ru/wp-content/uploads/2010/10/clip_image0051.gif"><img class="aligncenter size-full wp-image-1105" title="clip_image0051" src="http://www.studcode.ru/wp-content/uploads/2010/10/clip_image0051.gif" alt="clip_image0051" width="469" height="140" /></a><br />
<em>Одноточечный оператор скрещивания (точка разрыва равна трем) </em></p>
<h3>Мутация</h3>
<p>Мутация (mutation) &#8211; стохастическое изменение части хромосом. Каждый ген строки, которая подвергается мутации, с вероятностью <em>P<sub>mut</sub></em> (обычно очень маленькой) меняется на другой ген.</p>
<p><a href="http://www.studcode.ru/wp-content/uploads/2010/10/clip_image0052.gif"><img class="aligncenter size-full wp-image-1106" title="clip_image0052" src="http://www.studcode.ru/wp-content/uploads/2010/10/clip_image0052.gif" alt="clip_image0052" width="488" height="76" /></a></p>
<h2>Схема работы ГА</h2>
<p>Работа ГА представляет собой итерационный процесс, который продолжается до тех пор, пока не выполнятся заданное число поколений или какой-либо иной критерий останова. На каждом поколении ГА реализуется отбор пропорционально приспособленности, кроссовер и мутация.</p>
<p>Схема работы простого ГА выглядит следующим образом:</p>
<p><a href="http://www.studcode.ru/wp-content/uploads/2010/10/clip_image0053.gif"><img class="aligncenter size-full wp-image-1107" title="clip_image0053" src="http://www.studcode.ru/wp-content/uploads/2010/10/clip_image0053.gif" alt="clip_image0053" width="352" height="215" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/ponyatie-o-geneticheskix-algoritmax/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Альфа-бета процедура</title>
		<link>http://www.studcode.ru/archiv/alfa-beta-procedura/</link>
		<comments>http://www.studcode.ru/archiv/alfa-beta-procedura/#comments</comments>
		<pubDate>Wed, 27 Oct 2010 14:57:21 +0000</pubDate>
		<dc:creator>archey</dc:creator>
				<category><![CDATA[Искусственный интеллект]]></category>
		<category><![CDATA[ии]]></category>
		<category><![CDATA[лекции]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=1100</guid>
		<description><![CDATA[Альфа-бета процедура
Минимаксная процедура организована таким образом, что процесс построения частичного дерева игры отделен от процесса оценивания вершин. Такое разделение приводит к тому, что в целом минимаксная процедура &#8211; неэффективная стратегия поиска хорошего первого хода. Чтобы сделать процедуру более экономной, необходимо вычислять статические оценки концевых вершин и минимаксные оценки промежуточных вершин одновременно с построением игрового дерева. [...]]]></description>
			<content:encoded><![CDATA[<h2>Альфа-бета процедура</h2>
<p>Минимаксная процедура организована таким образом, что процесс построения частичного дерева игры отделен от процесса оценивания вершин. Такое разделение приводит к тому, что в целом минимаксная процедура &#8211; неэффективная стратегия поиска хорошего первого хода. Чтобы сделать процедуру более экономной, необходимо вычислять статические оценки концевых вершин и минимаксные оценки промежуточных вершин одновременно с построением игрового дерева. Этот путь приводит к так называемой <strong><em>альфа-бета процедуре</em></strong> поиска наилучшего первого хода от заданной позиции, при этом можно добиться существенного сокращения вычислительных затрат, прежде всего, времени вычисления статических оценок. В основе сокращения поиска лежит достаточно очевидное соображение: если есть два варианта хода одного игрока, то худший в ряде случаев можно сразу отбросить, не выясняя, насколько в точности он хуже.<span id="more-1100"></span>Рассмотрим сначала идею работы альфа-бета процедуры на примере игрового дерева, приведенного на рис. 4. Дерево игры строится до глубины N=3 алгоритмом перебора вглубь. Причем сразу, как это становится возможным, вычисляются не только статические оценки концевых вершин, но и <em>предварительные </em>минимаксные оценки промежуточных вершин. Предварительная оценка определяется соответственно как минимум или максимум уже известных к настоящему моменту оценок дочерних вершин. В общем случае, эта оценка может быть получена при наличии оценки хотя бы одной дочерней вершины. В ходе дальнейшего построения дерева игры и получения новых оценок вершин предварительные оценки постепенно уточняются, опять же по минимаксному принципу.</p>
<p>Пусть таким образом построены вершины W<sub>1</sub><strong><sup>-</sup></strong>,  W<sub>2</sub><strong><sup>+</sup></strong> и первые три конечные вершины (листья) &#8211; см. рис. 5. Эти листья оценены статической функцией, и вершина W<sub>2</sub><strong><sup>+</sup></strong> получила точную минимаксную оценку 3, а вершина W<sub>1</sub><strong><sup>-</sup></strong> &#8211; предварительную оценку 3. Далее при построении и раскрытии вершины W<sub>3</sub><strong><sup>+</sup></strong> статическая оценка первой ее дочерней вершины дает величину 4, которая становится предварительной оценкой самой вершины W<sub>3</sub><strong><sup>+</sup></strong>. Эта предварительная оценка будет потом, после построения второй ее дочерней вершины, пересчитана. Причем согласно минимаксному принципу оценка может только увеличиться (поскольку подсчитывается как максимум оценок дочерних вершин), но даже если она увеличится, это не повлияет на оценку вершины W<sub>1</sub><strong><sup>-</sup></strong>, поскольку последняя при уточнении по минимаксному принципу может только уменьшаться (так как равна минимуму оценок дочерних вершин). Следовательно, можно пренебречь второй дочерней вершиной для W<sub>3</sub><strong><sup>+</sup></strong>, не строить и не оценивать ее, поскольку уточнение оценки вершины W<sub>3</sub><strong><sup>+</sup></strong> не повлияет на оценку вершины W<sub>1</sub><strong><sup>-</sup></strong>. Такое сокращение поиска в игровом дереве называется <strong><em>отсечением</em></strong> ветвей.</p>
<p><a href="http://www.studcode.ru/wp-content/uploads/2010/10/clip_image005.gif"><img class="aligncenter size-full wp-image-1101" title="clip_image005" src="http://www.studcode.ru/wp-content/uploads/2010/10/clip_image005.gif" alt="clip_image005" width="332" height="184" /></a></p>
<p>Продолжим для нашего примера процесс поиска в глубину с одновременным вычислением предварительных (и точных, где это возможно) оценок вершин вплоть до момента, когда построены уже вершины W<sub>4</sub><strong><sup>-</sup></strong> , W<sub>5</sub><strong><sup>+</sup></strong> и две дочерних последней, которые оцениваются статической функцией. Исходя из оценки первой дочерней вершины начальная вершина W<sub>0</sub><strong><sup>+</sup></strong>, соответствующая исходной позиции игры, к этому моменту уже предварительно оценена величиной 3. Вершина W<sub>5</sub><strong><sup>+</sup></strong> получила точную минимаксную оценку 3, а ее родительская W<sub>4</sub><strong><sup>-</sup></strong> получила пока только предварительную оценку 3. Эта предварительная оценка вершины W<sub>4</sub><strong><sup>-</sup></strong>может быть уточнена в дальнейшем, и в соответствии с минимаксным принципом возможно только ее уменьшение, но это уменьшение не повлияет на оценку вершины W<sub>0</sub><strong><sup>+</sup></strong>, поскольку последняя, опять же согласно минимаксному принципу, может только увеличиваться. Таким образом, построение дерева можно прервать ниже вершины W<sub>4</sub><strong><sup>-</sup></strong>, отсекая целиком выходящие из нее вторую и третью ветви (и оставляя ее оценку предварительной).</p>
<p>На этом построение игрового дерева заканчивается, полученный результат &#8211; лучший первый ход &#8211; тот же самый, что и при минимаксной процедуре. У некоторых вершин дерева осталась неуточненная, предварительная оценка, однако этих приближенных оценок оказалось достаточно для того, чтобы определить точную минимаксную оценку начальной вершины и наилучший первый ход. В то же время произошло существенное сокращение поиска: вместо 17 вершин построено только 11, и вместо 10 обращений к статической оценочной функции понадобилось всего 6.</p>
<p>Обобщим рассмотренную идею сокращения перебора. Сформулируем сначала <span style="text-decoration: underline;">правила вычисления оценок</span> вершин дерева игры, в том числе предварительных оценок промежуточных вершин, которые для удобства будем называть <strong><em>альфа- </em></strong>и<strong><em> бета-величинами</em></strong>:</p>
<ul>
<li>концевая вершина игрового дерева оценивается статической оценочной функцией сразу, как только она построена;</li>
<li>промежуточная вершина предварительно оценивается по минимаксному принципу, как только стала известна оценка хотя бы одной из ее дочерних вершин; каждая предварительная оценка пересчитывается (уточняется) всякий раз, когда получена оценка еще одной дочерней вершины;</li>
<li>предварительная оценка ИЛИ-вершины (альфа-величина) полагается равной наибольшей из вычисленных к текущему моменту оценок ее дочерних вершин;</li>
<li>предварительная оценка И-вершины (бета-величина) полагается равной наименьшей из вычисленных к текущему моменту оценок ее дочерних вершин.</li>
</ul>
<p>Укажем очевидное <span style="text-decoration: underline;">следствие</span> этих правил вычисления: альфа-величины не могут уменьшаться, а бета-величины не могут увеличиваться.</p>
<p>Сформулируем теперь <span style="text-decoration: underline;">правила прерывания перебора</span>, или отсечения ветвей игрового дерева:.</p>
<p>A)    Перебор можно прервать ниже любой И-вершины, бета-величина которой не больше, чем альфа-величина одной из предшествующих ей ИЛИ-вершин (включая корневую вершину дерева);</p>
<p>B)   Перебор можно прервать ниже любой ИЛИ-вершины, альфа-величина которой не меньше, чем бета-величина одной из предшествующих ей И-вершин.</p>
<p>При этом в случае А говорят, что имеет место <strong><em>альфа-отсечение</em></strong>, поскольку отсекаются ветви дерева, начиная с ИЛИ-вершин, которым приписана альфа-величина, а в случае В &#8211; <strong><em>бета-отсечение</em></strong>, поскольку отсекаются ветви, начинающиеся с бета-величин).</p>
<p>Важно, что рассмотренные правила работают в ходе построения игрового дерева вглубь; это означает, что предварительные оценки промежуточных вершин появляются лишь по мере продвижения от концевых вершин дерева вверх к корню и реально отсечения могут начаться только после того, как получена хотя бы одна точная минимаксная оценка промежуточной вершины.</p>
<p>В рассмотренном примере на рис. 5 первое прерывание перебора было бета-отсечением, а второе &#8211; альфа-отсечением. Причем в обоих случаях отсечение было неглубоким, поскольку необходимая для соблюдения соответствующего правила отсечения альфа- или бета-величина находилась в непосредственно предшествующей к точке отсечения вершине. В общем же случае она может находиться существенно выше отсекаемой ветви – где-то на пути от вершины, ниже которой производится отсечение, к начальной вершине дерева, включая последнюю.</p>
<p>После прерывания перебора предварительные оценки вершин в точках отсечения остаются неуточненными, но, как уже отмечалось, это не препятствует правильному нахождению предварительных оценок всех предшествующих вершин, как и точной оценки корневой вершины и ее дочерних вершин, а значит, и искомого наилучшего первого хода.</p>
<p>На приведенных выше правилах вычисления оценок вершин и выполнения отсечений (всюду, где это возможно) основана <span style="text-decoration: underline;">альфа-бета</span> <span style="text-decoration: underline;">процедура</span>, являющаяся более эффективной реализацией минимаксного принципа. В принципе, используя математическую индукцию и рассуждая аналогично рассмотренному примеру, несложно доказать следующее</p>
<p><strong>Утверждение</strong>:</p>
<p>Альфа-бета процедура всегда приводит к тому же результату (наилучшему первому ходу), что и простая минимаксная процедура той же глубины.</p>
<p>Важным является вопрос, насколько в среднем альфа-бета процедура эффективнее обычной минимаксной процедуры. Нетрудно заметить, что количество отсечений в альфа-бета процедуре зависит от степени, в которой предварительные оценки (альфа- и бета-величины), полученные первыми, аппроксимируют окончательные минимаксные оценки: чем ближе эти оценки, тем больше отсечений и меньше перебор. Это положение иллюстрирует пример на рис. 5, в котором ветвь дерева с минимаксно-оптимальной игрой строится практически в самом начале поиска.</p>
<p>Таким образом, эффективность альфа-бета процедуры зависит от порядка построения и раскрытия вершин в дереве игры. Возможен и неудачный порядок просмотра, при котором придется пройти без отсечений через все вершины дерева, и в этом, худшем случае, альфа-бета процедура не будет иметь никаких преимуществ против минимаксной процедуры.</p>
<p>Наилучший случай, т.е. наибольшее число отсечений, достигается, когда при переборе в глубину первой обнаруживается конечная вершина, статическая оценка которой станет в последствии минимаксной оценкой начальной вершины. При максимальном числе отсечений строится и оценивается минимальное число концевых вершин. Показано, что в случае, когда самые сильные ходы всегда рассматриваются первыми, количество концевых вершин глубины N, которые будут построены и оценены альфа-бета процедурой, примерно равно числу концевых вершин, которые были бы построены и оценены на глубине  N/2 обычной минимаксной процедурой. Таким образом, при фиксированном времени и памяти альфа-бета процедура сможет пройти при поиске вдвое глубже по сравнению с обычной минимаксной процедурой.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/alfa-beta-procedura/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Минимаксная процедура</title>
		<link>http://www.studcode.ru/archiv/minimaksnaya-procedura/</link>
		<comments>http://www.studcode.ru/archiv/minimaksnaya-procedura/#comments</comments>
		<pubDate>Wed, 27 Oct 2010 14:52:35 +0000</pubDate>
		<dc:creator>archey</dc:creator>
				<category><![CDATA[Искусственный интеллект]]></category>
		<category><![CDATA[ии]]></category>
		<category><![CDATA[лекции]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=1095</guid>
		<description><![CDATA[Минимаксная процедура
С целью поиска достаточно хорошего первого хода просматривается обычно часть игрового дерева, построенного от заданной конфигурации. Для этого применяется один из переборных алгоритмов (в глубину, в ширину или эвристический) и некоторое искусственное окончание перебора вершин в игровом дереве: например, ограничивается время перебора или же глубина поиска.
В построенном таким образом частичном дереве игры оцениваются вершины, [...]]]></description>
			<content:encoded><![CDATA[<h3><span style="font-size: 12.0pt; mso-bidi-font-size: 10.0pt;">Минимаксная процедура</span></h3>
<p class="MsoNormal" style="text-align: justify; text-indent: 42.55pt;"><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;">С целью поиска достаточно хорошего первого хода просматривается обычно часть игрового дерева, построенного от заданной конфигурации. Для этого применяется один из переборных алгоритмов (в глубину, в ширину или эвристический) и некоторое искусственное окончание перебора вершин в игровом дереве: например, ограничивается время перебора или же глубина поиска.</span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 42.55pt;"><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;">В построенном таким образом частичном дереве игры оцениваются вершины, и по полученным оценкам определяется наилучший ход от заданной игровой конфигурации. При этом для оценивания концевых вершин (листьев) полученного дерева используется так называемая <strong style="mso-bidi-font-weight: normal;"><em style="mso-bidi-font-style: normal;">статическая оценочная функция</em></strong>, а для оценивания остальных вершин – корневой (начальной) и промежуточных между корневой и концевыми вершинами – используется так называемый <strong style="mso-bidi-font-weight: normal;"><em style="mso-bidi-font-style: normal;">минимаксный</em></strong> <strong style="mso-bidi-font-weight: normal;"><em style="mso-bidi-font-style: normal;">принцип</em></strong>.<span id="more-1095"></span></span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;">Статическая оценочная функция, будучи применена к некоторой вершине-конфигурации игры, дает числовое значение, оценивающее различные достоинства этой игровой позиции. Например, для шашек могут учитываться такие (статические) элементы конфигурации игры, как продвинутость и подвижность шашек, количество дамок, контроль ими центра и проч. По сути, статическая функция вычисляет эвристическую оценку шансов на выигрыш одного из игроков. Для определенности будем рассматривать задачу выигрыша игрока ПЛЮС и соответственно поиска достаточно хорошего его первого хода от заданной конфигурации.</span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 42.55pt;"><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;">Будем придерживаться общепринятого соглашения, по которому значение статической оценочной функции тем больше, чем больше преимуществ имеет игрок ПЛЮС (над игроком МИНУС) в оцениваемой позиции. Очень часто оценочная функция выбирается следующим образом:</span></p>
<p class="MsoNormal" style="margin-left: 18.0pt; text-align: justify; text-indent: -18.0pt; mso-list: l0 level1 lfo1;"><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7.0pt &quot;Times New Roman&quot;;"> </span></span></span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;">статическая оценочная функция положительна в игровых конфигурациях, где<span style="mso-spacerun: yes;"> </span>игрок ПЛЮС имеет преимущества;</span></p>
<p class="MsoNormal" style="margin-left: 18.0pt; text-align: justify; text-indent: -18.0pt; mso-list: l0 level1 lfo1;"><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7.0pt &quot;Times New Roman&quot;;"> </span></span></span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;">статическая оценочная функция отрицательна в конфигурациях, где МИНУС имеет преимущества;</span></p>
<p class="MsoNormal" style="margin-left: 18.0pt; text-align: justify; text-indent: -18.0pt; mso-list: l0 level1 lfo1;"><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7.0pt &quot;Times New Roman&quot;;"> </span></span></span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;">статическая оценочная функция близка к нулю в позициях, не дающих преимущества ни одному из игроков.</span></p>
<p class="MsoNormal" style="text-align: justify;"><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;">Например, для шашек в качестве простейшей статической функции может быть взят перевес в количестве шашек (и дамок) у игрока ПЛЮС. Для игры «крестики-нолики» на фиксированном квадрате возможна такая статическая оценочная функция:</span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 36.0pt;"><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-char-type: symbol; mso-symbol-font-family: Symbol;"><span style="mso-char-type: symbol; mso-symbol-font-family: Symbol;">ì</span></span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span><strong style="mso-bidi-font-weight: normal;">+</strong></span><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-char-type: symbol; mso-symbol-font-family: Symbol;"><span style="mso-char-type: symbol; mso-symbol-font-family: Symbol;">¥</span></span></strong><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;"><span style="mso-tab-count: 2;"> </span>если </span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; mso-ansi-language: EN-US;" lang="EN-US">P</span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;"> есть позиция выигрыша игрока ПЛЮС</span></p>
<p class="MsoNormal" style="text-align: justify;"><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; mso-ansi-language: EN-US;" lang="EN-US">E</span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;">(</span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; mso-ansi-language: EN-US;" lang="EN-US">P</span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;">) =<span style="mso-spacerun: yes;"> </span><span style="mso-tab-count: 1;"> </span></span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-char-type: symbol; mso-symbol-font-family: Symbol;"><span style="mso-char-type: symbol; mso-symbol-font-family: Symbol;">í</span></span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span></span><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-char-type: symbol; mso-symbol-font-family: Symbol;"><span style="mso-char-type: symbol; mso-symbol-font-family: Symbol;">-</span></span></strong><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-char-type: symbol; mso-symbol-font-family: Symbol;"><span style="mso-char-type: symbol; mso-symbol-font-family: Symbol;">¥</span></span></strong><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;"><span style="mso-tab-count: 2;"> </span>если P есть позиция выигрыша МИНУСа</span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 36.0pt;"><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-ansi-language: EN-US; mso-char-type: symbol; mso-symbol-font-family: Symbol;" lang="EN-US"><span style="mso-char-type: symbol; mso-symbol-font-family: Symbol;">î</span></span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span>(</span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; mso-ansi-language: EN-US;" lang="EN-US">N<sub>L</sub></span><strong style="mso-bidi-font-weight: normal;"><sup><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;">+</span></sup></strong><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;"> +</span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; mso-ansi-language: EN-US;" lang="EN-US">N<sub>C</sub></span><strong style="mso-bidi-font-weight: normal;"><sup><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;">+</span></sup></strong><strong style="mso-bidi-font-weight: normal;"><sub><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;">­</span></sub></strong><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;"> +</span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; mso-ansi-language: EN-US;" lang="EN-US">N<sub>D</sub></span><strong style="mso-bidi-font-weight: normal;"><sup><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;">+</span></sup></strong><sup><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;"> </span></sup><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;">)</span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-ansi-language: EN-US; mso-char-type: symbol; mso-symbol-font-family: Symbol;" lang="EN-US"><span style="mso-char-type: symbol; mso-symbol-font-family: Symbol;">-</span></span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;">(</span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; mso-ansi-language: EN-US;" lang="EN-US">N<sub>L</sub></span><strong style="mso-bidi-font-weight: normal;"><sup><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-ansi-language: EN-US; mso-char-type: symbol; mso-symbol-font-family: Symbol;" lang="EN-US"><span style="mso-char-type: symbol; mso-symbol-font-family: Symbol;">-</span></span></sup></strong><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;"> +</span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; mso-ansi-language: EN-US;" lang="EN-US">N<sub>C</sub></span><strong style="mso-bidi-font-weight: normal;"><sup><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-ansi-language: EN-US; mso-char-type: symbol; mso-symbol-font-family: Symbol;" lang="EN-US"><span style="mso-char-type: symbol; mso-symbol-font-family: Symbol;">-</span></span></sup></strong><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;"> +</span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; mso-ansi-language: EN-US;" lang="EN-US">N<sub>D</sub></span><strong style="mso-bidi-font-weight: normal;"><sup><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-ansi-language: EN-US; mso-char-type: symbol; mso-symbol-font-family: Symbol;" lang="EN-US"><span style="mso-char-type: symbol; mso-symbol-font-family: Symbol;">-</span></span></sup></strong><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;">) <span style="mso-tab-count: 1;"> </span>в остальных случаях</span></p>
<p class="MsoNormal" style="text-align: justify;"><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;">где <span style="mso-tab-count: 1;"> </span><strong style="mso-bidi-font-weight: normal;">+</strong></span><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-char-type: symbol; mso-symbol-font-family: Symbol;"><span style="mso-char-type: symbol; mso-symbol-font-family: Symbol;">¥</span></span></strong><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;"> </span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-char-type: symbol; mso-symbol-font-family: Symbol;"><span style="mso-char-type: symbol; mso-symbol-font-family: Symbol;">-</span></span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;"> очень большое положительное число;</span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 36.0pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-char-type: symbol; mso-symbol-font-family: Symbol;"><span style="mso-char-type: symbol; mso-symbol-font-family: Symbol;">-</span></span></strong><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-char-type: symbol; mso-symbol-font-family: Symbol;"><span style="mso-char-type: symbol; mso-symbol-font-family: Symbol;">¥</span></span></strong><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;"> </span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-char-type: symbol; mso-symbol-font-family: Symbol;"><span style="mso-char-type: symbol; mso-symbol-font-family: Symbol;">-</span></span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;"> очень маленькое отрицательное число;</span></p>
<p class="MsoNormal" style="margin-left: 42.55pt; text-align: justify; text-indent: .2pt;"><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; mso-ansi-language: EN-US;" lang="EN-US">N<sub>L</sub></span><strong style="mso-bidi-font-weight: normal;"><sup><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;">+</span></sup></strong><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;">, </span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; mso-ansi-language: EN-US;" lang="EN-US">N<sub>C</sub></span><strong style="mso-bidi-font-weight: normal;"><sup><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;">+</span></sup></strong><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;">, </span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; mso-ansi-language: EN-US;" lang="EN-US">N<sub>D</sub></span><strong style="mso-bidi-font-weight: normal;"><sup><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;">+</span></sup></strong><sup><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;"> </span></sup><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span></span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-char-type: symbol; mso-symbol-font-family: Symbol;"><span style="mso-char-type: symbol; mso-symbol-font-family: Symbol;">-</span></span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;"> соответственно число строк, столбцов и диагоналей, «открытых» для игрока ПЛЮС (т.е. где он еще может поставить три выигрышных крестика подряд),</span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 42.55pt;"><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;">а<span style="mso-spacerun: yes;"> </span></span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; mso-ansi-language: EN-US;" lang="EN-US">N<sub>L</sub></span><strong style="mso-bidi-font-weight: normal;"><sup><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-ansi-language: EN-US; mso-char-type: symbol; mso-symbol-font-family: Symbol;" lang="EN-US"><span style="mso-char-type: symbol; mso-symbol-font-family: Symbol;">-</span></span></sup></strong><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;">, </span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; mso-ansi-language: EN-US;" lang="EN-US">N<sub>C</sub></span><strong style="mso-bidi-font-weight: normal;"><sup><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-ansi-language: EN-US; mso-char-type: symbol; mso-symbol-font-family: Symbol;" lang="EN-US"><span style="mso-char-type: symbol; mso-symbol-font-family: Symbol;">-</span></span></sup></strong><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;">, </span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; mso-ansi-language: EN-US;" lang="EN-US">N<sub>D</sub></span><strong style="mso-bidi-font-weight: normal;"><sup><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-ansi-language: EN-US; mso-char-type: symbol; mso-symbol-font-family: Symbol;" lang="EN-US"><span style="mso-char-type: symbol; mso-symbol-font-family: Symbol;">-</span></span></sup></strong><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;" lang="EN-US"> </span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-char-type: symbol; mso-symbol-font-family: Symbol;"><span style="mso-char-type: symbol; mso-symbol-font-family: Symbol;">-</span></span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;"> аналогичные числа для игрока МИНУС. </span></p>
<p class="MsoNormal" style="text-align: justify;"><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;">На рис. 3 приведены две игровые позиции (на квадрате 4</span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-char-type: symbol; mso-symbol-font-family: Symbol;"><span style="mso-char-type: symbol; mso-symbol-font-family: Symbol;">´</span></span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;">4) и соответствующие значения статической оценочной функции.</span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 42.55pt;"><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;"> <a href="http://www.studcode.ru/wp-content/uploads/2010/10/clip_image004.gif"><img class="aligncenter size-full wp-image-1096" title="clip_image004" src="http://www.studcode.ru/wp-content/uploads/2010/10/clip_image004.gif" alt="clip_image004" width="316" height="169" /></a></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 72.0pt;"><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;"> </span></p>
<p class="MsoBodyTextIndent3">Подчеркнем, что с помощью статической оценочной функции оцениваются только концевые вершины дерева игры, для оценок же промежуточных вершин, как и начальной вершины, используется минимаксный принцип, основанный на следующей простой идее. Если бы игроку ПЛЮС пришлось бы выбирать один из нескольких возможных ходов, то он выбрал бы наиболее сильный ход, т.е. ход, приводящий к позиции с наибольшей оценкой. Аналогично, если бы игроку МИНУС пришлось бы выбирать ход, то он выбрал бы ход, приводящий к позиции с наименьшей оценкой.</p>
<p class="MsoNormal" style="text-align: justify; text-indent: 42.55pt;"><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;">Сформулируем теперь сам <span style="text-decoration: underline;">минимаксный принцип</span>:</span></p>
<p class="MsoNormal" style="margin-left: 21.75pt; text-align: justify; text-indent: 0cm; mso-list: l0 level1 lfo2;"><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;"><span style="mso-list: Ignore;">*<span style="font: 7.0pt &quot;Times New Roman&quot;;"> </span></span></span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span>ИЛИ-вершине дерева игры приписывается оценка, равная максимуму оценок ее дочерних вершин;</span></p>
<p class="MsoNormal" style="margin-left: 21.75pt; text-align: justify; text-indent: 0cm; mso-list: l0 level1 lfo2;"><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;"><span style="mso-list: Ignore;">*<span style="font: 7.0pt &quot;Times New Roman&quot;;"> </span></span></span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;"><span style="mso-spacerun: yes;"> </span>И-вершине игрового дерева приписывается оценка, равная минимуму оценок ее дочерних вершин.</span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 14.2pt;"><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;">Минимаксный принцип положен в основу <strong style="mso-bidi-font-weight: normal;"><em style="mso-bidi-font-style: normal;">минимаксной процедуры</em></strong>, предназначенной для определения наилучшего (более точно, достаточно хорошего) хода игрока исходя из заданной конфигурации игры </span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; mso-ansi-language: EN-US;" lang="EN-US">S</span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;"> при фиксированной глубине поиска </span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; mso-ansi-language: EN-US;" lang="EN-US">N</span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;"> в игровом дереве. Предполагается, что игрок ПЛЮС ходит первым (т.е. начальная вершина есть ИЛИ-вершина). Основные этапы этой процедуры таковы:</span></p>
<p class="MsoNormal" style="margin-left: 14.15pt; text-align: justify; text-indent: -14.15pt; mso-list: l1 level1 lfo3;"><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;"><span style="mso-list: Ignore;">1.<span style="font: 7.0pt &quot;Times New Roman&quot;;"> </span></span></span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;">Дерево игры строится (просматривается) одним из известных алгоритмов перебора (как правило, алгоритмом поиска вглубь) от исходной позиции </span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; mso-ansi-language: EN-US;" lang="EN-US">S</span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;"> до глубины </span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; mso-ansi-language: EN-US;" lang="EN-US">N</span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;">;</span></p>
<p class="MsoNormal" style="margin-left: 14.15pt; text-align: justify; text-indent: -14.15pt; mso-list: l1 level1 lfo4;"><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;"><span style="mso-list: Ignore;">2.<span style="font: 7.0pt &quot;Times New Roman&quot;;"> </span></span></span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;">Все концевые вершины полученного дерева, т.е. вершины, находящиеся на глубине </span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; mso-ansi-language: EN-US;" lang="EN-US">N</span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;">, оцениваются с помощью статической оценочной функции;</span></p>
<p class="MsoNormal" style="margin-left: 14.15pt; text-align: justify; text-indent: -14.15pt; mso-list: l1 level1 lfo4;"><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;"><span style="mso-list: Ignore;">3.<span style="font: 7.0pt &quot;Times New Roman&quot;;"> </span></span></span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;">В соответствии с минимаксным принципом вычисляются оценки всех остальных вершин: сначала вычисляются оценки вершин, родительских для концевых, затем родительских для этих родительских вершин и так далее; таким образом оценивание вершин происходит при движении снизу вверх по дереву поиска </span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-char-type: symbol; mso-symbol-font-family: Symbol;"><span style="mso-char-type: symbol; mso-symbol-font-family: Symbol;">-</span></span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;"> до тех пор, пока не будут оценены вершины, дочерние для начальной вершины, т.е. для исходной конфигурации </span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; mso-ansi-language: EN-US;" lang="EN-US">S</span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;">;</span></p>
<p class="MsoNormal" style="margin-left: 14.15pt; text-align: justify; text-indent: -14.15pt; mso-list: l1 level1 lfo4;"><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;"><span style="mso-list: Ignore;">4.<span style="font: 7.0pt &quot;Times New Roman&quot;;"> </span></span></span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;">Среди вершин, дочерних к начальной, выбирается вершина с наибольшей оценкой: ход, который к ней ведет, и есть искомый наилучший ход в игровой конфигурации </span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; mso-ansi-language: EN-US;" lang="EN-US">S</span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;">.</span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 72.0pt;"><a href="http://www.studcode.ru/wp-content/uploads/2010/10/clip_image0041.gif"><img class="aligncenter size-full wp-image-1097" title="clip_image0041" src="http://www.studcode.ru/wp-content/uploads/2010/10/clip_image0041.gif" alt="clip_image0041" width="366" height="185" /></a></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 42.55pt;"><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;">На рис. 4 показано применение минимаксной процедуры для дерева игры, построенного до глубины </span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; mso-ansi-language: EN-US;" lang="EN-US">N</span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;">=3. Концевые вершины не имеют имен, они обозначены своими оценками </span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; font-family: Symbol; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;; mso-char-type: symbol; mso-symbol-font-family: Symbol;"><span style="mso-char-type: symbol; mso-symbol-font-family: Symbol;">-</span></span><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;"> значениями статической оценочной функции. Числовые индексы имен остальных вершин показывают порядок, в котором эти вершины строились алгоритмом перебора вглубь. Рядом с этими вершинами находятся их минимаксные оценки, полученные при движении в обратном (по отношению к построению дерева) направлении. Таким образом, наилучший ход – первый из двух возможных.</span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 42.55pt;"><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;">На рассматриваемом игровом дереве выделена ветвь (последовательность ходов игроков), представляющая так называемую <em style="mso-bidi-font-style: normal;">минимаксно-оптимальную</em> игру, при которой каждый из игроков всегда выбирает наилучший для себя ход. Заметим, что оценки всех вершин этой ветви дерева совпадают, и оценка начальной вершины равна оценке концевой вершины этой ветви.</span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 42.55pt;"><span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt;">В принципе статическую оценочную функцию можно было бы применить и к промежуточным вершинам, и на основе этих оценок осуществить выбор наилучшего первого хода, например, сразу выбрать ход, максимизирующий значение статической оценочной функции среди вершин, дочерних к исходной. Однако считается, что оценки, полученные с помощью минимаксной процедуры, есть более надежные меры относительного достоинства промежуточных вершин, чем оценки, полученные прямым применением статической оценочной функции. Действительно, минимаксные оценки основаны на просмотре игры вперед и учитывают разные особенности, которые могут возникнуть в последующем, в то время как простое применение оценочной функции учитывает лишь свойства позиции как таковой. Это отличие статических и минимаксных оценок существенно для «активных», динамичных позиций игры (например, в шашках и шахматах к ним относятся конфигурации, в которых возникает угроза взятия одной или нескольких фигур). В случае же так называемых «пассивных», спокойных позиций статическая оценка может мало отличаться от оценки по минимаксному принципу.</span></p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">
<h3><span style="font-size:12.0pt;mso-bidi-font-size:10.0pt">Минимаксная процедура</span></h3>
<p class="MsoNormal" style="text-align:justify;text-indent:42.55pt"><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt">С целью поиска достаточно хорошего первого хода просматривается обычно часть игрового дерева, построенного от заданной конфигурации. Для этого применяется один из переборных алгоритмов (в глубину, в ширину или эвристический) и некоторое искусственное окончание перебора вершин в игровом дереве: например, ограничивается время перебора или же глубина поиска.</span></p>
<p class="MsoNormal" style="text-align:justify;text-indent:42.55pt"><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt">В построенном таким образом частичном дереве игры оцениваются вершины, и по полученным оценкам определяется наилучший ход от заданной игровой конфигурации. При этом для оценивания концевых вершин (листьев) полученного дерева используется так называемая <strong style="mso-bidi-font-weight:normal"><em style="mso-bidi-font-style:normal">статическая оценочная функция</em></strong>, а для оценивания остальных вершин – корневой (начальной) и промежуточных между корневой и концевыми вершинами – используется так называемый <strong style="mso-bidi-font-weight:normal"><em style="mso-bidi-font-style:&#xd;&#xa;normal">минимаксный</em></strong> <strong style="mso-bidi-font-weight:normal"><em style="mso-bidi-font-style:normal">принцип</em></strong>.</span></p>
<p class="MsoNormal" style="text-align:justify;text-indent:42.55pt"><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt">Статическая оценочная функция, будучи применена к некоторой вершине-конфигурации игры, дает числовое значение, оценивающее различные достоинства этой игровой позиции. Например, для шашек могут учитываться такие (статические) элементы конфигурации игры, как продвинутость и подвижность шашек, количество дамок, контроль ими центра и проч. По сути, статическая функция вычисляет эвристическую оценку шансов на выигрыш одного из игроков. Для определенности будем рассматривать задачу выигрыша игрока ПЛЮС и соответственно поиска достаточно хорошего его первого хода от заданной конфигурации.</span></p>
<p class="MsoNormal" style="text-align:justify;text-indent:42.55pt"><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt">Будем придерживаться общепринятого соглашения, по которому значение статической оценочной функции тем больше, чем больше преимуществ имеет игрок ПЛЮС (над игроком МИНУС) в оцениваемой позиции. Очень часто оценочная функция выбирается следующим образом:</span></p>
<p class="MsoNormal" style="margin-left:18.0pt;text-align:justify;text-indent:&#xd;&#xa;-18.0pt;mso-list:l0 level1 lfo1"><span style="font-size:&#xd;&#xa;11.0pt;mso-bidi-font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:&#xd;&#xa;Symbol;mso-bidi-font-family:Symbol"><span style="mso-list:Ignore">·<span style="font:7.0pt "> </span></span></span><span style="font-size:11.0pt;mso-bidi-font-size:&#xd;&#xa;10.0pt">статическая оценочная функция положительна в игровых конфигурациях, где<span style="mso-spacerun:yes"> </span>игрок ПЛЮС имеет преимущества;</span></p>
<p class="MsoNormal" style="margin-left:18.0pt;text-align:justify;text-indent:&#xd;&#xa;-18.0pt;mso-list:l0 level1 lfo1"><span style="font-size:&#xd;&#xa;11.0pt;mso-bidi-font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:&#xd;&#xa;Symbol;mso-bidi-font-family:Symbol"><span style="mso-list:Ignore">·<span style="font:7.0pt "> </span></span></span><span style="font-size:11.0pt;mso-bidi-font-size:&#xd;&#xa;10.0pt">статическая оценочная функция отрицательна в конфигурациях, где МИНУС имеет преимущества;</span></p>
<p class="MsoNormal" style="margin-left:18.0pt;text-align:justify;text-indent:&#xd;&#xa;-18.0pt;mso-list:l0 level1 lfo1"><span style="font-size:&#xd;&#xa;11.0pt;mso-bidi-font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:&#xd;&#xa;Symbol;mso-bidi-font-family:Symbol"><span style="mso-list:Ignore">·<span style="font:7.0pt "> </span></span></span><span style="font-size:11.0pt;mso-bidi-font-size:&#xd;&#xa;10.0pt">статическая оценочная функция близка к нулю в позициях, не дающих преимущества ни одному из игроков.</span></p>
<p class="MsoNormal" style="text-align:justify"><span style="font-size:11.0pt;&#xd;&#xa;mso-bidi-font-size:10.0pt">Например, для шашек в качестве простейшей статической функции может быть взят перевес в количестве шашек (и дамок) у игрока ПЛЮС. Для игры «крестики-нолики» на фиксированном квадрате возможна такая статическая оценочная функция:</span></p>
<p class="MsoNormal" style="text-align:justify;text-indent:36.0pt"><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;font-family:Symbol;&#xd;&#xa;mso-ascii-font-family:"><span style="mso-char-type:&#xd;&#xa;symbol;mso-symbol-font-family:Symbol">ì</span></span><span style="font-size:&#xd;&#xa;11.0pt;mso-bidi-font-size:10.0pt"><span style="mso-spacerun:yes"> </span><strong style="mso-bidi-font-weight:normal">+</strong></span><strong style="mso-bidi-font-weight:&#xd;&#xa;normal"><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;font-family:&#xd;&#xa;Symbol;mso-ascii-font-family:"><span style="mso-char-type:&#xd;&#xa;symbol;mso-symbol-font-family:Symbol">¥</span></span></strong><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt"><span style="mso-tab-count:&#xd;&#xa;2"> </span>если </span><span style="font-size:11.0pt;&#xd;&#xa;mso-bidi-font-size:10.0pt;mso-ansi-language:EN-US" lang="EN-US">P</span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt"> есть позиция выигрыша игрока ПЛЮС</span></p>
<p class="MsoNormal" style="text-align:justify"><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;mso-ansi-language:EN-US" lang="EN-US">E</span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt">(</span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;mso-ansi-language:EN-US" lang="EN-US">P</span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt">) =<span style="mso-spacerun:yes"> </span><span style="mso-tab-count:1"> </span></span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;font-family:Symbol;&#xd;&#xa;mso-ascii-font-family:"><span style="mso-char-type:&#xd;&#xa;symbol;mso-symbol-font-family:Symbol">í</span></span><span style="font-size:&#xd;&#xa;11.0pt;mso-bidi-font-size:10.0pt"><span style="mso-spacerun:yes"> </span></span><strong style="mso-bidi-font-weight:normal"><span style="font-size:11.0pt;mso-bidi-font-size:&#xd;&#xa;10.0pt;font-family:Symbol;mso-ascii-font-family:"><span style="mso-char-type:symbol;mso-symbol-font-family:Symbol">-</span></span></strong><strong style="mso-bidi-font-weight:normal"><span style="font-size:11.0pt;mso-bidi-font-size:&#xd;&#xa;10.0pt;font-family:Symbol;mso-ascii-font-family:"><span style="mso-char-type:symbol;mso-symbol-font-family:Symbol">¥</span></span></strong><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt"><span style="mso-tab-count:&#xd;&#xa;2"> </span>если P есть позиция выигрыша МИНУСа</span></p>
<p class="MsoNormal" style="text-align:justify;text-indent:36.0pt"><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;font-family:Symbol;&#xd;&#xa;mso-ascii-font-family:" lang="EN-US"><span style="mso-char-type:symbol;mso-symbol-font-family:Symbol">î</span></span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt"><span style="mso-spacerun:yes"> </span>(</span><span style="font-size:&#xd;&#xa;11.0pt;mso-bidi-font-size:10.0pt;mso-ansi-language:EN-US" lang="EN-US">N<sub>L</sub></span><strong style="mso-bidi-font-weight:normal"><sup><span style="font-size:11.0pt;&#xd;&#xa;mso-bidi-font-size:10.0pt">+</span></sup></strong><span style="font-size:11.0pt;&#xd;&#xa;mso-bidi-font-size:10.0pt"> +</span><span style="font-size:11.0pt;&#xd;&#xa;mso-bidi-font-size:10.0pt;mso-ansi-language:EN-US" lang="EN-US">N<sub>C</sub></span><strong style="mso-bidi-font-weight:normal"><sup><span style="font-size:11.0pt;&#xd;&#xa;mso-bidi-font-size:10.0pt">+</span></sup></strong><strong style="mso-bidi-font-weight:&#xd;&#xa;normal"><sub><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt">­</span></sub></strong><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt"> +</span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;mso-ansi-language:EN-US" lang="EN-US">N<sub>D</sub></span><strong style="mso-bidi-font-weight:normal"><sup><span style="font-size:11.0pt;&#xd;&#xa;mso-bidi-font-size:10.0pt">+</span></sup></strong><sup><span style="font-size:11.0pt;&#xd;&#xa;mso-bidi-font-size:10.0pt"> </span></sup><span style="font-size:11.0pt;&#xd;&#xa;mso-bidi-font-size:10.0pt">)</span><span style="font-size:11.0pt;&#xd;&#xa;mso-bidi-font-size:10.0pt;font-family:Symbol;mso-ascii-font-family:" lang="EN-US"><span style="mso-char-type:symbol;&#xd;&#xa;mso-symbol-font-family:Symbol">-</span></span><span style="font-size:11.0pt;&#xd;&#xa;mso-bidi-font-size:10.0pt">(</span><span style="font-size:11.0pt;&#xd;&#xa;mso-bidi-font-size:10.0pt;mso-ansi-language:EN-US" lang="EN-US">N<sub>L</sub></span><strong style="mso-bidi-font-weight:normal"><sup><span style="font-size:&#xd;&#xa;11.0pt;mso-bidi-font-size:10.0pt;font-family:Symbol;mso-ascii-font-family:" lang="EN-US"><span style="mso-char-type:symbol;&#xd;&#xa;mso-symbol-font-family:Symbol">-</span></span></sup></strong><span style="font-size:&#xd;&#xa;11.0pt;mso-bidi-font-size:10.0pt"> +</span><span style="font-size:&#xd;&#xa;11.0pt;mso-bidi-font-size:10.0pt;mso-ansi-language:EN-US" lang="EN-US">N<sub>C</sub></span><strong style="mso-bidi-font-weight:normal"><sup><span style="font-size:&#xd;&#xa;11.0pt;mso-bidi-font-size:10.0pt;font-family:Symbol;mso-ascii-font-family:" lang="EN-US"><span style="mso-char-type:symbol;&#xd;&#xa;mso-symbol-font-family:Symbol">-</span></span></sup></strong><span style="font-size:&#xd;&#xa;11.0pt;mso-bidi-font-size:10.0pt"> +</span><span style="font-size:&#xd;&#xa;11.0pt;mso-bidi-font-size:10.0pt;mso-ansi-language:EN-US" lang="EN-US">N<sub>D</sub></span><strong style="mso-bidi-font-weight:normal"><sup><span style="font-size:&#xd;&#xa;11.0pt;mso-bidi-font-size:10.0pt;font-family:Symbol;mso-ascii-font-family:" lang="EN-US"><span style="mso-char-type:symbol;&#xd;&#xa;mso-symbol-font-family:Symbol">-</span></span></sup></strong><span style="font-size:&#xd;&#xa;11.0pt;mso-bidi-font-size:10.0pt">) <span style="mso-tab-count:1"> </span>в остальных случаях</span></p>
<p class="MsoNormal" style="text-align:justify"><span style="font-size:11.0pt;&#xd;&#xa;mso-bidi-font-size:10.0pt">где <span style="mso-tab-count:1"> </span><strong style="mso-bidi-font-weight:normal">+</strong></span><strong style="mso-bidi-font-weight:&#xd;&#xa;normal"><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;font-family:&#xd;&#xa;Symbol;mso-ascii-font-family:"><span style="mso-char-type:&#xd;&#xa;symbol;mso-symbol-font-family:Symbol">¥</span></span></strong><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt"> </span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;font-family:Symbol;&#xd;&#xa;mso-ascii-font-family:"><span style="mso-char-type:&#xd;&#xa;symbol;mso-symbol-font-family:Symbol">-</span></span><span style="font-size:&#xd;&#xa;11.0pt;mso-bidi-font-size:10.0pt"> очень большое положительное число;</span></p>
<p class="MsoNormal" style="text-align:justify;text-indent:36.0pt"><strong style="mso-bidi-font-weight:normal"><span style="font-size:11.0pt;mso-bidi-font-size:&#xd;&#xa;10.0pt;font-family:Symbol;mso-ascii-font-family:"><span style="mso-char-type:symbol;mso-symbol-font-family:Symbol">-</span></span></strong><strong style="mso-bidi-font-weight:normal"><span style="font-size:11.0pt;mso-bidi-font-size:&#xd;&#xa;10.0pt;font-family:Symbol;mso-ascii-font-family:"><span style="mso-char-type:symbol;mso-symbol-font-family:Symbol">¥</span></span></strong><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt"> </span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;font-family:Symbol;&#xd;&#xa;mso-ascii-font-family:"><span style="mso-char-type:&#xd;&#xa;symbol;mso-symbol-font-family:Symbol">-</span></span><span style="font-size:&#xd;&#xa;11.0pt;mso-bidi-font-size:10.0pt"> очень маленькое отрицательное число;</span></p>
<p class="MsoNormal" style="margin-left:42.55pt;text-align:justify;text-indent:&#xd;&#xa;.2pt"><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;&#xd;&#xa;mso-ansi-language:EN-US" lang="EN-US">N<sub>L</sub></span><strong style="mso-bidi-font-weight:&#xd;&#xa;normal"><sup><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt">+</span></sup></strong><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt">, </span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;mso-ansi-language:EN-US" lang="EN-US">N<sub>C</sub></span><strong style="mso-bidi-font-weight:normal"><sup><span style="font-size:11.0pt;&#xd;&#xa;mso-bidi-font-size:10.0pt">+</span></sup></strong><span style="font-size:11.0pt;&#xd;&#xa;mso-bidi-font-size:10.0pt">, </span><span style="font-size:11.0pt;&#xd;&#xa;mso-bidi-font-size:10.0pt;mso-ansi-language:EN-US" lang="EN-US">N<sub>D</sub></span><strong style="mso-bidi-font-weight:normal"><sup><span style="font-size:11.0pt;&#xd;&#xa;mso-bidi-font-size:10.0pt">+</span></sup></strong><sup><span style="font-size:11.0pt;&#xd;&#xa;mso-bidi-font-size:10.0pt"> </span></sup><span style="font-size:11.0pt;&#xd;&#xa;mso-bidi-font-size:10.0pt"><span style="mso-spacerun:yes"> </span></span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;font-family:Symbol;&#xd;&#xa;mso-ascii-font-family:"><span style="mso-char-type:&#xd;&#xa;symbol;mso-symbol-font-family:Symbol">-</span></span><span style="font-size:&#xd;&#xa;11.0pt;mso-bidi-font-size:10.0pt"> соответственно число строк, столбцов и диагоналей, «открытых» для игрока ПЛЮС (т.е. где он еще может поставить три выигрышных крестика подряд),</span></p>
<p class="MsoNormal" style="text-align:justify;text-indent:42.55pt"><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt">а<span style="mso-spacerun:yes"> </span></span><span style="font-size:&#xd;&#xa;11.0pt;mso-bidi-font-size:10.0pt;mso-ansi-language:EN-US" lang="EN-US">N<sub>L</sub></span><strong style="mso-bidi-font-weight:normal"><sup><span style="font-size:&#xd;&#xa;11.0pt;mso-bidi-font-size:10.0pt;font-family:Symbol;mso-ascii-font-family:" lang="EN-US"><span style="mso-char-type:symbol;&#xd;&#xa;mso-symbol-font-family:Symbol">-</span></span></sup></strong><span style="font-size:&#xd;&#xa;11.0pt;mso-bidi-font-size:10.0pt">, </span><span style="font-size:&#xd;&#xa;11.0pt;mso-bidi-font-size:10.0pt;mso-ansi-language:EN-US" lang="EN-US">N<sub>C</sub></span><strong style="mso-bidi-font-weight:normal"><sup><span style="font-size:&#xd;&#xa;11.0pt;mso-bidi-font-size:10.0pt;font-family:Symbol;mso-ascii-font-family:" lang="EN-US"><span style="mso-char-type:symbol;&#xd;&#xa;mso-symbol-font-family:Symbol">-</span></span></sup></strong><span style="font-size:&#xd;&#xa;11.0pt;mso-bidi-font-size:10.0pt">, </span><span style="font-size:&#xd;&#xa;11.0pt;mso-bidi-font-size:10.0pt;mso-ansi-language:EN-US" lang="EN-US">N<sub>D</sub></span><strong style="mso-bidi-font-weight:normal"><sup><span style="font-size:&#xd;&#xa;11.0pt;mso-bidi-font-size:10.0pt;font-family:Symbol;mso-ascii-font-family:" lang="EN-US"><span style="mso-char-type:symbol;&#xd;&#xa;mso-symbol-font-family:Symbol">-</span></span></sup></strong><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt" lang="EN-US"> </span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;font-family:Symbol;&#xd;&#xa;mso-ascii-font-family:"><span style="mso-char-type:&#xd;&#xa;symbol;mso-symbol-font-family:Symbol">-</span></span><span style="font-size:&#xd;&#xa;11.0pt;mso-bidi-font-size:10.0pt"> аналогичные числа для игрока МИНУС. </span></p>
<p class="MsoNormal" style="text-align:justify"><span style="font-size:11.0pt;&#xd;&#xa;mso-bidi-font-size:10.0pt">На рис. 3 приведены две игровые позиции (на квадрате 4</span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;font-family:&#xd;&#xa;Symbol;mso-ascii-font-family:"><span style="mso-char-type:&#xd;&#xa;symbol;mso-symbol-font-family:Symbol">´</span></span><span style="font-size:&#xd;&#xa;11.0pt;mso-bidi-font-size:10.0pt">4) и соответствующие значения статической оценочной функции.</span></p>
<p class="MsoNormal" style="text-align:justify;text-indent:42.55pt"><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt"> </span></p>
<p class="MsoNormal" style="text-align:justify;text-indent:72.0pt"><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt"><img src="file:///D:\DOCUME~1\Admin\LOCALS~1\Temp\msohtml1\01\clip_image002.gif" alt="" width="316" height="169" /></span></p>
<p class="MsoBodyTextIndent3">Подчеркнем, что с помощью статической оценочной функции оцениваются только концевые вершины дерева игры, для оценок же промежуточных вершин, как и начальной вершины, используется минимаксный принцип, основанный на следующей простой идее. Если бы игроку ПЛЮС пришлось бы выбирать один из нескольких возможных ходов, то он выбрал бы наиболее сильный ход, т.е. ход, приводящий к позиции с наибольшей оценкой. Аналогично, если бы игроку МИНУС пришлось бы выбирать ход, то он выбрал бы ход, приводящий к позиции с наименьшей оценкой.</p>
<p class="MsoNormal" style="text-align:justify;text-indent:42.55pt"><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt">Сформулируем теперь сам <span style="text-decoration: underline;">минимаксный принцип</span>:</span></p>
<p class="MsoNormal" style="margin-left:21.75pt;text-align:justify;text-indent:&#xd;&#xa;0cm;mso-list:l0 level1 lfo2"><span style="font-size:11.0pt;&#xd;&#xa;mso-bidi-font-size:10.0pt"><span style="mso-list:Ignore">*<span style="font:7.0pt "> </span></span></span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt"><span style="mso-spacerun:yes"> </span>ИЛИ-вершине дерева игры приписывается оценка, равная максимуму оценок ее дочерних вершин;</span></p>
<p class="MsoNormal" style="margin-left:21.75pt;text-align:justify;text-indent:&#xd;&#xa;0cm;mso-list:l0 level1 lfo2"><span style="font-size:11.0pt;&#xd;&#xa;mso-bidi-font-size:10.0pt"><span style="mso-list:Ignore">*<span style="font:7.0pt "> </span></span></span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt"><span style="mso-spacerun:yes"> </span>И-вершине игрового дерева приписывается оценка, равная минимуму оценок ее дочерних вершин.</span></p>
<p class="MsoNormal" style="text-align:justify;text-indent:14.2pt"><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt">Минимаксный принцип положен в основу <strong style="mso-bidi-font-weight:normal"><em style="mso-bidi-font-style:&#xd;&#xa;normal">минимаксной процедуры</em></strong>, предназначенной для определения наилучшего (более точно, достаточно хорошего) хода игрока исходя из заданной конфигурации игры </span><span style="font-size:11.0pt;mso-bidi-font-size:&#xd;&#xa;10.0pt;mso-ansi-language:EN-US" lang="EN-US">S</span><span style="font-size:11.0pt;&#xd;&#xa;mso-bidi-font-size:10.0pt"> при фиксированной глубине поиска </span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;mso-ansi-language:&#xd;&#xa;EN-US" lang="EN-US">N</span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt"> в игровом дереве. Предполагается, что игрок ПЛЮС ходит первым (т.е. начальная вершина есть ИЛИ-вершина). Основные этапы этой процедуры таковы:</span></p>
<p class="MsoNormal" style="margin-left:14.15pt;text-align:justify;text-indent:&#xd;&#xa;-14.15pt;mso-list:l1 level1 lfo3"><span style="font-size:&#xd;&#xa;11.0pt;mso-bidi-font-size:10.0pt"><span style="mso-list:Ignore">1.<span style="font:7.0pt "> </span></span></span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt">Дерево игры строится (просматривается) одним из известных алгоритмов перебора (как правило, алгоритмом поиска вглубь) от исходной позиции </span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;mso-ansi-language:EN-US" lang="EN-US">S</span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt"> до глубины </span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;mso-ansi-language:&#xd;&#xa;EN-US" lang="EN-US">N</span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt">;</span></p>
<p class="MsoNormal" style="margin-left:14.15pt;text-align:justify;text-indent:&#xd;&#xa;-14.15pt;mso-list:l1 level1 lfo4"><span style="font-size:&#xd;&#xa;11.0pt;mso-bidi-font-size:10.0pt"><span style="mso-list:Ignore">2.<span style="font:7.0pt "> </span></span></span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt">Все концевые вершины полученного дерева, т.е. вершины, находящиеся на глубине </span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;mso-ansi-language:&#xd;&#xa;EN-US" lang="EN-US">N</span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt">, оцениваются с помощью статической оценочной функции;</span></p>
<p class="MsoNormal" style="margin-left:14.15pt;text-align:justify;text-indent:&#xd;&#xa;-14.15pt;mso-list:l1 level1 lfo4"><span style="font-size:&#xd;&#xa;11.0pt;mso-bidi-font-size:10.0pt"><span style="mso-list:Ignore">3.<span style="font:7.0pt "> </span></span></span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt">В соответствии с минимаксным принципом вычисляются оценки всех остальных вершин: сначала вычисляются оценки вершин, родительских для концевых, затем родительских для этих родительских вершин и так далее; таким образом оценивание вершин происходит при движении снизу вверх по дереву поиска </span><span style="font-size:11.0pt;mso-bidi-font-size:&#xd;&#xa;10.0pt;font-family:Symbol;mso-ascii-font-family:"><span style="mso-char-type:symbol;mso-symbol-font-family:Symbol">-</span></span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt"> до тех пор, пока не будут оценены вершины, дочерние для начальной вершины, т.е. для исходной конфигурации </span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;&#xd;&#xa;mso-ansi-language:EN-US" lang="EN-US">S</span><span style="font-size:11.0pt;mso-bidi-font-size:&#xd;&#xa;10.0pt">;</span></p>
<p class="MsoNormal" style="margin-left:14.15pt;text-align:justify;text-indent:&#xd;&#xa;-14.15pt;mso-list:l1 level1 lfo4"><span style="font-size:&#xd;&#xa;11.0pt;mso-bidi-font-size:10.0pt"><span style="mso-list:Ignore">4.<span style="font:7.0pt "> </span></span></span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt">Среди вершин, дочерних к начальной, выбирается вершина с наибольшей оценкой: ход, который к ней ведет, и есть искомый наилучший ход в игровой конфигурации </span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;mso-ansi-language:EN-US" lang="EN-US">S</span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt">.</span></p>
<p class="MsoNormal" style="text-align:justify;text-indent:72.0pt"><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt"><img src="file:///D:\DOCUME~1\Admin\LOCALS~1\Temp\msohtml1\01\clip_image004.gif" alt="" width="366" height="185" /></span></p>
<p class="MsoNormal" style="text-align:justify;text-indent:42.55pt"><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt">На рис. 4 показано применение минимаксной процедуры для дерева игры, построенного до глубины </span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;mso-ansi-language:&#xd;&#xa;EN-US" lang="EN-US">N</span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt">=3. Концевые вершины не имеют имен, они обозначены своими оценками </span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;font-family:Symbol;&#xd;&#xa;mso-ascii-font-family:"><span style="mso-char-type:&#xd;&#xa;symbol;mso-symbol-font-family:Symbol">-</span></span><span style="font-size:&#xd;&#xa;11.0pt;mso-bidi-font-size:10.0pt"> значениями статической оценочной функции. Числовые индексы имен остальных вершин показывают порядок, в котором эти вершины строились алгоритмом перебора вглубь. Рядом с этими вершинами находятся их минимаксные оценки, полученные при движении в обратном (по отношению к построению дерева) направлении. Таким образом, наилучший ход – первый из двух возможных.</span></p>
<p class="MsoNormal" style="text-align:justify;text-indent:42.55pt"><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt">На рассматриваемом игровом дереве выделена ветвь (последовательность ходов игроков), представляющая так называемую <em style="mso-bidi-font-style:normal">минимаксно-оптимальную</em> игру, при которой каждый из игроков всегда выбирает наилучший для себя ход. Заметим, что оценки всех вершин этой ветви дерева совпадают, и оценка начальной вершины равна оценке концевой вершины этой ветви.</span></p>
<p class="MsoNormal" style="text-align:justify;text-indent:42.55pt"><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt">В принципе статическую оценочную функцию можно было бы применить и к промежуточным вершинам, и на основе этих оценок осуществить выбор наилучшего первого хода, например, сразу выбрать ход, максимизирующий значение статической оценочной функции среди вершин, дочерних к исходной. Однако считается, что оценки, полученные с помощью минимаксной процедуры, есть более надежные меры относительного достоинства промежуточных вершин, чем оценки, полученные прямым применением статической оценочной функции. Действительно, минимаксные оценки основаны на просмотре игры вперед и учитывают разные особенности, которые могут возникнуть в последующем, в то время как простое применение оценочной функции учитывает лишь свойства позиции как таковой. Это отличие статических и минимаксных оценок существенно для «активных», динамичных позиций игры (например, в шашках и шахматах к ним относятся конфигурации, в которых возникает угроза взятия одной или нескольких фигур). В случае же так называемых «пассивных», спокойных позиций статическая оценка может мало отличаться от оценки по минимаксному принципу.</span></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/minimaksnaya-procedura/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Деревья игры Поиск выигрышной стратегии</title>
		<link>http://www.studcode.ru/archiv/derevya-igry/</link>
		<comments>http://www.studcode.ru/archiv/derevya-igry/#comments</comments>
		<pubDate>Wed, 27 Oct 2010 14:45:22 +0000</pubDate>
		<dc:creator>archey</dc:creator>
				<category><![CDATA[Искусственный интеллект]]></category>
		<category><![CDATA[Конспекты лекций]]></category>
		<category><![CDATA[ии]]></category>
		<category><![CDATA[лекции]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=1093</guid>
		<description><![CDATA[Деревья игры. Поиск выигрышной стратегии
Будем рассматривать класс игр двух лиц с полной информацией. В таких играх участвуют два игрока, которые поочередно делают свои ходы. В любой момент игры каждому игроку известно все, что произошло в игре к этому моменту и что может быть сделано в настоящий момент. Игра заканчивается либо выигрышем одного игрока (и проигрышем [...]]]></description>
			<content:encoded><![CDATA[<h2>Деревья игры. Поиск выигрышной стратегии</h2>
<p>Будем рассматривать класс <strong><em>игр двух лиц с полной информацией</em></strong>. В таких играх участвуют два игрока, которые поочередно делают свои ходы. В любой момент игры каждому игроку известно все, что произошло в игре к этому моменту и что может быть сделано в настоящий момент. Игра заканчивается либо выигрышем одного игрока (и проигрышем другого), либо ничьей.</p>
<p>Таким образом, в рассматриваемый класс не попадают игры, исход которых зависит хотя бы частично от случая &#8211; большинство карточных игр, игральные кости, «морской бой» и проч. Тем не менее класс достаточно широк: в него входят такие игры, как шахматы, шашки, реверси, калах, крестики-нолики и другие игры.<span id="more-1093"></span>Для формализации и изучения игровых стратегий в классе игр с полной информацией может быть использован подход, основанный на редукции задач. Напомним, что при этом должны быть определены следующие составляющие: форма описания задач и подзадач; операторы, сводящие задачи к подзадачам; элементарные задачи; а также задано описание исходной задачи.</p>
<p>Наиболее интересной представляется задача поиска выигрышной стратегии для одного из игроков, отправляясь от некоторой конкретной конфигурации (позиции) игры (не обязательно начальной). При использовании подхода, основанного на редукции задач, выигрышная стратегия ищется  в процессе доказательства того, что игра может быть выиграна. Аналогично, поиск ничейной стратегии, исходя из некоторой конкретной позиции, ведется в процессе доказательства  того, что игра может быть сведена к ничьей.</p>
<p>Ясно, что описание решаемой задачи должно содержать описание конфигурации игры, для которой ищется нужная стратегия. Например, в шашках игровая позиция включает задание  положений на доске всех шашек, в том числе дамок. Обычно описание конфигурации содержит также указание, кому принадлежит следующий ход.</p>
<p>В большинстве игр, представляющих интерес, таких как шашки и шахматы, построить полные решающие деревья и найти полные игровые стратегии не представляется возможным. Например, для шашек число вершин в полном игровом дереве оценивается величиной порядка 10<sup>40</sup>, и просмотреть такое дерево практически нереально. Алгоритмы же упорядоченного перебора с применением эвристик не настолько уменьшают просматриваемую часть дерева игры, чтобы дать существенное, на несколько порядков, сокращение времени поиска.</p>
<p>Тем не менее для неполных игр в шашки и шахматы (например, для эндшпилей), так же как и для всех несложных игр, таких как  «крестики-нолики» на фиксированном квадрате небольшого размера, можно успешно применять алгоритмы поиска на И/ИЛИ-графах, позволяющие обнаруживать выигрышные и ничейные игровые стратегии.</p>
<p>Рассмотрим, к примеру, игру «крестики-нолики» на квадрате 3´3. Игрок ПЛЮС ходит первым и ставит крестики, а МИНУС &#8211; нолики. Игра заканчивается, когда составлена либо строка, либо столбец, либо диагональ из крестиков (в этом случае выигрывает ПЛЮС) или ноликов (выигрывает МИНУС). Оценим размер полного дерева игры: начальная вершина имеет 9 дочерних вершин, каждая из которых в свою очередь &#8211; 8 дочерних; каждая вершина глубины 2 имеет 7 дочерних и т.д. Таким образом, число концевых вершин в дереве игры равно 9!=362880, но многие пути в этом дереве обрываются раньше на заключительных вершинах. Значит, в этой игре возможен полный просмотр дерева и нахождение выигрышной стратегии. Однако ситуация изменится при существенном увеличении размеров квадрата или же в случае неограниченного поля игры.</p>
<p>В таких случаях, как и во всех сложных играх вместо нереальной задачи поиска полной игровой стратегии решается, как правило, более простая задача &#8211; поиск для заданной позиции игры достаточно хорошего первого хода.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/derevya-igry/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Эвристические методы поиска</title>
		<link>http://www.studcode.ru/archiv/evristicheskie-metody-poiska/</link>
		<comments>http://www.studcode.ru/archiv/evristicheskie-metody-poiska/#comments</comments>
		<pubDate>Tue, 26 Oct 2010 20:03:22 +0000</pubDate>
		<dc:creator>archey</dc:creator>
				<category><![CDATA[Искусственный интеллект]]></category>
		<category><![CDATA[Конспекты лекций]]></category>
		<category><![CDATA[ии]]></category>
		<category><![CDATA[лекции]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=1091</guid>
		<description><![CDATA[Эвристические методы поиска
Идея, лежащая в основе большинства эвристических алгоритмов, состоит в том, чтобы оценивать с помощью эвристической информации перспективность нераскрытых вершин пространства состояний (с точки зрения достижения цели), и выбирать для продолжения поиска наиболее перспективную вершину. Самый обычный способ использования эвристической информации – введение так называемой эвристической оценочной функции. Эта функция определяется на множестве вершин [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Эвристические методы поиска</strong></p>
<p>Идея, лежащая в основе большинства эвристических алгоритмов, состоит в том, чтобы оценивать с помощью эвристической информации перспективность нераскрытых вершин пространства состояний (с точки зрения достижения цели), и выбирать для продолжения поиска наиболее перспективную вершину. Самый обычный способ использования эвристической информации – введение так называемой <strong><em>эвристической оценочной функции</em></strong>. Эта функция определяется на множестве вершин пространства состояний и принимает числовые значения. Значение эвристической оценочной функции Est(V) может интерпретироваться как перспективность раскрытия вершины (иногда – как вероятность ее расположения на решающем пути). Обычно считают, что меньшее значение Est(V) соответствует более перспективной вершине, и вершины раскрываются в порядке увеличения (точнее, неубывания) значения оценочной функции.</p>
<p><span id="more-1091"></span>Алгоритм эвристического перебора</p>
<p>Последовательность шагов формулируемого ниже базового <strong><em>алгоритма</em></strong> <strong><em>эвристического (упорядоченного)  перебора</em></strong> похожа на последовательность шагов алгоритмов слепого перебора, отличие заключается в использовании эвристической оценочной функции. После порождения нового состояния-вершины производится его оценивание (т.е. вычисление значения этой функции), и списки открытых и закрытых вершин должны содержать кроме самих вершин их оценки, которые и используются для упорядочения поиска.</p>
<p>Для раскрытия каждый раз в цикле выбирается наиболее перспективная концевая вершина дерева перебора. Также как и в случае алгоритмов слепого поиска множество порождаемых алгоритмом вершин и указателей образует дерево, в листьях которого находятся нераскрытые вершины.</p>
<p>Предполагаем, что исследуемое алгоритмом пространство состояний представляет собой дерево. Тогда основные шаги <strong><span style="text-decoration: underline;">алгоритма эвристического перебора</span></strong> (<em>best_first_search</em>) таковы:</p>
<p><strong>Шаг 1.</strong> Поместить начальную вершину в список нераскрытых вершин <strong>Open</strong> и вычислить ее оценку.</p>
<p><strong>Шаг 2.</strong> Если список <strong>Open</strong> пуст, то окончание алгоритма и выдача сообщения о неудаче поиска, в противном случае перейти к шагу 3.</p>
<p><strong>Шаг 3.</strong> Выбрать из списка <strong>Open</strong> вершину с <span style="text-decoration: underline;">минимальной оценкой</span> (среди вершин с одинаковой минимальной оценкой выбирается любая); перенести эту вершину (назовем ее <strong>Current)</strong> в список <strong>Closed</strong>.</p>
<p><strong>Шаг 4.</strong> Если <strong>Current</strong> – целевая вершина, то окончание алгоритма и выдача решения задачи, получающегося просмотром указателей от нее к начальной вершине, в противном случае перейти к следующему шагу.</p>
<p><strong>Шаг 5.</strong> Раскрыть вершину <strong>Current</strong>, построив все ее дочерние вершины. Если таких вершин нет, то перейти к шагу 2, в ином случае – к шагу 6.</p>
<p><strong>Шаг 6.</strong> Для каждой дочерней вершины вычислить оценку (значение оценочной функции), поместить все дочерние вершины в список <strong>Open</strong>, и построить указатели, ведущие от этих вершин к родительской вершине <strong>Current</strong>. Перейти к шагу 2.</p>
<p><strong>Конец алгоритма.</strong></p>
<p>Заметим, что поиск в глубину можно рассматривать как частный случай упорядоченного поиска с оценочной функцией Est(V) = d(V) , а поиск в ширину – с функцией Est(V) = 1/d(V) , где d(V) – глубина вершины V.</p>
<p>Чтобы модифицировать рассмотренный алгоритм для перебора на произвольных графах-пространствах состояний, необходимо предусмотреть в нем реакцию на случай построения дочерних вершин, которые уже имеются либо в списке раскрытых, либо в списке нераскрытых вершин.</p>
<p>Если оценочная функция учитывает только внутренние   характеристики вершин-состояний, то для предотвращения зацикливания требуется достаточно простая модификация алгоритма – надо просто исключить  дублирование состояний в списках<strong> Open</strong> и <strong>Closed</strong>.</p>
<p>Проиллюстрируем работу алгоритма эвристического поиска опять же на примере игры в восемь для той же начальной ситуации. Воспользуемся в качестве оценочной следующей простой функцией:</p>
<p>Est1(V) = d(V) + k(V)   , где</p>
<p>d(V) – глубина вершины V, или число ребер дерева на пути от этой вершины к начальной вершине;</p>
<p>k(V) – число фишек позиции-вершины V, стоящих не на «своем» месте (фишка стоит не на «своем» месте, если ее позиция отлична от позиции в целевом состоянии).</p>
<p>На рис. 6 показано дерево, построенное алгоритмом эвристического перебора с указанной оценочной функцией. Оценка каждой вершины приведена рядом с ней внутри кружка. Отдельно стоящие цифры, как и раньше, показывают порядок, в котором строились вершины. Двойной рамкой обведена найденная целевая вершина, она построена двенадцатой.</p>
<p>Видно, что поскольку каждый раз выбор вершины с минимальной оценкой производится внутри всего построенного к текущему моменту дерева перебора, то раскрываемые друг за другом  вершины могут располагаться в отдаленных друг от друга частях дерева. Применяемая оценочная функция такова, что при прочих равных преимущество имеет менее глубокая вершина.</p>
<p>Решение задачи длиною в пять ходов найдено в результате раскрытия 6  и построения 13 вершин – это существенно меньше, чем при использовании слепого перебора (соответствующие числа были: 26 и 46, 18 и 35). Таким образом, использование эвристической информации приводит к существенному сокращению перебора.</p>
<p>Существует несколько критериев оценки качества работы алгоритмов перебора. Один из них называется <em>целенаправленностью</em> и вычисляется как P = L / N , где</p>
<p>L – длина найденного пути до цели (она равна глубине целевой вершины), а</p>
<p>N – общее число вершин, построенных в ходе перебора.</p>
<p>P = 1, если  строятся только вершины решающего пути, в остальных случаях P &lt; 1, вообще, эта величина тем меньше, чем больше строится бесполезных вершин. Таким образом, этот критерий показывает, насколько дерево, построенное при переборе, вытянуто, а не кустисто. К сожалению, величина P зависит от длины решающего пути, что затрудняет порой сравнение алгоритмов. Другой критерий оценки, <em>фактор эффективного ветвления</em>, зависит от длины решающего пути гораздо меньше.</p>
<p>Ясно, что алгоритм эвристического поиска с хорошо подобранной оценочной функцией обнаруживает решение задачи быстрее алгоритмов слепого перебора. Однако подбор удачной функции, существенно сокращающей поиск, – наиболее трудный момент при формализации задачи.</p>
<p>Принято сравнивать различные оценочные функции для одной и той же задачи по их <em>эвристической силе</em>, т.е. по тому, насколько они убыстряют поиск, делают его эффективным. Заметим, что  эвристическая сила функции должна учитывать общий объем вычислительных затрат при поиске, поэтому кроме числа раскрытых и построенных вершин важен и такой фактор, как сложность вычисления самой оценочной функции.</p>
<p>Для игры в восемь можно предложить еще одну эвристическую функцию:</p>
<p>Est2(V) = d(V) + s(V)  .</p>
<p>Первое слагаемое d(V) этой функции имеет тот же смысл, что и для функции Est1. Второе слагаемое получается, если для каждой из восьми фишек подсчитать сумму  двух  расстояний – по вертикали и горизонтали – между клетками, где находится эта фишка в оцениваемом  и целевом состояниях, а затем подсчитать общую сумму s(V)  таких расстояний для всех восьми фишек (тем самым получим «суммарное расстояние» всех фишек от их целевого положения).</p>
<h3>2.4.2.  Упрощенные варианты эвристического перебора</h3>
<p>Сильным упрощением базового алгоритма эвристического поиска с произвольной оценочной функцией является алгоритм <strong><em>«подъема на холм»</em></strong>. Этот алгоритм при каждом раскрытии вершины производит упорядочение (по значению оценочной функции) только порожденных дочерних вершин, и выбирает для последующего раскрытия дочернюю вершину с наименьшей оценкой (а не вершину с наименьшей оценкой среди всех нераскрытых вершин дерева поиска, как в базовом алгоритме). Очевидно, что такой локальный выбор среди только что построенных дочерних вершин реализовать гораздо проще, чем глобальный выбор вершины во всем дереве перебора.</p>
<p>Идея этого алгоритма аналогична идее известного вне области искусственного интеллекта метода «подъема на гору», применяемого для поиска максимума (или минимума) функции. Для того, чтобы в конечном счете найти максимум функции,  на каждом шаге метода производится движение в направлении наибольшей крутизны функции. Для определенного класса функций (имеющих единственный максимум и некоторые другие свойства роста) такое использование локальной информации, т.е. знания направления наиболее крутого подъема в текущей точке, позволяет найти  глобальное решение, т.е. максимум функции.</p>
<p>В алгоритме «подъема на холм» в пространстве состояний роль функции метода «подъема на гору» играет эвристическая оценочная функция, взятая с обратным знаком. Поиск продолжается всегда от той дочерней вершины, которая  имеет меньшее значение эвристической функции (при этом случай, когда вершин с одинаковой минимальной оценкой несколько, является нежелательным).</p>
<p>Алгоритм «подъема на холм» дает тот же результат, что и базовый алгоритм эвристического поиска в тех случаях, когда оценочная функция обладает определенными свойствами, в частности, имеет один (глобальный) экстремум. Алгоритм становится несостоятельным, если у эвристической функции имеется несколько локальных экстремумов. Бывают и другие случаи бесперспективности «подъема на холм»: если поверхность-множество значений функции имеет равнинный участок (как горное «плато») или же участки узкого и длинного возвышения (в виде горного «хребта»), и процесс поиска вывел как раз на них. Таким образом, этот алгоритм имеет ограниченную применимость, но иногда возникающие проблемы можно разрешить, построив более подходящую эвристическую функцию.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/evristicheskie-metody-poiska/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Алгоритмы поиска решения</title>
		<link>http://www.studcode.ru/archiv/algoritmy-poiska-resheniya/</link>
		<comments>http://www.studcode.ru/archiv/algoritmy-poiska-resheniya/#comments</comments>
		<pubDate>Tue, 26 Oct 2010 20:00:49 +0000</pubDate>
		<dc:creator>archey</dc:creator>
				<category><![CDATA[Искусственный интеллект]]></category>
		<category><![CDATA[Конспекты лекций]]></category>
		<category><![CDATA[ии]]></category>
		<category><![CDATA[лекции]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=1087</guid>
		<description><![CDATA[Алгоритмы поиска решения
Классификация алгоритмов
Как уже отмечалось, поиск в пространстве состояний базируется на последовательном построении (переборе) вершин графа состояний – до тех пор, пока не будет обнаружено целевое состояние. Введем несколько терминов, которые будем использовать для описания различных алгоритмов поиска.
Вершину графа, соответствующую начальному состоянию, естественно назвать начальной вершиной, а вершину, соответствующую целевому состоянию – целевой. Как [...]]]></description>
			<content:encoded><![CDATA[<h5>Алгоритмы поиска решения</h5>
<h1>Классификация алгоритмов</h1>
<p>Как уже отмечалось, поиск в пространстве состояний базируется на последовательном построении (переборе) вершин графа состояний – до тех пор, пока не будет обнаружено целевое состояние. Введем несколько терминов, которые будем использовать для описания различных алгоритмов поиска.</p>
<p>Вершину графа, соответствующую начальному состоянию, естественно назвать <strong><em>начальной</em> </strong>вершиной, а вершину, соответствующую целевому состоянию – <strong><em>целевой</em></strong>. Как и ранее, вершины, непосредственно следующие за  некоторой вершиной, т.е. получившиеся в результате применения к последней допустимых операторов, будем называть <em>дочерними</em>, а саму исходную вершину – <em>родительской</em>. Основной операцией, выполняемой при поиске в графе, будем считать <strong><em>раскрытие</em></strong> <strong><em>вершины</em></strong>, что означает порождение (построение) всех ее дочерних вершин, путем применения к соответствующему описанию состояния задачи всех допустимых операторов.<span id="more-1087"></span>Поиска в пространстве состояний можно представить как процесс постепенного раскрытия вершин и проверки свойств порождаемых вершин. Важно, что в ходе этого процесса должны храниться <em>указатели </em>– от всех  возникающих дочерних вершин к их родительским. Именно эти указатели позволят восстановить путь назад к начальной вершине после того, как будет построена целевая вершина. Этот путь, взятый в обратном направлении, точнее, последовательность операторов, соответствующих дугам этого пути, и будет искомым решением задачи.</p>
<p>Вершины и указатели, построенные в процессе поиска, образуют поддерево  всего неявно определенного при формализации задачи графа-пространства состояний. Это поддерево  называется <strong><em>деревом перебора</em></strong>.</p>
<p>Известные алгоритмы поиска в пространстве состояний можно классифицировать по различным характеристикам, а именно:</p>
<ul>
<li>использование эвристической информации;</li>
<li>порядок раскрытия (перебора) вершин;</li>
<li>полнота просмотра пространства состояний;</li>
<li>направление поиска.</li>
</ul>
<p>В соответствии с первой характеристикой алгоритмы делятся на два класса – <strong><em>слепые</em></strong> и <strong><em>эвристические</em></strong>. В слепых алгоритмах поиска местонахождение в пространстве целевой вершины никак не влияет на порядок, в котором раскрываются (перебираются) вершины. В противоположность им, эвристические алгоритмы используют априорную, эвристическую информацию об общем виде графа-пространства и/или о том, где в пространстве состояний расположена цель, поэтому для раскрытия обычно выбирается более перспективная вершина. В общем случае это позволяет сократить перебор.</p>
<p>Два основных вида слепых алгоритмов поиска, различающихся порядком раскрытия вершин – это алгоритмы <strong><em>поиска вширь</em></strong> и<strong><em> поиска вглубь</em></strong>.</p>
<p>Как слепые, так и эвристические алгоритмы поиска могут отличаться полнотой просмотра пространства состояний. <strong><em>Полные</em></strong> алгоритмы перебора при необходимости осуществляют полный просмотр графа-пространства и гарантируют при этом нахождение решения, если таковое существует. В отличие от полных, <strong><em>неполные</em></strong> алгоритмы  просматривают лишь некоторую часть пространства, и если она не содержит целевых вершин, то искомое решение задачи этим алгоритмом найдено не будет.</p>
<p>В соответствии с направлением поиска алгоритмы можно разделить на <strong><em>прямые</em></strong>, ведущие поиск от начальной вершины к целевой, <strong><em>обратные</em></strong>, ведущие поиск от целевой вершины в направлении к начальной, и <strong><em>двунаправленные</em></strong>, чередующие прямой и обратный поиск. Наиболее употребительными (отчасти, в силу их простоты) являются алгоритмы прямого поиска. Обратный поиск возможен в случае обратимости операторов задачи.</p>
<p><strong> </strong></p>
<h5>2.3.2.  Методы слепого (полного) перебора</h5>
<p>Слепые алгоритмы поиска вширь (<em>breadth</em><em>_</em><em>first</em><em>_</em><em>search</em>) и поиска вглубь (<em>depth</em><em>_</em><em>first</em><em>_</em><em>search</em>) отличаются тем, какая вершина выбирается  для очередного раскрытия. В алгоритме перебора вширь вершины раскрываются в том порядке, в котором они строятся. В алгоритме же перебора в глубину прежде всего раскрываются те вершины, которые были построены последними.</p>
<p>Сначала рассмотрим эти алгоритмы для графов-пространств, являющихся деревьями (корнем дерева является начальная вершина). Затем  покажем, как алгоритмы следует модифицировать для поиска в произвольных графах. Организовать перебор в деревьях проще, так как при построении нового состояния (и соответствующей вершины) можно быть уверенным в том, что такое состояние никогда раньше не строилось и не будет строиться в дальнейшем.</p>
<p><strong>5 </strong><strong> Опишите методы поиска решения  методом  слепого перебора. Перебор вширь.</strong></p>
<h4>2.3.2.1.  Перебор вширь</h4>
<p>Базовый <strong><span style="text-decoration: underline;">алгоритм поиска вширь</span></strong> состоит из следующей последовательности шагов (здесь и далее предполагаем, что начальная вершина не является целевой):</p>
<p><strong>Шаг 1.</strong> Поместить начальную вершину в список нераскрытых вершин <strong>Open</strong>.</p>
<p><strong>Шаг 2.</strong> Если список <strong>Open</strong> пуст, то окончание алгоритма и выдача сообщения о неудаче поиска, в противном случае перейти к следующему шагу.</p>
<p><strong>Шаг 3.</strong> Выбрать <span style="text-decoration: underline;">первую</span> вершину из списка <strong>Open</strong> (назовем ее <strong>Current</strong>) и перенести ее в список раскрытых вершин <strong>Closed</strong>.</p>
<p><strong>Шаг 4.</strong> Раскрыть вершину <strong>Current</strong>, образовав все ее дочерние вершины. Если дочерних вершин нет, то перейти к шагу 2, иначе поместить все дочерние вершины (в любом порядке) в <span style="text-decoration: underline;">конец</span> списка <strong>Open</strong> и построить <span style="text-decoration: underline;">указатели</span>, ведущие от этих вершин к родительской вершине <strong>Current</strong>.</p>
<p><strong>Шаг 5.</strong> Проверить, нет ли среди дочерних вершин целевых. Если есть хотя бы одна целевая вершина, то окончание алгоритма и выдача решения задачи, получающегося просмотром указателей назад от найденной целевой вершины к начальной. В противном случае перейти к шагу 2.</p>
<p><strong>Конец алгоритма.</strong></p>
<p>Основу этого алгоритма составляет цикл последовательного раскрытия (шаги 2-5) концевых вершин (листьев) дерева перебора, хранящихся в списке <strong>Open</strong>. Алгоритм поиска вширь является полным. Можно также показать, что при переборе вширь непременно будет найден самый короткий путь к целевой вершине, причем быстрее, чем другие решающие пути –  при условии, что этот путь вообще существует. Если же решающего пути нет, то (в случае конечных деревьев-пространств) будет сообщено о неуспехе поиска, в случае же бесконечных пространств  алгоритм  не кончит свою работу.</p>
<p>На рис.4 приведено дерево, построенное в результате применения алгоритма поиска вширь к некоторой  начальной конфигурации игры в восемь, причем выполнение алгоритма прервано после построения первых 12 вершин (при этом раскрыто 6 вершин). В вершинах дерева помещены соответствующие описания состояний. Эти вершины занумерованы в том порядке, в котором они были построены в ходе поиска. На следующем шаге цикла алгоритма будет раскрываться одна из вершин с номерами 6, 7 или 8, поскольку они расположены в начале  списка нераскрытых вершин.</p>
<p><a href="http://www.studcode.ru/wp-content/uploads/2010/10/clip_image0022.gif"><img class="aligncenter size-full wp-image-1088" title="clip_image0022" src="http://www.studcode.ru/wp-content/uploads/2010/10/clip_image0022.gif" alt="clip_image0022" width="463" height="359" /></a></p>
<p>Считаем, что порядок построения дочерних вершин соответствует следующему зафиксированному порядку перемещения пустой клетки («пустышки»): влево/вправо/вверх/вниз. Предполагается также, что используемая алгоритмом операция раскрытия вершин организована таким образом, что она не порождает  никакое состояние-вершину,  построенную  ранее и являющуюся родительской для раскрываемой вершины. Тем самым в дереве перебора нет дублирования одного и то же состояния в вершинах, имеющих общего соседа-вершину.</p>
<p>В приведенном примере алгоритм перебора вглубь, сформулированный для деревьев-пространств, применялся к пространству состояний, являющемуся графом (в котором могут быть циклы). В некоторых случаях это допустимо, т.е. алгоритм находит решение, если оно есть, и заканчивает работу. Построенная алгоритмом структура из вершин и указателей всегда образует дерево (дерево перебора), поскольку указатели от дочерних вершин ссылаются только на одну порождающую вершину. Но в случае поиска на произвольном графе (и в этом – отличие от деревьев-пространств) одно и тоже состояние может быть продублировано в разных частях полученного дерева перебора. В примере игры  в восемь по принятому предположению об операции раскрытия исключалось только повторное возникновение состояний, встречавшихся два шага вверх по дереву перебора, другие же, более далекие друг от друга повторы одного и того же состояния остаются возможными. В случае поиска в графе состояний общего вида он как бы разворачивается при поиске в дерево путем дублирования некоторых его частей. Если это дублирование неоднократное (из-за циклов в графе), то оно может привести к зацикливанию базового алгоритма поиска вширь.</p>
<p><strong>7  Опишите методы поиска решения  методом  слепого перебора. Перебор   вглубь.</strong></p>
<h4>2.3.2.2.  Перебор вглубь</h4>
<p>Для формулировки алгоритма поиска вглубь необходимо определить понятие <strong><em>глубины вершины</em></strong> в дереве поиска. Это можно сделать следующим образом:</p>
<ul>
<li>глубина <em>корня</em> дерева равна нулю;</li>
<li>глубина каждой <em>некорневой</em> вершины на единицу больше глубины ее родительской вершины.</li>
</ul>
<p>В алгоритме перебора вглубь раскрытию в первую очередь подлежит вершина, имеющая наибольшую глубину. Такой принцип может привести к бесконечному процессу – это происходит, если пространство состояний бесконечно, и поиск вглубь пошел по ветви дерева, не содержащей целевую вершину. Поэтому необходимо то или иное ограничение этого процесса, самый распространенный способ – ограничить глубину просмотра дерева. Это означает, что в ходе перебора можно строить только вершины, глубина которых не превышает некоторую заданную<em> </em><strong><em>граничную</em></strong> <strong><em>глубину</em></strong>. Тем самым, раскрытию в первую очередь подлежит вершина наибольшей глубины, но расположенная выше фиксированной границы. Соответствующий алгоритм поиска называется <strong><em>ограниченным перебором вглубь</em></strong>.</p>
<p>Основные шаги базового <strong><span style="text-decoration: underline;">алгоритма ограниченного перебора вглубь</span></strong> (с граничной глубиной <strong>D</strong>) таковы:</p>
<p><strong>Шаг 1.</strong> Поместить начальную вершину в список нераскрытых вершин <strong>Open</strong>.</p>
<p><strong>Шаг 2.</strong> Если список <strong>Open</strong> пуст, то окончание алгоритма и выдача сообщения о неудаче поиска, в противном случае перейти к следующему шагу.</p>
<p><strong>Шаг 3.</strong> Выбрать <span style="text-decoration: underline;">первую</span> вершину из списка <strong>Open</strong> (назовем ее <strong>Current</strong>) и перенести ее в список раскрытых вершин <strong>Closed</strong>.</p>
<p><strong>Шаг 4.</strong> Если глубина вершины <strong>Current</strong> равна <span style="text-decoration: underline;">граничной глубине</span> <strong>D</strong>, то перейти к шагу 2, в ином случае перейти к следующему шагу.</p>
<p><strong>Шаг 5.</strong> Раскрыть вершину <strong>Current</strong>, построив все ее дочерние вершины. Если дочерних вершин нет, то перейти к шагу 2, иначе поместить все дочерние вершины (в произвольном порядке) в <span style="text-decoration: underline;">начало</span> списка <strong>Open</strong> и построить <span style="text-decoration: underline;">указатели</span>, ведущие от этих вершин к родительской вершине <strong>Current</strong>.</p>
<p><strong>Шаг 6.</strong> Если среди дочерних есть хотя бы одна целевая вершина, то окончание алгоритма и выдача решения задачи, получающегося просмотром указателей от найденной целевой вершины к начальной. В противном случае перейти к шагу 2.</p>
<p><strong>Конец алгоритма.</strong></p>
<p>Приведенное только что описание очень похоже на описание алгоритма поиска вглубь, разница заключается только в ограничении глубины (шаг 4) и в месте списка <strong>Open</strong>, куда помещаются  построенные дочерние вершины (шаг 5).</p>
<p>Поскольку глубина поиска ограничена, то будучи примененным к деревьям-пространствам состояний, описанный базовый алгоритм поиска вглубь всегда заканчивает работу. Но в отличие от алгоритма поиска вширь, он является неполным алгоритмом, поскольку вершины пространства состояний, расположенные ниже граничной глубины, среди которых могут быть и целевые, так и останутся нерассмотренными.</p>
<p>На рис. 5 показано дерево перебора, построенное алгоритмом поиска вглубь, граничная глубина установлена равной 4. В качестве начального состояния взята та же самая, что и в примере на рис. 4, конфигурация игры в восемь. Вершины занумерованы в том порядке, в котором они были построены. В ходе поиска раскрыто 7 и построено 12 вершин, но, как нетрудно убедиться, сравнивая последние два рисунка, в целом это не те же самые 12 первых вершин,  построенных алгоритмом поиска вширь.</p>
<p>Видно, что в алгоритме поиска в глубину сначала идет поиск вдоль одного пути, пока не будет достигнута установленная граничная глубина, затем рассматриваются альтернативные пути той же или меньшей глубины, которые отличаются от первого пути лишь последней (концевой) вершиной, после чего рассматриваются пути, отличающиеся последними двумя вершинами, и т.д.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/algoritmy-poiska-resheniya/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Примеры пространств состояний</title>
		<link>http://www.studcode.ru/archiv/primery-prostranstv-sostoyanij/</link>
		<comments>http://www.studcode.ru/archiv/primery-prostranstv-sostoyanij/#comments</comments>
		<pubDate>Tue, 26 Oct 2010 19:49:15 +0000</pubDate>
		<dc:creator>archey</dc:creator>
				<category><![CDATA[Искусственный интеллект]]></category>
		<category><![CDATA[Конспекты лекций]]></category>
		<category><![CDATA[ии]]></category>
		<category><![CDATA[лекции]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=1084</guid>
		<description><![CDATA[Примеры пространств состояний
Разберем два характерных примера представления в пространстве состояний, показывающих, что такое представление возможно для различных типов задач. Подчеркнем заранее, что предлагаемые ниже представления, хотя и являются достаточно естественными,  не являются единственно допустимыми в этих задачах, возможны и другие варианты.
Вообще, от выбора представления, т.е. рассмотренных выше составляющих, зависит размер пространства состояний, а значит, и [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Примеры пространств состояний</strong></p>
<p>Разберем два характерных примера представления в пространстве состояний, показывающих, что такое представление возможно для различных типов задач. Подчеркнем заранее, что предлагаемые ниже представления, хотя и являются достаточно естественными,  не являются единственно допустимыми в этих задачах, возможны и другие варианты.</p>
<p>Вообще, от выбора представления, т.е. рассмотренных выше составляющих, зависит размер пространства состояний, а значит, и эффективность поиска в нем. Очевидно, желательны представления с малыми пространствами состояний, но нахождение сужающих пространство поиска удачных представлений требует обычно некоторого дополнительного анализа решаемой задачи.<span id="more-1084"></span>Рассмотрим формализацию в пространстве состояний известной <em>задачи о коммивояжере</em> (представляющей классическую переборную проблему). Коммивояжер, располагая картой дорог, соединяющей 7 городов, должен построить свой маршрут так, чтобы выехав из города А, посетить каждый из других шести городов B, C, D, E, H, G в точности по одному разу и затем вернуться в исходный город. В другом, более сложном варианте задачи требуется также, чтобы маршрут имел минимальную протяженность.</p>
<p>Состояние решаемой задачи можно задать как список городов, уже проеханных коммивояжером к текущему моменту. Тогда возможным состояниям соответствуют списки из элементов A, B, C, D, E, H, G без повторений, исключение составляет только элемент-город A, он может встретиться в списке дважды – в начале списка и его конце. Пример списка-состояния – (A B C H). Начальное же состояние определяется как список (A), а целевое – как любой допустимый список, начинающийся и кончающийся элементом A. Для определенных таким образом состояний задачи операторы задачи могут соответствовать перемещениям между городами – получаем таким образом 13 операторов.</p>
<p>Обратимся теперь к широко известной <em>задаче об обезьяне и банане</em>, простейшую формулировку которой мы и рассмотрим. В комнате находятся обезьяна, ящик и связка бананов, которая подвешена к потолку настолько высоко, что обезьяна может до нее дотянуться, только встав на ящик. Нужно найти последовательность действий, которая позволит обезьяне достать бананы. Предполагается, что обезьяна может ходить по комнате, двигать по полу ящик, взбираться на него и хватать бананы.</p>
<p>Ясно, что описание состояния этой задачи должно включать следующие сведения: местоположение обезьяны в комнате – в горизонтальной плоскости пола и по вертикали (т.е. на полу она или на ящике), местоположение ящика  на полу и наличие у обезьяны бананов. Все это можно представить в виде четырехэлементного списка <em>(ПолОб, ВертОб, ПолЯщ, Цель),</em> где</p>
<p><em>ПолОб</em> – положение обезьяны на полу (это может быть двухэлементный вектор координат);</p>
<p><em>ПолЯщ</em> –  положение обезьяны и ящика на полу;</p>
<p><em>ВертОб</em> – это константа П или Я в зависимости от того, где находится обезьяна, на полу или на ящике;</p>
<p><em>Цель</em> – это константа 0 или 1 в зависимости от того, достала ли обезьяна бананы или нет.</p>
<p>Зафиксируем также как константы три следующие точки в плоскости пола:</p>
<p>Т<strong><sub>О</sub></strong> –  точка первоначального местоположения обезьяны;</p>
<p>Т<strong><sub>Я </sub></strong>– точка первоначального расположения ящика;</p>
<p>Т<strong><sub>Б</sub></strong><strong> </strong>– точка пола, расположенная непосредственно под связкой бананов.</p>
<p>Тогда начальное состояние задачи описывается списком (Т<strong><sub>О</sub></strong>, П, Т<strong><sub>Я</sub></strong>, 0), а целевое состояние задается как любой список, последний элемент которого – 1.</p>
<p>Естественно определить операторы в этой задаче в соответствии четырем возможным действиям обезьяны:</p>
<p>1)   <em>Перейти </em><em>(</em><em>W</em><em>)</em> – переход обезьяны к точке W горизонтальной плоскости пола;</p>
<p>2)   <em>Передвинуть </em><em>(V</em><em>)</em> – передвижение обезьяной ящика в точку V пола;</p>
<p>3)   <em>Взобраться</em> – обезьяна взбирается на ящик;</p>
<p>4)   <em>Схватить</em> – обезьяна хватает  связку бананов.</p>
<p>Условия применимости и действие этих операторов легко определить в виде правил продукций вида:   <em>аргумент оператора </em><em>®  результат оператора </em>причем</p>
<p>X, Y, Z, W, V обозначают переменные:</p>
<ol>
<li><em>Перейти </em><em>(W)</em> :  (X, П, Y, Z ) ®  (W, П, Y, Z)</li>
<li><em>Передвинуть </em><em>(V)</em> :  (X, П, X, Z)  ® (V, П, V, Z)</li>
<li><em>Взобраться</em> :  (X, П, X, Z)  ®  (X, Я, X, Z)</li>
<li><em>Схватить : </em> (Т<strong><sub>Б</sub></strong>, Я, Т<strong><sub>Б</sub></strong> , 0) ® (Т<strong><sub>Б</sub></strong>, Я, Т<strong><sub>Б</sub></strong> , 1)</li>
</ol>
<p>Будем считать, что для решения задачи значимы лишь вышеупомянутые точки пола Т<strong><sub>О</sub></strong>, Т<strong><sub>Я</sub></strong>, Т<strong><sub>Б</sub></strong> , тогда получим пространство состояний задачи, изображенное на рис.3. Это пространство содержит только 13 состояний, дуги графа-пространства промаркированы порядковым номером применяемого оператора. Пространство содержит четыре цикла хождения обезьяны между тремя значимыми точками (с ящиком или без него). В пространстве есть также две тупиковые ветви – когда обезьяна залезает на ящик, но не под связкой бананов. Жирными дугами (стрелками) показан решающий путь, состоящий из четырех операторов:</p>
<p><em>Перейти (Т<strong><sub>Я</sub></strong>); Передвинуть(Т<strong><sub>Б</sub></strong>); Взобраться; Схватить</em><em>.</em></p>
<p><a href="http://www.studcode.ru/wp-content/uploads/2010/10/clip_image003.gif"><img class="aligncenter size-full wp-image-1085" title="clip_image003" src="http://www.studcode.ru/wp-content/uploads/2010/10/clip_image003.gif" alt="clip_image003" width="525" height="333" /></a></p>
<p>Рассмотренный пример показывает, сколь важен для успешного и эффективного решения задачи выбор определенного представления. Такое небольшое по размерам пространство состояний получено, в частности, вследствие того, что игнорировались все точки пола, кроме трех, соответствующих первоначальному расположению  обезьяны, ящика и бананов.</p>
<p>Мощным приемом сужения пространств состояний является применение так называемых <em>схем состояний </em>и <em>схем операторов</em>, в которых для описаний состояний и операторов используются переменные. Тем самым схема состояния описывает целое множество состояний, а не только одно, так же как схема оператора определяет все множество действий некоторого типа. В рассмотренном нами представлении задачи об обезьяне использовались схемы операторов, но не схемы состояний.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/primery-prostranstv-sostoyanij/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Решение задач и искусственный интеллект</title>
		<link>http://www.studcode.ru/archiv/reshenie-zadach-i-iskusstvennyj-intellekt/</link>
		<comments>http://www.studcode.ru/archiv/reshenie-zadach-i-iskusstvennyj-intellekt/#comments</comments>
		<pubDate>Tue, 26 Oct 2010 19:44:26 +0000</pubDate>
		<dc:creator>archey</dc:creator>
				<category><![CDATA[Искусственный интеллект]]></category>
		<category><![CDATA[Конспекты лекций]]></category>
		<category><![CDATA[ии]]></category>
		<category><![CDATA[лекции]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=1079</guid>
		<description><![CDATA[Решение задач и искусственный интеллект
Двумя составными элементами процесса решения задач в теории искусственного интеллекта являются представление (формализация) задач и собственно решение – поиск. Мы рассмотрим два подхода к решению задач и, соответственно, два способа представления – подход с использованием пространства состояний и подход, основанный на  редукции задач. Для обоих подходов описываются используемые алгоритмы поиска решения. [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Решение задач и искусственный интеллект</strong></p>
<p>Двумя составными элементами процесса решения задач в теории искусственного интеллекта являются <em>представление</em> (формализация) задач и собственно решение – <em>поиск</em>. Мы рассмотрим два подхода к решению задач и, соответственно, два способа представления – подход с использованием пространства состояний и подход, основанный на  редукции задач. Для обоих подходов описываются используемые алгоритмы поиска решения. Важной особенностью большинства этих алгоритмов является использование <em>эвристической</em> информации. <em>Эвристикой</em> обычно принято называть любое правило, стратегию, прием, существенно помогающий решению некоторой задачи. В области искусственного интеллекта и теории поиска под  эвристической информацией понимается все то, что относится к конкретной решаемой задаче и служит более быстрому ее решению.<span id="more-1079"></span>2.1.   Представление задач в пространстве состояний</p>
<h4>Основные понятия</h4>
<p>Типичным представителем класса задач, для которых подходит представление в пространстве состояний, является головоломка, известная как игра в пятнадцать – см. рис. 1(а). В ней используется пятнадцать пронумерованных (от 1 до 15) подвижных фишек, расположенных в клетках квадрата 4´4. Одна клетка этого квадрата остается всегда пустой, так что одну из соседних с ней фишек можно передвинуть на место этой пустой клетки, изменив тем самым местоположение пустой клетки. Заметим, что более простым вариантом этой головоломки является квадрат 3´3 и восемь фишек на нем – пример соответствующей задачи показан на рис.1(б).</p>
<p>На рис.1(а) изображены две конфигурации фишек. В головоломке требуется преобразовать первую, или начальную, конфигурацию во вторую, или целевую конфигурацию. Решением этой задачи будет подходящая последовательность сдвигов фишек, например: передвинуть фишку 8 вверх, фишку 6 влево и т.д.</p>
<p><a href="http://www.studcode.ru/wp-content/uploads/2010/10/clip_image002.gif"><img class="aligncenter size-full wp-image-1080" title="clip_image002" src="http://www.studcode.ru/wp-content/uploads/2010/10/clip_image002.gif" alt="clip_image002" width="492" height="133" /></a></p>
<p>Важной особенностью класса задач, к которому принадлежит рассмотренная головоломка, относится наличие в задаче точно определенной начальной ситуации и точно определенной цели. Имеется также некоторое множество операций, или ходов, переводящих одну конфигурацию в другую. Именно из таких ходов состоит искомое решение задачи, которое можно в принципе получить методом проб и ошибок. Действительно, отправляясь от начальной ситуации, можно построить конфигурации, возникающие в результате выполнения возможных в этой ситуации ходов, затем построить множество конфигураций, получающихся после применения следующего хода, и так далее – пока не будет достигнута целевая конфигурация.</p>
<p>Введем теперь основные понятия, используемые при формализации задачи в пространстве состояний. Центральным из них является понятие <strong><em>состояния</em></strong>, характеризующего некоторый момент решения задачи. Например, для игры в пятнадцать (или в восемь) состояние – это просто некоторая конкретная конфигурация фишек.</p>
<p>Среди всех состояний задачи выделяются <strong><em>начальное состояние</em></strong> и <strong><em>целевое состояние</em></strong>, в совокупности определяющие задачу, которую надо решить  &#8211; примеры их приведены на рис.1.</p>
<p>Другим важным понятием является понятие <strong><em>оператора</em></strong>, т.е. допустимого хода в задаче. Оператор преобразует одно состояние в другое, являясь по сути функцией, определенной на множестве состояний и принимающей значения из этого множества. Для игры в пятнадцать или в восемь удобнее выделить четыре оператора, соответствующие перемещениям пустой клетки (можно считать ее фишкой-«пустышкой») влево, вправо, вверх, вниз. В некоторых случаях оператор может оказаться неприменимым к какому-то состоянию: например, операторы сдвига вправо и вниз неприменимы, если пустая клетка расположена в правом нижнем углу. Значит, в общем случае оператор является частично определенной функцией отображения состояний.</p>
<p>В терминах состояний и операторов <strong><em>решение задачи</em></strong> есть определенная последовательность операторов, преобразующая начальное состояние в целевое. Решение задачи ищется в <strong><em>пространстве состояний</em></strong> – множестве всех состояний, достижимых из начального состояния при помощи  заданных  операторов. Например, в игре в пятнадцать или в восемь пространство состояний состоит из всех конфигураций фишек, которые могут быть образованы в результате возможных перемещений фишек.</p>
<p>Пространство состояний можно представить в виде направленного графа, вершины которого соответствуют состояниям, а дуги (ребра) – применяемым операторам. Указанные в виде стрелок направления соответствуют движению от вершины-аргумента применяемого оператора к результирующей вершине. Тогда решение задачи будет путь в этом графе, ведущий от начального состояния к целевому. На рис.2 показана часть пространства состояний для игры в пятнадцать: в каждой вершине помещена  та конфигурация фишек, которую она представляет. Все дуги между вершинами являются двунаправленными, поскольку в этой головоломке для любого оператора есть обратный ему (точнее, множество операторов состоит из двух пар взаимно-обратных операторов: влево-вправо, вверх-вниз).</p>
<p>Пространства состояний могут быть большими и даже бесконечными, но в любом случае предполагается счетность множества состояний.</p>
<p>Таким образом, в подходе к решению задачи с использованием пространства состояний задача рассматривается как тройка ( S­<sub>I</sub><sub> </sub>, O , S<sub>G</sub> ) , где</p>
<p>S­<sub>I</sub><sub> </sub>– начальное состояние;</p>
<p>O – конечное множество операторов, действующих на не более чем счетном множестве состояний;<br />
S<sub>G</sub> – целевое состояние.</p>
<p>Дальнейшая формализация решения задачи с использованием пространства состояний предполагает выбор некоторой конкретной <em>формы</em> описания состояний задачи. Для этого могут применяться любые подходящие структуры – строки, массивы, списки, деревья и т.п. Например, для игры в пятнадцать или восемь наиболее естественной  формой описания состояния будет список положений фишек или же двумерный массив. Заметим, что от выбора формы описания состояния зависит в общем случае сложность задания операторов задачи, которые должны быть также определены при формализации задачи в пространстве состояний.</p>
<p>Если для игры в пятнадцать средством формализации выступает язык программирования Лисп или Паскаль, то операторы задачи могут быть описаны в виде четырех соответствующих функций языка. При использовании же продукционного языка, эти операторы задаются в виде правил продукций вида: «исходное состояние ® результирующее состояние».</p>
<p>В рассмотренных выше примерах игры в пятнадцать и восемь искомое целевое состояние задавалось явно, т.е. известно было местоположение каждой фишки в целевой конфигурации. В более сложных случаях игры может быть несколько целевых состояний, либо же целевое состояние может быть определено неявно, т.е. охарактеризовано некоторым свойством, например, как состояние, в котором сумма номеров фишек в верхнем ряду не превосходит 10. В подобных случаях свойство, которому должно удовлетворять целевое состояние, должно быть описано исчерпывающим образом, к примеру, путем задания булевской функции, реализующей проверку нужного свойства состояния задачи.</p>
<p>Итак, для представления задачи в пространстве состояний необходимо определить  следующее:</p>
<ul>
<li>форму описания состояний задачи и описание начального состояния;</li>
<li>множество операторов и их воздействий на описания состояний;</li>
<li>множество целевых состояний или же описание их свойств.</li>
</ul>
<p>Перечисленные составляющие задают неявно граф-пространство состояний, в котором требуется провести поиск решения задачи. Заметим попутно, что в отличие от такого неявного способа задания графа, при явном способе задания все вершины и дуги графа должны быть перечислены, например, с помощью таблиц.</p>
<p>Решение задачи в пространстве состояний подразумевает просмотр неявно заданного графа, для чего необходимо преобразование в явную форму достаточно большой его части, включающей искомую целевую вершину. Действительно, просмотр осуществляется как последовательный <strong><em>поиск</em></strong>, или <strong><em>перебор</em></strong> вершин, в<strong><em> пространстве состояний</em></strong>. В исходной точке процесса к начальному состоянию применяется тот или иной оператор и строится новая вершина-состояние, а также связывающие ее с корневой вершиной дуги. На каждом последующем шаге поиска к одной из уже полученных вершин-состояний применяется допустимый оператор и строится еще одна вершина графа и связывающие дуги. Этот процесс поиска продолжается до тех пор, пока не будет построена вершина, соответствующая целевому состоянию.</p>
<p><a href="http://www.studcode.ru/wp-content/uploads/2010/10/clip_image00.gif"><img class="aligncenter size-full wp-image-1081" title="clip_image00" src="http://www.studcode.ru/wp-content/uploads/2010/10/clip_image00.gif" alt="clip_image00" width="516" height="462" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/reshenie-zadach-i-iskusstvennyj-intellekt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Основные направления в области искусственного интеллекта</title>
		<link>http://www.studcode.ru/archiv/osnovnye-napravleniya-ii/</link>
		<comments>http://www.studcode.ru/archiv/osnovnye-napravleniya-ii/#comments</comments>
		<pubDate>Tue, 26 Oct 2010 19:22:59 +0000</pubDate>
		<dc:creator>archey</dc:creator>
				<category><![CDATA[Искусственный интеллект]]></category>
		<category><![CDATA[Конспекты лекций]]></category>
		<category><![CDATA[ии]]></category>
		<category><![CDATA[лекции]]></category>

		<guid isPermaLink="false">http://www.studcode.ru/?p=1075</guid>
		<description><![CDATA[Основные направления исследований в области искусственного интеллекта
Термин Искусственный интеллект (ИИ) – претенциозен, метафоричен.
Реальное содержание – повышение &#8220;интеллекта&#8221; ЭВМ; передача компьютеру некоторых функций человеческой интеллектуальной деятельности; создание помощника в решении интеллектуальных задач.
Более точно:
Синтезируя десятки определений ИИ из различных источников,  в качестве рабочего определения можно предложить следующее.



Искусственный   интеллект – область исследований и прикладных разработок, направленных [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Основные направления исследований в области искусственного интеллекта</strong></p>
<p>Термин <strong>Искусственный интеллект (ИИ)</strong> – претенциозен, метафоричен.</p>
<p>Реальное содержание – повышение &#8220;интеллекта&#8221; ЭВМ; передача компьютеру некоторых функций человеческой интеллектуальной деятельности; создание помощника в решении интеллектуальных задач.</p>
<p>Более точно:</p>
<p>Синтезируя десятки определений ИИ из различных источников,  в качестве рабочего определения можно предложить следующее.</p>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="726" valign="top"><strong>Искусственный   интеллект </strong>– область исследований и прикладных разработок, направленных на   создание программно-аппаратных средств, способных к решению таких задач,   решение которых предполагает применение человеком своих интеллектуальных   способностей.</td>
</tr>
</tbody>
</table>
<p>Среди множества направлений искусственного интеллекта есть несколько веду­щих, которые в настоящее время вызывают наибольший интерес у исследовате­лей и практиков. Опишем их чуть подробнее.<span id="more-1075"></span><strong>Представление знаний и разработка  систем, основанных на знаниях (</strong><strong>knowledge</strong><strong>-</strong><strong>based</strong><strong> </strong><strong>systems</strong><strong>)</strong></p>
<p>Это основное направление в области изучения искусственного интеллекта. Оно связано с разработкой моделей представления знаний, созданием баз знаний, образующих ядро экспертных систем. В последнее время включает в себя модели и<br />
методы извлечения и структурирования знаний и сливается с  инженерией               зна­ний.</p>
<p><strong>Программное обеспечение систем ИИ</strong></p>
<p>В рамках этого направления разрабатываются специальные языки для решения интеллектуальных задач, в которых традиционно упор делается на преобладание логической и символьной обработки над вычислительными процедурами. Эти языки ориентированы на символьную обработку информации — LISP, PROLOG, SMALLTALK, РЕФАЛ и др. Помимо этого создаются пакеты прикладных про­грамм, ориентированные на промышленную разработку интеллектуальных сис­тем, или программные инструментарии искусственного интеллекта, например КЕЕ, ARTS, G2. Достаточно популярно также создание так называемых пустых экспертных сис­тем или «оболочек»,— KAPPA, EXSYS, Ml, ЭКО и др., базы знаний которых мож­но наполнять конкретными знаниями, создавая различные прикладные системы.</p>
<p><strong>Разработка естественно-языковых интерфейсов и машинный перевод<br />
</strong>Начиная с 50-х годов одной из популярных тем исследований в области ИИ яв­ляется компьютерная лингвистика, и, в частности, машинный перевод (МП). Идея машинного перевода оказалась совсем не так проста, как казалось первым исследователям и разработчикам.</p>
<p><strong>Интеллектуальные роботы (</strong><strong>robotics</strong><strong>)</strong></p>
<p>Идея создания роботов далеко не нова. Само слово «робот» появилось в 20-х годах, как производное от чешского «робота» — тяжелой грязной работы. Его автор — чешский писатель Карел Чапек, описавший роботов в своем рассказе «Р.У.Р».</p>
<p>Можно условно выделить несколько поколений в истории создания и развития робототехники:</p>
<p><strong>I</strong><strong> поколение. </strong><em>Роботы с жесткой схемой управления. </em>Практически все современ­ные промышленные роботы принадлежат к первому поколению. Фактически это программируемые манипуляторы.</p>
<p><strong>II</strong><strong> поколение. </strong><em>Адаптивные роботы с сенсорными устройствами. </em>Есть образцы таких роботов, но в промышленности они пока используются мало.</p>
<p><strong>III</strong><strong> поколение. </strong><em>Самоорганизующиеся или интеллектуальные роботы. </em>Это — ко­нечная цель развития робототехники. Основные нерешенные проблемы при со­здании интеллектуальных роботов — проблема машинного зрения и адекватного  хранения и обработки трехмерной визуальной информации.</p>
<p>В настоящее время в мире изготавливается более 60 000 роботов в год. Фактиче­ски робототехника сегодня — это инженерная наука, не отвергающая технологий ИИ, но не готовая пока к их внедрению в силу различных причин</p>
<h2>Интеллектуальные роботы</h2>
<h2><em>Интеллектуальный робот</em> (его следует отличать от также иногда называемых роботами технических систем, типа систем точечной сварки и т.п.) – программно-аппаратный комплекс, оснащенный <em>акцепторами</em> (датчиками о состоянии проблемной среды) и <em>эффекторами</em> (средствами воздействия на эту среду, в частности, средствами передвижения), в состав которого входит система ИИ, способная к планированию действий робота в среде.</h2>
<h2>Часто требуется возможность автономного функционирования робота в проблемной среде (например, в среде агрессивной, в которой человек находиться не может).</h2>
<p>Иногда предполагается возможность передачи роботу  (человеком-оператором) управляющих команд.</p>
<p><strong>В свое время (70-е гг. XX века) задача создания интеллектуальных роботов рассматривалась как универсальная задача-рамка для исследований в области ИИ. Действительно, помимо таких проблем как представление знаний, планирование решения при создании роботов приходится ставить и решать задачи обработки изображений, управления эффекторами, не возникающие в случае более традиционных систем ИИ (решателей интеллектуальных задач).</strong></p>
<p>В последние годы понятие <em>интеллектуальный робот</em> в известной степени вытеснено близким понятием <em>интеллектуальный агент</em>.</p>
<h2>Интеллектуальные Агенты</h2>
<h2>Термин <em>Интеллектуальный Агент</em>, ставший популярным лет 5 назад, понимается различными исследователями по-разному.</h2>
<p>Общим для различных подходов (точек зрения) является следующая трактовка:</p>
<p><em>Интеллектуальный Агент – </em>некоторая программно-аппаратная сущность, способная действовать в интересах достижения целей, поставленных перед ним владельцем и/или пользователем (или даже от лица владельца и/или пользователя).</p>
<p>Обычно предполагается, что <em>Интеллектуальный Агент</em>:</p>
<p>- действует автономно или совместно с другими компьютерными/интеллектуальными системами;</p>
<p>- выполняет шаблонные предписанные действия и/или действия, требующие активности и учета состояния окружающей среды (reactivity);</p>
<p>- может генерировать цели и действовать рациональным образом для их достижения (activity / pro-activity);</p>
<p>- в той или иной степени способен к обучению, корпоративным действиям; мобилен.</p>
<p>В работах, посвященных <em>Интеллектуальным Агентам</em>, указываются, в частности, следующие сферы их применения (и соответствующие технологии):</p>
<p><em>агенты, поддерживающие интеллектуальный пользовательский интерфейс</em>;</p>
<p><em>мульти-агентные системы</em> (и технологии «распределенного искусственного интеллекта»);</p>
<p><em>мобильные агенты</em> (в том числе реализованные программно), которые могут общаться между собой и перемещаться в своем специфическом окружении (в частности, в компьютерных сетях; они могут покидать клиентский компьютер и перемещаться на удаленный сервер для выполнения некоторых действий, после чего возвращаются обратно).</p>
<p><strong>Обучение и самообучение</strong></p>
<p>Активно развивающаяся область искусственного интеллекта. Включает модели, методы и алгоритмы, ориентированные на автоматическое накопление и фор­мирование знаний на основе анализа и обобщения данных. Включает обучение по примерам (или индуктивное), <em>a</em><em> </em>также традиционные подходы из теории распознавания образов.</p>
<p>В последние годы к этому направлению тесно примыкают стремительно разви­вающиеся системы data mining — анализа данных и knowledge discovery — поис­ка закономерностей в базах данных.</p>
<p><strong>Распознавание образов</strong></p>
<p>Традиционно — одно из направлений искусственного интеллекта, берущее нача­ло у самых его истоков, но в настоящее время практически выделившееся в са­мостоятельную науку. Ее основной подход — описание <em>классов объектов </em>через  опре­деленные значения значимых признаков. Каждому объекту ставится в соответствие матрица признаков, по которой происходит  его  распознавание. Процедура  распознавания  использует  чаще  всего  специальные  математические процедуры и функции, разделяющие объекты на классы. Это  направление близко  к  машинному обучению и тесно связано  с  нейрокибернетикой</p>
<p><strong>РАСПОЗНАВАНИЕ РЕЧИ.</strong></p>
<p><strong> </strong>По мере развития компьютерных систем становится все более очевидным, что использование этих систем намного расширится, если станет возможным использование человеческой речи при работе непосредственно с компьютером, и в частности станет возможным управление машиной обычным голосом в реальном времени, а также ввод и вывод информации в виде обычной человеческой речи.</p>
<p>Существующие технологии распознавания речи не имеют пока достаточных возможностей для их широкого использования, но на данном этапе исследований проводится интенсивный поиск возможностей употребления коротких многозначных слов (процедур) для облегчения понимания. Распознавание речи в настоящее время нашло реальное применение в жизни, пожалуй, только в тех случаях, когда используемый словарь сокращен до 10 знаков, например при обработке номеров кредитных карт и прочих кодов доступа в базирующихся на компьютерах системах, обрабатывающих передаваемые по телефону данные. Так что насущная задача &#8211; распознавание по крайней мере 20 тысяч слов естественного языка &#8211; остается пока недостижимой. Эти возможности пока недоступны для широкого коммерческого использования. Однако ряд компаний своими силами пытается использовать уже существующие в данной области науки знания.</p>
<p>Для успешного распознавания речи следует решить следующие задачи:</p>
<p>Þ  обработку словаря (фонемный состав),</p>
<p>Þ  обработку синтаксиса,</p>
<p>Þ  сокращение речи (включая возможное использование жестких сценариев),</p>
<p>Þ  выбор диктора (включая возраст, пол, родной язык и диалект),</p>
<p>Þ  тренировку дикторов,</p>
<p>Þ  выбор особенного вида микрофона (принимая во внимание направленность и местоположение микрофона),</p>
<p>Þ  условия работы системы и получения результата с указанием ошибок.</p>
<p>Существующие сегодня системы распознавания речи основываются на сборе всей доступной (порой даже избыточной) информации, необходимой для распознавания слов. Исследователи считают, что таким образом задача распознавания образца речи, основанная на качестве сигнала, подверженного изменениям, будет достаточной для распознавания, но тем не менее в настоящее время даже при распознавании небольших сообщений нормальной речи, пока невозможно после получения разнообразных реальных сигналов осуществить прямую трансформацию в лингвистические символы, что является желаемым результатом.</p>
<p>Вместо этого проводится процесс, первым шагом которого является первоначальное трансформирование вводимой информации для сокращения обрабатываемого объема так, чтобы ее можно было бы подвергнуть компьютерному анализу. Следующим этапом является спектральное представление речи, получившееся путем преобразования Фурье. Результат преобразования Фурье позволяет не только сжать информацию, но и дает возможность сконцентрироваться на важных аспектах речи, которые интенсивно изучались в сфере экспериментальной фонетики.</p>
<p>Хотя спектральное представление речи очень полезно, необходимо помнить, что изучаемый сигнал весьма разнообразен. Разнообразие возникает по многим причинам, включая:</p>
<p>Þ  различия человеческих голосов;</p>
<p>Þ  уровень речи говорящего;</p>
<p>Þ  вариации в произношении;</p>
<p>Þ  нормальное варьирование движения артикуляторов (языка, губ, челюсти, нёба).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.studcode.ru/archiv/osnovnye-napravleniya-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

