Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Vstup.doc
Скачиваний:
2
Добавлен:
20.11.2018
Размер:
250.88 Кб
Скачать

ВСТУП

Розвиток обчислювальної техніки відкрило перед людиною величезну кількість нових можливостей. Обчислювальна техніка знайшла застосування практично у всіх сферах життєдіяльності людини. Але, як і будь-який інший предмет, який нас оточує, обчислювальну техніку можна використовувати як на благо, так і на шкоду.

Завдяки сучасним засобам людство дістало доступ до великих об’ємів інформації. Для якісного і зручного управління відповідними інформаційними потоками необхідна наявність різного роду інформаційно-пошукових систем, які повинні "вміти" допомогти людині швидко знайти, поділитись інформацією.

Метою даної роботи є розробка інформаційно-пошукової системи засобами логічного програмування.

Логічне виведення за дедукцією є одним із основних механізмів мислення. Саме цей вид логічного виведення найбільш вивчений і найкраще піддається формалізації.

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

Назву Пролог (Prolog) утворено з двох англійських слів PROgramming LOGig. Ця мова створена професором Аленом Колмеросом, який працював в 1970 році в рамках проекту зі створення методів швидкого виявлення синтаксичних помилок в програмах. Сьогодні Пролог— це широко відома мова, яка орієнтована на розуміння природної мови, формування баз знань розробку експертних систем та інші проблеми штучного інтелекту. Мова Пролог принципово відрізняється від традиційних мов програмування, оскільки програма мовою Пролог описує не процедуру розв’язування задач, а логічну модель предметної області: деякі факти відносно властивостей предметної області та відношень між цими властивостями, а також правила виведення нових властивостей і відношень на основі вже заданих. Такий логічний підхід до програмування створює деякі проблеми в поширенні мови; основні поняття мови програмістами засвоюються без особливих труднощів, в той час практичне перетворення усього розуміння в написані програми викликає певні складності. Але потужність і гнучкість баз знань утворених за допомогою мови Пролог, лише без модифікації на розширення робить цю мову дуже зручною для логічного програмування в будь-якій предметній області.

1 Аналіз існуючих засобів і технологій

1.1 Поняття про інформаційні системи

Інформаційно-довідкові системи призначені для управління різними інформаційними і довідковими масивами, в число яких входять і бази даних. Ці системи організовують певний інтерфейс користувача з функціями обробки інформації самої системи. Набір можливостей таких систем зазвичай включає корекцію структури використовуваного об'єкту (що інкапсулює інформацію), робота з його складовими – доповнення, редагування, видалення (у разі, коли роль такого об'єкту виконує база даних, це - записи), простій перегляд, пошук елементів. Також необхідно забезпечити для такої системи і функції постійного надійного зберігання - в простому випадку, це - запис бази з пам'яті у файл на диску і читання одного з диска в пам'ять.

Програмна реалізація мало відрізняється від подібної концепції, але конкретизує абстрактні операції в конкретні процедури і функції (або ж об'єкти) і залежить повністю від можливостей мови, поставленого завдання і мистецтва програміста.

Загальна концепція теорії простих баз даних передбачає наявність деякої безлічі таблиць і що є, власне, базою даних, що має певний ідентифікатор (ім'я). Кожна таблиця складається з n-го кількості записів (величина n залежить від можливостей конкретної системи), кожна з яких має одну і ту ж структуру (в рамках однієї таблиці) і може об'єднувати в собі декілька різнорідних об'єктів (їх кількість також залежить цілком і повністю від можливостей системи). Робота з базою даних припускає в собі можливість працювати із записами (або змінювати структуру таблиць).

1.2 Способи представлення баз даних у Пролог-програмах

Загальна концепція теорії простих баз даних передбачає наявність деякої безлічі таблиць і що є, власне, базою даних, що має певний ідентифікатор (ім'я). Кожна таблиця складається з n-го кількості записів (величина n залежить від можливостей конкретної системи), кожна з яких має одну і ту ж структуру (в рамках однієї таблиці) і може об'єднувати в собі декілька різнорідних об'єктів (їх кількість також залежить цілком і повністю від можливостей системи). Робота з базою даних припускає в собі можливість працювати із записами (або змінювати структуру таблиць).

У мові Пролог існує кілька різних способів представлення баз даних. До основного з них варто віднести представлення бази даних як:

• множина фактів, кожний з яких відповідає цілісному інформаційному елементові (тобто запису) бази даних;

• множина фактів, кожний з яких відповідає парі значень атрибут/ключ;

• список структур, у якому кожна структура відповідає записи бази даних;

• лінійна рекурсивна структура, де кожна структура відповідає записи бази даних;

• рекурсивна структура у виді двійкового дерева, у якій кожен вузол дерева відповідає запису бази даних.

1.2.1 Особливості динамічних баз даних

У Пролозі реляційна база даних представляється у вигляді набору фактів, що дозволяє використовувати Пролог, як могутню мову запитів для баз даних. Вбудований в Пролог алгоритм уніфікації автоматично вибирає факти з правильними значеннями для відомих параметрів і уніфікує значення для будь-яких невідомих параметрів. Алгоритм пошуку з поверненням дозволяє знаходити всі рішення для поставлених запитів.

Принциповою відмінністю динамічних баз даних є те, що під час роботи з програмою, з них можна видаляти будь-які твердження, а також додавати нові. Інша важлива особливість динамічної бази полягає у тому, що вона може бути збережена на диск та зчитана з диска в оперативну пам’ять.

Факти, що належать динамічним базам даних, обробляються відмінним від інших предикатів чином з метою прискорення роботи з базами даних великого об’єму. Предикати динамічної БД відрізняються від інших тим, що вони описуються в окремій секції програми – database. Маніпулювання фактами в динамічній БД здійснюється з використанням трьох стандартних предикатів:

asserta(Term) – додає нові факти в початок динамічної бази даних.

assertz(Term) – додає нові факти в кінець динамічної бази даних,

retract(Term) – видаляє факт з динамічної бази даних.

Для модифікації якого-небудь факту в динамічній БД необхідно спочатку видалити його з неї, а потім додати в зміненому вигляді. Для забезпечують роботи з даними динамічної БД, що знаходяться на жорстоку диску використовуються наступні стандартні предикати:

save(„file_name”) – збереження динамічної БД в текстовому файлі з ім'ям file_name.

consult(„file_name”) – завантаження динамічної БД з текстового файлу з ім'ям file_name.

Слід зауважити, що іноді частину інформації бази даних доцільно зберігати у вигляді тверджень статичної БД і заносити ці дані до динамічної БД відразу ж після активізації програми. При цьому предикати статичної БД повинні мати інше ім'я, але ту ж саму структуру даних, що і предикати динамічної БД. Причому опис предикатів динамічної БД здійснюється в секції database, або facts (у Visual Prolog) а предикатів статичної БД – в секції predicates.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]