Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Контрольная работа по "Прикладным методам искусственного интеллекта"

Автор:   •  Июль 19, 2025  •  Контрольная работа  •  1,385 Слов (6 Страниц)  •  533 Просмотры

Страница 1 из 6

Министерство науки и высшего образования Российской Федерации

Федеральное государственное автономное образовательное учреждение высшего образования

ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)

Кафедра компьютерных систем в управлении и проектировании (КСУП)

ТЕМА РАБОТЫ

Отчет по контрольной работе № 1

по дисциплине «Прикладные методы искусственного интеллекта»

Вариант 9

                                                                                             Выполнил:

Проверил:

Томск 2025[pic 1]

Задание.

Вариант 9

  1. Напишите предикат p(+V, -L) - истинный тогда и только тогда, когда список L получается из списка V после удаления всех повторяющихся элементов, т. е. из списка получается множество.
  2. Напишите предикат exists(+P, +L), который проверяет "Существует ли элемент списка L, удовлетворяющий предикату P?"
  3. Напишите программу вычисления целочисленного квадратного корня из натурального числа N, определяемого как число I, такое, что I*I s N, но

(I+1)*(I+1) > N . Используйте определение предиката between/3 для генерирования последовательности натуральных чисел с помощью механизма возвратов.

  1. Напишите предикат для вычисления чисел Фибоначчи, используя метод накапливающего параметра.
  2. Одним из примеров использования предиката name/2 может служить генерация новых атомов для представления вновь вводимых объектов, например, abc1, abc2, abc3 и т.д. Эти имена характеризуются тем, что все они состоят из корня, определяющего тип именуемого объекта, и целочисленного суффикса для различения объектов одного типа. Напишите программу новое_имя(+X, -Y). Последовательность имен создается с помощью возвратов. Указание. Воспользуйтесь предикатом int_to_atom(+N,-X), который конвертирует натуральное число N в атом X.

Решение.

Задача 1.

Предикат p(V, L) можно реализовать следующим образом на языке Prolog:

% Определение базового случая для пустого списка

p([], []).

% Рекурсивное удаление дубликатов из непустого списка

p([H|T], R) :-

    % Если голова H ещё не встречалась в хвосте T,

    not(member(H, T)),

    !,     % отсечение, чтобы предотвратить дальнейшее рассмотрение вариантов

    p(T, Rest),

    append([H], Rest, R).   % добавляем голову H к результату

% Если элемент встречается повторно, пропускаем его

p([_|T], R) :-

    p(T, R).

Пояснения:

  1. Базовый случай:

Если входящий список пустой ([]), результатом также является пустой список.

  1. Рекурсия:

Проверяется, содержится ли первый элемент (H) в оставшейся части списка (T):

Если элемент не найден — значит, он уникален, добавляется в результирующий список (R).

Если элемент присутствует ранее — игнорируется, рекурсия продолжается дальше.

Для добавления элемента используется стандартная операция объединения списков (append/3).

Пример использования:

Пример использования:

| ?- p([a,b,a,c,d,e,f,b,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z], Result).

Result = [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z]

yes

Таким образом, предложенный предикат успешно удаляет повторяющиеся элементы из исходного списка, формируя список уникальных значений.

Задача 2.

Мы можем воспользоваться встроенным механизмом Prolog для проверки условий  внутри каждого элемента списка. Предикат exists(P, L) будет возвращать истину, если существует хотя бы один элемент в списке, удовлетворяющий условию, выраженному предикатом P

...

Скачать:   txt (15 Kb)   pdf (186.1 Kb)   docx (204.2 Kb)  
Продолжить читать еще 5 страниц(ы) »
Доступно только на Essays.club