Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
реферат заяць.docx
Скачиваний:
4
Добавлен:
05.12.2018
Размер:
41 Кб
Скачать
☆
  1. Типові випадки використання механізму генерування розв'язків та перевірки

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

розділити(Nl,N2,R) :- ціле число(R) ,Dl = R*N2,

D2 = (R+1)*N2,N1 >= Dl,Nl < D2,! .

В цьому правилі використано рекурсивний предикат ціле_число для породження цілих чисел. Його визначення дано раніше. Інші цільові твердження виконують функцію перевірки. Очевидно, результатом може бути одне-єдине число. Незважаючи на те, що генератор ціле_число(N) породжує цілий континіум передбачуваних розв'язків, як тільки виконуються нерівності, зустрічається відсічка й інші альтернативи розв'язання стають неможливими.

При використанні відсічки необхідно добре усвідомлювати, як будуть використані правила з відсічкою, оскільки її незаплановане використання може привести до непередбачуваного результату. Розглянемо приклад незапланованого використання відсічки. Розглянемо предикат визначення кількості родичів людини:

число_родичів(адам,0):-!.

число_родичів(єва,0):-!.

число_родичів(X, 2).

Адам і Єва не мають родичів, у всіх інших людей їх є двоє. Але якщо тепер звернутися до Прологу із запитанням:

? – число_родичів(адам,2) .

то відповідь буде:

так

У такому разі покращення можна досягти, якщо змінити визначення так:

число_родичів(адам,0).

число_родичів(єва,0).

число_родичів(X,2):- X \= адам,Y \= єва.

Але знову сформулюємо запит:

? - числo_рoдичів (X, Y) .

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

ВИСНОВОК

В ході написання реферату було сказано декілька слів про мову програмування Пролог. Пролог описує не процедуру розв’язання задачі, а логічну модель предметної галузі. Тому її необхідно розглядати не як процедурну, а як описову.

Але більшу увагу було звернено на сам механізм відсічки.

Були розглянуто суть механізму відсічки у логічному програмуванні, основні випадки застосування механізму відсічки, комбінація відсічки та предиката fail, а також типові випадки використання механізму генерування розв'язків та перевірки.

Під час опису кожного з цих пунктів, з метою навчання та для кращого розуміння використовувались приклади написані на мові Пролог.

Механізм відсічки є дуже потрібним, адже він дає змогу вказати, які з раніше зроблених розв’язків не слід перепогоджувати при поверненні по ланцюжку погодження цільових тверджень. Цей механізм дає змогу відсікти можливі альтернативні розв’язки і зупинятися на бажаному.

ВИКОРИСТАНІ ДЖЕРЕЛА:

1. В.М. Заяць, М.М. Заяць «Логічне і функційне програмування», - навчальний посібник для студентів базового напрямку 0804 «Комп’ютерні науки », Львів, «Бескид Біт», 2006

2. навчальна інтеренет-бібліотека Wikipedia.