Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Метод пухирця.

Додавання елемента без дублювання.

Minimum(X, Y, M).

Знайти мінімальний елемент із двох.

minimum(X, Y, X):- X<=Y, !.

minimum(X, Y, Y):- Y<X,!.

?-minimum(2, 5, Y).

Щоб додати елемент у голову списку досить використовувати

add(X, L, [X|L]).

Але якщо виникає необхідність додавати тільки, коли елемент відсутній, то можна додати правило:

add(X, L, L):-member(X, L), !, add(X, L, [X|L]).

Питання

?-add(a, [b, c], L).

L=[a, b, c]

?-add(b, [b, c], L).

L=[b, c]

Якщо перетин забрати, то

?-add(b, [b, c], L)

L=[b, c];

L=[b, b, c]

Таким чином, при вилученні відсікання, змінився декларативний зміст програми - відсікання "червоне".

5.2.3 Класифікація.

Використовуючи відсікання, легко зробити класифікацію об'єктів.

Наприклад, треба класифікувати числа

class(X, plus):-X>0, !.

class(X, minus):-X<0, !.

class(X, zero):-X=0, !.

?-class(4, Y).

Y=plus

5.2.4 Відсікання в чисельній рекурсії.

Застосування відсікання в рекурсії дозволяє значно скоротити використання пам'яті.

Визначимо факторіал

factorial(0, 1):-!.

factorial(N, RES) :-N1=N-1, factorial(N1, N1fak), RES=N*N1fak.

5.2.5 Зауваження при використанні відсікання.

Застосування перетину за рахунок скорочення перебору дозволяє підвищити ефективність програми. Крім

цього відсікання спрощує програмування вибору варіантів.

Разом з тим, часто, при використанні червоних відсікань може зміниться декларативний зміст програми.

Тому відсікання вимагає обережності у використанні.

Варто уникати двох помилок:

відсікання шляхів обчислення, які не можна відкидати

і не відсікання тих рішень, що повинні були бути відкинуті.

5.3 Сортування списків.

Дотепер засобу прологу використовувалися при записі простих процедур і прикладів. Розглянемо більш

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

5.3.1 Метод наївного сортування.

У цьому методі елементи в списку переставляються ( перемішуються permutation/2 ),і перевіряється

відсортований цей чи список ні: sorted/1.

Це записується:

sortn(L1, L2) :- permutation(L1, L2), sorted(L2), !.

Перестановки визначимо через append

permutation(L, [H|T]) :- append(V, [H|U], L),

append(V, U, W),

permutation(W, T).

permutation([], []).

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

пропозиції.Факт означає, що список з одного елемента завжди упорядкований. Правило затверджує, що

список упорядкований ,якщо перші два елементи розташовані один по одному і залишок , що починається з

другого елемента теж упорядкований:

sorted([L]).

sorted([X,Y|T]) :- order(X,Y), sorted([Y|T]).

order(X, Y) :- X =< Y.

Це простий і ефективний метод.

Декларативний опис:

Знайти в списку L два суміжних елементи X і Y, таких, що X > Y, поміняти їхній місцями й одержати новий

список, M, потім відсортувати M. Для пошуку таких елементів і перестановки використовується процедура

swap/2.

Якщо в списку немає ні однієї пари суміжних елементів X і Y, таких, що X > Y, вважати що список

відсортований.

busort(L, S) :- swap(L, M), !, busort(M, S).

busort(L, L) :- !.

swap([X, Y|R], [Y, X|R]) :- order(Y, X).

swap([X|R], [X|R1]) :- swap(R, R1).


Читайте також:

  1. D) методу мозкового штурму.
  2. H) інноваційний менеджмент – це сукупність організаційно-економічних методів управління всіма стадіями інноваційного процесу.
  3. I Метод Шеннона-Фано
  4. I. Метод рiвних вiдрiзкiв.
  5. VII. Нахождение общего решения методом характеристик
  6. А. науковий факт, b. гіпотеза, с. метод
  7. Автоматизація водорозподілу на відкритих зрошувальних системах. Методи керування водорозподілом. Вимірювання рівня води. Вимірювання витрати.
  8. Агрегативна стійкість, коагуляція суспензій. Методи отримання.
  9. АгротехнІЧНИЙ метод
  10. Адаптовані й специфічні методи дослідження у журналістикознавстві
  11. Адміністративні (прямі) методи регулювання.
  12. Адміністративні методи - це сукупність прийомів, впливів, заснованих на використанні об'єктивних організаційних відносин між людьми та загальноорганізаційних принципів управління.




Переглядів: 687

<== попередня сторінка | наступна сторінка ==>
Швидке сортування quick | Заперечення як невдача. (not as failure)

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

  

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.005 сек.