Tue . 19 Aug 2019

Лагічнае праграмаванне

Лагічнае праграмаванне - гэта тып парадыгмы праграмавання, які ў значнай ступені заснаваны на фармальнай логіцы Любая праграма, напісаная на мове логікі праграмавання, уяўляе сабой набор прапаноў у лагічнай форме, у якіх выражаюцца факты і правілы, звязаныя з пэўнай праблемнай даменай. Праграмаванне ASP і Datalog Ва ўсіх гэтых мовах правілы пішуцца ў выглядзе пунктаў:
H: - B1,…, Bn
і чытаюцца дэкларатыўна як лагічныя наступствы:
H, калі B1 і ... і Bn
H называецца кіраўніком правілы, а B1, ..., Bn называецца целам. Факты - гэта правілы, якія не маюць цела, і пішуцца ў спрошчаным выглядзе:
H
У самым простым выпадку ў якія H, B1,…, Bn - усе атамныя формулы; гэтыя артыкулы называюцца пэўнымі, альбо выразамі Рога. Аднак у гэтым простым выпадку існуе мноства пашырэнняў, самым галоўным з якіх з'яўляецца выпадак, пры якім умовы дадзенага пункта могуць быць таксама ёсць адмовы атамных формул Логічныя мовы праграмавання, якія я nclude гэта пашырэнне мае магчымасці прадстаўлення ведаў немонотонной логікі
У ASP і Datalog, лагічныя праграмы маюць толькі дэкларатыўнае чытанне, і іх выкананне ажыццяўляецца пры дапамозе працэдуры доказу ці генератара мадэлі, паводзіны якога не прызначана для быць пад кантролем праграміста Аднак у сям'і моў Prolog лагічныя праграмы таксама маюць працэдурную інтэрпрэтацыю як працэдуры памяншэння мэты:
вырашаць H, вырашаць B1 і вырашаць Bn
Разгледзім, напрыклад наступны пункт:
fallibleX: - humanX - на аснове прыкладу, які выкарыстоўваецца Тэры Вінаградам [1] для ілюстрацыі мовы праграмавання Планіроўшчык У якасці пункта ў лагічнай праграме ён можа быць выкарыстаны як у якасці працэдуры для праверкі ці з'яўляецца X памылковым шляхам праверкі, ці з'яўляецца X чалавек, і як працэдура знайсці X, якая можа быць памылковай, знайшоўшы X, які з'яўляецца чалавекам, Нават факты маюць працэдурную інтэрпрэтацыю, напрыклад, пункт:
humansocrates
выкарыстоўваецца як працэдура, каб паказаць, што так скрынькі - гэта чалавек, і ў якасці працэдуры знайсці X, які з'яўляецца чалавекам, "прыпісаўшы" Сакрата да X
Дэкларатыўнае чытанне лагічных праграм праграміст можа выкарыстоўваць для праверкі іх правільнасці. Больш за тое, методыкі пераўтварэння праграм на аснове логікі могуць таксама выкарыстоўваецца для пераўтварэння лагічных праграм у лагічна эквівалентныя праграмы, якія больш эфектыўныя У мовах праграмавання логікі сямейства Prolog праграміст можа таксама выкарыстоўваць вядомае паводзіны механізму выканання рашэння праблем для павышэння эфектыўнасці праграм
Змест
1 Гісторыя - 2 паняцці - 21 Логіка і кіраванне - 22 Рашэнне праблем - 23 Адмова як няўдача - 24 Прадстаўніцтва ведаў - 3 Варыянты і пашырэнні - 31 Пралог
32 Абдуктыўнае лагічнае праграмаванне - 33 Металагічнае праграмаванне - 34 - Лагічнае праграмаванне абмежаванняў - 35 - Паралельнае праграмаванне логікі - 36. Праграмаванне логікі абмежаваных умоў - 37 Індуктыўнае лагічнае праграмаванне - 38 Логічнае праграмаванне вышэйшага парадку
39 Лінейнае лагічнае праграмаванне 310 Аб'ектна-лагічнае праграмаванне - 311 Лагічнае праграмаванне транзакцый - 4 Глядзіце таксама: 5 Спасылкі - 51 Агульныя ўводзіны - 52 Іншыя крыніцы - 6 Дадатковае чытанне - 7 Знешнія спасылкі
Гісторыя
Выкарыстанне матэматычнай логікі для прадстаўлення і выканання камп'ютэрных праграм таксама з'яўляецца асаблівасцю вылічэння лямбда, распрацаванага царквой Алонса ў 1930-я гады. Аднак першая прапанова выкарыстоўваць логічную форму для прадстаўлення камп'ютэрных праграм быў зроблены Кордэлам Грынам [2]. Пры гэтым была выкарыстана аксіяматызацыя падмноства LISP, а таксама прадстаўленне адносін уводу-высновы, каб вылічыць адносіны шляхам імітацыі выканання праграмы ў LISP Foster і Elcock's Absys, з іншага. з боку, выкарыстоўваецца спалучэнне раўнанняў і лямбда-вылічэння ў асертыўнай мове праграмавання, якая не абмяжоўвае парадак выканання аперацый [3]. - Лагічнае праграмаванне ў цяперашнім выглядзе можна прасачыць да дэбатаў у канцы 1960-х і пачатку 1970-х гг выключаюць дэкларатыўнае і працэдурнае прадстаўленне ведаў у галіне штучнага інтэлекту. Адвакатары дэкларатыўных уяўленняў, у прыватнасці, працуюць у Стэнфардзе, звязаным з Джонам Макарці, Бертрамам Рафаэлем і Кордэлам Грынам, а таксама ў Эдынбургу, з Джонам Аланам Робінсанам, акадэмічным наведвальнікам універсітэта Сіракуз, Пат Хейс і Роберт Кавальскі Прыхільнікі працэсуальных прадстаўніцтваў у асноўным былі сканцэнтраваны на MIT пад кіраўніцтвам Марвіна Міньскага і Сеймура Паперта [неабходная спасылка]
Хоць гэта было заснавана на метадах доказу логікі, Планіроўшчык, распрацаваны ў MIT, стаў першай мовай для узнікаюць у рамках гэтай працэдурнай парадыгмы [4]. Планіровак выяўляў выклік працэдурных планаў, накіраваных на ўзор, з мэтаў, то ёсць зніжэнне мэты альбо зваротны ланцуг, і з сцвярджэнняў, гэта значыць збліжэнне наперад. Самым уплывовым укараненнем Планавальніка стала мноства Планіроўшчыка, званае Мікрапланіроўшчыкам. Геры Сусман, Яўген Чарняк і Тэры Вінаград. Ён быў выкарыстаны для рэалізацыі вінаградскай п праграма разумення мовы-SHRDLU, якая была знакавай для таго часу [1] Каб справіцца з вельмі абмежаванай сістэмай памяці ў той час, Планіроўшчык выкарыстаў структуру кіравання зваротным зваротам, каб у той час планаванне павінна было захоўвацца толькі адзін магчымы шлях вылічэння. спарадзілі мовы праграмавання QA-4, Popler, Conniver, QLISP і спадарожную мову Эфір [неабходнае цытаванне]
Хейс і Кавальскі ў Эдынбургу паспрабавалі ўзгадніць дэкларатыўны падыход да прадстаўлення ведаў на аснове логікі з працэдурным падыходам Планера Хейса 1973 г. быў распрацаваны эквівалентны мова Голу, у якой розныя працэдуры можна атрымаць, змяніўшы паводзіны тэарэмы, якія сцвярджаюць [5]. Кавальскі, з іншага боку, распрацаваў дазвол SLD [6], варыянт дазволу SL [7]. і паказаў, як ён разглядае наступствы як працэдуры скарачэння мэт. Кавальскі супрацоўнічаў з Colmerauer з Марсэля, які распрацаваў гэтыя ідэі ў распрацоўцы і ўкараненні мовы праграмавання Prolog
The ssociation for Logic Programming быў заснаваны для прасоўвання логічнага праграмавання ў 1986 г. Prolog спарадзіў мовы праграмавання ALF, Fril, Gödel, Mercury, Oz, Ciao, Visual Prolog, XSB і λProlog, а таксама мноства адначасовых логік Мовы праграмавання [8] мовы абмежавання логікі абмежавання і журнал дадзеных [неабходнае цытаванне]
Канцэпцыі
Логіка і кіраванне
Асноўны артыкул: Дэкларатыўнае праграмаванне
Логічнае праграмаванне можна разглядаць як кіраваны вылік Важнае паняцце ў логіцы праграмаванне - гэта падзел праграм на іх логічны кампанент і іх кампанент кіравання. З чыстымі мовамі праграмавання логіка сама лагічны кампанент вызначае вырабленыя рашэнні. Кантрольны кампанент можа вар'іравацца, прапаноўваючы альтэрнатыўныя спосабы выканання лагічнай праграмы. Гэта паняцце захопліваецца лозунгам
Алгарытм = Логіка + Кіраванне - дзе "Логіка" ўяўляе сабой лагічную праграму, а "Кіраванне" - розныя стратэгіі, якія даказваюць тэарэмы [9] | Рашэнне задач - У сім пліфіцыраваны, прапанаваны выпадак, калі лагічная праграма і атамная мэта верхняга ўзроўню не ўтрымліваюць зменных, зваротная развага вызначае і / або дрэва, якое ўяўляе сабой прастору пошуку для вырашэння мэты. Мэта верхняга ўзроўню - корань дрэва. любы вузел на дрэве і любы сказ, галава якога адпавядае вузлу, існуе набор даччыных вузлоў, якія адпавядаюць падцэлям у целе гэтага пункта. Гэтыя даччыныя вузлы аб'яднаны ў "і" альтэрнатыўныя наборы дзяцей, якія адпавядаюць альтэрнатыўныя спосабы развязання вузла аб'ядноўваюцца ў "або"
Любая стратэгія пошуку можа быць выкарыстана для пошуку гэтай прасторы. Prolog выкарыстоўвае паслядоўную, зваротную стратэгію зваротнага адсочвання, у якой толькі адна альтэрнатыва і адна падкантрольная мэта разглядаецца адначасова. Іншыя стратэгіі пошуку, такія як паралельны пошук, інтэлектуальны зваротны зварот альбо найлепшы пошук, каб знайсці аптымальнае рашэнне, таксама магчымыя
У больш агульным выпадку, калі падкантрольныя мэты падзяляюць зменныя , іншыя стратэгіі ca нельга выкарыстоўваць, напрыклад, выбар падголаса, які з'яўляецца найбольш матываваным або які дастаткова дасканалы, каб прымянялася толькі адна працэдура. Такія стратэгіі выкарыстоўваюцца, напрыклад, пры адначасовым лагічным праграмаванні: «Адмаўленне як правал»
Асноўны артыкул: Адмова як збой - Для большасці практычных прыкладанняў, а таксама для прыкладанняў, якія патрабуюць неманатоннага развагі ў штучным інтэлекце, логіку праграм Рога трэба распаўсюджваць на звычайныя лагічныя праграмы з адмоўнымі ўмовамі. У звычайнай лагічнай праграме пункт ёсць форма:
H: - A1,…, An, не B1,…, не Bn
, і чытаецца дэкларатыўна як лагічны сэнс: H, калі A1 і…, і An, а не B1 і…, а не Bn
дзе H і ўсе Ai і Bi ўяўляюць сабой атамныя формулы Адмаўленне ў адмоўных літаралах не Bi звычайна называюць "адмаўленнем як адмову", таму што ў большасці рэалізацый адмоўнае ўмова не Bi паказана, каб паказаць, паказваючы што станоўчы стан Bi не выкананы Напрыклад:
canflyX: - birdX, а не abnormalX - abnormalX: - ranX
birdjohn
birdmary
ranjohn
Улічваючы мэту знайсці тое, што можа лётаць:
: - canflyX
ёсць два варыянты рашэння кандыдата, якія вырашаюць першую субгалактыку birdX, а менавіта X = john і X = mary. Другая паддароўня не анамальная, рашэнне першага кандыдата не атрымліваецца, таму што ranjohn паспявае і, такім чынам, abnormaljohn атрымлівае поспех. Аднак, другі паддаты не з'яўляецца анамальным другім рашэнне кандыдата ўдаецца, таму што паранены збой і таму няправільны збой атрымліваецца. Такім чынам, X = mary - адзінае рашэнне мэты. Micro-Planner меў канструкцыю, званую "thnot", якая пры ўжыванні да выразу вяртае значэнне true, калі і толькі калі ацэнка выраза не ўдаецца. У сучасных рэалізацыях Prolog звычайна ўбудаваны эквівалентны аператар. Звычайна ён запісваецца як notGoal або + Goal, дзе мэта - нейкая мэта, якая павінна быць даказана праграмай. Гэты аператар адрозніваецца ад адмаўлення i n логіка першага парадку: адмаўленне, такое як + X == 1, не ўдаецца, калі пераменная X была прывязана да атама 1, але яна дасягае поспеху ва ўсіх іншых выпадках, у тым ліку, калі X не звязаны. Гэта робіць развагі Пралога не манатоннымі: X = 1, + X == 1 заўсёды атрымоўваецца, а + X == 1, X = 1 можа дамагчыся поспеху, прывязваючы X да 1, у залежнасці ад таго, X быў першапачаткова звязаны, звярніце ўвагу, што стандартны Prolog выконвае мэты ўлева-да- правільны парадак
Лагічны статус адмаўлення як няўдачы быў нявырашаны, пакуль Кіт Кларк [1978] не паказаў, што пры пэўных прыродных умовах гэта правільная і часам поўная рэалізацыя класічнага адмаўлення адносна завяршэння праграмы. Выкананне праграмы складае прыблізна. што тычыцца мноства ўсіх праграмных прапаноў з адным і тым жа выказнікам з левага боку, скажыце
H: - Body1

H: - Bodyk
як вызначэнне выказніка
H iff Body1 or… or Bodyk - дзе "iff" азначае "калі і толькі калі" Запіс для завяршэння таксама патрабуе відавочнага выкарыстання predica роўнасці and і ўключэнне набору адпаведных аксіём для роўнасці Аднак для ажыццяўлення адмаўлення адмаўлення патрэбныя толькі параметры азначэнняў без аксіём роўнасці. Напрыклад, завяршэнне праграмы вышэй:
canflyX iff birdX, а не abnormalX
abnormalX iff ranX
birdX iff X = john or X = mary
X = X
not john = mary
not mary = john
паняцце завяршэння цесна звязана з семантыкай апісання Маккартэры для разважанняў па змаўчанні і з меркаваннем закрытага свету
У якасці альтэрнатывы семантыцы завяршэння, адмаўленне як правал можа таксама трактавацца эпістэматычна, як у стабільнай мадэлі семантыкі праграмавання набору адказаў. гэта інтэрпрэтацыя notBi азначае літаральна, што Бі не вядомы ці не верыцца. Эпістэматычная інтэрпрэтацыя мае перавагу ў тым, што яна можа спалучацца вельмі проста з класічным адмаўленнем, як у "пашыраным логічным праграмаванні", каб фармалізаваць такія фразы, як "наадварот нельга паказаць ", дзе" сааўтар ntrary "- гэта класічнае адмаўленне і" не можа быць паказана "- эпітэмічная інтэрпрэтацыя адмаўлення як няўдачы
Прадстаўніцтва ведаў
Той факт, што ў артыкулах Рога можна даваць працэдурную інтэрпрэтацыю і, наадварот, што працэдуры зніжэння мэты могуць паняцці Рога + зваротныя развагі азначаюць, што логічныя праграмы спалучаюць дэкларатыўнае і працэдурнае ўяўленне аб ведах Уключэнне адмаўлення як адмовы азначае, што логічнае праграмаванне - гэта своеасаблівая неманотонная логіка. Нягледзячы на сваю прастату ў параўнанні з класічнай логікай, гэта спалучэнне Становішча Рога і адмаўленне як адмовы аказалася надзіва экспрэсіўным. Напрыклад, яно забяспечвае натуральнае ўяўленне пра законы здаровага сэнсу прычыны і наступствы, аформленыя як вылічэннем сітуацыі, так і вылічэннем падзей. Таксама было паказана, што яны цалкам адпавядаюць натуральна, што паўфармальная мова заканадаўства, у прыватнасці, Праккен і Сартор [10] прыпісваюць прадстаўніцтвам брытанскіх нацыяналістаў ты выступае як лагічная праграма [11] з "вялікім уплывам на развіццё вылічальных прадстаўленняў заканадаўства, паказваючы, як лагічнае праграмаванне дазваляе інтуітыўна прывабныя ўяўленні, якія можна непасрэдна разгортваць для генерацыі аўтаматычных высноў"
Варыянты і пашырэнні
Prolog
Асноўны артыкул: Prolog
Мова праграмавання Prolog быў распрацаваны ў 1972 годзе Алёнам Колмерауэрам. Ён узнік з супрацоўніцтва паміж Colmerauer у Марсэлі і Робертам Ковальскім у Edinburgh. Colmerauer працаваў над разуменнем натуральнай мовы, выкарыстоўваючы логіку для прадстаўлення семантыкі і выкарыстанне дазволу для адказу на пытанне. Улетку 1971 года Калмерауэр і Кавальскі выявілі, што лагічная форма логікі можа быць выкарыстана для прадстаўлення фармальных граматык і што доказы тэарэмы дазволу могуць быць выкарыстаны для разбору. Яны заўважылі, што некаторыя тэарэмы пацвярджаюць, як гіперрэзалюцыя , паводзіць сябе як разборшчыкі знізу ўверх і іншыя, як SL-дазвол 1971, паводзяць сябе як разборшчыкі зверху ўніз
Наступным летам 1972 г. Кавальскі, зноў супрацоўнічаючы з Колмерауэрам, распрацаваў працэдурную інтэрпрэтацыю наступстваў. Гэтая двайная дэкларатыўная / працэдурная інтэрпрэтацыя пазней стала фармалізавана ў пазначэнні Prolog
H: - B1,…, Bn
Якія таксама могуць быць прачытаны і выкарыстаны як дэкларатыўна, так і працэдурна. Таксама стала ясна, што такія пункты могуць быць абмежаваныя пэўнымі пунктамі альбо выразамі Рога, дзе H, B1,…, Bn - усе атамныя формулы лагічнага выказніка і што дазвол SL можа быць абмежаваны і абагульненая працэдурная інтэрпрэтацыя Кавальскага і LUSH-дазволу Кавальскага і LUSH былі апісаны ў дакладной запісе 1973 г., апублікаванай у 1974 г. [6]
Colmerauer, разам з Філіпам Руселем, выкарыстоўвалі гэтую двайную інтэрпрэтацыю пунктаў як аснову Prolog, якая была рэалізавана летам і восенню 1972 г. Першая праграма Prolog, таксама напісаная ў 1972 г. і рэалізаваная ў Марсэлі, была французскай сістэмай адказаў на пытанні. Выкарыстанне Prolog як практычнай мовы праграмавання было giv jw.org be вялікая дынаміка распрацоўкай кампілятара Дэвіда Уорэна ў Эдынбургу ў 1977 г. Эксперыменты паказалі, што Эдынбургскі пралог можа канкурыраваць з хуткасцю апрацоўкі іншых сімвалічных моў праграмавання, такіх як Ліп Эдынбург Пролог, стаў фактычным стандартам і моцна паўплываў на вызначэнне стандарту ISO. Prolog
Абдуктыўнае лагічнае праграмаванне - Абдуктыўнае логіка праграмавання - гэта пашырэнне звычайнага логічнага праграмавання, якое дазваляе некаторым выказнікам, абвешчаным выканаўчымі выказнікамі, быць "адкрытымі" або нявызначанымі. Агаворка ў праграме выкрадання логікі мае выгляд:
H: - B1,…, Bn, A1,…, An, дзе H - атамная формула, якая не можа быць падатлівай, усе Bi - літаралы, выказнікі якіх не адважныя, а Ai - атамныя формулы, выказнікі якіх падатлівыя Пазбаўляючыя выказнікі могуць быць абмежаваныя абмежаваннямі цэласнасці, якія могуць мець выгляд:
false: - B1,…, Bn, дзе Bi - адвольныя літаральныя літары, якія вызначаюцца альбо падатлівыя, і атамныя альбо адмененыя Fo r прыклад:
canflyX: - birdX, normalX
false: - normalX, ranX
birdjohn
birdmary
morningjohn, дзе выказнік normal isducible
Рашэнне задачы дасягаецца шляхам атрыманне гіпотэз, выражаных у тэрмінах адважлівых выказнікаў як вырашэння задач, якія трэба вырашыць. Гэтыя праблемы могуць быць альбо назіраннямі, якія трэба растлумачыць, як у класічных абдуктыўных развагах, альбо мэтамі, якія трэба вырашыць, як у звычайным лагічным праграмаванні. Напрыклад, гіпотэза звычайнага тлумачэння тлумачыць назіранне canflymary Акрамя таго, тая ж гіпотэза прадугледжвае адзінае рашэнне X = мары мэты знайсці тое, што можа ляцець:
: - canflyX
Абдуктыўнае логіка праграмавання выкарыстоўваецца для дыягностыкі няспраўнасцей, планавання, апрацоўкі натуральнай мовы і машыны. навучанне Ён таксама быў выкарыстаны для інтэрпрэтацыі адмаўлення як няўдачы як формы абдуктыўнага развагі
Металагічнае праграмаванне
Паколькі матэматычная логіка мае даўнія традыцыі размежавання мовы аб'ектаў і метамоваў, л Ogic-праграмаванне таксама дазваляе праграмаванне на металічным узроўні. Самай простай металагічнай праграмай з'яўляецца так званы мета-інтэрпрэтатар "vanilla": сольветруе
soluverue, растворA, B: - solutionA, soluBeeBreAA: - claAA, B, разрешатьB
дзе true ўяўляе сабой пустую злучэнне, а clauseA, B азначае, што ёсць пункт аб'ектнага ўзроўню выгляду A: - B
Металагічнае праграмаванне дазваляе аб'яднаць уяўленні на ўзроўні аб'ектаў і металеў, як на натуральнай мове. выкарыстоўваецца для рэалізацыі любой логікі, якая задаецца пры дапамозе правілаў высновы. Metalogic выкарыстоўваецца ў праграмаванні логікі для рэалізацыі метапраграм, якія маніпулююць іншымі праграмамі, базамі дадзеных, базамі ведаў або аксіяматычнымі тэорыямі ў якасці дадзеных
Лагічнае праграмаванне абмежаванняў
Асноўны артыкул: Лагічнае праграмаванне абмежаванняў - Лагічнае праграмаванне абмежаванняў аб'ядноўвае логічнае праграмаванне клавіш Рога з рашэннем абмежаванняў. Ён пашырае агаворкі Рога, дазваляючы некаторым выказнікам, абвешчаным прэдыкатамі абмежаванняў, узнікаць як літаральныя элементы ў тэзе антрактаў. Праграма "aint логика" - гэта набор формаў выгляду:
H: - C1, ..., Cn |

& # x25CA; >
B1, ..., Bn, дзе H і ўсе Bi - атамныя формулы, а Ci - абмежаванні. Дэкларатыўна чытаюцца такія артыкулы як звычайныя лагічныя наступствы:
H, калі C1 і ... і Cn і B1 і ... і Bn
Аднак, у той час як прэдыкатывы ў загалоўках галаў вызначаюцца логікай праграмы абмежаванняў, прэдыкаты ў абмежаваннях прадвызначаны нейкай даменна-тэарэтычнай мадэллю ці тэарэтычнай структурай. прэдыкаты, якія вызначаюцца праграмай, вырашаюцца шляхам памяншэння мэты, як у звычайным лагічным праграмаванні, але абмежаванні правяраюцца на задавальненне пры дапамозе вырашальніка абмежаванняў, якія рэалізуюць дамен, які рэалізуе семантыку выказнікаў абмежаванняў. Першапачатковая задача вырашаецца шляхам памяншэння да здавальняючага спалучэння абмежаванняў. Наступная лагічная праграма абмежаванняў уяўляе сабой цацку часовая база гісторыі гісторыі Джона як настаўніка:
teachesjohn, абсталяванне, Т: - 1990 ≤ T, T & lt; 1999 г. - teachesjohn, software, T: - 1999 ≤ T, T & lt; 2005 г. - teachesjohn, логіка, T: - 2005 ≤ T, T ≤ 2012 - ранжыён, інструктар, T: - 1990 ≤ T, T & lt; 2010 г., Rankjohn, прафесар, Т: - 2010 ≤ T, T & lt; 2014
Тут ≤ і & lt; наступныя мэтавыя абмежаванні са сваёй звычайнай прызначанай семантыкай Наступны пункт мэты запытвае ў базу дадзеных, каб даведацца, калі Іван вучыў логіку і быў прафесарам:
: - teachesjohn, логіка, T, ranjohn, прафесар, T
Рашэнне - 2010 ≤ T, T ≤ 2012 - Лагічнае праграмаванне абмежаванняў выкарыстоўваецца для вырашэння праблем у такіх галінах, як грамадзянскае будаўніцтва, машынабудаванне, праверка лічбавых схем, аўтаматызаваны графік руху, кіраванне паветраным рухам і фінансы. Цесна звязана з выкрадальнай логікай праграмаванне
Паралельнае праграмаванне логікі
Асноўны артыкул: Паралельнае праграмаванне логікі
Паралельнае праграмаванне логікі аб'ядноўвае паняцці лагічнага праграмавання з паралельным праграмаваннем. Яго распрацоўка атрымала вялікі штуршок у 1980-х гадах, выбраўшы для мовы праграмавання сістэм Японскі праект Пятага пакалення FGCS [12]
Сумесная лагічная праграма - гэта набор ахоўных рогавых выразаў выгляду:
H: - G1,…, Gn | B1,…, Bn
Злучнік G1,…, Gn называецца ахоўным пункта, і | Дэкларатыўна, аператар абавязацельстваў Дэкларатыўна заяўленыя запаветы Рога чытаюцца як звычайныя лагічныя наступствы:
H, калі G1 і ... і Gn, і B1, і ... і Bn
Аднак працэдурна, калі ёсць некалькі прапаноў, галовы якіх H адпавядаюць зададзенаму мэта, тады ўсе артыкулы выконваюцца паралельна, правяраючы, ці захоўваюцца іх ахоўнікі G1,…, Gn, калі ахоўнікі больш за адзін сказ трымаюць, то адзін з прапаноў робіцца здзейснены выбар, і выкананне працягваецца з падзадачы B1,…, Bn абранага пункта. Гэтыя субэлементы таксама могуць быць выкананы паралельна. Такім чынам, паралельнае лагічнае праграмаванне рэалізуе форму "не хвалюйце недэтэрмінізм", а не "не ведаю, недэтэрмінізм". Напрыклад, наступнае Праграма адначасовай логікі вызначае выказнік shuffleLeft, Right, Merge, якія можна выкарыстоўваць для ператасавання двух спісаў злева і направа, аб'ядноўваючы іх у адзіны спіс Merge, які захоўвае ўпарадкаванне двух спісаў злева і направа:
Shuffle [], [], [] - shuffleLeft, направа, зліццё: -
злева = [Першы | Адпачынак] | | Аб'яднанне = [Першы | ShortMerge],
shuffleRest, Права, ShortMerge - shuffleLeft, Права, Зліццё: - | Справа = [Першая | Адпачынак] | | Аб'яднанне = [Першы | ShortMerge],
shuffleLeft, адпачынак, ShortMerge
Тут, [] уяўляе пусты спіс і [кіраўнік | Хвосцік] уяўляе сабой спіс з галавой першага элемента, а затым спіс Хвост, як у Prolog Апавяшчэнне аб першым з'яўленні | у другім і трэцім артыкулах - канструктар спісу, а ў другім - | з'яўляецца аператарам абавязацельстваў. Праграма можа быць выкарыстана, напрыклад, для перастаноўкі спісаў [туз, каралева, кароль] і [1, 4, 2], выклікаючы мэтавы пункт:
ператасаваць [туз, каралева, кароль], [1, 4, 2], Merge
Праграма будзе недэтэрмініравана ствараць адзінае рашэнне, напрыклад Merge = [туз, каралева, 1, кароль, 4, 2]
Напэўна, заснавана паралельнае праграмаванне логікі што тычыцца перадачы паведамлення, і, такім чынам, падпарадкоўваецца той жа нявызначанасці, што і ў іншых адначасовых сістэмах перадачы паведамленняў, напрыклад, акцёры бачаць нявызначанасць у адначасовых вылічэннях. Карл Хьюіт сцвярджаў, што адначасовае праграмаванне логікі не грунтуецца на логіцы, таму яго крокі не могуць быць лагічна вылічальнымі. выводзіцца [13] Аднак у паралельным логічным праграмаванні любы вынік заканчэння вылічэння з'яўляецца лагічным наступствам праграмы, а любы частковы вынік частковага вылічэння з'яўляецца лагічным наступствам праграмы і сеткі рэшткавых мэтаў. Такім чынам, нявызначанасць вылічэнняў вынікае, што не ўсе лагічныя наступствы праграмы можна высветліць [нейтральнасць аспрэчваецца]
Параметрычнае праграмнае логіка абмежаванняў
Асноўны артыкул: Локальнае праграмаванне абмежаванняў абмежаванняў
Паралельнае праграмаванне логікі абмежаванняў спалучае паралельнае праграмаванне логікі і праграмаванне логікі абмежаванняў з выкарыстаннем абмежаванняў. для кіравання паралельнасцю Агаворка можа ўтрымліваць ахову, якая ўяўляе сабой набор абмежаванняў, якія могуць блакаваць прымяненне дадзенага пункта. Калі ахоўнікі некалькіх прапаноў задаволены, паралельнае логіка праграмавання абмежаванняў робіць дасканалы выбар выкарыстання толькі аднаго
Індуктыўнае лагічнае праграмаванне
Асноўны артыкул: Індуктыўнае лагічнае праграмаванне
Індуктыўнае лагічнае праграмаванне звязана з абагульненнем станоўчых і адмоўных прыкладаў у кантэксце асноўных ведаў: машыннае навучанне лагічным праграмам. Апошняя праца ў гэтай галіне, спалучаючы лагічнае праграмаванне, навучанне і верагоднасць, спарадзіла новае поле статыстычнага рэляцыйнага навучання і верагоднасць індукцыі тыўнае лагічнае праграмаванне
Лагічнае праграмаванне больш высокага парадку
Некалькі даследчыкаў пашырылі логічнае праграмаванне з функцыямі праграмавання больш высокага парадку, такімі як лагічныя пераменныя. Такія мовы ўключаюць пашырэнне Prolog HiLog і λProlog
лінейныя логіка праграмавання
Змяненне логікі праграмавання ў рамках лінейнай логікі прывяло да распрацоўкі моў праграмавання логікі, якія значна больш экспрэсіўныя, чым тыя, якія грунтуюцца на класічнай логіцы. Праграмы пункту Рога могуць прадстаўляць толькі змену стану шляхам змены аргументаў на выказнікі У лінейным лагічным праграмаванні , можна выкарыстоўваць лінейную логіку навакольнага асяроддзя для падтрымкі змены стану. Некаторыя раннія канструкцыі моў праграмавання логікі, заснаваныя на лінейнай логіцы, ўключаюць LO [Andreoli & amp; Pareschi, 1991], Lolli, [14] ACL, [15] і Forum [Miller, 1996] Форум забяспечвае мэтанакіраваную інтэрпрэтацыю ўсёй лінейнай логікі - Аб'ектна-лагічнае праграмаванне - F-логіка пашырае логіку праграмаванне з аб'ектамі і сінтаксіс кадра Шэраг сістэм заснаваны на F-логіцы, у тым ліку Flora-2, FLORID і высокамаштабная камерцыйная сістэма Ontobroker
Logtalk пашырае мову праграмавання Prolog з падтрымкай аб'ектаў, пратаколаў і іншых Канцэпцыі OOP Высока партатыўны, ён падтрымлівае большасць сістэм Prolog са скаргамі ў якасці кампілятараў бэкэнда. Лагічнае праграмаванне транзакцый. Логіка транзакцый - гэта пашырэнне лагічнага праграмавання з лагічнай тэорыяй абнаўленняў, якія змяняюць стан. У ім ёсць мадэль-тэарэтычная семантыка. і працэдурны варыянт. Рэалізацыя падмноства логікі транзакцый даступная ў сістэме Flora-2. Іншыя прататыпы таксама даступныя
Глядзіце таксама «Булевая задача на задавальненне» - Лагічнае праграмаванне абмежаванняў - Datalog
Fril
Функцыянальная праграма ming
Невыразная логіка
Індуктыўнае лагічнае праграмаванне - Логіка ў інфарматыцы ўключае фармальныя метады - Мовы лагічнага праграмавання
Парадыгма праграмавання
R ++
Сістэма разваг - Машыннае навучанне на аснове правілаў
Задавальненне
Спасылкі
Гэты артыкул уключае ў сябе спіс спасылак, але яго крыніцы застаюцца незразумелымі, паколькі ў яго няма недастатковай цытаты. Калі ласка, дапамажыце палепшыць гэты артыкул, увёўшы больш дакладныя цытаты. Люты 2012 г. Даведайцеся, як і калі яго выдаліць шаблоннае паведамленне
^ ab T Winograd 1972 г. «Разуменне натуральнай мовы» Кагнітыўная псіхалогія 3 1: 1–191 doi: 101016 / 0010-02857290002-3
^ Кордэл Грын Прымяненне тэарэмы, якая даказвае развязанне задач IJCAI 1969 г.
^ JM Фостэр і EW Elcock ABSYS 1: Дадатковы складальнік сцвярджэнняў: уводзіны, машынны інтэлект 4, Edinburgh U Press, 1969, стар 423–429
^ Планіроўшчык Карл Хьюітт: мова для пацверджання тэарэм у робатах IJCAI 1969
^ Вылічэнне і вылік Пэт Хейса У вучэб матэрыялы 2-га сімпозіума MFCS Чэхаславацкай акадэміі навук, 1973 г., стар. 105–118
^ ab Роберт Кавальскі Прэдыкатыўная логіка як памятка для мовы праграмавання 70, кафедра штучнага інтэлекту, Эдынбургскі ўніверсітэт 1973 г. Таксама ў матэрыялах кангрэса IFIP, Стакгольм, Паўночны Holland Publishing Co, 1974, стар 569–574
^ Роберт Кавальскі і Дональд і Куэнер Лінейнае дазвол з функцыяй выбару штучнага інтэлекту, т. 2, 1971, стар 227–60
^ Шапіра, Эхуд 1989 Сям'я адначасовай логікі Мовы праграмавання PDF Міжнародная летняя школа па логіцы, алгебры і вылічэннях таксама з'явілася ў Shapiro, E 1989 "Сям'я адначасовых моў праграмавання логікі" ACM Computing Surveys 21 3: 413–510 doi: 101145/7255172555
^ RAKowalski Ліпень 1979 " Алгарытм = Логіка + Кіраванне "Сувязь АСК 22 7: 424–436 doi: 101145/359131359136
^ Праккен, Н і Сартар, G, 2015 Права і логіка: агляд з пункту гледжання аргументацыі Штучны інтэлект, 227 , 214-245
^ Sergot, MJ, Sadri, F, Kowalski, RA, Kriwaczek, F, Hammond, P and Cory, HT, 1986 Закон аб нацыянальнасці Вялікабрытаніі як лагічная праграма Communications of the ACM, 295, 370- 386
^ Шунічы Учыда і Казухіра Фучы Працы семінара па ацэнцы праектаў FGCS Інстытут камп'ютэрных тэхналогій новага пакалення ICOT 1992
^ Хьюіт, Карл, 27 красавіка 2016 г. "Неадпаведнасць надзейнасці для лагічных праграм" Архівы Хал стр. 21–26 Праверана 7 Лістапад 2016
^ Логічнае праграмаванне Джошуа Ходаса і Дэйла Мілера ў фрагменце інтуіцыяналістычнай лінейнай логікі, інфармацыі і вылічэнняў, 1994, 1102, 327-365
^ Наокі Кабаяшы і Акіноры Ёнезава Асінхронная мадэль сувязі на аснове лінейнай логікі, фармальная форма Аспекты вылічальнай тэхнікі, 1994, 279-294
Агульныя знаёмствы
Baral, C; Gelfond, M 1994 "Логічнае праграмаванне і прадстаўленне ведаў" PDF Часопіс лагічнага праграмавання 19-20: 73–148 doi: 101016 / 0743-10669490025-6
Роберт Кавальскі Раннія гады лагічнага праграмавання Кавальскі, А. А. 1988 " раннія гады лагічнага праграмавання "PDF Communications the ACM 31: 38–43 doi: 101145/3504335046 | Lloyd, JW 1987. Асновы логікавага праграмавання. Другое выданне. Springer-Verlag
Іншыя крыніцы
John McCarthy Programs with common сэнсавы сімпозіум па механізацыі мысленных працэсаў Нацыянальная фізічная лабараторыя Тэдынгтана, Англія, 1958 г.
Д Мілер, Г. Надатур, Ф Пфеннінг, А. Шчэдраў Адзіныя доказы як аснова для лагічнага праграмавання, Аналы чыстай і прыкладной логікі, т. 51, с. 125– 157, 1991
Рэдактар Эхуда Шапіра Паралельны пралог MIT Press 1987 - Эксперыменты Джэймса Шляга з дэдуктыўнай праграмай адказу на пытанні CACM снежня 1965 г. - Далейшае чытанне - Карла Хьюітта працэдурнае ўнясенне ведаў у планавальнік IJCAI 1971
Карл Хьюіт Паўтарыць d змена лагічнага праграмавання і чаму ён будзе пераўвасаблены: што пайшло не так і чаму: ўрокі даследаванняў і прымянення AI Тэхнічны даклад SS-06-08 AAAI Press Сакавік 2006
Яўген Данцін, Томас Эйтэр, Георг Готлаб, Андрэй Варанкоў: Складанасць і экспрэсіўная сіла логічнага праграмавання ACM Comput Surv 333: 374-425 2001
Ульф Нільсан і Ян Малушынскі, Логіка, Праграмаванне і Пралог
Знешнія спасылкі
Лагічнае праграмаванне Віртуальная бібліятэка - Бібліяграфіі па логічным праграмаванні
Асацыяцыя лагічнага праграмавання ALP - часопіс "Тэорыя і практыка логічнага праграмавання"
"Логічнае праграмаванне на C ++ з Castor" - "Лагічнае праграмаванне" ў Оз - Цэнтр развіцця Prolog - Racklog: Логічнае праграмаванне ў ракетцы
v
e
Тыпы моў праграмавання - на аснове акцёраў - масіў - арыентавана на аспекты - на аснове класаў - канкатэнтатыў - адначасова - структураваны па дадзеных
Паток дадзеных - Дэкларатыўны: Даманны - Дынамічны - Эзатэрычны - Падзей, які кіруецца падзеямі - Пашыраны - Функцыянальны - Імператы ve - Логіка
Макра - Метапраграмаванне + Мульты-парадыгма - Аб'ектна-аб'ектна-аб'ектна-канвеерная - Працэдуральная - Прататыпная - Прататыпавая - Адлюстравальная
На аснове правілаў - Сцэнарый - Сінхронны - Шаблоны - Складанне - Складанне - Інтэрпрэтаванае - Машына - Нізкае - Высокае - Вельмі высокі ўзровень
First generation
Second generation
Third generation
Fourth generation
Fifth generation
Non-English-based
Visual
v
e
Computable knowledge
Topics and
concepts
Alphabet of human thought
Authority control
Automated reasoning
Commonsense knowledge
Commonsense reasoning
Computability
Formal system
Inference engine
Knowledge base
Knowledge-based systems
Knowledge engineering
Knowledge extraction
Knowledge representation
Knowledge retrieval
Library classification
Logic programming
Ontology
Personal knowledge base
Question answering
Semantic reasoner
Proposals and
implementations
Zairja
Ars Ma gna 1300
An Essay towards a Real Character and a Philosophical Language 1688
Calculus ratiocinator & Characteristica universalis 1700
Dewey Decimal Classification 1876
Begriffsschrift 1879
Mundaneum 1910
Logical atomism 1918
Tractatus Logico-Philosophicus 1921
Hilbert's program 1920s
Incompleteness theorem 1931
World Brain 1938
Memex 1945
General Problem Solver 1959
Prolog 1972
Cyc 1984
Semantic Web 2001
Evi 2007
Wolfram Alpha 2009
Watson 2011
Siri 2011
Knowledge Graph 2012
Wikidata 2012
Cortana 2014
Viv 2016
In fiction
The Engine Gulliver's Travels, 1726
Joe "A Logic Named Joe", 1946
The Librarian Snow Crash, 1992
Dr Know AI Artificial Intelligence, 2001
Waterhouse The Baroque Cycle, 2003
See also: Logic machines in fiction and List of fictional computers
Authority control
LCCN: sh86003454
GND: 4195096-3
BNF: cb12067891q data
BNE: XX550687


Logic programming

Random Posts

B♭ (musical note)

B♭ (musical note)

B♭ B-flat; also called si bémol is the eleventh step of the Western chromatic scale starting from C ...
Fourth dimension in art

Fourth dimension in art

New possibilities opened up by the concept of four-dimensional space and difficulties involved in tr...
Holt Renfrew

Holt Renfrew

Holt, Renfrew & Co, Limited, commonly known as Holt Renfrew or Holt's,1 is a chain of high-end C...
Later Silla

Later Silla

Later Silla 668–935, Hangul: 후신라; Hanja: 後新羅; RR: Hushila, Korean pronunciation: ...

Random Posts (searchxengine.com)

H.261

H.261

H.261 is a video compression standard. It was adopted in 1990 by the international organization ITU.
Wargame

Wargame

Wargame (from the English. "Wargame" - Russian. "War game") - a kind of strategi
Umudova, Nargiz Mamedaga Kyzy

Umudova, Nargiz Mamedaga Kyzy

Nargiz Umudova Azerb Nåğárgiz Umudova; born June 20, 1989, Baku, USSR - Azerbaijan chess player, gra
ATR 42

ATR 42

ATR 42 is a passenger twin-engine turboprop aircraft for medium-haul flights. Manufacturer - French-