
- •Реферат
- •Механізм повернення та відсікання в логічному програмуванні Механізм перепогодження цільових тверджень
- •Суть механізму відсічки у логічному програмуванні
- •Основні випадки застосування механізму відсічки
- •Типові способи використання механізму відсічки та повернення Комбінація відсічки та предиката fail
- •Типові випадки використання механізму генерування розв’язків та перевірки
- •Список використаної літератури
Типові випадки використання механізму генерування розв’язків та перевірки
В якості ще одного прикладу використання відсічки розглянемо третій випадок породження і перевірки варіантів. Розглянемо програму ділення цілих чисел, використовуючи операції підсумовування та множення.
розділити(N1,N2,R)ціле_число(R),D1 = R*N2, D2 = (R+1)*N2,N1 >= D1,N1 < D2,!.
В цьому правилі використано рекурсивний предикат цілечисло для породження цілих чисел. Його визначення дано раніше. Інші цільові твердження виконують функцію перевірки. Очевидно, результатом може бути одне-єдине число. Незважаючи на те, що генератор ціле_число(1Ч) породжує цілий континіум передбачуваних розв’язків, як тільки виконуються нерівності, зустрічається відсічка й інші альтернативи розв’язання стають неможливими.
При використанні відсічки необхідно добре усвідомлювати, як будуть використані правила з відсічкою, оскільки її незаплановане використання може привести до непередбачуваного результату. Розглянемо приклад незапланованого використання відсічки. Розглянемо предикат визначення кількості родичів людини:
число_родичів(адам,0):-!.
число_родичів(єва,0):-!.
число_родичів(X,2).
Адам і Єва не мають родичів, у всіх інших людей їх є двоє. Але якщо тепер звернутися до Прологу із запитанням:
? - число_родичів(адам,2). то відповідь буде: так
У такому разі покращення можна досягти, якщо змінити визначення так: число_родичів(адам,0). число_родичів(єва,0).
число_родичів(Х,2)X \= адам,Y \= єва.
Але знову сформулюємо запит:
? - число_родичів (X,Y) .
Наше визначення не дасть можливості видати всі результати. Звідси можна зробити висновок, що надійне використання механізму відсічки можливе лише у разі повного уявлення про його використання у сформульованих правилах.
Список використаної літератури
“Логічне і функційне програмування”.: Заяць В. М., Заяць М. М., 2006р. стр.47-53.
“Програмування мовою ПРОЛОГ”.: Єфімов В.М. Навч. посіб. - Дніпропетровськ: РВВ ДНУ, 2004р.
uk.wikipedia.org/