Обход графа в глубину — Undefined procedure: dfs

В этой теме 3 ответа, 2 участника, последнее обновление  Васильев Владимир Сергеевич 3 года/лет, 4 мес. назад.

Просмотр 4 сообщений - с 1 по 4 (из 4 всего)
  • Автор
    Сообщения
  • #1836

    questioner
    Участник

    Здравствуйте. Взял код из вашей статьи по обработке графов на Prolog. Пытаюсь его запустить, но получаю ошибку:

    ERROR: toplevel: Undefined procedure: dfs/4 (DWIM could not correct goal)

    Подскажите, пожалуйста, как исправить?

    #1837

    В сообщении об ошибке написано, что правило dfs/4 не определено. Вы точно скопировали себе в программу код из листинг 4?

    #1838

    questioner
    Участник

    Да, скопировал код из описания графа и листинга 4 в один файл. При попытке вызвать функцию dfs, как раз и возникает ошибка.
    Использую SWI Prolog:

    ########################
    #!/usr/bin/swipl -q -t main -f
    node(a).
    node(b).
    edge(a, b).
     
    dfs(A, B, _, [(A, B)]):-
      edge(A, B), !.
    dfs(A, B, VN, [(A, X)|TR]):-
      edge(A, X), not(member(X, VN)),
      dfs(X, B, [A|VN], TR).

    #1839

    Попробуйте не использовать PrologScript, возможно дело в этом.
    Насколько мне известно, он работает немного по-разному в разных операционных системах. У меня были проблемы с ним в Windows.

Просмотр 4 сообщений - с 1 по 4 (из 4 всего)

Для ответа в этой теме необходимо авторизоваться.