This is an old revision of the document!


Fie un graf orientat în care fiecare nod are o culoare. Graful este reprezentat în Prolog printr-o listă ce conține doua elemente [C, E]:

  • C: o listă de liste [n, c] cu semnificația că nodul n are culoarea c
  • E: o listă de liste [n1, n2] cu semnificația că există o muchie de la nodul n1 la nodul n2

Exemplu: G = [ [ [1,galben], [2,rosu], [3,albastru], [4,verde], [5,rosu], [6,albastru], [7,rosu], [8,galben], [9,albastru], [10,mov] ], [ [1,2],[1,3],[2,6],[3,2],[3,4],[4,5],[5,6],[5,7],[5,8], [6,4],[6,5],[6,7],[7,8],[8,5],[8,9],[8,10],[9,10] ] ].

Exerciții

  1. Scrieți un predicat getColors care construiește o listă cu toate culorile nodurilor
  2. Scrieți un predicat getInEdges care construiește o listă cu toate elementele e din E de tipul (_, X) pentru un X anume
  3. Scrieți un predicat getOutEdges care construiește o listă cu toate elementele e din E de tipul (X, _) pentru un X anume
  4. Scrieți un predicat getUniqueColors (același lucru ca getColors dar fără duplicate)
  5. Scrieți un predicat getNeighbors ce se folosește de predicatele getInEdges și getOutEdges pentru a construi o listă cu nodurile legate de un nod X
  6. Scrieți un predicat getPathsOfLength3 care construiește toate drumurile de lungime 3 ce pleacă dintr-un nod X. Valoarea cu care va unifica rezultatul va fi o listă [X, _, _]