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

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





ноження порожнього списку списків на деяку змінну (це необхідно, так як функція задана рекурсивно щодо другого аргументу, значить, по будь-якому настане ситуація, коли закінчаться елементи, як в підсписки, так і в головному списку).

В окремому випадку виробляємо зчеплення першого аргументу з головою другого аргументу (сформували перший результуючий елемент) з рекурсивно викликаної функцією scep для того ж першого аргументу і хвоста другого аргументу.

Наприкінці формуються всі комбінацій викликом функції perestanovka, яка рекурсивно зчіплює свою голову з рекурсивно викликаної perestanovka, яка має в якості аргументу хвіст. Комбінація порожнього списку, є порожній список списків (базовий випадок). p align="justify">. Функція contrar. Вона також як і в Prolog визначає наявності у списку контрарного атома заданому. br/>

srav xy = if (("~" + + x == y) | | ("~" + + y == x)) then True else False :: String - > [String] -> Boolx [] = False

contrar xy = if (srav x (head y) == True) then True else contrar x (tail y)


Перша функція потрібна для перевірки, чи є атоми контрарними. Принцип роботи заснований на відділенні першого символу. p align="justify"> Функція contrar складається з двох випадків. Перший є базовим, і визначає поведінку, якщо другий аргумент дорівнює пустому списку. Основний випадок аналогічний Prolog, дивимося, чи є голова контрарності Літері стосовно розглянутого, якщо ні, то рекурсивно викликаємо функцію для хвоста. p align="justify"> 4. Функція soed. Її структура буде відрізнятися від структури в Prolog тільки синтаксичної реалізацією, викликаної тим, що будь-яка функція повертає значення, яке можна далі використовувати в програмі. br/>

soed :: [String] -> [String] -> [String] [] x = xx y

| (x == []) = x

| (not (elem (head x) y)) && (not (contrar (head x) y))

= (head x): soed (tail x) y

| contrar (head x) y = soed (tail x) (delete (cont (head x)) y)

| otherwise = soed (tail x) y

Умови ті ж що і в Prolog, тільки в Haskell розглядається один випадок, так як при роботі з рядками, визначена функцію, яка повертає контрарний атом, незалежно від знаку літера.

Отже, тепер перейдемо до перевірки. Процедура prov не зупиниться при виявленні порожній резольвенти, так як у функціях мови Haskell повертається кінцеве значення, а не проводиться пошук умов, успішного завершення роботи функції. Тому необхідно переробити функцію так, щоб після кожного дзвінка soed вона перевіряла, чи результат дорівнює []. Якщо це так, то необхідно перервати виконання алгоритму. Для простоти перевірки та зручності запису, нехай функція nachprov арності 1 викличе pr з двома аргументами, головою перевіряється списку і з його хвостом:



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





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

  • Реферат на тему: Метод додаткового аргументу
  • Реферат на тему: Аналіз космологічного аргументу існування Бога
  • Реферат на тему: Пам'ятки природи, занесені до списку ЮНЕСКО
  • Реферат на тему: Організація списку за допомогою двійкового дерева
  • Реферат на тему: РОЗГЛЯД принципом максимуму Понтрягiна для систем диференціальних рiвнянь з ...