Vous êtes sur la page 1sur 2

ENSEIRB

Bases de données avancées 2010/2011 Ch. Retoré


Datalog

Exercice A (Datalog)
Le tramway fait des siennes. Une relation Acces(x,y,n,E), mise à jour régulièrement, indique que la
station y suit la station x sur la ligne n, et que le tramway est dans l’état E de x à y: si E vaut 1 alors la ligne
fonctionne de x à y, et sinon la ligne ne fonctionne pas de x à y.
[On répondra en datalog. On vérifiera la correction des clauses en particulier celle des clauses récursives,
et on expliquera la signification des relations auxiliaires utilisés.]

(A.i) Quels sont les triplets (x,y,n) tels que la station y suit la station x sur la ligne n.

(A.ii) Quels sont les triplets (x,y,n) tels que la station y suit la station x sur la ligne n, et que le tramway
fonctionne de x à y.

(A.iii) Quels sont les couples de stations consécutives qui sont reliées dans un sens et dans l’autre par
un tramway en fonction?

(A.iv) Quels sont les couples (x,y) de stations tels que l’on peut aller de x à y avec un tramway en
fonction, en changeant de ligne si besoin est?

(A.v) Quels sont les couples (x,y) de stations tels que l’on peut aller de x à y avec un tramway en
fonction en suivant la même ligne?

(A.vi) Quels sont les couples de stations (x,y) tels que l’on puisse aller avec un tramway en fonction
de x à y mais pas revenir avec un tramway en fonction de y à x?

(A.vii) Un voyageur situé à la station u veut bien faire en tout au plus une station de tramway à pieds.
A quelles stations peut-il accéder?

Exemple de plan et d’état du tramway: TSVP.

1
Un plan de tramway et un état particulier:

acces(a,b,2,1).
acces(b,a,2,1).
acces(b,c,2,1).
acces(c,b,2,0).
acces(c,d,2,0).
acces(d,c,2,1).
acces(d,e,2,1).
acces(e,d,2,1).
acces(e,f,2,1).
acces(f,e,2,1).
acces(f,g,2,1).
acces(g,f,2,1).
acces(t,s,3,1).
acces(s,t,3,1).
acces(b,r,3,1).
acces(r,b,3,1).
acces(b,s,3,1).
acces(s,b,3,1).
acces(r,q,3,1).
acces(q,r,3,1).
acces(q,l,3,1).
acces(l,q,3,1).
acces(l,p,3,1).
acces(p,l,3,1).
acces(p,o,3,0).
acces(o,p,3,1).
acces(n,m,1,1).
acces(m,n,1,1).
acces(m,l,1,1).
acces(l,m,1,1).
acces(l,k,1,0).
acces(k,l,1,1).
acces(k,j,1,1).
acces(j,k,1,1).
acces(j,e,1,1).
acces(e,j,1,1).
acces(e,i,1,1).
acces(i,e,1,1).
acces(i,h,1,1).
acces(h,i,1,1).

Vous aimerez peut-être aussi