Implementarea unui rationator logic
Last Updated: Feb 14 2019 13:59, Started by
anz
, Feb 11 2019 12:31
·
0
#1
Posted 11 February 2019 - 12:31
Salut. Am de facut un proiect pentru facultate cu tema: crearea unui sistem rationator pentru saturarea unei baze logice de cunostinte.
Baza de cunostinte este compusa dintr-un set de fapte, reguli si constrangeri. Ceea ce trebuie sa faca sistemul este sa aplice setul de reguli peste cel fapte pentru a deduce cunostinte implicite, acest proces facandu-se intr-un mod repetat pana cand dupa o iteratie nu se mai produce niciun fapt nou. Astfel se obtine saturatia bazei de cunostinte. Acest sistem trebuie sa-l implementez intr-un limbaj de programare OO, si am ales Java. Eu m-am gandit ca sa reprezint formalismele logice (fapt, regula, constrangere) prin intermediul claselor, si anume sa am o clasa Fact, Rule si una Constraint. Clasa Fact are ca atribute un nume si o colectie de valori (ex. Mother(John,Mary)) si contine metode de afisare a faptului in acest format la consola. Clasele Rule si Constraint sunt create dupa aceeasi tehnica. Baza de cunostinte este constituita din 3 colectii, fiecare continand obiecte ale celor 3 clase de mai sus, iar algoritmul de rationare lucreaza asupra acestor 3 colectii aplicand regulile (obiectele clasei Rule) peste fapte si producand noi fapte. As dori sa stiu parerea unui specialist, este bine abordarea mea de a gandi aceasta problema? Eu in alt fel chiar nu mai vad cum as mai putea-o rezolva, in special intr-un limbaj de programare OO. Multumesc celui care stie! |
#2
Posted 11 February 2019 - 12:54
Java sau nu, suna ca programarea logica. In facultati se vorbeste probabil despre prolog. As studia teoria de acolo pentru inspiratie.
|
#3
Posted 14 February 2019 - 12:56
E bine sa te duca gandul la Prolog cand e vorba de asa ceva, si mai bine sa te duca mai general, la un demonstrator de teoreme (recomandare pentru asemenea situatii, metoda rezolutiei https://www.doc.ic.a...1/lecture9.html ).
Apropo, despre demonstrarea teoremelor in Prolog: https://www.metaleve.../theoremproving Singura problema e ca anz nu primeste o 'teorema' pe care trebuie sa o demonstreze (sau sa o infirme), ci trebuie sa genereze teoremele ce rezulta din axiome (toate!!!!??????). O problema mai simpla, pentru ca trebuie sa aplici 'regulile' si 'constrangerile' asupra 'faptelor' fara prea multa bataie de cap. O metoda bruta e sa generezi noi 'fapte' aplicand 'regulile' asupra tuturor 'faptelor' existente (eliminandu-le pe cele care nu respecta 'constrangerile'), adaugandu-le la baza de 'fapte' (evitand duplicatele), apoi reluand... pana cand nu se mai genereaza fapte noi. Singura problema e ca acest lucru poate sa-ti genereze de la o baza de date uriasa, la una infinita (o 'constrangere' foarte buna aici ar fi limitarea 'dimensiunii'). Exemplu: Fapt: A = adevarat Regula "adevarat si adevarat = adevarat" Generare fapt (nu mai scriu = adevarat, doar acele fapte se pun in baza de date): A si A Aplicare inca o data: A si A (deja exista) A si A si A A si A si A si A Si uite asa, se continua la infinit pentru a obtine o propozitie infinita A si A si A si A si ... si A PS Daca lucrurile ar fi simple nu s-ar chinui matematicienii cu matematica, pana la urma teorii foarte complicate vin la pachet cu un set destul de restrans de axiome. Ar genera doar din setul de axiome toate teoremele posibile si cand ar fi nevoie, doar ar cauta in baza de date PS2 E bine ca nu ti se cere acelasi lucru si pentru 'reguli' si 'constrangeri', atunci distractia ar fi maxima Edited by parabellum, 14 February 2019 - 12:58. |
#4
Posted 14 February 2019 - 13:59
Ai dreptate, eu voiam doar să îi dau material de gândire, să îi creez un "mediu" în care el poate descoperi singur soluții și constrângeri.
Adică să își pună mintea la contribuție. Prea mulți vin aici în ideea că li se dau soluții cu lingurița și ei nu trebuie să transpire. Ce cere el e defapt mai apropiat de semantic web, tripleti RDF, în zona asta. Dacă ar băga pe google facts rules constraints engine Ar găsi articole științifice, poate chiar și programe care fac ce are el nevoie. Dar nu a făcut asta, dacă ar fi făcut, altfel ar fi fost întrebarea lui, deci cu o astfel de persoană discutăm. Lucrăm cu materialul clientului. |
Anunturi
Bun venit pe Forumul Softpedia!
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users