- •Билет № 6
- •Семантические сети.
- •Основные понятия Пролога – переменные свободные и связанные; анонимная переменная
- •Описать базу знаний о родственных отношениях
- •Билет № 7
- •1.Экспертные системы
- •Основные понятия Пролога – отсечения.
- •3.Создать предикат, который будет дублировать символ, введенный пользователем с клавиатуры
- •Билет № 8
- •Предметные области экспертных систем
- •Рекурсия в Прологе. Достоинства и недостатки
- •Создать предикат, позволяющий вычислить длину списка, т.Е. Количество элементов в списке
- •Билет № 9
- •Хвостовая рекурсия.
- •Создать предикат, позволяющий проверить принадлежность элемента списку
- •Билет № 10
- •Этапы и технология разработки экспертных систем
- •Организация циклов на основе рекурсии
- •Написать предикат, позволяющий соединить два списка в один.
Билет № 6
Семантические сети
Основные понятия Пролога – переменные свободные и связанные; анонимная переменная
Описать базу знаний о родственных отношениях
Семантические сети.
В основе этого способа представления знаний лежит идея о том, что любые знания можно представить в виде совокупности понятий(объектов) и отношений(связей). Семантическая сеть представляет собой ориентированный граф, вершинами которого являются понятия, а дугами -отношения между ними. Сам термин “ семантическая” означает смысловая.
Пример семантической сети
Основным преимуществом этой модели является наглядность представления знаний, а также соответствие современным представлениям об организации долговременной памяти человека. Недостаток – сложность поиска вывода, а также сложность корректировки, т.е. удаления и дополнения сети новыми знаниями.
Основные понятия Пролога – переменные свободные и связанные; анонимная переменная
Программа на языке Пролог, ее иногда называют базой знаний, состоит из предложений (или утверждений ), каждое предложение заканчивается точкой.
Предложения бывают двух видов: факты, правила.
Факт - это предложение, у которого тело пустое. Правило - это предложение, истинность которого зависит от истинности одного или нескольких предложений.
Имя переменной в Турбо Прологе может состоять из букв латинского алфавита, цифр, знаков подчеркивания и должно начинаться с прописной буквы или знака подчеркивания. При этом переменные в теле правила неявно связаны квантором всеобщности. Переменная в Прологе, в отличие от алгоритмических языков программирования, обозначает объект, а не некоторую область памяти. Пролог не поддерживает механизм деструктивного присваивания, позволяющий изменять значение инициализированной переменной, как императивные языки.
Переменные могут быть свободными или связанными.
Свободная переменная - это переменная, которая еще не получила значения. Она не равняется ни нулю, ни пробелу; у нее вообще нет никакого значения. Такие переменные еще называют неконкретизированными.
Переменная, которая получила какое-то значение и оказалась связанной с определенным объектом, называется связанной. Если переменная была конкретизирована каким-то значением и ей сопоставлен некоторый объект, то эта переменная уже не может быть изменена.
Областью действия переменной в Прологе является одно предложение. В разных предложениях может использоваться одно имя переменной для обозначения разных объектов. Исключением из правила определения области действия является анонимная переменная, которая обозначается символом подчеркивания " _ ". Анонимная переменная применяется в случае, когда значение переменной не важно. Каждая анонимная переменная - это отдельный объект.
Описать базу знаний о родственных отношениях
DOMAINS /* раздел описания доменов */
s=string /* вводим синоним для строкового типа данных */
PREDICATES /* раздел описания предикатов */
mother(s,s) /* предикат мама будет иметь два аргумента
строкового типа */
grandmother(s,s) /* то же имеет место и для предиката бабушка */
CLAUSES /* раздел описания предложений */
mother("Даша","Маша"). /* "Даша" и "Маша" связаны отношением мама */
mother("Наташа","Даша"). /* "Наташа" является мамой "Даши" */
mother("Наташа","Глаша"). /* "Наташа" и "Глаша" связаны
отношением мама */
mother("Даша","Саша"). /* "Даша" является мамой "Саши" */
grandmother(X,Y):– /* X является бабушкой Y,
если найдется такой Z, что */
mother(X,Z), /* X является мамой Z, а */
mother(Z,Y). /* Z является мамой Y */
