лб3. Отчет о выполнении лабораторной работы по дисциплине " Интеллектуальные системы управления " ст гр утсисоп117
Скачать 0.62 Mb.
|
Министерство образования и науки Кыргызской Республики Кыргызский Государственный Технический Университет им. И. Раззакова Кафедра «Автоматическое управление» Отчет о выполнении лабораторной работы по дисциплине: “ Интеллектуальные системы управления ” Выполнил: ст.гр УТС-ИСОП-1-17 Жумакеев Кылым Приняла: Кудакеева Г.М. Бишкек 2020 Лабораторная работа №3 Рекурсия В прологе основным приемом программирования является рекурсия, она является заменой реализации циклов, которые используются в традиционных языках программирования. 1. Откат - процедура поиска с возвращением 2. Рекурсия Рекурсию в прологе можно представить как определение предиката как самого себя и здесь необходимо учитывать всегда 2 момента - это момент, который выполнялся или дал решение предыдущего состояния и и 2-ой - это описание действий, которые будут выполняться на текущий момент Пример: Родст (родитель, потомок):- род (родитель, потомок). Родств (родитель, потомок):- род (родитель, Х), родств (Х, потомок) Рекурсия состоит из следующих основных элементов: 1. Базис рекурсии 2. Шаг рекурсии Базис рекурсии - это предложение определяющее некую первоначальную ситуацию или же состояние на момент прекращения. В этом предложении записывается некий простейший случай ,в котором ответ записывается даже без прекращения рекурсии. Шаг рекурсии - правило, в теле которого в качестве подцели осуществляется вызов определяемого предиката или же …… с другими параметрами. Для избежания зацикливания (вызов самого себя) необходимо осуществлять не … Эти параметры должны изменяться на каждом шаге так, чтобы в итоге сработал базис рекурсии …. Поэтому общий вид шага рекурсии выглядит как: <предикат>:- подцели, <условие, которое ведет к выходу из рекурсии>, подцели, <вызов самого определяемого предиката>, подцели. В некоторых случаях предложения, которые реализуют базис/шаг рекурсии может быть несколько. Это происходит в том случае, когда действия зависят от выполнения или невыполнения определенного условия. Списки Списки - это упорядоченная последовательность элементов одного и того же типа. Списки можно задать 2-мя методами: 1. С помощью специальной рекурсивной структуры (“Ли”,(“Ким”,(...,([])))). Первым элементом этой структуры является терм любого типа, а вторым аргументом структура и это будет происходит до тех пор пока последним аргументом не будет указана пустая структура элементов 2. Элементы структуры указываются в [...]. [“Ли”, “Ким”...] Удобна, но не всегда используется в рекурсивных структурах Список может иметь любую переменную длину . Также список может быть пустым []. Элементами списка могут быть данные любого типа. Также в качестве элементов списка могут быть списки. Для обработки списков используется рекурсия с помощью которой можно осуществить доступ к элементам. Для этого используется следующее представление списков [ H | T] ● Н - голова Н - унифицируется с первым элементом списка, если же в описании указывается несколько переменных в качестве головы, то они соответственно будут унифицированы с соответствующими элементами [H1, H2, T] ● Т - хвост Т - это список, который содержит все элементы, за исключением элементов головы. L = [5, 8, 9] L = [ H | T ] H = 5 T = [8, 9] Управление поиском с возвратом заключается в решении двух задач: включении поиска с возвратом при необходимости найти все возможные решения задачи и отключении поиска с возвратом для ограничения пространства поиска. Для решения этих задач используются два стандартных предиката: fail и nl. fail – это тождественно-ложный предикат, искусственно создающий ситуацию неуспеха. После выполнения этого предиката управление передается в точку отката и поиск продолжается. Чтобы прервать поиск решений при выполнении какого-либо условия, используется предикат отсечения (nl). Однажды пройдя через отсечение, невозможно вернуться назад, т.к. этот предикат является тождественно-истинным. Процесс может только перейти к следующей подцели, если такая имеется. 1 задание 2 задание Предикаты (отношения) иначе называется именем предиката. Объекты, которые участвуют в отношении, называются аргументами предиката ; в факте likes(bill, cindy)., отношение likes есть предикат, а объекты bill и cindy есть аргументы предиката. Вот несколько примеров предикатов с нулем и более аргументов. pred(integer, symbol) person(last, first, gender) run insert_mode birthday(firstName, lastName, date) Предикаты могут совсем не иметь аргументов. Однако, избегайте использовать такие предикаты. Все дело в том, что их смысл (семантика) не всегда понятны пользователю, читающему программу. Применяйте их, если смысл предиката очевиден. Сопоставление(унификация) является наиболее важной операцией в языке Пролого. Сопоставление выполняет сравнение двух терминов на равенство, при этом неконкретизированные переменные получают значения, при которых термы становятся идентичными. Вывод: Я освоил работу со списками, рекурсией и унификацией данных. |