Списки на Прологе (часть 2) Лекция 7. План Сумма, среднее арифметическое элементов списка, поиск минимального значения Сортировка списка (простого обмена,

Презентация:



Advertisements
Похожие презентации
Деревья Лекция 9. План Принадлежность значения дереву Замена в дереве всех вхождений одного значения на другое Подсчет общего количества вершин дерева.
Advertisements

Логическое программировыание Презентация 5 Списки в Прологе.
Множества Лекция 8. План Создание множества Операции со множествами (объединение, пересечение, разность, проверка включения, симметрическая разность,
Алгоритмы сортировки Алгоритмы сортировки отличаются друг от друга: - степенью эффективности ( кол-во сравнений); - кол-вом обменов, производимых в процессе.
Списки на Прологе Лекция 6. План 1.Метод поиска в глубину 2.Метод отката после неудачи 3.Отсечение и откат 4.Метод поиска, определяемый пользователем.
1 Программирование на языке Паскаль Тема 4. Сортировка массивов.
ТИПЫ ЗАПРОСОВ I. Запрос с параметром (Определяет одно или несколько условий отбора во время выполнения запроса) II. Запрос-выборка (Отбирает и не изменяет.
Классическими примерами для демонстрации возможностей массивов являются задачи сортировки и поиска.
Классификация методов сортировки Сортировка вставкой и сортировка выбором.
Методы сортировки массива. Сортировкой или упорядочением массива называется расположение его элементов по возрастанию (или убыванию). Если не все элементы.
Списки в языке Пролог. Определение Список упорядоченное множество объектов одинакового типа. Формально это определение соответствует определению массива.
1 Массивы 2 Опр. Массивом называется совокупность однотипных данных, связанных общим именем. Основные характеристики массива: 1. Имя массива 2. Тип компонентов.
Линейные (одномерные) массивы. Линейным массивом можно назвать совокупность одинаковых компонент, имеющим один индекс. I12345 A[i]
Строки Лекция 10. План Стандартные предикаты по работе со строками Преобразование строки в список символов Преобразование списка символов в строку Количество.
Пусть у нас есть очередь из трех элементов а, в и с, в которую первым был помещен элемент а, а последним элемент с. АВС Esimene Viimane Esimene начало.
МЕТОДЫ СОРТИРОВКИ. Сортировка - расположение элементов множества в порядке расположения некоторого ключа. ОГРАНИЧЕНИЯ: 1. Рассматриваются внутренние сортировки.
Алгоритмы сортировки. 2 Сортировка Сортировка – это расстановка элементов массива в заданном порядке (по возрастанию, убыванию, последней цифре, сумме.
В. М. Гуровиц, Список (list) Строка (string) Явное задание [1, 2, 5, 27, -3]"My string" Присваивание s = [1, 2, 5, 27, -3]s = "My string"
Массивы в программной среде Delphi Массив это структура данных, представляющая собой набор переменных одинакового типа, имеющих общее имя. Массивы удобно.
Преподаватель: Доцент Кафедры ВС, к.т.н. Поляков Артем Юрьевич © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» ФГОБУ ВПО "СибГУТИ" Кафедра вычислительных.
Транксрипт:

Списки на Прологе (часть 2) Лекция 7

План Сумма, среднее арифметическое элементов списка, поиск минимального значения Сортировка списка (простого обмена, вставками, выбором, быстрая, слияниями)

Сумма элементов списка sum([], 0). /* сумма элементов пустого списка равна нулю */ sum([H|T], S) :– sum(T, S_T), /* S_T - сумма элементов хвоста */ S = S_T + H. /* S - сумма элементов исходного списка */

Сумма элементов списка sum_list([],S,S). /* список стал пустым, значит в накопителе – сумма элементов списка */ sum_list([H|T],N,S) :– N_T=H+N, /* N_T - результат добавления к сумме, находящейся в накопителе, первого элемента списка */ sum_list(T,N_T,S). /* вызываем предикат от хвоста T и _T */ sum2(L,S):– sum_list(L,0,S).

Среднее арифметическое элементов списка avg(L,A):– summa(L,S), /* помещаем в переменную S сумму элементов списка */ length(L,K), /* переменная K равна количеству элементов списка */ A=S/K. /* вычисляем среднее как отношение суммы к количеству */ avg([],0):–!.

Минимальный элемент списка min_list([X],X). min_list([H|T],M):– min_list(T,M_T), min(H,M_T,M).

Сортировка: метод прямого обмена permutation([X,Y|T],[Y,X|T]):– X>Y,!. permutation([X|T],[X|T1]):– permutation(T,T1). bubble(L,L1):– permutation(L,LL), !, bubble(LL,L1). bubble(L,L).

Сортировка вставкой ins_sort([ ],[ ]). ins_sort([H|T],L):– ins_sort(T,T_Sort), insert(H,T_Sort,L). insert(X,[],[X]). insert(X,[H|T],[H|T1]):– X>H,!, insert(X,T,T1). insert(X,T,[X|T]).

Сортировка выбором choice([ ],[ ]). choice(L,[X|T]):– min_list(L,X), delete_one(X,L,L1), choice(L1,T).

Быстрая сортировка quick_sort([],[]). quick_sort([H|T],O):– partition(T,H,L,G), quick_sort(L,L_s), quick_sort(G,G_s), conc(L_s,[H|G_s],O). partition([],_,[],[]). partition([X|T],Y,[X|T1],Bs):– X

Объединение отсортированных списков fusion(L1,[ ],L1):–!. fusion([ ],L2,L2):–!. fusion([H1|T1],[H2|T2],[H1|T]):– H1

Сортировка слияниями splitting([],[],[]). splitting([H],[H],[]). splitting([H1,H2|T],[H1|T1],[H2|T2]):– splitting(T,T1,T2). fusion_sort([],[]):–!. fusion_sort([H],[H]):–!. fusion_sort(L,L_s):– splitting(L,L1,L2), fusion_sort(L1,L1_s), fusion_sort(L2,L2_s), fusion(L1_s,L2_s,L_s).

Проверка упорядоченности списка sorted([ ]). sorted([_]). sorted([X,Y|T]):– X