Задание №9
«Мини GURU» |
||||||||||||||||||||||||||||||
Описание задачи
|
||||||||||||||||||||||||||||||
GURU -- это известная в свое время мощная экспертная система. Вам предлагается написать сильно упрощенный вариант подобной экспертной системы. Мини GURU использует в своей работе терминологический словарь. Терминологический словарь (далее -- словарь) состоит из статей, которые содержат толкование слов в следующей форме: ТЕРМИН -- ПРИЗНАК, ПРИЗНАК, ... , ПРИЗНАК. В статье словаря слева от тире стоит слово или несколько слов, которыми обозначают данный термин. Справа от тире -- набор признаков, разделенных запятыми; каждый признак состоит из одного или нескольких слов. Статья заканчивается точкой. Статья может располагаться на нескольких строках. Везде, где есть пробел, можно вставить еще пробелы или разбить в этом месте строку на две строки. Словарь корректен, т.е. не содержит объяснений термина через сам этот термин. Пример словаря: МУХОМОР -- ГРИБ, ШЛЯПКА КРАСНАЯ, НЕ
ЕДЯТ. В словарь можно добавлять новые термины, искать в нем толкования терминов или искать в нем термины по признакам. Запрос на добавление термина начинается со знака '+', за которым следует текст толкования. Например:
Запрос на толкование термина начинается со знака '#'. Например:
Запрос на поиск термина по признакам начинается со знака '?' и содержит один или несколько признаков, разделенных ключевыми словами "И" или "ИЛИ". В одном запросе используется либо только ключевое слово "И", либо только ключевое слово "ИЛИ".
Мини GURU разумно реагирует, если какой-либо признак является термином словаря: он заменяется на совокупность признаков, определяющих этот термин и ищет термины, удовлетворяющие этим признакам. Например:
Если в статье словаря используется термин в качестве признака, то Мини GURU учитывает признаки этого термина при поиске по признакам. Например:
Требуется написать программу, реализующую Мини GURU. |
||||||||||||||||||||||||||||||
Функциональные требования: |
||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||
copyright ©
кафедра «Системное программирование»
|