Справочник от Автор24
Найди эксперта для помощи в учебе
Найти эксперта
+2

Функциональное и логическое программирование

Определение 1

Функциональное и логическое программирование — это сфера дискретной математики и направление в программировании, трактующее вычислительный процесс как определение значений функций в математическом смысле.

Языки программирования

Задачей функционального и логического программирования считается определение решений и этот аспект тесно взаимосвязан с задачами, которые решаются системами искусственного интеллекта и экспертными системами (ЭС). На начальной стадии появления систем искусственного интеллекта и экспертных систем был выделен определённый класс специальных программных языков, а именно, класс языков для написания логических и функциональных программ. Классификация языков программирования приведена на рисунке ниже:

Классификация языков программирования. Автор24 — интернет-биржа студенческих работ

Рисунок 1. Классификация языков программирования. Автор24 — интернет-биржа студенческих работ

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

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

«Функциональное и логическое программирование» 👇
Помощь эксперта по теме работы
Найти эксперта
Решение задач от ИИ за 2 минуты
Решить задачу
Найди решение своей задачи среди 1 000 000 ответов
Найти

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

Самыми распространёнными языками функционального программирования считаются ЛИСП и РЕФАЛ, а самым известным языком логического программирования является Пролог. Но следует заметить, что с прогрессом программных языков, а именно, с возникновением объектно-ориентированных языков, а также баз данных, сфера их использования стала значительно меньше. К примеру, ЛИСП применяется в качестве оболочки Автокада, а РЕФАЛ служит средством для формирования метаязыков и метакомпиляторов. То есть, внимание следует уделять не конкретным языкам функционального и логического программирования, а методикам, положенным в основу их проектирования, которые являются главными при реализации систем выработки решений. ЛИСП и Пролог когда-то были основой для формирования экспертных систем. То есть, чтобы увидеть круг проблем, решаемых при помощи логического и функционального программирования, следует рассмотреть набор задач, рассматриваемых в экспертных системах. В первую очередь, такими задачами являются задачи прямого и обратного вывода.

Прямой и обратный вывод

Когда используется прямая цепочка рассуждений, то выполняется решение задачи по заданным начальным условиям, а необходимо определить последствия. При обратной цепочке рассуждений необходимо по известному итогу определить, приведшие к нему причины. Задачи такого типа обычно отображаются в терминологии продукционных систем подачи знаний, в которых знания представляются в форме продукций/правил, которые имеют следующий формат:

Если , То .

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

Рассмотрим самый простой пример приёма сотрудника на работу:

Приём сотрудника на работу. Автор24 — интернет-биржа студенческих работ

Рисунок 2. Приём сотрудника на работу. Автор24 — интернет-биржа студенческих работ

Дерево решений будет сохранено в таблице, приведённой на рисунке ниже:

Таблица. Автор24 — интернет-биржа студенческих работ

Рисунок 3. Таблица. Автор24 — интернет-биржа студенческих работ

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

Таблица. Автор24 — интернет-биржа студенческих работ

Рисунок 4. Таблица. Автор24 — интернет-биржа студенческих работ

Алгоритм решения данной задачи состоит из следующих операций:

  1. Выполнить определение переменной логического вывода и её величину.
  2. Выполнить поиск первого вхождения данной переменной в таблицу дерева решений с необходимой величиной и типом вершины «вывод». В случае неудачного поиска переменной, задать переменной var значение, равное единице.
  3. Осуществить выбор исходной относительно найденной вершины. Если такой нет, выполнить переход к шагу пять, если есть, занести в таблицу вывода новую строку и заполнить поля: № варианта = var, Переменная = Переменная из исходной вершины таблицы дерева решений, Значение = Дуга текущей вершины.
  4. Задать исходной вершине статус текущей и вернуться к шагу три.
  5. Определить очередное вхождение переменной вывода в таблицу дерева решений. Если его не существует, то финиш. В противном случае var = var + 1 и переход к пункту три.
Дата написания статьи: 16.07.2020
Найди решение своей задачи среди 1 000 000 ответов
Крупнейшая русскоязычная библиотека студенческих решенных задач
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot