![]() |
|
сделать стартовой | добавить в избранное |
![]() |
Компьютеры, Программирование
Программное обеспечение
Логическое и функциональное программирование |
ВведениеЦелью логического и функционального программирования является вывод решений и они тесно связаны с задачами, решаемыми в искусственном интеллекте и экспертных системах (ЭС). На начальном этапе развития систем искусственного интеллекта (СИИ) и ЭС даже выделился целый класс специализированных языков программирования: языки логического и функционального программирования. Процедурная программа состоит из последовательности операторов и предложений, управляющих последовательностью их выполнения. В основе такого программирования лежат взятие значения какой-то переменной, совершение над ним действия и сохранение нового значения с помощью оператора присваивания, и так до тех пор пока не будет получено желаемое окончательное значение. Функциональная программа состоит из совокупности определений функций. Функции, в свою очередь, представляют собой вызовы других функций и предложений, управляющих последовательностью вызовов. Каждый вызов возвращает некоторое значение и вызвавшую ее функцию, вычисление которой после этого продолжается. Этот процесс повторяется до тех пор, пока запустившая процесс функция не вернет результат пользователю. В логических языках программирования для решения задачи достаточно описания структуры и условий этой задачи. Поскольку последовательность и способ выполнения программы не фиксируется, как при описании алгоритма, программы могут в принципе работать в обоих направлениях, то есть программа может как на основе исходных данных вычислить результаты, так и по результатам – исходные данные. Наиболее известными языками функционального программирования являются ЛИСП и РЕФАЛ, а логического – Пролог. Однако, с развитием языков программирования (в частности, с появлением объектно-ориентированных языков) и баз данных область их применения сузилась. Так ЛИСП используется как оболочка Автокад, а РЕФАЛ как средство для построения метаязыков и метакомпиляторов. Поэтому в дальнейшем внимание будет уделено не рассмотрению конкретных языков функционального и логического программирования, а подходам, лежащим в основе их реализации и являющимися базовыми при создании систем принятия решений. ЛИСП и Пролог в свое время являлись базовыми для создания экспертных систем. Поэтому, для того чтобы наглядно представить какой круг задач решается с помощью логического и функционального программирования, рассмотрим задачи, возникающие в ЭС. Прежде всего, это задачи прямого и обратного вывода. Прямой и обратный выводПри использовании прямой цепочки рассуждений решается задача по известным условиям найти последствия. Обратная цепочка рассуждений применяется для того, чтобы по известным результатам найти причины их вызвавшие. Такие задачи часто записывают в терминах продукционных систем представления знаний, в которых знания записываются в виде продукций/правил, имеющих вид: Если &l ;условие&g ;, То &l ;вывод&g ;. Рассмотрим сначала построение обратной цепочки рассуждений. Обратная цепочка рассуждений всегда начинается со следствия (часть То правила). Если в правилах, относящихся к проблемной области, не удается найти условную часть с выполняющимися условиями, необходимо ввести дополнительную информацию.
Цепочка означает процедуру логической связи ряда правил. Для представления таких задач принято использовать дерево решений - специальную диаграмму для представления возможных решений. Дерево решений состоит из вершин двух типов. Вершины решений, содержащие вопросы, обозначаются окружностями. Цели или логические выводы обозначаются прямоугольниками. Вершины нумеруются. Каждая вершина может иметь не более одного входа. Рассмотрим простейший пример с приемом на работу, часто используемый в литературе . Дерево решений будем хранить в следующей таблице : Таблица дерева решений. № вершины Переменная Значение Исходная вершина Дуга Тип вершины 1 Звание - - - решение 2 Должность Отказ 1 нет вывод 3 Возможность да 1 да вывод 4 Открытия - 1 да решение 5 Средний балл - 3 да решение 6 Должность Научный сотрудник 4 да вывод 7 стаж - 5 &l ; 3.5 решение 8 должность конструктор 5 &g ; 3.5 вывод 9 должность Отказ 7 &l ; 2 вывод 10 должность администратор 7 &g ; 2 вывод Для сохранения результатов будем использовать таблицу вывода (в начальный момент таблица пуста). Таблица вывода № варианта Переменная Значение Алгоритм Определить переменную логического вывода и ее значение. Найти первое вхождение этой переменной в таблицу дерева решений с заданным значением и типом вершины «вывод». Если переменная не найдена – неудача. Установить переменную var = 1. Выбрать исходную по отношению к полученной вершине вершину. Если ее нат, перейти к шагу 5. Если есть, записать в таблицу вывода новую строку со значениями полей № варианта = var, Переменная = Переменная из исходной вершины таблицы дерева решений, Значение = Дуга текущей вершины. Сделать исходную вершину текущей. Перейти к шагу 3. Найти следующее вхождение переменной вывода в таблицу дерева решений. Если нет, конец, иначе var = var 1. Перейти к шагу 3. Пусть отказано в приеме на работу. Тогда в ходе выполнения алгоритма таблица вывода будет формироваться следующим образом. Здесь пропущена таблица вывода на предпоследнем этапе. Механизм, основанный на прямой цепочке рассуждений, функционирует следующим образом: Вводится условие. Для каждой ситуации система ищет в базе данных (знаний) правила, в условной части которых содержится соответствующее условие. В соответствии с констатирующей частью (частью ТО) каждое правило может генерировать новые ситуации, которые добавляются к уже существующим. Система обрабатывает каждую вновь сгенерированную ситуацию. При наличии хотя бы одной такой ситуации выполняются действия, начиная с шага 2. Рассуждения заканчиваются, когда больше нет необработанных ситуаций Алгоритм CLS Для построения деревьев решений часто используется алгоритм CLS. Этот алгоритм циклически разбивает обучающие примеры на группы/классы в соответствии с переменной, имеющей наибольшую классифицирующую силу. Каждое подмножество примеров (объектов), выделяемое такой переменной, вновь разбивается на классы с использованием следующей переменной с наибольшей классифицирующей способностью и т.д. Разбиение заканчивается, когда в подмножестве оказываются объекты лишь одного класса. В ходе процесса образуется дерево решений.
Пути движения по этому дереву с верхнего уровня на самые нижние определяют логические правила в виде цепочек конъюнкций. Рассмотрим следующий пример. Проводится антропологический анализ лиц людей двух национальностей по 16 признакам. Х1 (голова) – круглая – 1, овальная – 0. Х2 (уши) – оттопыренные – 1, прижатые – 0. Х3 (нос) – круглый –1, длинный – 0. Х4 (глаза) – круглые – 1, узкие – 0. Х5 (лоб) – с морщинами –1, без морщин – 0. Х6(носогубная складка) – есть – 1, нет – 0. Х7(губы) – толстые – 1, тонкие – 0. Х8 (волосы) – есть – 1, нет – 0. Х9(усы) – есть – 1, нет – 0. Х10 (борода) – есть – 1, нет – 0. Х11(очки) – есть – 1, нет – 0. Х12(родинка) – есть – 1, нет – 0. Х13(бабочка) – есть – 1, нет – 0. Х14(брови) – поднятые вверх – 1, опущенные – 0. Х15(серьга) – есть – 1, нет – 0. Х16(трубка) – есть – 1, нет – 0. Пусть имеется 16 объектов. Объекты с номерами 1 – 8 относятся к первому классу, 9 – 16 ко второму классу. Далее приводится таблица со значениями признаков для этих объектов. № X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 Кл. 1 0 1 0 0 1 1 0 0 1 1 1 0 1 1 0 1 1 2 1 0 1 1 0 0 1 1 0 1 1 1 0 0 1 0 1 3 0 0 0 1 1 1 0 1 1 0 1 1 1 0 0 1 1 4 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 1 1 5 1 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 6 0 0 1 0 1 1 1 0 1 0 1 0 1 0 1 1 1 7 1 1 0 1 0 0 0 0 1 1 0 0 1 1 1 1 1 8 0 0 1 1 0 1 1 0 1 1 1 0 1 0 1 0 1 9 0 0 1 1 0 1 0 0 1 1 0 1 1 1 0 1 2 10 0 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 2 11 1 1 1 0 1 1 0 0 1 1 0 1 0 1 0 0 2 12 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 0 2 13 1 1 0 1 1 0 1 1 1 0 0 0 1 0 0 1 2 14 0 1 1 1 0 0 1 0 1 0 1 0 0 1 1 1 2 15 0 1 0 1 0 1 1 1 0 1 0 0 1 1 0 1 2 16 0 1 1 1 0 0 1 1 0 0 1 0 1 0 1 1 2 Объекты для этой таблицы (надо нарисовать). Основное требование к математическому аппарату обнаружения закономерностей в данных заключается в интерпретации результатов. Правила, выражающие закономерности, формулируются на языке логических высказываний: ЕСЛИ А ТО В, ЕСЛИ (условие1) И (условие2) И И (условие ) ТО (условие 1), где условиеi может быть Xi =C1, Xi &l ; C2, Xi &g ; C3, C4 &l ; Xi &l ; C5 и т.д. Здесь Xi - переменная, Cj – константа. Так классификация лиц в рассматриваемом примере может быть произведена с помощью четырех логических правил: ЕСЛИ (голова овальная) И (есть носогубная складка) И (есть очки) И (есть трубка) ТО (класс1). ЕСЛИ (глаза круглые) И (лоб без морщин) И (есть борода) И (есть серьга) ТО (класс1) ЕСЛИ (нос круглый) И (лысый) И (есть усы) И (брови подняты вверх) ТО (класс2). ЕСЛИ (оттопыренные уши) И (толстые губы) И (нет родинки) И (есть бабочка) ТО (класс2). Математическая запись этих правил выглядит следующим образом: Такие правила имеют две основных характеристики: точность и полноту. Точность правила – это доля случаев, когда правило подтверждается, среди всех случаев его применения (доля случаев В среди случаев А). Полнота – это доля случаев, когда правило подтверждается, среди всех случаев, когда имеет место объяснимый исход (доля случаев А среди случаев В). Правила могут иметь какие угодно сочетания точности и полноты. За исключением одного случая, если точность равна нулю, то равна нулю и полнота, и наоборот.
Они лишь отражают наше понимание структуры физической системы или аспекты ее поведения. Основное назначение логического представления состоит в анализе структурных и функциональных отношений между элементами модели системы. Однако для создания конкретной физической системы необходимо некоторым образом реализовать все элементы логического представления в конкретные материальные сущности. Для описания таких реальных сущностей предназначен другой аспект модельного представления, а именно физическое представление модели. Чтобы пояснить отличие логического и физического представлений, рассмотрим в общих чертах процесс разработки некоторой программной системы. Ее исходным логическим представлением могут служить структурные схемы алгоритмов и процедур, описания интерфейсов и концептуальные схемы баз данных. Однако для реализации этой системы необходимо разработать исходный текст программы на некотором языке программирования (C++, Pascal, Basic/VBA, Java). При этом уже в тексте программы предполагается такая организация программного кода, которая предполагает его разбиение на отдельные модули
1. Функциональное программирование
3. Функциональное и логическое программирование
4. Программирование логической игры на visual basic
5. Логические системы в различных функциональных наборах и их реализация
9. Логические системы в различных функциональных наборах и их реализация
10. Логические задачи на языке программирования Prolog
11. Программное обеспечение ЭВМ и языки программирования
12. Понятие как логико-смысловая форма мышления. Логические операции с понятиями
13. Логическая характеристика понятий. Объединенная классификация суждений
14. Логические определения и разграничения понятий
16. Великобритания (расширенный вариант реферата 9490)
17. Понятие государственного бюджета (Доклад)
18. Государственная власть. Понятие, сущность, формы осуществления
19. Понятие административного правонарушения и состав административного проступка (Контрольная)
20. Административное пресечение (понятие и виды мер пресечения)
21. Понятие, основные черты субъектов административной юрисдикции
25. Понятие договора найма по Закону о договорных и внедоговорных обязанностях
26. Понятие и виды обязательств, возникающих вследствие причинения вреда
27. Обязательства: понятия и виды
29. Понятие и состав земель промышленности и иного назначения
30. Развитие общего понятия и системы преступлений от Русской Правды к Судебнику 1497 г. (Контрольная)
31. Соотношение понятий "единство власти" и "разделение властей"
32. Понятие договора найма по Закону о договорных и внедоговорных обязанностях
33. Понятие государственного режима
34. Понятие, содержание и принципы исполнительной власти
35. Понятие и содержание основ конституционного строя РФ
36. Понятие международного гуманитарного права
37. Понятие и структура компетенции местного самоуправления
42. Понятие правонарушений и их виды
43. Понятие права, и современный подход к типологии права
44. Понятие и классификация договоров в римском праве
45. Понятие и виды договоров в Римском частном праве
46. Понятие правоспособности, её статусы и изменения
48. Понятие и задачи таможенного оформления, порядок производства
49. Соотношение понятий "система права" и "правовая система"
50. Форма правления, понятие и виды
51. Государство: понятие, признаки, формы правления и функции
52. Понятие источника (формы) права
53. Правовые отношения: понятия, признаки, элементы, виды
57. Трудовое право: понятие и виды переводов
58. Понятие трудового права. Предмет науки трудового права
59. Понятие и значение государственного кредита
60. Ценные бумаги: понятие и виды
62. Понятие канона
63. Культура: особенности и значение, взгляды и понятия
64. О понятиях "культура, цивилизация"
66. Понятие счастья в поэме Некрасова "Кому на Руси жить хорошо?"
68. Реферат по научной монографии А.Н. Троицкого «Александр I и Наполеон» Москва, «Высшая школа»1994 г.
69. Основные понятия. Типы цивилизаций
73. Применение ЭВМ в жизнедеятельности человека
74. Выбор логической структуры процессора
76. Устройство и назначение системы BIOS ЭВМ
77. Классификация и техническая реализация основных устройств ЭВМ
78. История развития ЭВМ. Механические и электромеханические счетные машины
79. История развития устройств ввода ЭВМ
80. Прикладное программирование, 1 семестр
81. Программирование ориентированное на объекты
82. Задачи графических преобразований в приложениях моделирования с использованием ЭВМ
84. Программирование - интерфейс RS-232
90. Программирование на "СИ" (ТХТ, СИ)
91. 10 задач с решениями программированием на Паскале
92. Программирование и алгоритмические языки
93. Использование макросов для программирования в MS ACCESS
94. Обучающая программа "Графика" программированию в графическом режиме на языке turbo-pascal 7.x
95. Язык программирования Паскаль и ветвление
96. Программирование на Object Pascal в среде Delphi
97. Возможности системы программирования Delphi для создания пользовательского интерфейса