Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
80
Добавлен:
10.05.2015
Размер:
158.72 Кб
Скачать
      1. Эвристическая сила оценочных функций

Выбор эвристической функции имеет критическое значение при определении эвристической силы алгоритма поиска А. Использование h0 гарантирует состоятельность, но приводит к поиску в ширину и, таким образом, обычно является неэффективным. Установлениеh0 наиболее нижней границе функцииh*обеспечивает раскрытие наименьшего числа вершин, не нарушая состоятельность алгоритма. Часто можно выиграть в эвристической силе за счет состоятельности путем использования некоторой функцииh, не являющейся нижней границей функцииh*. Эта добавочная эвристическая сила дает нам возможность решать более сложные задачи. В игре в «восемь» функцияh(n)=w(n) являлась нижней границей функцииh*, но не обеспечивала хорошей оценки сложности позиции.

Лучшей чем предыдущая оценкой является функция h(n)=P(n), гдеP(n) – сумма расстояний от положения каждой фишки до ее места в целевой конфигурации. Новая оценка является достаточно грубой, т.к. не дает учет того, насколько трудно поменять местами две соседние фишки. В этом случае можно предположить еще одну оценку:h(n)=P(n)+S(n), гдеS(n) – счет последовательности, получаемый последовательной проверкой нецентральных клеток, причем за каждую фишку, если после нее стоит та, которая соответствует порядку, добавляется 0 или 2 в противном случае, за фишку, стоящую в центре, добавляется 1. Отметим, что такая функция не является нижней границей функцииh*. С помощью этой эвристической функции можно легко решать более сложные случаи игры в «восемь», например, преобразование одной позиции в любую другую.

Другим фактором, определяющим эвристическую силу алгоритма поиска, является трудоемкость вычисления эвристических функций. Иногда функцию h, не являющуюся нижней границейh*, легче вычислить, чем функцию, которая представляет собой точную нижнюю границу функцииh*. При использовании таких функций алгоритм можно увеличить вдвое, поскольку уменьшается как число раскрытых вершин (за счет состоятельности), так и трудоемкость вычислений. Итак, в определенных случаях эвристическую силу функцииhможно увеличить просто умножением на некоторую положительную константу больше единицы. Если эта константа очень велика, то возникает ситуация примерно такая же, как приg(n)0.

Во многих задачах мы всего лишь хотим найти какой – нибудь путь к цели, не заботясь о его «стоимости». В подобных ситуациях мы также могли бы считать, что значения функции g(n) можно не принимать во внимание, т.к. на любом этапе поиска для нас уже не существенны «стоимости» уже пройденных путей.

f(n)=g(n)+h(n)

1) f(n)=g(n) – оценка пройденного пути;

  1. f(n)= h(n) – оценка будущего пути.

Чтобы гарантировать, что хоть какой – нибудь путь будет найден, функция g все же должна быть включена в оценочную функцию, даже если для нас не существенны нахождения путей минимальной «стоимости». Такая гарантия необходима, если h не является точной оценкой h*. Если бы всегда раскрывались вершины с минимальной h, процесс поиска мог бы все время раскрывать ложные вершины. Включение функции g приводит к добавлению в этот процесс составляющей поиска в ширину и, следовательно, гарантирует, что никакая часть неявно заданного графа не будет оставаться необследованной. Учитывая все выше изложенное, целесообразно выбирать функцию следующим образом:

f(n)=g(n)+wh(n)

где: w– некоторое положительное число.

Опыт подсказывает, что эффективность поиска часто возрастает, если допустить изменение wв обратной зависимости от глубины величины на дереве поиска.

Таким образом, имеется три важных фактора, влияющих на эвристическую силу оценочной функции для алгоритма А:

  1. «стоимость» пути;

  2. число вершин, открытых доля нахождения пути;

  3. трудоемкость вычислений, необходимых для подсчета h.

Соседние файлы в папке Конспект лекций