Вариант 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

http://re-tech.narod.ru/inf/ai/pics/image74.gif

Рис. 1. Различные способы определения расстояния между кластерами wl и wm: 1 — по центрам тяжести, 2 — по ближайшим объектам, 3 — по самым далеким объектам

Расстояние ближайшего соседа есть расстояние между ближайшими объектами кластеров:

http://re-tech.narod.ru/inf/ai/pics/image75.gif

Расстояние дальнего соседа — расстояние между самыми дальними объектами кластеров:

http://re-tech.narod.ru/inf/ai/pics/image76.gif

Расстояние центров тяжести равно расстоянию между центральными точками кластеров:

http://re-tech.narod.ru/inf/ai/pics/image77.gif

Задание: для представленной выборки векторов (типовое задание) выполнить:

- перевести 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