Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Momentul Aprilie 1964

A fost lansat Ubuntu 24.04 LTS

Free streaming SkyShowtime de la ...

Skoda Fabia 1.0 TSI (110 CP)- 19 ...
 Mezina familiei, Merida BigNine

The Tattooist of Auschwitz (2024)

Se poate recupera numar de telefo...

Upgrade de la MacBook Pro M1 cu 8...
 Ce tip de monitor am nevoie pt of...

Resoftare camera supraveghere

Laptop Gaming

Cu ce va aparati de cainii agresi...
 Nu imi platiti coletul cu cardul ...

Exista vreun plan de terorizare p...

Schimbare adresa DNS IPv4 pe rout...

Recomandare Barebone
 

Implementarea unui rationator logic

- - - - -
  • Please log in to reply
3 replies to this topic

#1
anz

anz

    Member

  • Grup: Members
  • Posts: 590
  • Înscris: 16.02.2013
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
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
Java sau nu, suna ca programarea logica. In facultati se vorbeste probabil despre prolog. As studia teoria de acolo pentru inspiratie.

#3
parabellum

parabellum

    Senior Member

  • Grup: Senior Members
  • Posts: 2,453
  • Înscris: 06.01.2010
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 Posted Image
PS2 E bine ca nu ti se cere acelasi lucru si pentru 'reguli' si 'constrangeri', atunci distractia ar fi maxima :P

Edited by parabellum, 14 February 2019 - 12:58.


#4
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
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

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate