
- •Лабораторне заняття № 1
- •1. Теоретичні відомості
- •2. Практична частина
- •2.1. Програма роботи та завдання.
- •Лабораторне заняття № 2
- •1. Теоретичні відомості
- •2. Практична частина
- •2.1. Програма роботи та завдання.
- •Лабораторне заняття № 3
- •1. Теоретичні відомості
- •2. Практична частина
- •2.1. Програма роботи та завдання.
- •Лабораторне заняття № 4
- •1. Теоретичні відомості
- •2. Практична частина
- •2.1. Програма роботи та завдання.
- •Лабораторне заняття № 5
- •1. Теоретичні відомості
- •2. Практична частина
- •2.1. Програма роботи та завдання.
- •Лабораторне заняття № 6
- •1. Теоретичні відомості
- •2. Практична частина
- •2.1. Програма роботи та завдання.
- •Лабораторне заняття № 7
- •1. Теоретичні відомості
- •2. Практична частина
- •2.1. Програма роботи та завдання.
- •Лабораторне заняття № 8
- •1. Теоретичні відомості
- •2. Практична частина
- •2.1. Програма роботи та завдання.
- •Лабораторне заняття № 9
- •1. Теоретичні відомості
- •2. Практична частина
- •2.1. Програма роботи та завдання.
- •Лабораторне заняття № 10
- •1. Теоретичні відомості
- •2. Практична частина
- •2.1. Програма роботи та завдання.
- •Лабораторне заняття № 11
- •1. Теоретичні відомості
- •2. Практична частина
- •2.1. Програма роботи та завдання.
- •Лабораторне заняття № 12
- •1. Теоретичні відомості
- •1. Стара графіка.
- •2. Черепахова графіка (Turtle graphics).
- •2. Практична частина
- •2.1. Програма роботи та завдання.
- •Лабораторне заняття № 13
- •1. Теоретичні відомості
- •2. Практична частина
- •2.1. Програма роботи та завдання.
- •Лабораторне заняття № 14
- •1. Теоретичні відомості
- •2. Практична частина
- •2.1. Програма роботи та завдання.
- •Лабораторне заняття № 15
- •1. Теоретичні відомості
- •2. Практична частина
- •2.1. Програма роботи та завдання.
- •Лабораторне заняття № 16
- •1. Теоретичні відомості
- •2. Практична частина
- •2.1. Програма роботи та завдання.
- •43018, М. Луцьк, вул.Львівська, 75
Mіністерство освіти і науки України
Луцький національний технічний університет
“Комп’ютерні системи штучного інтелекту”
методичні вказівки
до лабораторних занять
для студентів спеціальності
“Комп’ютерні системи та мережі”
денної та заочної форм навчання
Редакційно-видавничий відділ
Луцького національного технічного університету
Луцьк 2009
УДК 631.145
ББК 65.9(2)32
С91
Комп’ютерні системи штучного інтелекту. Методичні вказівки до лабораторних занять для студентів спеціальності КСМ денної та заочної форм навчання./ О.В.Дудік – Луцьк: ЛНТУ, 2009, - 55с.
Методичні вказівки складено відповідно до діючої програми курсу “Комп’ютерні системи штучного інтелекту”. Вони можуть бути використані студентами технічних спеціальностей при вивченні даної дисципліни.
Укладач: асистент О.В. Дудік
Рецензент: к.т.н., доц.. Н.В.Багнюк
Відповідальний за випуск: к.т.н., доц. П.А.Пех
Затверджено науково-методичною радою ЛНТУ
протокол № від 2009 р.
Рекомендовано до друку науково-методичною комісією
факультету комп’ютерних наук і інформаційних технологій
протокол № від 2009 р.
Затверджено на засіданні кафедри прикладної математики
протокол № від 2009 р.
©Дудік О.В. 2009
ЗМІСТ
1 |
ЛАБОРАТОРНА РОБОТА № 1 НА ТЕМУ: “ХОРНОВСЬКІ ФРАЗИ” |
4 |
2 |
ЛАБОРАТОРНА РОБОТА № 2 НА ТЕМУ: “ТЕХНІКА БЕЗПЕКИ В ЛАБОРАТОРІЇ. ОСНОВНІ РОЗДІЛИ ПРОГРАМИ НА TURBO PROLOG” |
6 |
3 |
ЛАБОРАТОРНА РОБОТА № 3 НА ТЕМУ: “ДОСЛІДЖЕННЯ ВБУДОВАНИХ ПРЕДИКАТІВ ТА АНОНІМНИХ ЗМІННИХ” |
9 |
4 |
ЛАБОРАТОРНА РОБОТА № 4 НА ТЕМУ: “ДОСЛІДЖЕННЯ ПРОСТИХ ТА СКЛАДНИХ ДАНИХ” |
12 |
5 |
ЛАБОРАТОРНА РОБОТА № 5 НА ТЕМУ: “РОБОТА ЗІ СПИСКАМИ” |
16 |
6 |
ЛАБОРАТОРНА РОБОТА № 6 НА ТЕМУ: “ДОСЛІДЖЕННЯ ІТЕРАЦІЙ ТА РЕКУРСІЙ” |
20 |
7 |
ЛАБОРАТОРНА РОБОТА № 7 НА ТЕМУ: “РОЗВ’ЯЗАННЯ ПРАКТИЧНИХ ЗАДАЧ ЗА ДОПОМОГОЮ РЕКУРСІЇ” |
24 |
8 |
ЛАБОРАТОРНА РОБОТА № 8 НА ТЕМУ: “ЛЕКСИКОГРАФІЧНЕ ВПОРЯДКУВАННЯ” |
25 |
9 |
ЛАБОРАТОРНА РОБОТА № 9 НА ТЕМУ: “РОЗВ’ЯЗАННЯ ЗАДАЧІ СИНТАКСИЧНОГО АНАЛІЗУ” |
28 |
10 |
ЛАБОРАТОРНА РОБОТА № 10 НА ТЕМУ: “МОДЕЛЮВАННЯ АПАРАТНИХ ЗАСОБІВ” |
31 |
11 |
ЛАБОРАТОРНА РОБОТА № 11 НА ТЕМУ: “МАКЕТУВАННЯ ЗАДАЧ МАРШРУТИЗАЦІЇ” |
33 |
12 |
ЛАБОРАТОРНА РОБОТА № 12 НА ТЕМУ: “ГРАФІКА В СИСТЕМІ TURBO PROLOG” |
36 |
13 |
ЛАБОРАТОРНА РОБОТА № 13 НА ТЕМУ: “ОБРОБКА ДИНАМІЧНИХ БАЗ ДАНИХ ТА ФАЙЛІВ” |
41 |
14 |
ЛАБОРАТОРНА РОБОТА № 14 НА ТЕМУ: “СТАНДАРТНА ЗАДАЧА ПРО РОЗМІЩЕННЯ КОРОЛЕВ НА ШАХІВНИЦІ” |
45 |
15 |
ЛАБОРАТОРНА РОБОТА № 15 НА ТЕМУ: “ЗАДАЧА ПРО ХАНОЙСЬКІ ВЕЖІ. ПОДІЛ СЛІВ НА СКЛАДИ” |
48 |
16 |
ЛАБОРАТОРНА РОБОТА № 16 НА ТЕМУ: “ДОСЛІДЖЕННЯ ПРОГРАМИ “1STCLASS” ДЛЯ СТВОРЕННЯ ПРОСТИХ ЕКСПЕРТНИХ СИСТЕМ ” |
52 |
Лабораторне заняття № 1
Тема: Хорновські фрази
Мета роботи. Навчитися розрізняти різні види хорновських фраз; зв’язати поняття клаузальної форми та хорновської фрази; проаналізувати отримані результати.
1. Теоретичні відомості
Для скорочення об’ємів обчислень на практиці використовують спеціальний клас фраз, який дістав назву фраз Хорна. Фраза Хорна - це фраза, котра має тільки один позитивний літерал, одну її можна записати декількома способами. Наприклад, А В С D еквівалентне А В, С, D і в системі Турбо-Пролог буде мати вигляд А: В, С, D.
Клаузальна (диз’юнктивна) форма – це форма для представлення висловлень логіки предикатів. Не обмежуючи загальності висловлення можуть бути представленими у такій формі : В1UВ2…UВn<=A1UA2…UAm, де Аi, Вi – це терми.
Загальна властивість клаузальної форми полягає в наступному :
Всі висловлення в ч.п. можна перетворити в диз’юнк. чи клаузальну форму за допомогою відповідного алгоритму.
Не потрібні квантори існування i загальності, викор. лише вн. операцій U та ∩.
На основі клаузальної форми вводиться поняття хорновської фрази, яка може мати один з чотирьох виглядів :
В<=A1UA2…UAm – умовне твердження.
В<= – безумовне твердження.
<=A1UA2…UAm – заперечне твердження.
<= – суперечність.
Доведено, що довільну проблему, яку вдається описати засобами логіки можна представити еквівалентним набором хорновських фраз.
2. Практична частина
2.1. Програма роботи та завдання.
2.1.1. Описати засобами логіки подані нижче проблеми та представити їх у вигляді набору хорновських фраз.
Проблеми :
1) Студент отримає стипендію у тому випадку, якщо він здасть усі іспити та заліки, причому середній бал не повинен бути менший 4.
2) Квадратне рівняння у довільному випадку для різних коефіцієнтів матиме два розв’язки.
3) Я громадянин України.
4) Сьогодні четвер і на Волині йде дощ або сьогодні середа і на Волині йде сніг.
5) Всі люди на Землі багаті.
6) Якщо зараз 2001 рік, то наступний буде 2002.
7) Андрій має 4 сестри, кожна з яких має 3 брати. В Андрія 2 брата.
8) Прапор є прапором України, якщо він має дві смуги голубого та жовтого кольору, які розміщені горизонтально і однакові за розмірами.
9) Всі діти чиїсь батьки. Василь батько Михайла.
10) Світ чудовий.і
2.1.2. Зафіксувати у звіті набори Хорновських фраз.
2.1.3. Відповісти письмово на контрольні питання.
Контрольні питання:
Що таке хорновська фраза?
Що таке клаузальна форма?
Типи хорновських фраз?
Лабораторне заняття № 2
Тема: Техніка безпеки в лабораторії. Основні розділи програми на Turbo Prolog
Мета роботи. Дослідити роботу деяких простих програм в Turbo Prolog та визначити розділи, що в них використовуються; результати роботи програм зафіксувати у звіті для декількох варіантів вхідних даних; проаналізувати отримані результати.
1. Теоретичні відомості
Програма PDC Прологу (надалі будемо писати просто Пролог) складається з 3-4 розділів.
Розділ clauses - головна частина програми Прологу. Тут записуються факти та правила, які будуть використані для задоволення мети програми.
Розділ predicates використовується для оголошення предикатів та доменів і опису типів їх аргументів. Коли ви оголошуєте предикат, то вказуєте Прологу, які домени аргументів належать останньому. У ньому повинні бути всі предикати, зазначені в розділі clauses.
При застосуванні вмонтованих предикатів, наприклад, таких, як write, makewindow, nl тощо, оголошувати їх нема потреби.
Опис предикату починається з імені, потім іде список типів аргументів (якщо вони існують), розділених комами та взятими в круглі дужки. Типи аргументу є або стандартними доменами, або ж доменами, які оголосили у розділі domains. Ім’я предикату повинно бути ідентифікатором.
Розділ domains використовується подібно до конструктора типів type у Паскалі. За допомогою цього розділу можна перейменувати /перевизначити/ стандартні домени й описати такі складних типів даних. Якщо у програмі використовуються тільки стандартні домени, тоді в розділі domains узагалі нема потреби.
Розділом goal користуються для задавання вмонтованих (внутрішніх) цілей коли необхідно, щоб програма працювала незалежно від розвитку середовища Прологу. Іншими словами, якщо ви плануєте компілювати програму в таку, яка самостійно виконуватиметься, можете явно вказати мету виконання.
Розділ constants застосовують для об’явлення констант. Вживають синтаксис:
<Ідентифікатор> = <Макровизначення>.
При цьому вводяться такі обмеження:
- в одному рядку повинна бути визначена лише одна константа;
- заборонена рекурсія при визначенні константи;
- в описі констант система не розпізнає великі та малі літери;
- ідентифікатори констант є глобальними і можуть бути об’явлені тільки один раз.
Розділ database - це база даних. Іноді під час виконання програми необхідно змінити деякі факти, з якими працює програма. Вони знаходяться в динамічній або внутрішній базі даних. Факти, котрі розміщуються в динамічній, повинні бути описані в розділі database.