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

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





). Інакше контрарний елемент належить хвосту другого списку. p align="justify"> 5. Функція soed. Об'єднує два диз'юнктів з урахуванням контрарності

Реалізація процедури полягає в тому, що спочатку порівнюється кожен елемент першого списку з елементами другого списку, якщо елемент задовольняє поставленим умовам, то він записується результат і викликається рекурсивно soed для хвоста першого списку, другого списку і отриманого результату . Таким чином, другий аргумент є списком-константою, а всі операції виконуються над першим списком (загальний випадок). p align="justify"> Розглянемо три можливі випадки:

а) Якщо перший елемент першого списку не належить і не має контрарних атомів в другому списку, то записати його в список-результат і викликати soed рекурсивно, де перший аргумент - хвіст, другий залишається без зміни, а третій отримуємо шляхом додавання проглядається елемента.

б) Якщо перший елемент належить другому списку, то відразу ж викликати soed з тими ж параметрами, тільки в якості першого аргументу необхідно передати його хвіст.

в) Якщо в другому списку є контрарний атом, то його потрібно видалити з другого списку і викликати рекурсивно soed з хвостом першого списку, результатом видалення контрарного атома в другому списку і результатом в якості третього параметра.

Базовий випадок: якщо перший список порожній, а другий ні, то результатом буде другий список.


soed ([], X, X).

soed ([X | Xs], Y, [X | Z]): - not (vhodit (X, Y)), not (contrar (X, Y)), soed (Xs, Y, Z).

soed ([X | Xs], Y, Z): - vhodit (X, Y), soed (Xs, Y, Z).

soed ([X | Xs], Y, Z): - contrar (X, Y), udalit ($ X, Y, D), soed (Xs, D, Z).

soed ([$ X | Xs], Y, [$ X | Z]): - not (vhodit ($ X, Y)), not (contrar ($ X, Y)), soed (Xs, Y, Z).

soed ([$ X | Xs], Y, Z): - vhodit ($ X, Y), soed (Xs, Y, Z).

soed ([$ X | Xs], Y, Z): - contrar ($ X, Y), udalit (X, Y, D), soed (Xs, D, Z).


Отже, отримали всі можливі комбінації диз'юнктів і функцію об'єднання двох резольвент. Тепер необхідно знайти таку комбінацію, яка дає в результаті порожню резольвенту. Організуємо перевірку. Для того щоб почати перевірку, необхідно використовувати soed послідовно для кожного можливого варіанту з усіх комбінацій, так як в середовищі SWI-Prolog результат від функції perestanovka виходить не відразу, а по черзі, тому для реалізації перевірки логічного проходження, буде достатньо написати перевірку одного з можливих варіантів списку списків.

Спочатку потрібно вихідний список розбити на голову і хвіст, передати їх іншій функції prov арності 2, як 2 аргументи, і об'єднувати перший аргумент з другим функцією soed. Далі потрібно ви...


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





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

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