- Характеристика логічного програмування
- Істина та логічне виведення
- Логіка першого порядку
- Форма застереження
- Штучний інтелект
- Приклади логічного програмування
- Приклад 1
- Приклад 2
- Запит
- Інші запити
- Список літератури
Логічне програмування є парадигмою програмування , яка використовує логічні схеми , а не тільки математичні функції управління , як факти і правила набір.
Замість ретельно структурованого потоку управління, який диктує, коли потрібно виконувати та як оцінювати виклики функцій чи інші інструкції, логічні правила програми записуються як пропозиції або логічні предикати.
Приклади логічного програмування в Prolog. Джерело: За Kuldeepsheoran1 - скріншот, CC BY-SA 3.0, wikimedia commons
Цей підхід, який часто використовується в генетичному та еволюційному програмуванні, загалом каже моделі, якої мети досягти, а не як її досягти.
Кожне правило містить заголовок і тіло з формалізованою логікою, а не виконувану математичну функцію. Наприклад, "І є істиною (заголовок): якщо C1, C2 і C3 є істинними (тіло)." Факти або результати висловлюються без сукупності, наприклад "І це правда".
Однак з деякими мовами програмування, такими як Prolog, також може бути включено імперативне програмування, щоб розповісти моделі, як вирішити певні проблеми. Наприклад, "Щоб вирішити Y, додайте C1, C2 і C3."
Характеристика логічного програмування
Логічне програмування істотно відрізняється від інших існуючих стратегій програмування. Замість того, щоб давати вказівки комп'ютеру з програмою, встановлюються зв’язки між об'єктами. Таким чином комп'ютер може викликати ці відносини і таким чином дійти до логічних рішень.
У рамках логічної програми є два основні набори коду: факти та правила. Правила застосовуються до фактів з метою отримання знань про навколишнє середовище.
Істина та логічне виведення
Логічні програми можна розшифрувати за допомогою двох важливих понять: істинності та логічного виведення. Істина з’ясовується, чи є обчислення в програмі правдивим чи ні, під реалізацію символів програми. Логічне виведення визначає, чи є логічним пунктом наслідком програми.
Ці інструкції завжди трактуватимуться як логічні пропозиції та пропозиції, результат їх виконання є логічним наслідком обчислень, які вони містять.
Логіка першого порядку
Це відхилення від логіки пропозицій. Поміркуйте, чи об'єкти справжні чи неправдиві з точки зору часткового світу, що називається доменом. Логічне програмування засноване на узагальненні логіки першого порядку.
Ця логіка складається з синтаксису та семантики. Синтаксис - формальна мова, яка використовується для вираження понять. З іншого боку, семантика логічних формул першого порядку вказує, як визначити справжнє значення будь-якої формули.
Ця логіка заснована на алфавіті та мові першого порядку, а також наборі аксіом і правил умовиводу.
Форма застереження
Це підмножина логіки першого порядку. Він має нормалізовану форму, де висловлювання визначається універсальним префіксом або ланцюжком універсальних кванторів і вільним набором кванторів у пункті.
При надходженні запиту до програми буде враховано тіло пункту, заголовок якого може збігатися. Це те саме, що застосовувати в логіці правило умовиводу.
Як крок у висновку вибираються два застереження, які мають властивість, що одна містить диз'юнктив X (позитивний буквальний), а інша містить диз'юнктивний ¬X (негативний буквальний). Ці компроміси відомі як взаємодоповнюючі.
З цих двох початкових пропозицій будується нова резолютивна пропозиція з використанням усіх літералів, крім доповнюючих.
Штучний інтелект
Логічне програмування - це методологія, яка використовується для виведення комп'ютерів, оскільки корисно представляти знання. Логіка використовується для представлення знань та умовиводу для обробки цього.
Логіка, що використовується для представлення знань, є формулярною формою. Він використовується тому, що логіка першого порядку добре зрозуміла і здатна представляти всі обчислювальні задачі.
Prolog - мова програмування, яка базується на ідеях логічного програмування. Ідея Prolog - зробити логіку схожою на мову програмування.
Приклади логічного програмування
Приклад 1
- Факт: Рубі - кішка.
- Правило: всі коти мають зуби.
- Консультація: чи має у Рубі зуби?
- Висновок: так.
Правило "всі коти мають зуби" можна застосувати до Рубі, оскільки є факт, який говорить "Рубі - кішка". Цей приклад не записується жодним синтаксисом для реальної мови програмування.
Приклад 2
Цей приклад можна побачити в Prolog, оскільки це одна з найпопулярніших мов логічного програмування:
- жіночий (аліса).
- чоловічий (бобі).
- чоловічий (карлос).
- жіночий (доріс).
- son_of (doris, carlos).
- son_of (carlos, bobby).
- son_of (doris, alissa).
- батько_ (F, P): - чоловік (F), син_оф (P, F).
Ця програма стає важкою для читання, оскільки Prolog помітно відрізняється від інших мов. Будь-який компонент коду, що нагадує "жіноче (алісса)". це факт.
Одне правило - "батько_ (F, P): - чоловік (F), дитина_фа (P, F)". Символ ": -" може читатися як "вірно, якщо". Великі літери означають, що змінні можуть бути застосовані до будь-якого об'єкта, тому F може виступати за карло, доріс, аліссу чи бобі. Цей код можна перекласти як:
- Аліса - жінка.
- Боббі - людина.
- Карлос - людина.
- Доріс - жінка.
- Доріс - дочка Карлоса.
- Карлос - син Боббі.
- Доріс - дочка Аліси.
- «F - батько Р» - це правда, якщо F - людина, і якщо P - син F.
Запит
Припустимо, ви хочете отримати додаткову інформацію в програмі. Ви можете шукати, запитуючи, чий є батько Боббі з? Система вкаже наступну відповідь: X = Карлос.
У цьому випадку передається співвідношення, коли одне з його значень є змінною. Що робив Пролог, це застосувати різні об'єкти до цього відношення, поки один з них не був логічно твердим.
Єдиний батько Карлоса - Боббі, а Боббі - чоловік. Це задовольнило правило "батько_о (F, P): - чоловічий (F), son_of (P, F)." Коли X дорівнює "карлос", логіка є звуковою.
Інші запити
Інші більш загальні запити можуть бути зроблені до Prolog, які призводять до того, що система генерує кілька результатів:
-? - parent_of (батько, дитина).
- Батько = бобі
- Дитина = Карлос
- Батько = Карлос
- Дитина = доріс
Як було видно, для логічного програмування не потрібно мати інформацію про те, що Аліса або бобі - це люди, щоб отримати знання про них. Насправді не потрібно вказувати, що існує поняття, яке називається людина.
У більшості нелогічних мов програмування вам доведеться спочатку визначити ці поняття, перш ніж ви зможете писати програми, які обробляють інформацію про людей.
Список літератури
- Глибокий ШІ (2020). Логічне програмування. Взято з: deepai.org.
- Віківерситет (2020). Теорія мов програмування / логічне програмування. Взяте з: en.wikiversity.org.
- Імперський коледж Лондона (2006). Логічне програмування. Взято від: doc.ic.ac.uk.
- Цзя-Хуай Ти (2020). Вступ до логічного програмування. Університет Альберти. Взято з: eng.ucy.ac.cy.
- C2 Wiki (2020). Логічне програмування. Взято з: wiki.c2.com.