1. Нека е дадена програмата:

    man(john).
    woman(jane).
    loves(john,wine).
    loves(jane,wine).

    loves(john,X) :- loves(X,wine).

    а) Какво ще изведе ПРОЛОГ при въпроса:
    ?-loves(john,X).
    б) Направете дърво на извод.
  2. Дадена е база данни от факти от вида:

    man(john).
    man(tom).
    woman(jane).
    woman(mary).
    parent(john,mary).
    parent(jane,mary).
    parent(mary,tom).

    а) Напишете правила, описващи отношенията: майка, баща, баба, дядо, сестра, брат, леля, чичо, първи и втори братовчед. Тествайте програмата над собственото си родословно дърво, като задавайте въпроси от вида: кой е чичото на X? кой е брат на Y и баща на Z?
    б) Нека разгледаме дефиницията на отношението "брат":

    brother(X,Y) :- man(X),parent(Z,X),parent(Z,Y).

    Какъв ще е отговорът на въпроса

    ?-brother(X,tom).

    Как да избегнем проблема, който се получава? (Упътване: използвайте отношението \=). Защо при въпроси в родословни дървета при преудовлетворяване с ; братята на даден обект се дават от ПРОЛОГ два пъти като отговор? Начертайте дърво на извод.
Последно модифициране: събота, 12 ноември 2011, 17:38