Sunteți pe pagina 1din 19

SISTEME EXPERT

Universitatea din Oradea

Prof. Dr. Cornelia Győrödi

Sisteme Expert - (cgyorodi@uoradea.ro) 1


Curs 8

Arbori în limbajul Prolog


Metode de traversare a arborilor în Prolog
Metode de inserare a unui nod în arbore
Metode de ștergere a unui nod în arbore

prof. dr. ing. Cornelia Gyorodi 2


Arbori
Arborii sunt obiecte compuse și recursive.
tree=t(id, tree, tree); nil
Un arbore binar care nu este vid, este definit de 3 elemente :
 rădăcină,

 subarbore stâng,

 subarbore drept.

Rădăcina reprezintă o cunoştiinţă iar subarborii sunt la


rândul lor subarbori binari.
De exemplu, mulţimea [a, b, c, d] se poate reprezenta prin
arbore astfel: a

b c

Reprezentarea unei mulţimi folosind arbore binar


prof. dr. ing. Cornelia Gyorodi 3
Definirea unui arbore în Prolog

În Prolog vom declara în secţiunea domains astfel:

domains
treetype = tree(symbol, treetype, treetype); empty

Unde cu empty s-a notat arborele vid.

prof. dr. ing. Cornelia Gyorodi 4


Traversarea unui arbore

Algoritmul de traversare a arborelui constă


în următorii pași:
 Dacă arborele este empty nu se execută nimic.
 Altfel, procesează nodul curent, apoi
traversează subarborele sâng.
 După traversarea subarborelui stâng,
traversează subarborele drept.

prof. dr. ing. Cornelia Gyorodi 5


Traversarea unui arbore

predicates
traverse: (treetype)
clauses
traverse(empty).
traverse(tree(X, Left, Right)):-
do_with(X),traverse(Left),traverse(Right).

prof. dr. ing. Cornelia Gyorodi 6


Exemplu- Traversarea unui arbore

domains
treetype = tree(string, treetype, treetype) ; empty().
predicates
traverse : (treetype).
clauses
traverse(empty).
traverse(tree(Name, Left, Right)):-
stdIO::write(Name,'\n'),
traverse(Left), traverse(Right).

prof. dr. ing. Cornelia Gyorodi 7


Exemplu- Traversarea unui arbore
(continuare)
clauses
run():-
console::init(),
FamilyTree = tree("Carina",tree("Mihai", tree("
Carla", empty, empty), tree("Horea", empty, empty))
,tree("Meli", tree("Ion", empty, empty), tree("Elena",
empty, empty))),
traverse(FamilyTree),!.
run().
end implement main

prof. dr. ing. Cornelia Gyorodi 8


Crearea (Inserarea) arborelui

Putem creea un arbore pornind de la arborele vid și


inserând noduri.
Crearea unui arbore de căutare (arbore cu
proprietatea că pentru orice nod cheile din
subarborele stâng sunt mai mici decât cheia nodului,
iar cheile din subarborele drept sunt mai mari decât
cheia nodului) se face cu ajutorul predicatului ins,
descris mai jos:
class predicates
ins:(cheie_de_inserat, arbore_sursa, arbore_rezultat).

prof. dr. ing. Cornelia Gyorodi 9


Inserarea unui nod în arbore

clauses
ins(I, empty, t(I, empty, empty)):-!.
ins(I, t(I,L,R), t(I,L,R)):-!,write("exista in arbore").
ins(I, t(I1,L,R), t(I1,NL,R)):-I<I1,!,ins(I,L,NL).
ins(I, t(I1,L,R), t(I1,L,NR)):-ins(I,R,NR).

prof. dr. ing. Cornelia Gyorodi 10


Inserarea (continuare)
Semnificcația clauzelor fiind:
1. Inserarea unui nod într- un arbore vid reprezintă crearea unui
arbore ce va avea ca rădăcină nodul specificat.
2. Inserarea unui nod într-un arbore ce conține în nodul rădăcina
cheia de inserat este arborele inițial.
3. Inserarea unui nod într-un arbore ce are în rădăcină o cheie
mai mare decât cheia de inserat este un arbore rezultat în urma
inserării nodului în subarborele stâng al arborelui sursă.
4. Dacă nici una din alternativele anterioare nu este îndeplinită
(existența tăierii în corpul clauzelor 1, 2,3 ne scutește de a mai
verifica I>I1) arborele rezultat se obține prin inserarea în
subarborele drept și copierea rădăcinii și a subarborelui stâng.

prof. dr. ing. Cornelia Gyorodi 11


Ștergerea unui nod

Se disting mai multe variante:


1. Ștergerea unei frunze, presupune eliminarea frunzei din
arbore
2. Ștergerea unui nod cu un singur succesor – nodul eliminat și
legătura de la tată redirectată către fiul nodului ce se elimină
3. Ștergerea unui nod având ambii succesori se va face pe baza
următoarei strategii: considerând acest nod ca rădăcină a
arborelui ce începe în acest nod, se va elimina prin
înlocuirea lui cu un alt nod al arborelui (iar acesta din urmă
va fi eliminat efectiv). Deci rădăcina va fi înlocuită cu cea
mai mare cheie mai mică decât rădăcina sau cea mai mică
cheie mai mare decât rădăcina.

prof. dr. ing. Cornelia Gyorodi 12


Ștergerea unui nod (continuare)

Eliminarea efectivă va fi făcută pentru nodul cel


mai din dreapta al subarborelui stâng sau pentru
nodul cel mai din stânga al subarborelui drept
(unul din aceste noduri luând locul rădăcinii)

Eliminarea unui nod intră în varianta 1 sau 2

În cazul nostru am ales înlocuirea rădăcinii cu


cheie cea mai mare, mai mică decât rădăcina
(micșorând subarborele stâng, dreptul
nemodificat)
prof. dr. ing. Cornelia Gyorodi 13
Ștergerea unui nod (continuare)
stergere(cheie,sursa,rezultat)

stergere(I, empty, empty):-!,write("nu exista in arbore").


stergere(I,t(I, empty,R),R):-!.
stergere(I,t(I,L, empty),L):-!.
stergere(I,t(I,L,R),t(NI,NL,R)):-!, stergnod(L,NI,NL).
stergere(I,t(I1,L,R),t(I1,NL,R)):-I<I1,!,stergere(I,L,NL).
stergere(I,t(I1,L,R),t(I1,L,NR)):-stergere(I,R,NR).

stergnod(t(S,LS, empty),S,LS):-!.
stergnod(t(IS,LS,RS),NI,t(IS,LS,R1)):-stergnod(RS,NI,R1).
prof. dr. ing. Cornelia Gyorodi 14
Ștergerea unui nod (continuare)
Predicatul stergnod realizează înlocuirea efectivă
prevăzută în cazul 3.
Parametri predicatului sunt:
 Arborele în care se caută cheia cea mai din dreapta
 Cheia nodului cel mai din dreapta
 Arborele rezultat în urma transformării
Pentru subarbore dreapta vid, cheia de căutare este cea din
nodul rădăcină și subarborele nou generat va fi subarborele
stâng al arborelui dat (condiție satisfăcută prin clauza 1 a
predicatului)

prof. dr. ing. Cornelia Gyorodi 15


Căutare binară într-un arbore sortat
Algoritmul de căutare într-un arbore sortat constă în
următorii pași:
- Se verifică dacă cheia de căutare este identică cu rădăcina
arborelui atunci căutarea se încheie cu succes.
- Dacă cheia de căutare este mai mică decât rădăcina atunci
procesul de căutare continuă pe subarborele din stânga
- Dacă cheia de căutare este mai mare decât rădăcina
arborelui atunci căutarea se va face pe subarborele din
dreapta.
- Dacă nu mai sunt noduri de parcurs și nu a fost găsit nici un
nod în arbore identic cu cheia de căutare sau arborele este vid
atunci se returnează fail.

prof. dr. ing. Cornelia Gyorodi 16


Căutare binară într-un arbore sortat –
predicatul search

predicates
search(symbol,treetype).
clauses
search(N,tree(N,_,_)) :- !;
search(N,tree(X,Y,Z)):- N<X, !,search(N,Y);
search(N,tree(X,Y,Z)):- N>X, !,search(N,Z);
search(N, empty):- fail

prof. dr. ing. Cornelia Gyorodi 17


Predicatul insert_sorted
insert_sorted(N,empty,tree(N,empty,empty)):- !;
insert_sorted(N,tree(X,Y,Z),tree(X,R,Z)):-
N<=X,!,insert_sorted(N,Y,R);
insert_sorted(N,tree(X,Y,Z),tree(X,Y,R)):-
N>X, insert_sorted(N,Z,R).

prof. dr. ing. Cornelia Gyorodi 18


Reprezentarea unei matrici în Prolog
Pentru reprezentarea unei matrici în Prolog se
foloseşte o listă astfel:
- fiecare element al matricei va fi reprezentat de un
obiect compus:
elem(ind_lin, ind_col, val_element),
Toate elementele matricei fiind grupate într-o listã
astfel:
[elem(ind_lin_1, ind_col_1, val_elem_1),
...
[elem(ind_lin_n, ind_col_m, val_elem_n*m)].

prof. dr. ing. Cornelia Gyorodi 19

S-ar putea să vă placă și

  • WWW - Referat.ro Arbore Binar - Docc7d42
    WWW - Referat.ro Arbore Binar - Docc7d42
    Document6 pagini
    WWW - Referat.ro Arbore Binar - Docc7d42
    Valy Balan
    Încă nu există evaluări
  • Arbori Roşu-Negru: Observaţii
    Arbori Roşu-Negru: Observaţii
    Document10 pagini
    Arbori Roşu-Negru: Observaţii
    Madalina
    Încă nu există evaluări
  • Arbori Binari de Cautare
    Arbori Binari de Cautare
    Document2 pagini
    Arbori Binari de Cautare
    Ruxanda Yarinkowski
    Încă nu există evaluări
  • Curs 7
    Curs 7
    Document9 pagini
    Curs 7
    Danila Alexandru
    Încă nu există evaluări
  • Arbori Binari Stricti Proprietati
    Arbori Binari Stricti Proprietati
    Document13 pagini
    Arbori Binari Stricti Proprietati
    Rustin Alexandru
    Încă nu există evaluări
  • Arbori Balansai
    Arbori Balansai
    Document13 pagini
    Arbori Balansai
    PAP1613G Cfbc
    Încă nu există evaluări
  • Arbori Binari
    Arbori Binari
    Document5 pagini
    Arbori Binari
    Nicolle13
    Încă nu există evaluări
  • Informatica Malvina
    Informatica Malvina
    Document18 pagini
    Informatica Malvina
    kristi
    Încă nu există evaluări
  • STRUCTURI DE DATE Recapitulare
    STRUCTURI DE DATE Recapitulare
    Document169 pagini
    STRUCTURI DE DATE Recapitulare
    Iuliana
    Încă nu există evaluări
  • 2020 05 21 Arbori Padure
    2020 05 21 Arbori Padure
    Document6 pagini
    2020 05 21 Arbori Padure
    Anomally Mega
    Încă nu există evaluări
  • Ll6SdaArbori191-94 2020
    Ll6SdaArbori191-94 2020
    Document40 pagini
    Ll6SdaArbori191-94 2020
    Ionel Boaghe
    Încă nu există evaluări
  • Lab02 - Arbori Binari
    Lab02 - Arbori Binari
    Document10 pagini
    Lab02 - Arbori Binari
    Carmen Buga
    Încă nu există evaluări
  • Arbori C++
    Arbori C++
    Document26 pagini
    Arbori C++
    Raul Rotaru
    Încă nu există evaluări
  • Structuri Avansate Pentru Cautare
    Structuri Avansate Pentru Cautare
    Document44 pagini
    Structuri Avansate Pentru Cautare
    pandaciuc
    100% (1)
  • Sdalab
    Sdalab
    Document6 pagini
    Sdalab
    Ion Catan
    Încă nu există evaluări
  • Arbori Binari
    Arbori Binari
    Document9 pagini
    Arbori Binari
    Laura
    Încă nu există evaluări
  • Arbori Binari
    Arbori Binari
    Document4 pagini
    Arbori Binari
    DD D
    Încă nu există evaluări
  • Arbori Generalizati - Laborator Proiectarea Si Analiza Algoritmilor
    Arbori Generalizati - Laborator Proiectarea Si Analiza Algoritmilor
    Document5 pagini
    Arbori Generalizati - Laborator Proiectarea Si Analiza Algoritmilor
    NonyLacatus
    Încă nu există evaluări
  • Parcurgerea Arborilor Binari Aplicatii
    Parcurgerea Arborilor Binari Aplicatii
    Document8 pagini
    Parcurgerea Arborilor Binari Aplicatii
    Alexandra
    Încă nu există evaluări
  • A Tipului de Date Abstracte Numit Arbore Binar
    A Tipului de Date Abstracte Numit Arbore Binar
    Document13 pagini
    A Tipului de Date Abstracte Numit Arbore Binar
    denissu
    Încă nu există evaluări
  • Curs 9
    Curs 9
    Document10 pagini
    Curs 9
    Elly
    Încă nu există evaluări
  • Arbori
    Arbori
    Document13 pagini
    Arbori
    Anonymous Zt80rkh
    100% (1)
  • Arbori Si Grafuri
    Arbori Si Grafuri
    Document11 pagini
    Arbori Si Grafuri
    R12i
    Încă nu există evaluări
  • Arbori Balansaţi
    Arbori Balansaţi
    Document43 pagini
    Arbori Balansaţi
    Radulescu Petru
    Încă nu există evaluări
  • Arbori Binari
    Arbori Binari
    Document14 pagini
    Arbori Binari
    Veronica Matcovschi
    Încă nu există evaluări
  • Sda
    Sda
    Document10 pagini
    Sda
    Iulia Comindaru
    Încă nu există evaluări
  • Asdc 6
    Asdc 6
    Document49 pagini
    Asdc 6
    Dan 421
    Încă nu există evaluări
  • Lucrarea 9 - Arbori
    Lucrarea 9 - Arbori
    Document10 pagini
    Lucrarea 9 - Arbori
    ecd4282003
    Încă nu există evaluări
  • PT Lab 6
    PT Lab 6
    Document10 pagini
    PT Lab 6
    funjordan
    Încă nu există evaluări
  • Arborele Binar
    Arborele Binar
    Document15 pagini
    Arborele Binar
    yTuJlu3aToP1
    Încă nu există evaluări
  • Arbori Rosu-Negrii
    Arbori Rosu-Negrii
    Document9 pagini
    Arbori Rosu-Negrii
    Alex Grajdeanu
    Încă nu există evaluări
  • Teorie Arbori UBB PDF
    Teorie Arbori UBB PDF
    Document17 pagini
    Teorie Arbori UBB PDF
    Anomally Mega
    Încă nu există evaluări
  • Arbori Rosu Negru
    Arbori Rosu Negru
    Document32 pagini
    Arbori Rosu Negru
    Serban Costandache
    Încă nu există evaluări
  • Fisa Notiuni Teoretice
    Fisa Notiuni Teoretice
    Document2 pagini
    Fisa Notiuni Teoretice
    Beatrice Maria Balaceanu
    Încă nu există evaluări
  • Arbori. Evitare Apeluri Recursive Repetate - Recursivitate de Coada
    Arbori. Evitare Apeluri Recursive Repetate - Recursivitate de Coada
    Document7 pagini
    Arbori. Evitare Apeluri Recursive Repetate - Recursivitate de Coada
    Rebeca Gog
    Încă nu există evaluări
  • ASD15 Arbori
    ASD15 Arbori
    Document18 pagini
    ASD15 Arbori
    Husker Dou
    100% (1)
  • SDA2-01-Arbori Generalizati
    SDA2-01-Arbori Generalizati
    Document11 pagini
    SDA2-01-Arbori Generalizati
    Cojocar Florin
    Încă nu există evaluări
  • Parte 2 Arbori Binari
    Parte 2 Arbori Binari
    Document7 pagini
    Parte 2 Arbori Binari
    Anonymous iSjYDt1sPm
    Încă nu există evaluări
  • SD Curs-11
    SD Curs-11
    Document32 pagini
    SD Curs-11
    Smiley Andrei
    Încă nu există evaluări
  • Tema 3. Arbori Binari
    Tema 3. Arbori Binari
    Document22 pagini
    Tema 3. Arbori Binari
    Alexei Bojenco
    Încă nu există evaluări
  • Arbori Teorie
    Arbori Teorie
    Document5 pagini
    Arbori Teorie
    niculina_stan
    Încă nu există evaluări
  • Arbori P 1
    Arbori P 1
    Document87 pagini
    Arbori P 1
    Жан Ганган
    Încă nu există evaluări
  • Arbori-Arbori Binari
    Arbori-Arbori Binari
    Document3 pagini
    Arbori-Arbori Binari
    Adrian Cojocari
    Încă nu există evaluări
  • Raspunsuri SDA Test2
    Raspunsuri SDA Test2
    Document22 pagini
    Raspunsuri SDA Test2
    Ilie Cristian
    Încă nu există evaluări
  • Arbori AVL
    Arbori AVL
    Document7 pagini
    Arbori AVL
    Valentina
    Încă nu există evaluări
  • Arborii Binari
    Arborii Binari
    Document9 pagini
    Arborii Binari
    Buga Mariana
    Încă nu există evaluări
  • C5 Arbori
    C5 Arbori
    Document19 pagini
    C5 Arbori
    Leslie Nelson
    Încă nu există evaluări
  • Union Find APM
    Union Find APM
    Document12 pagini
    Union Find APM
    Matei Matei
    Încă nu există evaluări
  • Biblioteca SDA - BST (Binary Search Tree)
    Biblioteca SDA - BST (Binary Search Tree)
    Document21 pagini
    Biblioteca SDA - BST (Binary Search Tree)
    grupac131
    Încă nu există evaluări
  • Arbori Pascal
    Arbori Pascal
    Document5 pagini
    Arbori Pascal
    Rebeca Dinu
    Încă nu există evaluări
  • Arbore Binar
    Arbore Binar
    Document5 pagini
    Arbore Binar
    Cristian Eni-Carp
    Încă nu există evaluări
  • 6.arbori AVL
    6.arbori AVL
    Document6 pagini
    6.arbori AVL
    Ciobanu Casian
    Încă nu există evaluări
  • Arbori Binari2
    Arbori Binari2
    Document10 pagini
    Arbori Binari2
    Calin Buga
    Încă nu există evaluări
  • 2subiecte Retele 2020
    2subiecte Retele 2020
    Document36 pagini
    2subiecte Retele 2020
    Mihaela Morosan
    Încă nu există evaluări
  • Plan
    Plan
    Document6 pagini
    Plan
    Mihaela Morosan
    Încă nu există evaluări
  • Managementul Resurselor Umane Referat
    Managementul Resurselor Umane Referat
    Document25 pagini
    Managementul Resurselor Umane Referat
    Mihaela Morosan
    Încă nu există evaluări
  • IT Mar05
    IT Mar05
    Document3 pagini
    IT Mar05
    livialst
    Încă nu există evaluări
  • Managementul Resurselor Umane Referat
    Managementul Resurselor Umane Referat
    Document25 pagini
    Managementul Resurselor Umane Referat
    Mihaela Morosan
    Încă nu există evaluări
  • Curs 3 PDF
    Curs 3 PDF
    Document55 pagini
    Curs 3 PDF
    Mihaela Morosan
    Încă nu există evaluări
  • 2subiecte Retele 2020
    2subiecte Retele 2020
    Document36 pagini
    2subiecte Retele 2020
    Mihaela Morosan
    Încă nu există evaluări
  • Curs 6
    Curs 6
    Document29 pagini
    Curs 6
    Mihaela Morosan
    Încă nu există evaluări
  • Curs 4
    Curs 4
    Document27 pagini
    Curs 4
    Mihaela Morosan
    Încă nu există evaluări
  • Calea Culorii
    Calea Culorii
    Document12 pagini
    Calea Culorii
    Mihaela Morosan
    Încă nu există evaluări
  • Referat
    Referat
    Document13 pagini
    Referat
    Andrei Roșcan
    Încă nu există evaluări
  • Rezumat
    Rezumat
    Document10 pagini
    Rezumat
    Mihaela Morosan
    Încă nu există evaluări
  • Curs 7
    Curs 7
    Document19 pagini
    Curs 7
    Mihaela Morosan
    Încă nu există evaluări
  • Curs 9
    Curs 9
    Document15 pagini
    Curs 9
    Mihaela Morosan
    Încă nu există evaluări
  • Curs 10 PDF
    Curs 10 PDF
    Document27 pagini
    Curs 10 PDF
    Mihaela Morosan
    Încă nu există evaluări
  • Curs 10 PDF
    Curs 10 PDF
    Document27 pagini
    Curs 10 PDF
    Mihaela Morosan
    Încă nu există evaluări
  • Referat IP
    Referat IP
    Document6 pagini
    Referat IP
    Mihaela Morosan
    Încă nu există evaluări
  • Imprimanat
    Imprimanat
    Document19 pagini
    Imprimanat
    Mihaela Morosan
    Încă nu există evaluări
  • Arduino
    Arduino
    Document15 pagini
    Arduino
    Mihaela Morosan
    100% (2)
  • Calea Culorii
    Calea Culorii
    Document12 pagini
    Calea Culorii
    Mihaela Morosan
    Încă nu există evaluări
  • Otl Oradea
    Otl Oradea
    Document6 pagini
    Otl Oradea
    Iulian
    Încă nu există evaluări
  • Touch Screen
    Touch Screen
    Document12 pagini
    Touch Screen
    Mihaela Morosan
    Încă nu există evaluări
  • Imprimanat
    Imprimanat
    Document19 pagini
    Imprimanat
    Mihaela Morosan
    Încă nu există evaluări
  • Touch Screen
    Touch Screen
    Document12 pagini
    Touch Screen
    Mihaela Morosan
    Încă nu există evaluări
  • Curricula - Anul 4
    Curricula - Anul 4
    Document1 pagină
    Curricula - Anul 4
    Mihaela Morosan
    Încă nu există evaluări