Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Referat_Zayats.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
41.63 Кб
Скачать

Типові випадки використання механізму генерування розв’язків та перевірки

В якості ще одного прикладу використання відсічки розглянемо третій випадок породження і перевірки варіантів. Розглянемо програму ділення цілих чисел, використовуючи операції підсумо­вування та множення.

розділити(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) .

Наше визначення не дасть можливості видати всі результати. Звідси можна зробити висновок, що надійне використання механізму відсічки можливе лише у разі повного уявлення про його викорис­тання у сформульованих правилах.

Список використаної літератури

  1. “Логічне і функційне програмування”.: Заяць В. М., Заяць М. М., 2006р. стр.47-53.

  2. “Програмування мовою ПРОЛОГ”.: Єфімов В.М. Навч. посіб. - Дніпропетровськ: РВВ ДНУ, 2004р.

  3. uk.wikipedia.org/

15

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]