Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ Поиск контуров. Язык Prolog

Автор: RussoTuristo 3.11.2009 20:11

Задача: Определение независимых контуров в заданом графе для заданого остова.

В принципе задачу с помощью рекурсии я решить могу.
Проблема в том что не знаю как сделать, чтобы он выводил все контуры, а не ответ yes и первый попавшийся контур!

Domains
z=integer
Predicates
Rebro(Z,Z)
Kontur
Clauses
Rebro(1,2).
Rebro(2,3).
Rebro(2,4).
Rebro(2,5).
Rebro(3,4).
Rebro(3,5).
Rebro(3,6).
Rebro(5,6).
Rebro(6,2).
Rebro(5,1).
Kontur:-
Rebro(X,Y),
Rebro(Y,X),
C=X,
V=Y,
Write("Контур",C,V," "),
Write(V,C," "),
Read;

Rebro(X,Y),
Rebro(Y,D),
D1=D,
Rebro(D1,X),
C=X, B=Y, M=D,
Write("Контур",C,B," ", B,D," ",D,C," ").

Граф задан рёбрами... контур ищется по ним ...
Подскажите пожалуйста как сделать нормальный вывод контуров.

Автор: Altair 5.11.2009 21:35

Цитата
В принципе задачу с помощью рекурсии я решить могу.

А где решение с помощью рекурсии?
И еще давай-ка с заданием поконкретнее.
Что значит "Определение независимых контуров в заданом графе для заданого остова."
Контур это путь насколько я помню.
Что в задаче требуется?

Есть разные способы решения задач, выводить какой-то ответ тоже можно по разному.
На обратном ходе рекурсии, с помощью FAIL и отсечения или предиката findall и далее вывод списка на экран (стандартная задача, разобранная во всех учебниках).