- Loģiskās programmēšanas raksturojums
- Patiesība un loģiska atskaitīšana
- Pirmās kārtas loģika
- Klausa forma
- Mākslīgais intelekts
- Loģiskās programmēšanas piemēri
- 1. piemērs
- 2. piemērs
- Vaicājums
- Citas izziņas
- Atsauces
Loģika programmēšana ir programmēšanas paradigma, kas izmanto loģiskās shēmas, nevis tikai matemātiskas funkcijas, lai kontrolētu, kā fakti, un noteikumi ir noteikti.
Rūpīgi strukturētas vadības plūsmas vietā, kas nosaka, kad izpildīt un kā novērtēt funkciju izsaukumus vai citas instrukcijas, programmas loģiskie noteikumi tiek rakstīti kā klauzulas vai loģiski predikāti.
Loģiskās programmēšanas piemēri Prologā. Avots: Autors Kuldeepsheoran1 - ekrānuzņēmums, CC BY-SA 3.0, Wikimedia Commons
Šī pieeja, ko bieži izmanto ģenētiskajā un evolucionārajā programmēšanā, modelim parasti norāda, kādu mērķi sasniegt, nevis kā to sasniegt.
Katrs noteikums satur galveni un korpusu ar formalizētu loģiku, nevis izpildāmu matemātisko funkciju. Piemēram, "Un tā ir taisnība (galvene): ja C1, C2 un C3 ir patiesas (pamatteksts)." Fakti vai rezultāti tiek izteikti bez kopas, piemēram, "Un tā ir taisnība".
Tomēr dažās programmēšanas valodās, piemēram, Prolog, var iekļaut arī obligātu programmēšanu, lai modelim pastāstītu, kā atrisināt noteiktas problēmas. Piemēram, "Lai atrisinātu Y, pievienojiet C1, C2 un C3."
Loģiskās programmēšanas raksturojums
Loģiskā programmēšana būtiski atšķiras no citām esošajām programmēšanas stratēģijām. Tā vietā, lai dotu norādījumus datoram ar programmu, tiek izveidotas attiecības starp objektiem. Tādā veidā dators var pamatot šīs attiecības un tādējādi sasniegt loģiskus risinājumus.
Loģikas programmā ir divas galvenās kodu kopas: fakti un noteikumi. Noteikumi tiek piemēroti faktiem, lai iegūtu zināšanas par vidi.
Patiesība un loģiska atskaitīšana
Loģiskās programmas var atšifrēt, izmantojot divus svarīgus jēdzienus: patiesību un loģisko dedukciju. Patiesība noskaidrojas, vai aprēķins programmā ir patiess vai nē, izmantojot programmas simbolus. Loģiskā atskaitīšana nosaka, vai loģiskā klauzula ir programmas sekas.
Šīs instrukcijas vienmēr tiks interpretētas kā loģiski teikumi un klauzulas, to izpildes rezultāts ir tajā ietverto aprēķinu loģiskas sekas.
Pirmās kārtas loģika
Tā ir ierosinājuma loģikas atkāpe. Apsveriet, vai objekti ir patiesi vai nepatiesi no daļējas pasaules perspektīvas, ko sauc par domēnu. Loģikas programmēšana balstās uz pirmās kārtas loģikas vispārināšanu.
Šo loģiku veido sintakse un semantika. Sintakse ir formālā valoda, ko lieto jēdzienu izteikšanai. No otras puses, pirmās kārtas loģisko formulu semantika norāda, kā noteikt jebkuras formulas patieso vērtību.
Šīs loģikas pamatā ir alfabēts un pirmās kārtas valoda, kā arī aksiomu un secinājumu noteikumu kopums.
Klausa forma
Tā ir pirmās kārtas loģikas apakškopa. Tam ir normalizēta forma, kurā paziņojumu nosaka universāls prefikss vai universālo kvantifikatoru ķēde, un klauzulā ir noteikts bezmaksas kvantifikatoru komplekts.
Pieprasot programmai vaicājumu, tiks ņemts vērā klauzulas teksts, kura galvene var sakrist. Tas ir tas pats, kas secinājumu noteikšanas piemērošana loģikā.
Kā secinājumu secinājumu tiek izvēlēti divi teikumi, kuriem kā īpašība ir viena nodalāmā X (pozitīvais burts), bet otra satur disjunktīvo X - (negatīvais burts). Šie kompromisi ir pazīstami kā papildinoši.
No šiem diviem sākotnējiem noteikumiem tiek veidota jauna rezolutīvā klauzula, izmantojot visus burtus, izņemot papildinošos.
Mākslīgais intelekts
Loģiskā programmēšana ir metodika, kuru izmanto, lai datorus izsecinātu, jo ir noderīgi attēlot zināšanas. Loģika tiek izmantota, lai attēlotu zināšanas un secinājumus, lai tās apstrādātu.
Loģika, ko izmanto zināšanu attēlošanai, ir klausīšanās forma. To izmanto, jo pirmās kārtas loģika ir labi saprotama un spēj atspoguļot visas aprēķina problēmas.
Prolog ir programmēšanas valoda, kuras pamatā ir loģiskās programmēšanas idejas. Prolog ideja ir padarīt loģiku par programmēšanas valodu.
Loģiskās programmēšanas piemēri
1. piemērs
- Fakts: Rubī ir kaķis.
- Noteikums: visiem kaķiem ir zobi.
- Konsultācija: vai Rubī ir zobi?
- Secinājums: jā.
Noteikumu “visiem kaķiem ir zobi” var attiecināt uz Rubīnu, jo ir fakts, kas saka: “Rubīns ir kaķis”. Šis piemērs nav uzrakstīts, izmantojot reālas programmēšanas valodas sintakse.
2. piemērs
Šis piemērs redzams rakstīts Prologā, jo tā ir viena no populārākajām loģikas programmēšanas valodām:
- sievišķīga (alissa).
- vīrišķīgs (Bobijs).
- vīrišķīgs (carlos).
- sievišķīga (doris).
- dēls_ (doris, carlos).
- dēla_ (Karloss, Bobijs).
- dēls_ (doris, alissa).
- tēvs_ (F, P): - vīrietis (F), dēls_ (P, F).
Šo programmu ir grūti lasīt, jo Prolog ievērojami atšķiras no citām valodām. Jebkura koda sastāvdaļa, kas atgādina "sievišķīga (alissa)". tas ir fakts.
Viens noteikums ir "tēvs_ (F, P): - vīrietis (F), bērns_ (F, F)". Simbolu ": -" var lasīt kā "ir patiess, ja". Lielie burti nozīmē, ka mainīgos lielumus var izmantot jebkuram objektam, tāpēc F varētu apzīmēt karlosu, dorisu, alisu vai bobiju. Šo kodu var tulkot šādi:
- Alissa ir sieviete.
- Bobijs ir cilvēks.
- Karloss ir cilvēks.
- Dorisa ir sieviete.
- Dorisa ir Karlosa meita.
- Karloss ir Bobija dēls.
- Dorisa ir Alissa meita.
- «F ir P tēvs» ir taisnība, ja F ir vīrietis un P ir F dēls.
Vaicājums
Pieņemsim, ka vēlaties uzzināt vairāk par programmu. Varat meklēt, lūdzot noskaidrot, ar kuru tēvu Bobijs ir:? - tēva_ (Bobijs, X). Sistēma norādīs šādu atbildi: X = Carlos.
Šajā gadījumā tiek nodotas attiecības, kurās viena no tās vērtībām ir mainīgais. Tas, ko darīja Prolog, bija attiecībās ar dažādiem objektiem, līdz viens no tiem bija loģiski pamatots.
Carlos vienīgais tēvs ir Bobijs, un Bobijs ir vīrietis. Tas atbilda noteikumam "tēvs_ (F, P): - vīrišķīgs (F), dēls_ (F, P)." Kad X ir vienāds ar “carlos”, loģika ir pareiza.
Citas izziņas
Prolog var iesniegt arī citus vispārīgākus vaicājumus, kuru dēļ sistēma ģenerē vairākus rezultātus:
-? (vecāks, bērns).
- Tēvs = Bobijs
- Bērns = Karloss
- Tēvs = Karloss
- Bērns = doris
Kā redzams, loģiskai programmēšanai nav nepieciešama informācija, ka alisa vai Bobijs ir cilvēki, lai iegūtu par viņiem zināšanas. Faktiski nav nepieciešams norādīt, ka pastāv jēdziens, ko sauc par personu.
Lielākajā daļā neloģisko programmēšanas valodu jums vispirms jādefinē šie jēdzieni, pirms varat rakstīt programmas, kas apstrādā informāciju par cilvēkiem.
Atsauces
- Dziļais AI (2020). Loģiskā programmēšana. Nākts no: deepai.org.
- Wikiversity (2020). Programmēšanas valodu teorija / loģiskā programmēšana. Iegūts no: en.wikiversity.org.
- Londonas Imperiālā koledža (2006). Loģiskā programmēšana. Paņemts no: doc.ic.ac.uk.
- Jia-Huai You (2020). Ievads loģikas programmēšanā. Alberta Universitāte. Paņemts no: eng.ucy.ac.cy.
- C2 Wiki (2020). Loģiskā programmēšana. Paņemts no: wiki.c2.com.