72688

РАЗРАБОТКА ЭКСПЕРТНОЙ СИСТЕМЫ С ПРИМЕНЕНИЕМ РЕЛЯЦИОННОГО ПОДХОДА СУБД ACCESS И С ИСПОЛЬЗОВАНИЕМ СРЕДСТВ VISUAL PROLOG

Книга

Информатика, кибернетика и программирование

Систему, которую намерены построить мы, относится к классу идентификационных (или диагностических) систем. Системы этого класса решают задачу определения, т.е. идентификации, объекта по его признакам.

Русский

2014-11-26

2.09 MB

74 чел.

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

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

«Уфимский государственный авиационный технический университет»

РАЗРАБОТКА ЭКСПЕРТНОЙ СИСТЕМЫ С ПРИМЕНЕНИЕМ РЕЛЯЦИОННОГО ПОДХОДА СУБД  ACCESS И С ИСПОЛЬЗОВАНИЕМ СРЕДСТВ   VISUAL PROLOG.

Лабораторный практикум по дисциплине

«Интеллектуальные информационные системы»

Уфа 2012

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

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

«Уфимский государственный авиационный технический университет»

Кафедра АСУ

ПРИМЕНЕНИЕ РЕЛЯЦИОННОГО ПОДХОДА ДЛЯ РАЗРАБОТКИ ЭКСПЕРТНОЙ СИСТЕМЫ С ИСПОЛЬЗОВАНИЕМ СРЕДСТВ СУБД  ACCESS И VISUAL PROLOG.

Лабораторный практикум по дисциплине

«Интеллектуальные информационные системы»

Часть I

Уфа 2012

Содержание

Лабораторная работа №1

Применение реляционнлого подхода для разработки экспертной системы с использованием средств СУБД ACCESS

Введение

  1.  Цель работы
  2.  Краткие теоретические сведения
  3.  Ход работы
  4.  Задание
  5.  Порчдок выполнения работы
  6.  Требования к отчету
  7.  Контрольные вопросы
  8.  Методические рекомендациик проведению занятий

Список литературы

Лабораторная работа №2

Разработка экспертной  системы средствами Visual Prolog.

Введение

  1.  Цель работы
  2.  Краткие теоретические сведения
  3.  Ход работы
  4.  Задание
  5.  Порчдок выполнения работы
  6.  Требования к отчету
  7.  Контрольные вопросы
  8.  Методические рекомендациик проведению занятий

Список литературы

Приложения

ЛАБОРАТОРНАЯ  РАБОТА  №1

Применение реляционнлого подхода для разработки экспертной системы с использованием средств СУБД ACCESS

Введение

1.Цель работы

Целью работы является изучение процесса построения   экспертной системы (ЭС) на основе  реляционного подхода, применяемого при разработке баз данных, с использованием средств СУБД  ACCESS.

2. Краткие теоретические сведения

2.1 Реляционная модель экспертной системы

Модель базы знаний для ЭС строится на основе реляционного подхода. Кроме того, в вашем распоряжении имеется компьютерная технология реализации реляционного подхода это Access.

Систему, которую намерены построить мы, относится к классу идентификационных (или диагностических) систем. Системы этого класса решают задачу определения, т.е. идентификации, объекта по его признакам. Такие системы составляют значительную часть существующих экспертных систем, и без их рассмотрения не обходится ни один учебник по экспертным системам. А в качестве примера, как правило, рассматривается задача определения вида животного или растения. Вот и мы будем проектировать такую экспертную систему. Кроме того, мы для простоты ограничиваемся лишь рассмотрением детерминированных систем, когда пользователь может точно ответить на вопрос о наличии или отсутствии того или иного признака.

Начнем с того, что сформулируем знания по указанному вопросу. Вот эти формулировки:

Если собака короткошерстная, ростом менее 50см, с коротким хвостом, то порода - английский бульдог.

Если собака короткошерстная, ростом менее 50 см, с длинным хвостом, длинными ушами, то порода – гончая.     

Если собака короткошерстная, ростом менее 50 см, с длинным хвостом, короткими ушами и с коротким телом, то порода – мопс.

Если собака короткошерстная, ростом менее 50 см, с длинным хвостом, короткими ушами и с длинным телом, то порода – чихуахуа.

Если собака короткошерстная, ростом более 50 см, весит более 50 кг, то порода – датский дог.

Если собака короткошерстная, ростом более 50 см, весит менее 50 кг, то порода – фоксхаунд.

Если собака длинношерстная, ростом менее 50 см, с доброжелательным характером, то порода – кокер-спаниель.

Если собака длинношерстная, ростом менее 50 см, с недоброжелательным характером, то порода – ирландский сеттер.

Если собака длинношерстная, ростом более 50 см, но менее 70 см, с длинными ушами, то порода – большой вандейский грифон.

Если собака длинношерстная, ростом более 50 см, но менее 70 см, с короткими ушами, то порода – колли.

Если собака длинношерстная, ростом более 50 см и  70 см, с рыжим окрасом и белыми отметинами, то порода – сенбернар.

Если собака длинношерстная, ростом более 50 см и  70 см, с белоснежным окрасом,  то порода – ирландский волкодав.

Если собака длинношерстная, ростом более 50 см и  70 см, не с рыжим и  не белоснежным окрасом,  то порода – ньюфаундленд.

Мы, конечно, специально выбрали систему, в которой потребуется не так уж много знаний. Впрочем, попробуйте, глядя только в выписанные формулировки, ответить на вопрос к какой породе принадлежит  собака. Скорее всего, за полминуты это не получится.

Мы будем реализовывать следующий план построения экспертной системы. Сначала строится простейший вариант, который будет демонстрировать только основную идею. По сути дела, это решатель. Затем мы добавим остальное блок объяснения и т.п., что позволит продемонстрировать работу экспертной системы в полном объеме.

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

Если вершина помечена вопросом экспертной системы, то из нее выходят две дуги. Одна дуга помечена одним ответом пользователя, другая его альтернативным ответом. Вершина, соответствующая ответу экспертной системы на задачу, не имеет выходящих дуг. На рис.1 представлен граф, отражающий знания экспертной системы. Будем в дальнейшем вершину орграфа называть «состоянием экспертной системы».

Рис. 1 Структура логического вывода

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

Исследуя реляционный подход, мы должны теперь описать этот орграф подходящими таблицами. Сделать это нетрудно: каждую дугу мы опишем номером ее начала и номером ее конца. Кроме того, поскольку дуги у орграфа помечены, мы сделаем в таблице не два столбца начальная и конечная вершины дуги, а три, добавив столбец «Ответ пользователя». Назовем эту таблицу «Ребра».

Таблица 1

Таблица «Ребра»

Начало

Конец

Ответ пользователя

0

1

Короткошерстная

0

2

Длинношерстная

1

3

Менее 50 см

1

4

Более 50 см

2

5

Менее 50 см

2

6

Более 50 см

3

7

Короткий

Продолжение таб. 1

3

8

Длинный

4

9

Более 50 кг

4

10

Менее 50 кг

5

11

Да

5

12

Нет

6

13

Менее 70 см

6

14

Более 70 см

8

15

Длинные

8

16

Короткие

13

17

Длинные

13

18

Короткие

14

19

Нет

14

20

Да

16

21

Короткое

16

22

Длинное

19

23

Да

19

24

Нет

Но одной этой таблицы мало, поскольку требуется еще информация о реакциях экспертной системы на ответы пользователя. Реакция же может быть двоякой: ответ системы или очередной вопрос пользователю. Поэтому и таблиц будет две. Вот как могут выглядеть эти таблицы. Таблица «Имена» имеет два атрибута: Состояние и Имя.

Таблица 2

Таблица «Имена»

Имя

Состояние

Порода - Английский бульдог

7

Порода - Датский дог

9

Порода - Фоксхаунд

10

Порода - Кокер-спаниель

11

Порода - Ирландский сеттер

12

Порода - Гончая

15

Порода - Большой вандейский гриффон

17

Порода - Колли

18

Порода - Сенбернар

20

Порода - Мопс

21

Порода - Чихуахуа

22

Порода - Ирландский волкодав

23

Порода - Ньюфаундленд

24

Теперь надо определить взаимодействие этих таблиц. Для этого нам в каждый момент работы экспертной системы потребуется знать, в каком состоянии она находится. Номер этого состояния будем хранить еще в одной таблице, которую назовем «Текущее».

Таблица3

Таблица «Текущее»

 Состояние

0

Сейчас в эту таблицу записано начальное состояние экспертной системы.

Ясно, что должно происходить дальше. По текущему состоянию экспертная система генерирует запрос к таблице «Ребра». При этом должно быть реализовано соединение таблиц «Текущее» и «Ребра» по атрибутам Начало = Состояние. В зависимости от реакции на этот запрос пользователя экспертная система переходит в следующее состояние и либо выдает ответ, либо генерирует очередной запрос. Изменение состояния экспертной системы организуется с помощью макрокоманд, допустимых той программной оболочкой, которая используется для реализации этой модели экспертной системы.

Таблица «Вопросы» также имеет два атрибута: Состояние и Вопрос.

Таблица 4

Таблица «Вопросы»

Состояние

Вопрос

0

Какая собака: длинношерстная или короткошерстная?

1

Каков рост собаки менее 50 или более 50 см?

2

Каков рост собаки менее 50 или более 50 см?

3

У собаки короткий хвост или длинный хвост?

4

Собака весит более 50 кг или менее?

5

Собака доброжелательна?

6

У собаки рост менее 70 см или более?

8

Уши длинные или короткие?

13

Уши длинные или короткие?

14

Окрас рыжий с белыми отметинами?

16

Тело длинное или короткое?

19

Белоснежный окрас?

3. Ход работы

3.1.  Создаем свою экспертную систему (простейший вариант)

Прежде всего, надо создать те таблицы, которые описаны в тексте § 2. Создали? Если да, то идем дальше. Создаем запрос «Варианты», который позволяет выбрать те дуги, по которым пользователь может двигаться из текущего состояния.

Рис. 2 Запрос «Варианты»

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

Рис. 3 Форма «Варианты»

Чтобы построить указанную форму, нажимаем на копку «Конструктор форм». Чтобы указать источник записей данной формы, заходим в свойства формы и в пункте «Источник записей» выбираем «Текущее».

Рис. 4 Начинаем создавать форму

После задания данного параметра, на панели инструментов находим инструмент «Поле со списком»:

Рис. 5 Конструктор форм, панель элементов

и инструмент «Поле со списком»

Расширим область данных, потянув ее мышью за границы. Выберем инструмент «Поле со списком» и нарисуем им поле. После этого система предлагает диалог, от которого мы откажемся, нажав кнопку «Отмена».

Рис. 6 Создание поля со списком

Щелчком мыши внутри поля выделим его. Нарисовав поле со списком, вызываем его свойства.

Рис. 7 Вызов свойств поля со списком

С помощью команды «Свойства» меню «Вид» присвоим свойствам следующие значения: ДанныеСостояние, Источник строк Варианты, Число столбцов — 2, Ширина столбцов — 1,9 см.

 

Рис. 8 Свойства поля со списком (фрагменты)

Вид данных нужно выбрать из списка (P.S. «Состояние» должно быть в списке, если правильно указан источник данных при создании формы).

Теперь нужно заготовить макрос, который будет эту форму открывать и закрывать. Он должен выполняться при выборе значения в поле подстановок (иначе это значение не будет заноситься в таблицу «Текущее»). Выглядит он так:

Рис. 9 Макрос 1 открывает и закрывает форму ВАРИАНТЫ

При создании макросов необходимо указывать имя формы и режим в соответствии с примечаниями.

Построенный макрос нужно привязать к обновлению поля со списком формы «Варианты». Для этого нужно снопа выделить в режиме конструктора поле со списком, открыть его свойства и приписать событию «После обновления» значение «Макрос1».

Рис. 10 Подготовка режима «Обновление поля»

       Теперь после обновления поля будет выполняться Макрос1.

Все, простейший вариант экспертной системы готов. Можно перейти в режим формы и поэкспериментировать с ним. P.S. В таблицу «Текущее» необходимо занести номер вершины дерева, с которого начинается работа ЭС (отдельная строка).

3.2 Совершенствуем экспертную систему

В простейшем варианте молчаливо предполагалось, что поиск происходит «с нуля», когда пользователь ничего не знает о классификации объекта.

Создадим форму «Начало» с источником записей «Текущее». В ней расположим поле со списком «Состояние» с такими свойствами:

Рис. 11 Форма «Начало» содержит поле со списком «Состояние»

Создадим Макрос 2, который закрывает форму «Начало» и открывает форму «Варианты».

Рис. 12 Создание макроса Макрос2

Добавим в свойства поля формы «Начало» запуск Макроса 2 после обновления.

Рис. 13 Макрос 2 будет выполняться после выбора начального состояния

Итак, работа нашей экспертной системы начинается с открытия формы «Начало». После того как пользователь укажет, что ему известно о классификации исследуемого объекта, запускается форма «Варианты». Но и это еще не все.

3.3   Блок объяснений

Непременным элементом экспертной системы считается блок объяснений. Он должен разъяснять пользователю, почему экспертная система поступает так, а не иначе. Мы предлагаем реализовать его с помощью одной или нескольких кнопок, которые пользователь будет нажимать в зависимости от того, что именно ему непонятно. В ответ система будет разъяснять ему соответствующий аспект текущего состояния.

Давайте начнем с кнопки «Расшифровка вопроса», которую пользователь будет нажимать, если ему непонятен вопрос. В ответ ему будет выдаваться развернутая формулировка вопроса, который система задает в текущем состоянии. Вы, вероятно, догадались, что все эти развернутые формулировки будут храниться в одной таблице. За основу можно взять таблицу «вопросы». У нее, правда, есть один недостаток там нет никакой информации для терминальных состояний, когда уже у системы нет вопросов, поскольку она знает ответ. Ну что же, это дело поправимое. В этих состояниях система будет сообщать пользователю, какой получен ответ. В итоге таблица будет выглядеть так:

Таблица 5

Состояние

Вопрос

0

Какая собака: длинношерстная или короткошерстная?

1

Ответ: Короткошерстная. Вопрос: Рост собаки: более или менее 50?

2

Ответ: Длинношерстная. Вопрос: Рост собаки более или менее 50 см?

3

Ответ: Рост менее 50 см. Вопрос: У собаки короткий или длинный хвост?

4

Ответ: Рост более 50 см. Вопрос: Собака весит более 50 кг или менее?

5

Ответ: Рост менее 50 см. Вопрос: Собака доброжелательна?

6

Ответ: Рост более 50 см. Вопрос: У собаки рост менее или более 70 см?

Продолжение таб.5

7

Ответ: Короткий хвост. Вопросов больше нет.

8

Ответ: Длинный хвост. Вопрос: Уши длинные или короткие?

9

Ответ: Более 50 кг. Вопросов больше нет.

10

Ответ: Менее 50 кг. Вопросов больше нет.

11

Ответ: Да. Вопросов больше нет.

12

Ответ: Нет. Вопросов больше нет.

13

Ответ: Менее 70 см. Вопрос: Длинные или короткие уши у собаки?

14

Ответ: Более 70 см. Вопрос: Окрас рыжий с белыми отметинами?

15

Ответ: Длинные. Вопросов больше нет.

16

Ответ: Короткие. Вопрос: Тело длинное или короткое?

17

Ответ: Длинные. Вопросов больше нет.

18

Ответ: Короткие. Вопросов больше нет.

19

Ответ: Нет. Вопрос: Белоснежный окрас?

20

Ответ: Да. Вопросов больше нет.

21

Ответ: Короткое. Вопросов больше нет.

22

Ответ: Длинное. Вопросов больше нет.

23

Ответ: Да. Вопросов больше нет.

24

Ответ: Нет. Вопросов больше нет.

Теперь сконструируем запрос, выбирающий из таблицы «Вопросы» строку, относящуюся к текущему состоянию.

Рис. 14. Запрос, выбирающий текущий вопрос

Теперь создадим для него форму «Вопрос» с одним полем. При создании формы также необходимо в свойствах формы указать источник записей, но уже не таблицу «Текущее», а Запрос 1, а в данных поле указать «Вопрос».

Рис. 15 Форма «Вопрос» с источником записей Запрос1 Вопросы

Сконструируем Макрос 3, открывающий форму «Вопрос».

Рис. 16 Макрос 3 открывает форму «Вопрос»

Теперь остается на форме «Варианты» с помощью инструмента «Кнопка» панели элементов нарисовать кнопку и указать в ее свойствах, что нажатие на нее вызывает выполнение Макроса 3.

Рис. 17 Кнопка5

Аналогично можно создать еще несколько кнопок, с помощью которых пользователь сможет получать разъяснение по тем или иным аспектам текущего состояния. Например, некоторые авторы считают, что пользователю нужно объяснять, что произойдет, если он выберет тот или иной вариант ответа. Это легко сделать с помощью таблицы «Объяснения». Вот как она выглядит для нашего примера.

Таблица 5

Таблица «Объяснения»

Состояние

Текст

0

Если собака короткошерстная, то это либо Английский бульдог, либо Гончая, либо Датский дог, либо Фоксхаунд, либо Мопс, либо Чихуахуа. Если собака длинношерстная, то это либо Кокер-спаниель, либо Ирландский сеттер, либо Колли, либо Сенбернар, Ньюфаундленд, либо Ирландский волкодав, либо Большой вандейский гриффон

1

Если собака короткошерстная, и рост менее 50 см, то это либо Английский бульдог, либо Гончая, Либо Мопс, Либо Чихуахуа. Если более 50 см – Датский дог или фоксхаунд.

2

Если собака длинношерстная и рост менее 50 см - то это либо Кокер-спаниель, либо Ирландский сеттер. Если более 50 см - либо Колли, либо Сенбернар, Ньюфаундленд, либо Ирландский волкодав, либо Большой вандейский гриффон

3

Если собака менее 50 см с коротким хвостом, то это Английский бульдог. Если с длинным – или Гончая, или Мопс, или Чихуахуа

4

Если собака более 50 см и весит более 50 кг – это Датский дог, если менее 50 кг - Фоксхаунд

5

Если рост менее 50 см с доброжелательным характером - то это Кокер-спаниель. Если характер не доброжелательный - Ирландский сеттер

6

Если собака более 50 см, а так же более 70 см -  это либо Ирландский волкодав, либо Ньюфаундленд, либо Сенбернар. Если менее 70 см – или Колли, или Большой вандейский гриффон

7

Установлено, что порода собаки - Английский бульдог. Дальнейшей детализации не требуется

8

Если у собаки  длинный хвост и длинные уши – то это Гончая. Если короткие уши - либо Мопс, либо Чихуахуа

9

Установлено, что порода собаки – либо Датский дог. Дальнейшей детализации не требуется

10

Установлено, что порода собаки – Фоксхаунд. Дальнейшая детализация не требуется

11

Установлено, что порода собаки – Кокер-спаниель. Дальнейшая детализация не требуется

12

Установлено, что порода собаки – Ирландский сеттер. Дальнейшая детализация не требуется

13

Если рост собаки менее 70 см и у нее длинные уши – то порода Большой вандейский гриффон, если короткие уши – то порода Колли

14

Если собака более 70 см с рыжим окрасом – это Сенбернар. Если без рыжего окраса, то порода – Ирландский волкодав или Ньюфаундленд

15

Установлено, что порода собаки - Гончая. Дальнейшая детализация не требуется

16

Если у собаки короткие уши и короткое тело – то это Мопс, если длинное тело - Чихуахуа

17

Установлено, что порода собаки – Большой вандейский гриффон. Дальнейшая детализация не требуется

18

Установлено, что порода собаки – Колли. Дальнейшая детализация не требуется

19

Если без рыжего окраса, но с белоснежным – то это Ирландский волкодав. Если другой окрас - Ньюфаундленд

20

Установлено, что порода собаки – Сенбернар. Дальнейшая детализация не требуется

21

Установлено, что порода собаки – Мопс. Дальнейшая детализация не требуется

22

Установлено, что порода собаки – Чихуахуа. Дальнейшая детализация не требуется

23

Установлено, что порода собаки – Ирландский волкодав. Дальнейшая детализация не требуется

24

Установлено, что порода собаки – Ньюфаундленд. Дальнейшая детализация не требуется

Дальше нужно поступать в точности так же, как и в предыдущем случае. Нужно сделать запрос, выделяющий из таблицы «Объяснения» то объяснение, которое соответствует текущему состоянию, форму, связанную с этим запросом, макрос, открывающий эту форму, и кнопку на форме ВАРИАНТЫ, запускающую этот макрос. P.S. При создании формы «Объяснения» пользоваться такими же правилами, как при создании формы «Вопрос».

Итак, как же будет работать наша система? Чтобы запустить ее, нужно открыть форму НАЧАЛО, раскрыть поле со списком и выбрать один из предлагаемых вариантов (см. рис. 18). В данном случае выбран нулевой вариант, когда пользователь ничего не знает о классификации интересующего его объекта.

После этого открывается форма ВАРИАНТЫ. Пользователь ведет диалог с системой, каждый раз открывая поле со списком и выбирая один из предлагаемых ему в данном состоянии вариантов. Если ему что-то непонятно, он нажимает соответствующую кнопку блока объяснения (см. рис. 19).

Рис. 18 Первые шаги работы экспертной системы:

открывается поле со списком (1) и выбирается один из предложенных вариантов (2)

Рис. 19 Диалог пользователя: открывается поле со списком  и выбирается один из предложенных вариантов; в случае затруднения следует нажать одну из кнопок

Нажатие кнопки «Объяснения» раскрывает соответствующую форму с разъяснениями, соответствующими текущему состоянию (рис. 20). Чтобы закрыть ее, нужно щелкнуть по крестику в левом верхнем углу формы.

Рис. 20 Работа блока объяснения

Задание

Выполнить весь процесс разработки для заданного варианта

Отчет

должен содержать:

  •  Название, цель работы
  •  Граф (дерево) логического вывода
  •  Множество разработанных запросов и форм с макросами
  •  Выводы

Вопросы

  1.  в каком случае  для реализации ЭС целесообразно выбирать систему Access?
  2.  Поясните принцип  работы созданной ЭС.
  3.  Проведите аналогию с известными алгоритмами логического вывода.

Литература

1. Бешенков С.А., Гейн А.Г., Григорьев С.Г. Информатика и информационные технологии. Свердловск: УрГПУ, 1995, 144 с.

2. Информатика. Базовый курс для 7—9-х классов / Под ред. Е.К. Хеннера. М.: Лаборатория базовых знаний, 2000, 384 с.

3. Информатика. Задачник-практикум в 2 т. / Под ред. И.Г. Семакина, Е.К. Хеннера: Т. 1. М.: Лаборатория базовых знаний,1999, 304 с.

4. Томпсон Б., Томпсон У. Анатомия экспертных систем. // Реальность и прогнозы искусственного интеллекта М.: Мир, 1987.

ЛАБОРАТОРНАЯ  РАБОТА  №2

Разработка экспертной  системы средствами Visual Prolog.

Введение

1.Цель работы: Целью работы является изучение принципов построения и организации экспертных систем, базирующихся на логике и правилах.

2. Краткие теоретические сведения

2.1  РАЗРАБОТКА ЭКПЕРТНЫХ СИСТЕМ

Разработка экспертных систем (ЭС) является наиболее плодотворной быстро развивающейся областью применения  Пролога. Очень важно понимать, как работают экспертные системы, так как они могут использоваться, фактически, в любой области знаний.

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

Структура экспертных систем

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

База знаний (БЗ).

Механизм вывода (МВ).

Система пользовательского интерфейса (СПИ).

База знаний – центральная часть экспертной системы. Она содержит правила, описывающие отношения или явления, методы и знания для решения задач из области применения системы. Можно представлять базу знаний состоящей из фактических знаний и знаний, которые используются для вывода других знаний. Утверждение «Джон Ф. Кеннеди был 35-м президентом Соединенных Штатов» – пример фактического знания. «Если у вас болит голова, то примите две таблетки цитрамона» – пример знания для вывода. Сама база знаний обычно располагается на диске или другом носителе.

Механизм вывода содержит принципы и правила работы. Механизм вывода «знает», как использовать базу знаний так, чтобы можно было получать разумно согласующиеся заключения (выводы) из информации, находящейся в ней.

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

Интерфейс – это часть экспертной системы, которая взаимодействует с пользователем. Как правило, пользователи мало знают об организации базы знаний, поэтому интерфейс может помочь им работать с экспертной системой даже, если они не знают, как она организована. Интерфейс может также объяснить пользователю, каким образом экспертная система выводит результат.

В настоящем издании мы ограничимся лишь организацией БЗ и управлением стратегией вывода. Для чего рассмотрим два примера реализации ЭС средствами Турбо-пролога: ЭС, построенную на правилах, и ЭС, построенную на логике.

Экспертная  система на правилах

Во всех экспертных системах существует зависимость между входным потоком данных и данными в базе знаний. Во время консультации входные данные сопоставляются с данными в базе знаний. Результатом сопоставления является отрицательный или утвердительный ответ.

В системе, базирующейся на правилах, утвердительный результат является действием одного из продукционных правил. Эти продукционные правила определяются входными данными.

Экспертная система, базирующаяся на правилах (на Турбо-Прологе) содержит множество правил. Предикаты в левой части правил определяют один из возможных вариантов решения задачи, предикаты в правой части всегда специфицируются другими правилами, помимо тех случаев, когда предикат просто проверяет, находится ли определенная информация в базе данных. Информация, помещаемая в базу данных, извлекается из ответов пользователя на задаваемые вопросы. Все ответы сохраняются, так как они могут понадобиться позднее.

Экспертная  система также содержит интерпретатор в механизме вывода. Работу этого интерпретатора можно описать последовательностью трех шагов: интерпретатор сопоставляет образец правила с элементами данных в базе знаний; если можно вызвать более одного правила, то интерпретатор использует механизм разрешения конфликта для выбора правила; интерпретатор применяет выбранное правило, чтобы найти ответ на вопрос. Этот процесс интерпретации является циклическим и называется циклом «распознавание-действие».

Рассмотрим в качестве примера экспертной системы на правилах систему для идентификации пород собак. Она помогает потенциальному хозяину выбрать породу собаки в соответствии с определенными критериями.

Предположим, что пользователь сообщил   множество характеристик собаки в ответ на вопросы экспертной системы. Интерпретатор работает в цикле распознавание-действие. Если характеристики, заданные пользователем, сопоставимы с характеристиками породы собаки, составляющими часть базы знаний, тогда вызывается соответствующее продукционное правило и в результате идентифицируется порода. Затем результат сообщается пользователю. Если порода не идентифицирована, это тоже сообщается пользователю.

Рассмотрим две породы собак, информация о которых содержится в базе знаний. Гончая имеет короткую шерсть, высоту в холке меньше 57 см длинные уши и хороший характер. Датский дог имеет короткую шерсть, низко посаженный хвост, длинные уши, хороший характер и вес более 45 кг.

Из этого описания видно, что обе породы имеют короткую шерсть, длинные уши и хороший характер. Рост гончей меньше 57 см в то время, как ничего не сказано о росте дога. Дог имеет низко посаженный хвост и вес более 45 кг – характеристики отсутствующие для гончей. Описание двух собак в терминах указанных характеристик достаточно, чтобы различить эти две породы, и даже отличить их от любой другой породы в базе знаний.

Следующие продукционные правила могут быть составлены по указанным характеристикам:

dog_is(«Гончая»):– it_is(«короткоерстная собака»),

                                positive(«ее»,»высота в холке не более 57 см»),

                     positive(«у нее»,»длинные уши»),

                    positive(«у нее»,»дружелюбный характер»), !.

dog_is(«Great Dane»):– it_is(«длинношерстная собака»),

                                   positive(«у нее»,»низко посаженный хвост»),

                        positive(«у нее»,»длинные уши»),

                        positive(«у нее»,»дружелюбный характер»),

                        positive(«ее»,»вес более 45 кг»), !.

Заметим, что в правилах длина шерсти может быть представлена с помощью предиката positive в виде:

positive(«у нее»,»короткая шерсть»).

Но использование предиката it_is позволяет ограничить «пространство поиска» (количество данных, проверяемых при поиске решения) одним поддеревом древовидной структуры , содержащей информацию о разных породах собак.

Экспертная система, базирующаяся на правилах, позволяет проектировщику строить правила, которые естественным образом объединяют в группы связанные фрагменты знаний. Каждое продукционное правило может быть независимым от других. Эта независимость делает базу продукционных правил семантически модульной, т.е. группы информации не влияют друг на друга. Более того, модульность базы правил позволяет развивать базу знаний, увеличивая ее.

ЛИСТИНГ

/* Программа: эксперт по породам собак                                 */

/* Это продукционная система, базирующаяся на правилах*/

database

 xpositive(symbol,symbol)

 xnegative(symbol,symbol)

predicates

 do_expert_job

 do_consulting

 ask(symbol,symbol)

 dog_is(symbol)

 it_is(symbol)

 positive(symbol,symbol)

 negative(symbol,symbol)

 remember(symbol,symbol,symbol)

 clear_facts

goal

 do_expert_job .

clauses 

/* Систесма пользовательского интерфейса */

 do_expert_job :– makewindow(1, 7, 7, «ЭКСПЕРТ ПО  ПОРОДАМ СОБАК, 1, 16, 22, 58),

        nl,write(« * * * * * * * * * * * * * * * * * * * * *  «),

        nl,write(«          ДОБРО ПОЖАЛОВАТЬ!          «),nl,nl,

        nl,write(« Проводится идентификация породы «),nl,nl,

        nl,write(« Отвечайте, пожалуйста, 'да' или 'нет' «),

        nl,write(« а вопросы о собаке, породу которой «),

        nl,write(« Вы хотите определить «),

        nl,write(« * * * * * * * * * * * * * * * * * * * * * * «),

        nl,nl,do_consulting,write(«Нажмите любую клавишу»),

        nl, readchar(_), removewindow.

 do_consulting :– dog_is(X), !, nl, write(«Вероятно Ваша собака – «,X,».»),

                             nl,clear_facts.

 do_consulting :– nl, write(«Извините, я не смогу помочь Вам!»),

                             clear_facts.

 ask(X,Y) :– write(« ?:– «,X, «  «,Y, « ?  «), readln(Reply),

                    remember(X,Y,Reply).

/* Механизм вывода */

 positive(X,Y) :– xpositive(X,Y),!.

 positive(X,Y) :– not(negative(X,Y)),!,ask(X,Y).

 negative(X,Y) :– xnegative(X,Y),!.

 remember(X,Y,yes) :– asserta(xpositive(X,Y)).

 remember(X,Y,no) :– asserta(xnegative(X,Y)),fail.

 clear_facts :– retract(xpositive(_,_)), fail.

 clear_facts :– retract(xnegative(_,_)), fail.  

/*  Продукционные правила */

 dog_is(«Английский Бульдог») :– it_is(«короткошерстная собака»),

                             positive(«ее»,»высота в холке не более  57 см»),

                             positive(«у нее»,»низко посаженный хвост»),

                             positive(«у нее»,»дружелюбный характер»),!.

 dog_is(«Гончая») :– it_is(«короткошерстная собака»),

                             positive(«ее»,»высота в холке не более  57 см»),

                             positive(«у нее»,»длинные уши»),

                             positive(«у нее»,»дружелюбный характер»),!.

 dog_is(«Немецкий Дог») :– it_is(«короткошерстная собака»),

                             positive(«у нее»,»низко посаженный хвост»),

                             positive(«у нее»,»дружелюбный характер»),

                             positive(«ее»,»вес более 45 кг»),!.

 dog_is(«Американский Фоксхаунд») :– it_is(«короткошерстная собака»),

                             positive(«ее»,»высота в холке не более  77 см»),

                             positive(«у нее»,»длинные уши»),

                             positive(«у нее»,»дружелюбный характер»),!.

 dog_is(«Кокер Спаниель») :– it_is(«длинношерстная собака»),

                             positive(«ее»,»высота в холке не более  57 см»),

                             positive(«у нее»,»низко посаженный хвост»),

                             positive(«у нее»,»длинные уши»),

                             positive(«у нее»,»дружелюбный характер»),!.

 dog_is(«Ирландский  Сеттер») :– it_is(«длинношерстная собака»),

                             positive(«ее»,»высота в холке не более  77 см»),

                             positive(«у нее»,»длинные уши»),!.

 dog_is(«Колли») :– it_is(«длинношерстная собака»),

                             positive(«ее»,»высота в холке не более  77 см»),

                             positive(«у нее»,»низко посаженный хвост»),

                             positive(«у нее»,»дружелюбный характер»),!.

 dog_is(«Сенбернар») :– it_is(«длинношерстная собака»),

                             positive(«у нее»,»низко посаженный хвост»),

                             positive(«у нее»,»дружелюбный характер»),

                             positive(«ее»,»вес более 45 кг»),!.  

 it_is(«короткошерстная собака «) :–

                             positive(«это»,»короткошерстная собака «),!.

 it_is(«длинношерстная собака «) :–

                             positive(«это»,»длинношерстная собака «),!.

/* Конец программы */

Экспертные системы, базирующиеся на фактах

В экспертных системах, базирующихся на фактах, база знаний состоит из утверждений в виде предложений логики предикатов. Такие предложения могут группироваться, образуя БД Турбо-Пролога. Правила могут либо описывать данные, либо управлять процессом внутренней унификации Турбо-Пролога.

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

Интерпретатор выполняет различные функции внутри системы на основе следующей схемы:

Система имеет предложения в базе знаний, которые управляют поиском и сопоставлением. Интерпретатор сопоставляет эти предложения с элементами данных в базе данных.

Если может быть вызвано более одного правила, то система  использует  возможности  Турбо-Пролога для разрешения конфликта. Следовательно,  пользователю/программисту  не  нужно рассматривать потенциально возможные конфликты.

Система получает результаты унификационного процесса автоматически, поэтому они могут направляться на нужное устройство вывода информации.

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

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

rule(1,»Собака»,»Гончая»,[1,2,3,4]).

rule(2,»Собака»,»Немецкий Дог»,[1,5,3,4,6]).

cond(1,»короткошерстная»).

cond(2,»высота в холке не более 57 см»).

cond(3,»длинные уши»).

cond(4,»дружелюбный характер»).

cond(5,»низко посаженный хвост»).

cond(6,»вес более 45 кг»).

Заметьте, что в каждом предложении типа rule первый аргумент – номер правила, второй аргумент – тип объекта («собака») и третий аргумент – порода собаки. В нашем случае это гончая или дог. Список целых чисел задает номера условий из предложений  типа  cond (условие). Предложения типа cond содержат все характеристики для любой породы, представленной в базе знаний.

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

Добавление и обновление предложений базы знаний являются простыми операциями (предикаты retract и assert). Экспертные системы, базирующиеся на фактах, легко проектировать, развивать и поддерживать в Турбо-Прологе, так как по мере расширения базы знаний программа не требует модификации. Расширение, прежде всего, заключается в постепенном добавлении новых утверждений.

ЛИСТИНГ

/* Программа: Эксперт по породам собак                                         */

/* Пример экспертной системы, базирующейся на логике             */

domains

 conditions = integer *   

 history = integer *

database

/* Предикаты базы данных */

 rule(integer, symbol,symbol, conditions)

 cond(integer, symbol)

 yes(integer)

 no(integer)

predicates 

 /* Предикаты системы пользовательского интерфейса  */

 do_expert_job

 do_consulting

 goes(symbol)

 clear

 /* Предикаты механизма вывода */

 go(history, symbol)

 check(integer, history, conditions)

 Inpo(history, integer, integer, symbol)

 do_answer(history, integer, symbol,integer, integer)

goal

 do_expert_job.

clauses

 /* База знаний (БЗ) */

 rule(1, «Собака»,   «Короткошерстная собака», [1]).

 rule(2, «Собака»,   «Длинношерстная собака «, [2]).

 rule(3, «Короткошерстная собака»,»Английский бульдог»,[3,5,7]).

 rule(4, «Короткошерстная собака»,»Гончая», [3,6,7]).

 rule(5, «Короткошерстная собака»,»Немецкий Дог», [5,6,7,8]).

 rule(6, «Короткошерстная собака»,»Американский фоксхаунд»,  

                                                                                                 [4,6,7]).

 rule(7, «Длинношерстная собака «, «Кокер спаниель»,  [3,5,6,7]).

 rule(8, «Длинношерстная собака «, «Ирландский Сеттер», [4,6]).

 rule(9,  «Длинношерстная собака «, «Колли»,  [4,5,7]).

 rule(10, «Длинношерстная собака «, «Сенбернар», [5,7,8]).

 cond(1,»Короткошерстная»).

 cond(2,»Длинношерстная»).

 cond(3,»Высота в холке не более 57 см»).

 cond(4,»Высота в холке не более 77 см «).

 cond(5,»Низко посаженный хвост»).

 cond(6, «Длинные уши»).

 cond(7, «Дружелюбный характер»).

 cond(8, «Вес более 45 кг»).

 /* Система пользовательского интерфейса */

 do_expert_job :–

   makewindow(1,7,7,»ЭКСПЕРТ ПО ПОРОДАМ СОБАК», 0, 0, 25, 80),

   do_consulting, nl, nl, nl, nl, write(«Нажмите любую клавишу»),

   readchar(_), exit.

                           

 do_consulting :–goes(Mygoal),go([],Mygoal),!.

 do_consulting :–nl, write(«Извините, я не смогу Вам помочь») ,clear.

 do_consulting.

 goes(Mygoal) :– clear,clearwindow, nl, nl,nl,nl,

              write(«ДОБРО ПОЖАЛОВАТЬ»),nl, nl, nl,

              write(«Проводится идентификация породы»),nl,

              write(«Для того, чтобы начать процесс идентификации,»),nl,

              write(«введите слово 'Собака'. «), nl, nl, readln(Mygoal),!.

              

inpo(HISTORY,RNO,BNO,TEXT) :–write(«?:– «,TEXT,» ? «),

                            makewindow(2,7,7,»Для ответа на вопрос»,10,54,7,35),

                            write(«введите 1, если Ваш ответ 'да' ,»),

                            write(«введите 2, если Ваш ответ 'нет' ,»),

                            write(«введите 0, для выхода из системы»),nl,

                            readint(RESPONSE),

                            clearwindow,shiftwindow(1),

                            do_answer(HISTORY,RNO,TEXT,BNO,RESPONSE).

/* Механизм вывода */

go(HISTORY, Mygoal) :–rule(RNO,Mygoal,NY,COND),

                     check(RNO,HISTORY,COND),!,

                     go([RNO|HISTORY],NY).

go(_,Mygoal) :–not(rule(_,Mygoal,_,_)),!,                     

              nl,write(«Вероятно Ваша собака – «,Mygoal,».»), nl, nl, nl.

check(RNO,HISTORY,[BNO|REST]) :–  

                                    yes(BNO),!,check(RNO,HISTORY,REST).

check(_,_,[BNO|_]) :– no(BNO),!,fail.

check(RNO,HISTORY,[BNO|REST]) :–cond(BNO,TEXT),

                                     inpo(HISTORY,RNO,BNO,TEXT),

                                     check(RNO,HISTORY,REST).

check(_,_,[]).

do_answer(_,_,_,_,0):– exit.

do_answer(_,_,_,BNO,1) :–assert(yes(BNO)),write(yes),nl.

do_answer(_,_,_,BNO,2) :–assert(no(BNO)),write(no),nl,fail.

clear :– retract(yes(_)),retract(no(_)),fail,!.

clear.

/* Конец программы */

Выбор типа ЭС

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

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

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

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

КОНТРОЛЬНЫЕ ВОПРОСЫ

Для чего служит и что содержит секция database?

Какое имя получает БД по умолчанию.

Перечислить достоинства и недостатки использования резидентных БД.

Перечислить достоинства и недостатки использования нерезидентных БД.

Для чего предназначены и как выполняются стандартные предикаты asserta, assertz, retract, save, consult, readterm, findall.

Опишите работу стандартного предиката dir. Приведите примеры.

Для каких целей используется стандартный предикат disk? Приведите примеры его использования.

Как в прологе описываются файлы.

Привести стандартные предикаты для работы с резидентными БД.

Для чего предназначены и как выполняются стандартные предикаты openread, openwrite, openappend, openmodify, readdevice, writedevice, closefile.

Ход работы

ТРЕБОВАНИЯ К ОТЧЕТУ

Отчет должен содержать задание, структуру таблиц БД, тексты программы на языке Турбо-Пролог, распечатку результата работы тестового примера.

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1. Братко И. Программирование на языке пролог для искусственного интеллекта. / Пер. с англ. – М.: Мир, 1990. – 560 с.

2. Стерлинг Л. Искусство программирования на языке\ Поролог. / Л. Стерлинг, Э. Шапиро; Пер. с англ. – М.: Мир, 1990.  225 с.

3. Ин Ц. Использование Турбо-Пролога. / Ц. Ин, Д. Соломин; Пер. с англ. – М.: Мир, 1993. – 608 с.

5. Рыжков Ю. И. Информатика. Лекции и практикум. – СПб.: КОРОНА принт, 2000. – 256 с.

6. Основы современных компьютерных технологий: Учеб.  пособие / Б. Н. Артамонов, Г. И. Брикалов, В. Э. Гофман, Я. Е. Кадигроб, Р. И. Компаниец, А. Г. Липецких, М. Г. Мальцев, Ю. И. Рыжков, А. Д. Хоменко, В. М. Цыганов; Под ред. проф. Хомоненко А.Д. – СПб.: КОРОНА принт, 1998. – 448 с.

7. Основы программирования на языке Турбо-пролог:  Методические указания к практическим занятиям по курсу «Представление знаний в информационных системах» / Воронеж.  гос. технол.  акад.; Сост.  И.О. Павлов, С.В. Кулакова. – Воронеж, 2001.  – 32  с.

PAGE   \* MERGEFORMAT 7


 

А также другие работы, которые могут Вас заинтересовать

76602. Шифрующая файловая система EFS и управление сертификатами 158.5 KB
  Мои документы которую требуется зашифровать нажмите правую кнопку мыши и выберите в контекстном меню команду Свойства. В появившемся окне свойств на вкладке Общие нажмите кнопку Другие. В группе Атрибуты сжатия и шифрования установите флажок Шифровать содержимое для защиты данных и нажмите кнопку ОК. Нажмите кнопку ОК в окне свойств зашифровываемого файла или папки в появившемся окне диалога укажите режим шифрования: Только к этой папке или К этой папке и всем вложенным папкам и файлам.
76603. Назначение прав пользователей при произвольном управлении доступом 207.5 KB
  В оснастке Локальные пользователи и группы установите указатель мыши на папку Пользователи и нажмите правую кнопку. Б Создание локальной группы. В окне оснастки Локальные пользователи и группы установите указатель мыши на папке Группы и нажмите правую кнопку. В поле Имя группы Рисунок 4 введите имя новой группы например Студенты.
76604. Настройка параметров регистрации и аудита операционной системы 226 KB
  Изучить последовательность операций по настройке параметров регистрации и аудита системы безопасности. Эффективность системы безопасности принципиально повышается в случае дополнения механизма регистрации механизмом аудита. Аудит – это анализ накопленной информации проводимый оперативно в реальном времени или периодически например раз в день.
76605. Управление шаблонами безопасности 155 KB
  Изучить последовательность операций по управлению шаблонами безопасности операционной системы Windows 2000 ХР. Краткие теоретические сведения Управление шаблонами безопасности в Windows 2000 ХР осуществляется с помощью Редактора шаблонов безопасности реализованного в виде оснастки ММС. Он предназначен для создания и редактирования текстовых файлов конфигурации безопасности операционной системы Windows 2000 ХР.
76606. Настройка и использование межсетевого экрана 161.5 KB
  Краткие теоретические сведения Межсетевое экранирование повышает безопасность объектов внутренней сети за счет игнорирования неавторизованных запросов из внешней среды тем самым обеспечивая все составляющие информационной безопасности. В результате откроется окно Дополнительные параметры Рисунок 2 с тремя закладками Службы Ведение журнала безопасности и ICMP...
76607. Создание VPN-подключения средствами Windows 2000 (ХР) 216.5 KB
  Изучить последовательность действий по созданию VPNподключения в Windows 2000 ХР. Пример организации VPNподключения Задание: Создать VPNподключение и выполнить его настройку. А Создание VPNподключения.
76608. Восстановление зараженных файлов 2.63 MB
  Приобрести практические навыки по восстановлению файлов офисных приложений зараженных макровирусами. Краткие теоретические сведения Макровирусы заражают файлыдокументы и электронные таблицы популярных офисных приложений. Для анализа макровирусов необходимо получить текст их макросов.
76609. Профилактика компьютера от «троянских программ» 195 KB
  Ознакомиться с основными возможностями «системного реестра» операционной системы Windows 2000 (ХР) по настройке параметров безопасности. Изучить последовательность операций по проверке потенциальных мест размещения вирусов в ОС Windows 2000 (ХР).