Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
8_18_28.doc
Скачиваний:
14
Добавлен:
24.09.2019
Размер:
319.49 Кб
Скачать

Двунаправленный поиск

В основе двунаправленного поиска лежит такая идея, что можно одновременно про­водить два поиска (в прямом направлении, от начального состояния, и в обратном на­правлении, от цели), останавливаясь после того, как два процесса поиска встретятся на середине

Двунаправленный поиск реализуется с помощью метода, в котором предусматри­вается проверка в одном или в обоих процессах поиска каждого узла перед его раз­вертыванием для определения того, не находится ли он на периферии другого дерева поиска; в случае положительного результата проверки решение найдено. Например, если задача имеет решение на глубине d=6 и в каждом направлении осуществляется поиск в ширину с последовательным развертыванием по одному узлу, то в самом худшем случае эти два процесса поиска встретятся, если в каждом из них будут раз­вернуты все узлы на глубине 3, кроме одного. Проверка принадлежности узла к другому дереву по­иска может быть выполнена за постоянное время с помощью хэш-таблицы, поэтому временная сложность двунаправленного поиска определяется как 0(bd/2). В памяти необходимо хранить по крайней мере одно из деревьев поиска, для того, чтобы мож­но было выполнить проверку принадлежности к другому дереву, поэтому простран­ственная сложность также определяется как о (bd/2). Такие требования к пространст­ву являются одним из наиболее существенных недостатков двунаправленного поиска.

Благодаря такому уменьшению временной сложности двунаправленный поиск ста­новится привлекательным.

Сложность: Допустим, что предшественниками уз­ла n, определяемыми с помощью функции Pred(n), являются все те узлы, для кото­рых п служит преемником. Для двунаправленного поиска требуется, чтобы функция определения предшественника Pred(n) была эффективно вычислимой. Простейшим является такой случай, когда все действия в пространстве состояний обратимы таким образом, что Pred(n) =Suсс_1 (п), а другие случаи могут потребовать проявить значи­тельную изобретательность.

Под понятием “цель” при поиске “в обратном направлении от цели” рассматривается множество целевых состояний как единствен­ное целевое состояние, каждым из предшественников которого также является множество состояний. Наиболее сложным случаем для двунаправленного поиска является такая задача, в которой для проверки цели дано только неявное описание некоторого (возможно, большого) множества целевых состояний, например всех состояний, соответствую­щих проверке цели “мат” в шахматах.

18. Представление знаний. Категории и объекты.

Рассматривается вопрос о том, какое информаци­онное наполнение следует поместить в базу знаний агента, т.е. как представ­лять факты о мире. Важной частью любого способа представления знаний является класси­фикация объектов по категориям. Хотя взаимодействие с миром происходит на уровне отдельных объектов, формирование рассуждений в основном происходит на уровне категорий. Например, покупатель может иметь перед собой цель купить хотя бы какой-то баскетбольный мяч, а не конкретный баскетбольный мяч.

Для представления категорий в логике первого порядка могут применяться два ос­новных способа: представление с помощью предикатов или с помощью объектов. Это означает, что для этого можно либо применить предикат Basketball (Ь) либо овеществить всю категорию баскетбольных мячей в виде некоторого объекта — множества баскетбольных мячей Basketballs.

Категории служат для организации и упрощения базы знаний с помощью ^ наследования. Если известно, что все экземпляры категории Food (пища) съедоб­ны, и сформулировано утверждение, что Fruit (фрукты) — это подкласс класса Food, a Apples (яблоки) — подкласс класса Fruit, то становится известно, что ка­ждое яблоко съедобно.

Отношения между классами и подклассами позволяют организовывать категории в виде некоторой ^ таксономии, или таксономической иерархии.

Логика первого порядка позволяет легко формулировать фак­ты о категориях, либо связывая объекты с категориями, либо применяя кванторы к их элементам, как описано ниже.

  • Любой объект — элемент некоторой категории, например:

ВВ9 ϵ Basketballs

  • Любая категория — подкласс другой категории, например:

Basketballs ϵ Balls

  • Все элементы категории имеют некоторые свойства, например:

х ϵ Basketballs => Round(x)

Хотя отношения между подклассами и классами, а также между элементами и множествами являются для категорий наиболее важными, необходимо также иметь возможность формулировать отношения между категориями, которые не являются подклассами друг друга. Например, если будет отмечено, что Males (Самцы) и Females (Самки) — подклассы класса Animals (Животные), то этим не будет ска­зано, что ни один самец не может одновременно быть самкой. Две или несколько категорий являются непересекающимися, если они не имеют общих элементов. И даже если известно, что категории самцов и самок не пересекаются, на этом осно­вании нельзя утверждать, что животное, не являющееся самцом, должно быть сам­кой, если не сформулировано дополнительное утверждение, что самцы и самки образуют исчерпывающую декомпозицию категории животных. Непересекающую ся исчерпывающую декомпозицию принято называть сегментацией. Категории могут быть также определены путем указания необходимых и доста­точных условий принадлежности к ним. Например, холостяк— это неженатый взрослый мужчина:

Физическая композиция

Один объект может составлять часть другого.для этого исполь­зуется общее отношение PartOf. Объекты могут группироваться в иерархии PartOf, напоминающие иерархию Subset (подмножество), например, как показа­но ниже.

PartOf{Bucharest,Romania)

PartOf(Romania,EasternEurope)

Отношение PartOf является транзитивным и рефлексивным, т.е. для него спра­ведливы следующие высказывания:

PartOf(х,у) ^ PartOf{у,z) => PartOf(x,z)

PartOf(x,z)

Категории составных объектов часто характеризуются структурными отноше­ниями между частями. Например, любое двуногое имеет две и только две ноги, при­крепленные к телу.

Для категорий может быть определено отношение PartPartition. Любой объект состоит из частей, принадле­жащих к его категориям PartPartition, и может рассматриваться как получаю­щий некоторые свойства от собственных частей. Например, масса составного объек­та — это сумма масс его частей. Кроме того, целесообразно определить составные объекты, имеющие различи­мые части, но не имеющие конкретной структуры.

Например: “Яблоки в этой сумке весят два килограмма”. Можно допустить ошибку, если весу яблок приписать их количество. В данном случае «2 кг» - это некоторое множество яблок. Необходимо ввести новое поня­тие-совокупность(BunchOf)

Определим понятие BunchOf в терминах отношения PartOf. Очевидно, что ка­ждый элемент множества s это часть объекта BunchOf (s):

Для любых Х : х ϵ s => PartOf (x, BunchOf (s))

Более того, BunchOf(s) — это наименьший объект, удовлетворяющий данному условию. Иными словами, BunchOf (s) должен быть частью любого объекта, кото­рый включает все элементы множества s в качестве части:

Для любых Х и У: х ϵ s => PartOf (х, у)] => PartOf(BunchOf(s) , у)

Эти аксиомы представляют собой пример общего метода, называемого ^логической минимизацией, с помощью которого любой объект может быть определен как наи­меньший объект, удовлетворяющий определенным условиям.

Некоторые категории имеют строгие определения, например, некоторый объект рассматривается как треугольник тогда и только тогда, когда он явля­ется многоугольником с тремя сторонами. С другой стороны, большинство категорий в реальном мире не имеют четких определений; они называются категориями ^ естественных разновидностей.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]