Вариант 2
Написать программу, реализующую авиасправочник. В справочнике содержится следующая информация о каждом рейсе: номер рейса, пункт назначения, цена билета. Реализовать вывод всей информации из справочника, поиск пункта назначения по номеру рейса. Реализовать поиск по пункту назначения с указанием максимально возможной цены билета (должны быть выведены все рейсы, цена билета на которые ниже указанного значения) Для удобства работы реализовать меню с соответствующими пунктами.
Вариант 3
Написать программу, реализующую словарь. В словаре содержится следующая информация: слово и его несколько переводов. Реализовать вывод всего словаря, перевод с русского на английский, с английского на русский. Для удобства работы реализовать меню с соответствующими пунктами.
Вариант 4
Написать программу, реализующую контроля оплаты квартплаты. В справочнике содержится следующая информация: численность проживающих, площадь (вещественное число), лицевой счет, месяц, год.
Задание:
Вариант 0
Создать базу данных. База содержит факты вида number(integer). Переместить факты с отрицательными числами в другую базу данных (исходная и полученная базы данных находятся в файле).
Вариант 1
Создать базу данных. База содержит факты произвольного вида. Удалить все дублирующиеся факты с выводом соответствующих сообщений (исходная и полученная базы данных находятся в файле).
Вариант 2
Создать базу данных. База содержит факты произвольного вида. Переместить часть фактов в другую базу данных. Перемещение выполняется при ответе на запрос пользователя (исходная и полученная базы данных находятся в файле).
Вариант 3
Создать базу данных. База содержит факты вида count(name, sum). Написать программу, позволяющую изменять значение суммы для указанного имени. Предусмотреть сообщение об отсутствии запрошенного имени в базе данных (исходная и полученная базы данных находятся в файле).
Вариант 4
Создать базу данных. База содержит факты произвольного вида. Написать программу, организующую просмотр всех фактов и позволяющую добавлять новые факты с проверкой дублирования и удалять существующие с сообщением об отсутствии (исходная и полученная базы данных находятся в файле).
Методические указания:
Базы данных
Для модификации фактов в процессе работы программы используется динамическая или внутренняя база данных. Для работы с базой данных применяется секция DATABASE.
Лабораторная работа № 2.
Методы и алгоритмы построения обучающей выборки для распознавания однотипных многофакторных классов объектов проектирования.
Кластерный анализ предназначен для разбиения множества объектов на заданное или неизвестное число классов на основании некоторого математического критерия качества классификации (cluster (англ.) — гроздь, пучок, скопление, группа элементов, характеризуемых каким-либо общим свойством). Критерий качества кластеризации в той или иной мере отражает следующие неформальные требования:
а) внутри групп объекты должны быть тесно связаны между собой;
б) объекты разных групп должны быть далеки друг от друга;
в) при прочих равных условиях распределения объектов по группам должны быть равномерными.
Требования а) и б) выражают стандартную концепцию компактности классов разбиения; требование в) состоит в том, чтобы критерий не навязывал объединения отдельных групп объектов.
Узловым моментом в кластерном анализе считается выбор метрики (или меры близости объектов), от которого решающим образом зависит окончательный вариант разбиения объектов на группы при заданном алгоритме разбиения. В каждой конкретной задаче этот выбор производится по-своему, с учетом главных целей исследования, физической и статистической природы используемой информации и т. п. При применении экстенсиональных методов распознавания, как было показано в предыдущих разделах, выбор метрики достигается с помощью специальных алгоритмов преобразования исходного пространства признаков.
Другой важной величиной в кластерном анализе является расстояние между целыми группами объектов. Приведем примеры наиболее распространенных расстояний и мер близости, характеризующих взаимное расположение отдельных групп объектов. Пусть wi — i-я группа (класс, кластер) объектов, Ni — число объектов, образующих группу wi, вектор i — среднее арифметическое объектов, входящих в wi (другими словами [ i — “центр тяжести” i-й группы), a q ( wl, wm ) — расстояние между группами wl и wm

Рис. 1. Различные способы определения расстояния между кластерами wl и wm: 1 — по центрам тяжести, 2 — по ближайшим объектам, 3 — по самым далеким объектам
Расстояние ближайшего соседа есть расстояние между ближайшими объектами кластеров:
![]()
Расстояние дальнего соседа — расстояние между самыми дальними объектами кластеров:
![]()
Расстояние центров тяжести равно расстоянию между центральными точками кластеров:
![]()
Задание: для представленной выборки векторов (типовое задание) выполнить:
- перевести n - мерный вектор в точку с координатами (x, y) и программно реализовать алгоритмы кластерного анализа.
.
Лабораторная работа №3
Изучение пакетов разработки интеллектуальных экспертных систем: Neuro Builder Prolog. Решение логических задач по варианту.
Задание (типовое):
Используя предикаты parent (symbol, symbol), man (symbol), woman (symbol), married (symbol, symbol), записать факты, описывающие Вашу семью. Записать 6 правил вывода для любых родственных отношений в Вашей семье (например: мать, отец, сестра, брат, племянница, племянник, тетя, дядя, внучка, внук, бабушка, дедушка, двоюродная сестра, двоюродный брат и т. д.).
При отладке программы изучить и использовать возможности трассировки.
Написать программу без использования внутренней цели (без секции GOAL).
Во всех прочих программах используется внутренняя цель (в секции GOAL)
Методические указания:
Как правило, программа на Prolog’е состоит из двух программных секций: секции предикатов PREDICATES и секции предложений CLAUSES.
В секции PREDICATES описываются собственные предикаты. Описание предикатов заключается в их перечислении с указанием доменов (типов) их аргументов. Стандартные предикаты объявлять не требуется. Формат объявления предиката:
predicate_name (argument_domain_1, argument_domain_2, …, argument_domain_n)
В секции CLAUSES помещаются предложения – факты и правила, составляющие программу. Все предложения для одного предиката должны быть сгруппированы. Каждое предложение заканчивается точкой. Формат записи предложений:
fact(object_1, object_2, …, object_n).
rule(Var_1, Var_2, …,Var_m):–subgoal_1, subgoal_2, …, subgoal_k.
Пример программы на Прологе:
PREDICATES
bird (symbol)
parent (symbol, symbol)
CLAUSES
bird (sparrow). % Воробей – это птица.
bird (X):- parent (Y, X), bird (Y). % X – это птица, если у него есть родитель,
% который является птицей.
parent (sparrow, nestling). % Воробей – родитель птенца.
Для отладки программы можно использовать возможности трассировки. Трассировка позволяет в пошаговом режиме проследить процесс нахождения решения.
Для того чтобы включить трассировку, можно первой строкой программы поместить директиву trace.
При работе в режиме трассировки вся текущая информация появляется в окне трассировки Trace.
Сообщения в окне трассировки могут быть следующими:
* CALL – вывод имени цели и значений ее параметров;
* FAIL – вывод имени неудачно завершившейся цели;
* REDO – вывод сообщения о том, что произведен поиск с возвратом;
* RETURN – вывод имени удачно завершившейся цели и значений ее параметров (символ * показывает, что существуют другие решения).
Лабораторная работа №4.
Бинарные деревья. Семантические сети. Построение модели предметной области по варианту в виде ориентированного графа, вершины которого соответствуют объектам предметной области, а дуги (рёбра) - отношения между ними, как семантическую модель представления знаний.
Задание (типовое): дать описание «Объекта ПО» в виде ориентированного графа.
Задание:
Вариант 0
* Написать программу для реверса списка. Например: список [1, 2, 3] преобразуется в список [3, 2, 1].
* Написать программу для нахождения среднего арифметического листьевых вершин бинарного дерева.
Вариант 1
* Написать программу для получения значения n-го элемента списка. Например: в списке [one, two, three] второй элемент равен two.
* Написать программу для проверки упорядоченности бинарного дерева.
Вариант 2
* Написать программу для удаления из списка всех элементов, равных 0. Например: список [1, 0, 2, 0, 0, 3] преобразуется в список [1, 2, 3].
* Вывести бинарное дерево на экран в виде дерева.
Вариант 3
* Написать программу для циклического сдвига списка вправо на заданное число элементов. Например: список [6, 5, 4, 3, 2, 1], циклически сдвинутый вправо на 2 элемента, преобразуется в список [2, 1, 6, 5, 4, 3].
* Написать программу для вычисления глубины бинарного дерева (глубина пустого дерева равна 0, глубина одноузлового дерева равна 1).
Вариант 4
* Написать программу для удаления из списка 2-ого, 4-ого и т. д. элементов. Например: список [6, 5, 4, 3, 2, 1] преобразуется в список [6, 4, 2].
* Написать программу для подсчета количества вершин бинарного дерева, значения которых лежат в определенном диапазоне.
Методические указания:
Списки
Prolog позволяет определить рекурсивные типы данных. Примерами рекурсивных типов данных служат списки и деревья.
Список – это объект данных, содержащий конечное число других объектов (элементов списка). Список, содержащий числа 1, 2 и 3, записывается следующим образом:
[1, 2, 3]
Для объявления списка используется следующее описание домена:
DOMAINS
integerlist=integer*
Список является рекурсивным составным объектом, он состоит из двух частей:
* головы списка – первого элемента списка;
* хвоста списка – списка, включающего все последующие элементы.
[1| [2, 3]]
голова списка 1
хвост списка [2, 3]
Так как список имеет рекурсивную составную структуру, для работы со списками используется рекурсия.
Пример: печать элементов списка.
DOMAINS
integerlist=integer*
PREDICATES
printlist (integerlist)
CLAUSES
printlist ([]):- !. %для пустого списка ничего не делать
printlist ([H|T]):- write (H), nl, printlist (T). %для непустого списка отделить голову,
%напечатать ее, продолжить печать для
%хвоста списка
Деревья
Деревья также являются рекурсивным типом данных. Например, можно определить дерево следующим образом:
DOMAINS
treetype=tree(integer, treetype, treetype); empty()
Такое определение позволяет записать следующую структуру данных:
tree(5,
tree(3,
tree(6, empty, empty),
tree(4, empty, empty)),
tree(10,
tree(2, empty, empty),
tree(8, empty, empty)))
Одной из наиболее частых операций с деревом является обход узлов дерева и выполнение некоторых действий с ними. Например, вывод значений всех узлов дерева:
DOMAINS
treetype =tree(integer, treetype, treetype); empty()
PREDICATES
print_tree(treetype)
CLAUSES
print_tree(empty): -!.
print_tree(tree(Root, Left, Right)):- write(Root), nl, print_tree(Left), print_tree(Right).
GOAL
print_tree(tree(5,tree(3,tree(6, empty, empty),tree(4, empty, empty)),tree(10,tree(2, empty, empty),tree(8, empty, empty)))).
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 |


