- Mga katangian ng lohika programming
- Katotohanan at lohikal na pagbabawas
- Unang lohika ng order
- Porma ng sugnay
- Artipisyal na katalinuhan
- Mga halimbawa ng logic programming
- Halimbawa 1
- Halimbawa 2
- Tanong
- Iba pang mga katanungan
- Mga Sanggunian
Ang logic programming ay isang paradigma ng programming na gumagamit ng mga lohika na circuit kaysa sa mga pag-andar ng matematika upang makontrol kung paano nakatakda ang mga katotohanan at panuntunan.
Sa halip na isang maingat na nakabalangkas na daloy ng kontrol na nagdidikta kung kailan maipatupad at kung paano suriin ang mga tawag na function o iba pang mga tagubilin, ang lohikal na mga patakaran ng programa ay isinulat bilang lohikal na sugnay o predicates.

Mga halimbawa ng logic programming sa Prolog. Pinagmulan: Ni Kuldeepsheoran1 - screenshot, CC BY-SA 3.0, mga wikon commons
Ang pamamaraang ito, na kung saan ay madalas na ginagamit sa programming ng genetic at evolutionary, sa pangkalahatan ay nagsasabi sa isang modelo kung ano ang layunin na makamit, kaysa sa kung paano makamit ito.
Ang bawat patakaran ay naglalaman ng isang header at isang katawan na may isang pormal na lohika, sa halip na isang maipapatupad na pag-andar sa matematika. Halimbawa, "At totoo (header): kung ang C1, C2, at C3 ay totoo (katawan)." Ang mga katotohanan o resulta ay ipinahayag nang walang isang katawan, tulad ng "At ito ay totoo."
Gayunpaman, sa ilang mga wika sa programming tulad ng Prolog, ang mahahalagang programming ay maaari ding isama upang sabihin sa modelo kung paano malutas ang ilang mga problema. Halimbawa, "Upang malutas ang Y, magdagdag ng C1, C2, at C3."
Mga katangian ng lohika programming
Ang logic programming ay malaking pagkakaiba-iba mula sa iba pang mga umiiral na mga diskarte sa programming. Sa halip na magbigay ng mga tagubilin sa isang computer na may programa, itinatag ang mga ugnayan sa pagitan ng mga bagay. Sa ganitong paraan ang computer ay maaaring mangatuwiran sa mga ugnayang ito at sa gayon maabot ang mga lohikal na solusyon.
Sa loob ng isang lohika na programa mayroong dalawang pangunahing hanay ng code: mga katotohanan at panuntunan. Ang mga patakaran ay inilalapat sa mga katotohanan upang makakuha ng kaalaman tungkol sa kapaligiran.
Katotohanan at lohikal na pagbabawas
Ang mga programa ng lohika ay maaaring matukoy sa pamamagitan ng dalawang mahahalagang konsepto: katotohanan at lohikal na pagbabawas. Ang katotohanan ay lumabas kung ang pagkalkula sa programa ay totoo o hindi, sa ilalim ng pagpapatupad ng mga simbolo ng programa. Natutukoy ang lohikal na pagbabawas kung ang isang lohikal na sugnay ay isang bunga ng programa.
Ang mga tagubiling ito ay palaging isasalin bilang lohikal na mga pangungusap at sugnay, ang resulta ng kanilang pagpapatupad ay isang lohikal na bunga ng mga kalkulasyon na nilalaman nito.
Unang lohika ng order
Ito ay isang pagkawala ng panukalang lohika. Isaalang-alang kung ang mga bagay ay totoo o hindi totoo mula sa isang bahagyang pananaw sa mundo, na tinatawag na isang domain. Ang logic programming ay batay sa isang pangkalahatang pangkalahatang lohika ng pag-order.
Ang logic na ito ay binubuo ng syntax at semantics. Ang Syntax ay pormal na wika na ginamit upang maipahayag ang mga konsepto. Sa kabilang banda, ang semantika ng mga first-order na lohikal na mga formula ay nagpapahiwatig kung paano matukoy ang totoong halaga ng anumang pormula.
Ang logic na ito ay batay sa isang alpabeto at isang unang-order na wika, pati na rin ang isang hanay ng mga axioms at mga panuntunan ng pagkilala.
Porma ng sugnay
Ito ay isang subset ng unang-order na lohika. Mayroon itong isang normal na form kung saan ang isang pahayag ay tinukoy ng isang unibersal na prefix o kadena ng mga universal quantifier, at isang libreng hanay ng mga quantifier sa sugnay.
Kapag humihiling ng isang query sa programa, ang katawan ng sugnay na ang header ay maaaring magkasabay ay isasaalang-alang. Ito ay pareho sa pag-aaplay ng isang panuntunan sa pagkilala sa lohika.
Bilang isang hakbang sa pag-iintindi, dalawang sugnay ang napili na mayroong pag-aari na naglalaman ng isang disjatib X (isang positibong literal) at ang iba ay naglalaman ng isang disjatib ¬X (isang negatibong literal). Ang mga tradeoff na ito ay kilala bilang pantulong.
Mula sa mga dalawang sugnay na sugnay na ito ng isang bagong malutas na sugnay na itinayo gamit ang lahat ng mga literals, maliban sa mga pantulong na mga.
Artipisyal na katalinuhan
Ang logic programming ay isang pamamaraan na ginagamit upang makagawa ng mga computer na magbawas, sapagkat ito ay kapaki-pakinabang na kumatawan sa kaalaman. Ginagamit ang lohika upang kumatawan ng kaalaman at pagkilala sa paghawak nito.
Ang lohika na ginamit upang kumatawan ng kaalaman ay ang clausal form. Ginagamit ito dahil ang unang-order na lohika ay mahusay na nauunawaan at may kakayahang kumatawan sa lahat ng mga problema sa pagkalkula.
Ang Prolog ay isang programming language na batay sa mga ideya ng programming ng logic. Ang ideya ng Prolog ay upang gumawa ng hitsura ng lohika tulad ng isang programming language.
Mga halimbawa ng logic programming
Halimbawa 1
- Katotohanan: Si Rubí ay isang pusa.
- Rule: lahat ng mga pusa ay may ngipin.
- Konsultasyon: May mga ngipin ba si Rubí?
- Konklusyon: oo.
Ang panuntunan "lahat ng mga pusa ay may ngipin" ay maaaring mailapat kay Ruby, sapagkat mayroong isang katotohanan na nagsasabing "Si Ruby ay isang pusa." Ang halimbawang ito ay hindi isinulat sa anumang syntax para sa isang tunay na wika sa programming.
Halimbawa 2
Ang halimbawang ito ay makikita na nakasulat sa Prolog, dahil ito ay isa sa mga pinakapopular na logic programming language:
- pambabae (alissa).
- panlalaki (bobby).
- panlalaki (carlos).
- pambabae (doris).
- son_of (doris, carlos).
- son_of (carlos, bobby).
- son_of (doris, alissa).
- father_of (F, P): - lalaki (F), son_of (P, F).
Ang program na ito ay nagiging mahirap basahin, dahil ang Prolog ay kapansin-pansing naiiba sa ibang mga wika. Anumang sangkap ng code na kahawig ng "pambabae (alissa)." ito ay katotohanan.
Ang isang patakaran ay "father_of (F, P): - lalaki (F), anak_of (P, F)". Ang simbolo ": -" mababasa bilang "totoo kung". Ang mga titik ng kapital ay nangangahulugang ang mga variable ay maaaring mailapat sa anumang bagay, kaya ang F ay maaaring tumayo para sa carlos, doris, alissa, o bobby. Ang code na ito ay maaaring isalin bilang:
- Si Alissa ay isang babae.
- Si Bobby ay isang tao.
- Si Carlos ay isang tao.
- Si Doris ay isang babae.
- Si Doris ay anak ni Carlos.
- Si Carlos ay anak ni Bobby.
- Si Doris ay anak ni Alissa.
- «F ang ama ni P» ay totoo kung si F ay isang tao at kung si P ay anak ni F.
Tanong
Ipagpalagay na nais mong kumunsulta sa programa para sa karagdagang impormasyon. Maaari kang maghanap na humihiling upang malaman kung kanino ang tatay na si Bobby:? - father_of (bobby, X). Ipapahiwatig ng system ang sumusunod na sagot: X = Carlos.
Sa kasong ito, ang isang relasyon ay ipinapasa kung saan ang isa sa mga halaga nito ay isang variable. Ang ginawa ni Prolog ay nag-apply ng iba't ibang mga bagay sa relasyon na ito hanggang sa ang isa sa mga ito ay lohikal na matatag.
Ang tatay lamang ni Carlos ay si Bobby, at si Bobby ay lalaki. Nasiyahan ito sa panuntunang "father_of (F, P): - panlalaki (F), son_of (P, F)." Kapag ang X ay katumbas ng "carlos," ang logic ay tunog.
Iba pang mga katanungan
Ang iba pang mga mas pangkalahatang mga query ay maaaring gawin sa Prolog, na nagiging sanhi ng system na makabuo ng maraming mga resulta:
-? - parent_of (Magulang, Bata).
- Ama = bobby
- Bata = Carlos
- Ama = Carlos
- Bata = doris
Tulad ng nakita, ang lohika programming ay hindi nangangailangan ng pagkakaroon ng impormasyon na alissa o bobby ay mga tao upang makakuha ng kaalaman tungkol sa kanila. Sa katunayan, hindi kinakailangan na ipahiwatig na mayroong isang konsepto na tinatawag na tao.
Sa karamihan ng mga di-lohikal na wika ng programming, kailangan mong tukuyin muna ang mga konsepto na ito bago ka makapagsulat ng mga programa na nagpoproseso ng impormasyon tungkol sa mga tao.
Mga Sanggunian
- Malalim na AI (2020). Logic Programming. Kinuha mula sa: deepai.org.
- Wikiversity (2020). Teorya ng Mga Programming Languages / Logic Programming. Kinuha mula sa: en.wikiversity.org.
- Imperial College London (2006). Logic Programming. Kinuha mula sa: doc.ic.ac.uk.
- Jia-Huai Kayo (2020). Panimula sa Logic Programming. Unibersidad ng Alberta. Kinuha mula sa: eng.ucy.ac.cy.
- C2 Wiki (2020). Logic Programming. Kinuha mula sa: wiki.c2.com.
