Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Логическое программирование.

Читайте также:
  1. I. Определение эпидемического процесса и методологическое обоснование разделов учения об эпидемическом процессе.
  2. I. Определение эпидемического процесса и методологическое обоснование разделов учения об эпидемическом процессе.
  3. III. Психологическое сопровождение учебно-воспитательного процесса (участие в формировании «умения учиться») Определение мотивации учебной деятельности
  4. VI. Неврологическое обследование.
  5. VI. Психологическое сопровождение профессионального самоопределения, предпрофильной подготовки обучающихся (воспитанников) Выявление образовательных запросов
  6. VII.Модульное программирование.
  7. Акмеологическое понимание человека как индивида
  8. Акушерско-гинекологическое объединение.
  9. Анатомо-физиологическое обоснование массажа соединительной ткани
  10. АНАТОМО-ФИЗИОЛОГИЧЕСКОЕ ОБОСНОВАНИЕ МАССАЖА, МЕХАНИЗМ ЕГО ДЕЙСТВИЯ НА ОРГАНИЗМ ЧЕЛОВЕКА

Логика и программирование долгое время были непересекающимися областями исследований. Еще в 1936 г. Тьюринг показал, что любая вычислимая функция может быть вычислена посредством дедукции (вывода) в исчислении предикатов первого порядка, существующий вариант которого построен Г.Фреге в 1879 г. Однако этот результат не нашел практического применения, так как не был известен алгоритм установления общезначимости (истинности во всех интерпретациях) логической формулы. К тому же было показано, что эта проблема алгоритмически неразрешима. В 1930 г. Френч и Эрбран независимо доказали фундаментальную теорему, предоставляющую алгоритм, который способен установить общезначимость логической формулы, если она является таковой. В противном случае этот алгоритм зацикливается. Поэтому проблему установления общезначимости в исчислении предикатов первого порядка стали считать полуразрешимой. Разработанный алгоритм также не нашел практического применения вследствие большой трудоемкости. В 1962 г. Робинсон предложил метод резолюции, который обладает существенно меньшей трудоемкостью, чем алгоритм Эрбрана, однако все еще не решает проблему комбинаторного взрыва. В этом методе используется единственное мощное правило вывода вместо множества правил, предложенных логиками. Метод резолюции стал применяться в автоматическом доказательстве теорем. Одновременно предпринимались усиленные попытки поиска стратегий вывода, сокращающих пространство поиска. На этом пути были достигнуты заметные успехи.

Основываясь на полученных к тому времени результатах, французский ученый А.Кольмероэ создал язык PROLOG (PROgramming in LOGic - программирование в терминах логики), первоначально предназначенный для работы с естественными языками, и опубликовал его описание в 1973 г. Значительного сужения пространства удалось достичь за счет использования логической системы Хорна, являющейся частью исчисления предикатов, и линейной по входу стратегии резолюции. Но даже при таких ограничениях оказалось возможным представлять любую вычислимую функцию. (Заметим, что логика Хорна шире теории реляционных баз данных.) Большое значение в становлении, развитии и осмыслении PROLOG'а имели работы Р.Ковальского. Появление PROLOG'а открыло новую область исследований - логическое, или реляционное, программирование, где практические результаты зачастую предшествует их теоретическому осмыслению и обоснованию.

Центральным понятием в логическом программировании является отношение. Программа представляет собой совокупность определений отношений между объектами (в терминах условий, или ограничений) и цели (запроса). Процесс выполнения программы трактуется как процесс установления общезначимости логической формулы, построенной из программы по правилам, установленным семантикой того или иного языка. Результат вычисления является побочным продуктом этого процесса. В реляционном программировании нужно только специфицировать факты, на которых алгоритм основывается, а не определять последовательность шагов, которые требуется выполнить. Это свидетельствует о декларативности языков логического программирования. Она метко выражена в формуле Р.Ковальского: "алгоритм = логика + управление". В настоящее время известны и другие языки логического программирования.

Языки логического программирования характеризуются:

- сверхвысоким уровнем;

- жесткой ориентацией на символьные вычисления (числовая обработка затруднена);

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

- зачастую логической неполнотой в двух аспектах: невозможностью выразить в программе определенные логические конструкции, а также невозможностью получить из программы все правильные выводы.

Логические программы отличаются принципиально низким быстродействием, так как вычисления осуществляются методом проб и ошибок (посредством поиска с возвратом), а также высокой степенью параллелизма, которую трудно реализовать, так как требуется много ресурсов ЭВМ.

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

В настоящее время существует примерно полтора десятка реализаций PROLOG'а, такие как Arity/Prolog и Turbo Prolog, оформленные в виде интегрированных сред. Наиболее удачным вариантом считается VISUAL PROLOG, работающий как Windows-приложение и поддерживающий технологию визуального программирования.

 




Дата добавления: 2014-12-19; просмотров: 44 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.009 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав