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

      Комментарии к записи Обход графа в глубину — Undefined procedure: dfs отключены

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

  • Автор
    Сообщения
  • #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.

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