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
- Scrieți un predicat getColors care construiește o listă cu toate culorile nodurilor
- Scrieți un predicat getInEdges care construiește o listă cu toate elementele e din E de tipul (_, X) pentru un X anume
- Scrieți un predicat getOutEdges care construiește o listă cu toate elementele e din E de tipul (X, _) pentru un X anume
- Scrieți un predicat getUniqueColors (același lucru ca getColors dar fără duplicate)
- 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
- 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, _, _]