Презентация на тему "Введение в Пролог"

Презентация: Введение в Пролог
1 из 67
Ваша оценка презентации
Оцените презентацию по шкале от 1 до 5 баллов
  • 1
  • 2
  • 3
  • 4
  • 5
0.0
0 оценок

Комментарии

Нет комментариев для данной презентации

Помогите другим пользователям — будьте первым, кто поделится своим мнением об этой презентации.


Добавить свой комментарий

Аннотация к презентации

Посмотреть и скачать бесплатно презентацию по теме "Введение в Пролог", состоящую из 67 слайдов. Размер файла 0.86 Мб. Каталог презентаций, школьных уроков, студентов, а также для детей и их родителей.

  • Формат
    pptx (powerpoint)
  • Количество слайдов
    67
  • Слова
    другое
  • Конспект
    Отсутствует

Содержание

  • Презентация: Введение в Пролог
    Слайд 1

    Введение в Пролог

  • Слайд 2

    В октябре 1981 года Японское министерство международной торговли и промышленности объявило о создании исследовательской организации — Института по разработке методов создания компьютеров нового поколения (InstituteforNewGenerationComputerTechnologyResearchCenter). Целью данного проекта было создание систем обработки информации, базирующихся на знаниях. Предполагалось, что эти системы будут обеспечивать простоту управления за счет возможности общения с пользователями при помощи естественного языка. Эти системы должны были самообучаться, использовать накапливаемые в памяти знания для решения различного рода задач, предоставлять пользователям экспертные консультации, причем от пользователя не требовалось быть специалистом в информатике. Предполагалось, что человек сможет использовать ЭВМ пятого поколения так же легко, как любые бытовые электроприборы типа телевизора, магнитофона и пылесоса. Вскоре вслед за японским стартовали американский и европейский проекты.

  • Слайд 3

    Появление таких систем могло бы изменить технологии за счет использования баз знаний и экспертных систем. Основная суть качественного перехода к пятому поколению ЭВМ заключалась в переходе от обработки данных к обработке знаний. Японцы надеялись, что им удастся не подстраивать мышление человека под принципы функционирования компьютеров, а приблизить работу компьютера к тому, как мыслит человек, отойдя при этом от фон неймановской архитектуры компьютеров. В 1991 году предполагалось создать первый прототип компьютеров пятого поколения

  • Слайд 4

    В качестве основной методологии разработки программных средств для проекта ЭВМ пятого поколения было избрано логическое программирование, ярким представителем которого является язык Пролог. В настоящее время Пролог остается наиболее популярным языком искусственного интеллекта в Японии и Европе (в США, традиционно, более распространен другой язык искусственного интеллекта —язык функционального программирования Лисп).

  • Слайд 5

    Название языка "Пролог"происходит от слов ЛОГическоеПРОграммирование (PROgrammationenLOGique во французском варианте и PROgramminginLOGic — в английском). Пролог основывается на таком разделе математической логики, как исчисление предикатов.

  • Слайд 6

    Традиционно под программой понимают последовательность операторов (команд, выполняемых компьютером). Этот стиль программирования принято называть императивным. Программируя в императивном стиле, программист должен объяснить компьютеру, как нужно решать задачу. Противоположный ему стиль программирования — так называемый декларативный стиль, в котором программа представляет собой совокупность утверждений, описывающих фрагмент предметной области или сложившуюся ситуацию. Программируя в декларативном стиле, программист должен описать, что нужно решать.

  • Слайд 7

    Соответственно и языки программирования делят на императивные и декларативные. Императивные языки основаны на фон неймановской модели вычислений компьютера. Решая задачу, императивный программист вначале создает модель в некоторой формальной системе, а затем переписывает решение на императивный язык программирования в терминах компьютера. Но, во-первых, для человека рассуждать в терминах компьютера довольно неестественно. Во-вторых, последний этап этой деятельности (переписывание решения на язык программирования) по сути дела не имеет отношения к решению исходной задачи. Очень часто императивные программисты даже разделяют работу в соответствии с двумя описанными выше этапами. Одни люди, постановщики задач, придумывают решение задачи, а другие, кодировщики, переводят это решение на язык программирования.

  • Слайд 8

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

  • Слайд 9

    Основные области применения Пролога:

    быстрая разработка прототипов прикладных программ; автоматический перевод с одного языка на другой; создание естественно-языковых интерфейсов для существующих систем; символьные вычисления для решения уравнений, дифференцирования и интегрирования; проектирование динамических реляционных баз данных; экспертные системы и оболочки экспертных систем; автоматизированное управление производственными процессами; автоматическое доказательство теорем; полуавтоматическое составление расписаний; системы автоматизированного проектирования; базирующееся на знаниях программное обеспечение; организация сервера данных или, точнее, сервера знаний, к которому может обращаться клиентское приложение, написанное на каком-либо языке программирования

  • Слайд 10

    Области, для которых Пролог не предназначен: большой объем арифметических вычислений (обработка аудио, видео и т.д.); написание драйверов.

  • Слайд 11

    Имена конкретных объектов, отношений, свойств образуются по определенным правилам, зависящим от версии языка Пролог, и называются символическими именами. Символическое имя (атом) – это неразрывная цепочка букв, цифр и символа подчеркивания, начинающаяся со строчной латинской (русской) буквы. Для именования объектов и их свойств могут использоваться строки – последовательности любых символов, заключенные в двойные кавычки. Например: стол, студент,table_1, «группа 408». Для описания в программе некоторого объекта, принадлежащего определенному классу, используется переменная. Переменная в программе представляется своим именем. Имя переменной в Прологе – это латинских букв или цифр, начинающихся с прописной латинской буквы или символа подчеркивания. Примеры имен переменных: D, X,Y,_P, Leda

  • Слайд 12

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

  • Слайд 13

    Знания о предметной области выражаются на языке Пролог в виде предложений, называемых утверждениями (СLAUSES). . /*факт*/ или :-./*правило*/ где заголовок является предикатом и полностью характеризует описываемое отношение. Тело утверждения состоит либо из одного предиката либо из списка предикатов, разделенных знаками “,”“;”, “not”, соответствующими логическим операциям И, ИЛИ, НЕ .

  • Слайд 14

    DOMAINS /*описание типов данных*/ name = string FACTS /*описание динамической базы данных*/ закуска (name) мясо (name) рыба (name) десерт (name) СLAUSES /*утверждения (факты и правила) БЗ*/ закуска («артишоки_в_белом_соусе»). закуска («трюфели_в_шампанском»). закуска («салат_с_яйцом»). мясо («говяжье_жаркое»). мясо («цыпленок_в_соусе»). рыба («окунь_во_фритюре»). рыба(«фаршированный_судак»). десерт(«грушевое_мороженое»).

  • Слайд 15
  • Слайд 16

    Программа начинает выполняться, если в неё ввести те вопросы, ответы на которые хочет получить пользователь. Для этого предназначен раздел GOAL (Цель). В нем записываются необходимые вопросы – третий тип утверждений в программе на Прологе GOAL рыба (*окунь_во_фритюре*). yes

  • Слайд 17

    GOAL закуска (Х). Х= артишоки_в_белом_соусе Х= трюфели_в_шампанском Х= салат_с_тунцом

  • Слайд 18

    PREDICATES /*Определение предиката блюдо*/ блюдо (name) СLAUSES блюдо(Y):-мясо(Y) блюдо(Y):-рыба (Y)

  • Слайд 19

    GOAL блюдо(Y). Y=говяжье_жаркое Y=цыпленок_в_соусе Y=окунь_во_фритюре Y=фаршированный_судак

  • Слайд 20

    /*Определение отношения «обед»*/ обед (X,Y,Z):- закуска (X), блюдо(Y), десерт(Z). обед (X,Y, Z). программа выдаст список всех возможных комбинаций из трех блюд: X = артишоки_в_белом_соусе, Y = говяжье_жаркое, Z= грушевое_мороженое … GOAL обед (X,Y, Z), рыба (Y). GOAL

  • Слайд 21
  • Слайд 22

    Примеры правил:

    любит (X, «баскетбол»):- любит (X, «бег»). можно купить (X) :-есть в магазине(X,V),VV2.

  • Слайд 23

    Варианты студентов

    Нравится(Х, "пироженое»):-любит (Х, «сладкое) Выше (Х1,Х2):-рост(Х1,У1), рост (Х2,У2),У1>У2 Нужно закупать(х):-есть на складе(х),хУ2

  • Слайд 24

    Нравится(Х, “Mercedes”):-нравится(Х,” немецкий автопром”) Опытнее(Х1,Х2):-стаж(Х1,V1),стаж(X2, V2), V1>V2

  • Слайд 25

    DOMAINS /*описание типов данных*/ kol_vo= integer FACTS /*описание динамической базы данных*/ калории (name,kol_vo ) СLAUSES /*утверждения (факты и правила) БЗ*/ калории(«артишоки_в_белом_соусе», 150). калории («трюфели_в_шампанском», 212 ). калории («салат_с_яйцом», 202). калории(«говяжье_жаркое», 532). калории(«цыпленок_в_соусе», 400). калории(«окунь_во_фритюре», 270). калории(«фаршированный_судак», 254). калории(«грушевое_мороженое», 223). калории («земляника _со_сливками», 289).

  • Слайд 26

    GOAL закуска (Х), калории(X,Y). PREDICATES значение (name, name, name, kol_vo) сбалансированный_обед(name, name, name) СLAUSES /*Определение отношения «калорийность обеда»*/ значение (X,Y,Z,V):- калории(X,E), калории(Y, P), калории(Z,D), V=E+P+D сбалансированный_обед(X,Y,Z):-обед (X,Y, Z), значение (X,Y,Z,V),V

  • Слайд 27

    PREDICATES /*Определение предикатов*/ СLAUSES /*утверждения (факты и правила) БЗ*/ GOAL DOMAINS /*описание типов данных*/ FACTS ( DATABASE) /*описание динамической базы данных*/

  • Слайд 28

    Структура раздела утверждений программы

    База знаний (программа на языке Пролог) Определение отношения 1 Утверждение 1 Утверждение 2 Утверждение n факт Правило Определение отношения 2 Определение отношения n

  • Слайд 29

    symbol – символическое имя string - строка char - отдельный символ, заключенный в апострофы Integer целое число в диапазоне от -32768 до 32767 byte - целое число в диапазоне от 0 до 255 word целое число в диапазоне от 0 до 65535 real- любое число

  • Слайд 30

    Пять основных операций определяют реляционную алгебру:

    Объединение Симметрическая разность Декартово произведение Проекция Выборка

  • Слайд 31

    Объединение

    r_unon_s(X1,X2,…, Xn) :- r(X1,X2,…, Xn). r_unon_s(X1,X2,…, Xn) :- s(X1,X2,…, Xn). Пример: блюдо(Y):-мясо(Y). блюдо(Y):-рыба (Y).

  • Слайд 32

    Симметрическая разность

    r_diff_s( X1,X2,…, Xn) :- r(X1,X2,…, Xn), not s(X1,X2,…, Xn). r_diff_s(X1,X2,…, Xn) :- s(X1,X2,…, Xn), not r(X1,X2,…, Xn). Пример: футболист_либо_волейболист(X) :- футболист(X), not волейболист(X). футболист_либо_волейболист() :- волейболист(X), not футболист(X)

  • Слайд 33

    Декартово произведение

    r_x_s(X1,X2,…,Xn, Y1,Y2,…,Yn):- r(X1,X2,…Xn), s(Y1,Y2,…,Yn). Пример: /*Определение отношения «обед»*/ обед (X,Y,Z):- закуска (X), блюдо(Y), десерт(Z).

  • Слайд 34

    Проекция

    r7(X1, X3):- r(X1,X2, …, Xn). Пример: аптека( 6, «Цвиллинга, 6», «264-67-66»). телефон_аптеки(NomApt,TelApt):- аптека(NomApt, _, TelApt).

  • Слайд 35

    Выборка

    rv(X1, X3):- r(X1,X2,X3), X2>X1 Пример: аптека( 6, «Цвиллинга, 6», «264-67-66»). телефон_аптеки(NomApt,TelApt):- аптека(NomApt, _, TelApt), NomApt

  • Слайд 36
  • Слайд 37

    name, child, grandchild – string Parent(name, child) nondetermed Grandparent(name, grandchild) Parent(Pam,Bob) Parent(Tom,Bob) Parent(Tom,Liz) Parent(Bob,Ann) Parent(Bob,Pat) Parent(Pat,Jim) Grandparent(Pam, Ann) Grandparent(Tom, Ann) Grandparent(Bob, Jim) Grandparent(Pam, Pat) Grandparent(Tom,Pat )

  • Слайд 38
  • Слайд 39
  • Слайд 40
  • Слайд 41
  • Слайд 42
  • Слайд 43
  • Слайд 44
  • Слайд 45
  • Слайд 46
  • Слайд 47
  • Слайд 48
  • Слайд 49

    Рассмотрим следующие предложения на естественном языке:

    «Маше нравятся цветы» «Аня любит сына» Сын Ани любит Машу «Оля любит всех, кого любит Аня» «Нам нравится всё, что нравится человеку, которого мы любим» Как можно записать эти предложения в виде фактов ?

  • Слайд 50

    нравится (маша, цветы) любит (аня, сын(аня)) любит (сын(аня), маша)

  • Слайд 51

    Четвертое предложение задает правило: «Для любого Х, если любит (аня, Х), то из этого следует, что любит (оля, Х)» Запишем это правило в виде импликации: любит (оля, Х)  любит (аня, Х),

  • Слайд 52

    Антон, Миша и Женя – члены альпинклуба. Каждый член альпинклуба или горнолыжник, или скалолаз или и то, и другое. Никто из скалолазов не любит дождь. Все горнолыжники любят снег. Миша любит всё, что не любит Антон, и не любит всё, что любит Антон. Антон любит снег и дождь. Есть ли член альпинклуба, который является скалолазом и не является горнолыжником? И Кто он?

  • Слайд 53

    Вариант Ивана Пименова

    DOMAINS Name string PREDICATES Горнолыжник (Name) Скалолаз (Name) Любит_дождь (Name) Любит_снег (Name) FACTS горнолыжник (Name):-любит_снег (Name) скалолаз (Name):- notлюбит_дождь (Name) CLAUSES Любит_снег(Антон) Любит_дождь(Антон) Любит_снег(Миша):- not Любит_снег(Антон) Любит_дождь(Миша):- not Любит_дождь(Антон) Not Любит_снег(Миша):-Любит_снег(Антон) Not Любит_дождь(Миша):-Любит_дождь(Антон) GOAL ? Скалолаз(Name), not горнолыжник(name)

  • Слайд 54

    DOMAINS /*задание областей данных*/ Name = anton;misha;jenia /*Область Name это или anton или misha или jenia */ Weather = rain;snow /*Определение области Weather */ Spec = skalolaz;gornolysnik /*Определение области Spec */

  • Слайд 55

    PREDICATES /*Определение предикатов*/ club (Name) /* Name является членом клуба*/ nlike (Name, Weater) /* Name не нравится Weater*/ like (Name, Weater) /* Name нравится Weater*/ is (Name, Spec) /* Name по специализации Spec */ question /*Теорема, которую нужно доказать*/

  • Слайд 56

    Факты и правила

    CLAUSES club(anton). club(misha). club(jenia). like(anton, snow). like(anton, rain). like(misha,X) :- not(like(anton,X)). nlike(X,Y):-not(like(X,Y)). nlike(misha,Y):-like(anton,Y). is (X, gornolysnik):- club(X), like(X,snow). is (X, skalolaz):-club(X), not(like(X,rain)).

  • Слайд 57

    Выясняем имя того, кто является скалолазом и не является горнолыжником. Предикат неудачи – fail , заставляет перейти к следующему определению question

    question:- readchar(), nl, is(Name, skalolas),not(is(Name,gornolysnik)), cursor(10,20), write(“Скалолаз,но не горнолыжник), wrute (Name), readchar(),nl,fail.

  • Слайд 58

    Выясняем имя того, кто является искалолазом и горнолыжником.

    question:- nl, is(Name, skalolas),is(Name,gornolysnik), cursor(12,20), write(“Скалолаз и горнолыжник: “), wrute (Name), readchar(),nl,fail. Какая специализация у Антона question:- nl, is(anton, Spec), cursor(14,20), write(“anton -“, Spec), readchar(),nl,fail.

  • Слайд 59

    question:- nl, is(Name, gornolysnik), not (is(Name,skalolas)), cursor(16,20), write(“Не скалолаз, но горнолыжник: “), wrute (Name), readchar(),nl,fail. GOAL question.

  • Слайд 60

    Король думает, что королева думает, что она не в своем уме. В своем ли уме король?

    DOMAINS /*Описание областей данных*/ Name = KL; KWA Swoystwo = wume;newume /* Swoystwoможет принимать значение wumeилиnewume*/ Mysly = imeet_mesto(Swoystwo, Swoystwo) /*Mysly- это то, о чем можно думать*/

  • Слайд 61

    PREDICATES /*Описание предикатов*/ mojetbyt (Swoystwo) /* mojetbyt - cвойство, принимающее значение из областиSwoystwo*/ imeet_mesto(Swoystwo, Swoystwo) dumaet (Swoystwo, Mysly) wopros

  • Слайд 62

    CLAUSES /*Описание предметной области*/ mojetbyt (wume). mojetbyt (newume). /*можно быть или « в своем уме» или «не в своем уме»*/

  • Слайд 63

    dumaet (wume, imeet_mesto(X,Y)):- imeet_mesto(X,Y). /*»в своем уме» думает то, что есть на самом деле*/

  • Слайд 64

    dumaet(newume, imeet_mesto(X,Y)):-not imeet_mesto(X,Y)). /*» не в своем уме» думает то, чего нет на самом деле*/

  • Слайд 65

    imeet_mesto(X,Y). /*на самом деле, есть то, что есть*/

  • Слайд 66

    wopros:- mojetbyt(KL), mojetbyt(KWA), dumaet (KL, dumaet(KWA, imeet_mesto(KWA, newume))), nl, write («Королева -», KWA, «король - », KL), nl, fail.

  • Слайд 67

    GOAL /*Запрос или теорема, которую нужно доказать*/ wopros

Посмотреть все слайды

Сообщить об ошибке