Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые обзорные » Перевірка логічного проходження методом резолюції

Реферат Перевірка логічного проходження методом резолюції





закінчена з позитивним результатом.

Недолік алгоритму: якщо порожня резольвента знайдена, а диз'юнктів були задіяні не всі, то операція об'єднання не припинить виконання пошуку, а продовжить свою роботу. Тому необхідно використовувати змінну, яка буде повідомляти при знайденої порожній резольвент про кінець роботи алгоритму. p align="justify"> Отже, розглянувши алгоритм вирішення задачі, перейдемо до його реалізації на мові Prolog і мовою Haskell.


Реалізація алгоритму мовою Prolog


Для початку необхідно визначити відношення між атомами (контрарность). За законом математичної логіки, можна ввести наступне твердження: $ ($ X): - X, де символ $ буде схематичне записом заперечення, оскільки в деяких версіях SWI-Prolog, символ ~ зарезервований. p align="justify"> Отже, розглянемо функції, за допомогою яких будемо реалізувати алгоритм:

1. Функція perestanovka. Породжує всі можливі перестановки

елементів списку.

perestanovka ([], []).

perestanovka (Z, [X | K]): - udalit (X, Z, Z1), perestanovka (Z1, K).

Якщо перший список порожній, то результат порожній (базовий випадок). Інакше видаляємо голову X з першого списку, робимо перестановку його хвоста - отримуємо якийсь список K, потім додаємо X в його початок. p align="justify"> 2. Функція udalit. Видаляє елемент із списку.


udalit (X, [X | Xs], Xs). (X, [Y | Ys], [Y | Z]): - udalit (X, Ys, Z).


Якщо елемент збігається з головою другого списку, то результатом буде хвіст списку (базовий випадок). Інакше результатом буде список голова, якого збігається з головою вихідного списку, а хвіст виходить видаленням заданого елемента з хвоста заданого списку. p align="justify"> 3. Функція vhodit. Перевіряє належність елемента до списку.


vhodit (X, [X | _]).

vhodit (X, [_ | Xs]): - vhodit (X, Xs).


Елемент належить списку, якщо він порівнянний з головою списку (базовий випадок). Інакше елемент належить хвосту другого списку. p align="justify"> 4 Функція contrar. Перевіряє контрарность литеров. Prolog-машина сприймає X і $ X як два різних вирази, так як $ X тобто не літер, а результат функції $. Тому розглядаються два випадки, які розрізняються контрарності перших елементів. br/>

contrar (X, [$ X | _]).

contrar (X, [_ | Xs]): - contrar (X, Xs).

contrar ($ X, [X | _]).

contrar ($ X, [_ | Xs]): - contrar ($ X, Xs).


Елемент має контрарності пару, якщо голова списку є контрарності елементом для заданого елемента (базовий випадок...


Назад | сторінка 3 з 8 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Розробка програми, що реалізує алгоритм двусвязного списку
  • Реферат на тему: Організація списку за допомогою двійкового дерева
  • Реферат на тему: Об'єктна реалізація поліморфного контейнера на основі лінійного списку
  • Реферат на тему: Реалізація концепції контейнерів і ітераторів на прикладі односпрямованого ...
  • Реферат на тему: Пам'ятки природи, занесені до списку ЮНЕСКО