На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> Задачи по прологу. , Что они делают.
    1. Что будет значением следующей логической программы для цели f(X,Y)

    f(X,Y):-append(Xs,Ys,X),f(Xs,Ys,Y).
    f(X,[X1,X2,X3|[]],X).
    append([],Y,Y).
    append([X|Xs],Ys,[X|Zs]):-append(Xs,Ys,Zs).

    что она вообще делает?


    2. Что будет решением конъюнктивной цели -p(X),g(X) для лог. проги

    r(a).
    g(a).
    p(X):-not(r(X)).
    not(Z):-Z,!,fail
    not(Z).

    что она делает?

    Пожалуйста подробнее.
    Заранее благодарен. :)
      1. Я так понял: Цель будет согласована, если Y есть начало Х, причем Х длиннее Y на 3 или более элемента.
      Она сначала вызывает append для левых переменных, на каждом повторном вызове от Х отцепляется первый эл-т и пририсовывается к Xs, а хвост пишется в Ys. Предикат f(X,[X1,X2,X3|[]],X) согласовывается, если Ys длиннее 3 эл-тов, а Xs=Y, тому игреку, который задан вначале.

      Добавлено в :
      2. Решением будет a, а работает все это вот как:
      -p(X):-not p(X) где not всего лишь унитарное отрицание из Паскаля :) это не тот not() который есть в задаче. То есть -Р(Х) будет согласован, если Р(Х) НЕ будет согласован.
      Дальше: P(X):-(-not(r(X))). Согласовываем not: not(Z)=not(r(X)):-(-r(X),!,fail).
      r(X):-X=a. (-r(a),!,fail) не согласуется, идем вниз, not(Z). Согласовали в Х есть а.
      -not(r(a)) есть ложь, возвращаем, так как других предикатов для р(Х) нет.
      -р(Х) есть истина, проверяем g(X), Х есть а, g(a) согласуется, результат: цель согласована Х=а.
      1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0148 ]   [ 14 queries used ]   [ Generated: 18.05.24, 06:24 GMT ]