ЛОИИ методичка 2015
Использование накапливающего параметра
Пример: реверс списка
исходный список, 2 – результирующий список
Базовый случай: если список пуст, то результат – пустой список.
Общий случай – результат – реверсированный хвост исходного списка, к которому прикреплен процедурой append список, содержащий голову.
rev([],[]).
rev([X|Xs],Y):-
rev(Xs,Z),
append(Z,[X]).
Алгоритм можно оптимизировать, добавив накапливающий параметр. Если завести стек, то можно в него на каждом шаге заносить голову списка, а когда он исчерпается, сразу выдать содержимое стека.
rev1([X|Xs],Acc,Ys):-
rev1(Xs,[X|Acc],Ys).
rev1([], Acc,Acc).
rev2(L1,L2):-rev1(L1,[],L2).
-
Yandex.RTB R-A-252273-3
Содержание
- Министерство образования и науки Российской Федерации
- Лабораторная работа № 1
- Данные и знания
- Синтаксис языка Пролог
- Семантика языка Пролог
- Алгоритм работы Пролог-машины.
- Пример построения базы правил на Пролог
- Задание на лабораторную работу
- Лабораторная работа № 2
- Использование списков в Пролог.
- Использование накапливающего параметра
- Управление перебором
- Задание на лабораторную работу
- Лабораторная работа № 3
- Представление задачи в терминах пространства состояний
- Слепые методы поиска
- Методы эвристического поиска
- Поиск оптимального пути
- 3.4 Задание на лабораторную работу
- Лабораторная работа № 4
- Основные понятия теории игр
- Представление игры в матричной форме
- Представление игры в виде игрового дерева
- Задание на лабораторную работу