Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2013, 13:06   #1
Wild_klas
Форумчанин
 
Аватар для Wild_klas
 
Регистрация: 13.10.2010
Сообщений: 109
По умолчанию Найти вершины которые создают цикл Эйлера. Prolog

Здравствуйте. Мне нужно создать программу, которая будет находить список вершин создающих цикл Эйлера на языке программирования Prolog. Программа должна работать с любым графом.

Эйлеров цикл — это маршрут, проходящий по всем рёбрам графа по одному разу.

Вот что у меня получилось:
Код:
graph([a-b,a-c,a-d,b-c,c-d,c-e,d-e]).
 
edge(X,Y,[X-Y|_]).
edge(X,Y,[Y-X|_]).
edge(X,Y,[_|T]) :- edge(X,Y,T).
 
erase(X,Y,[X-Y|T],T).
erase(X,Y,[Y-X|T],T).
erase(X,Y,[H|T],[H|T2]) :- erase(X,Y,T,T2).
 
route(X,Y,P,[X-Y]) :- edge(X,Y,P).
route(X,Y,P,[X-Z|V]) :- edge(X,Z,P), erase(X,Z,P,P2), route(Z,Y,P2,V).
 
e_chain(X,P,M) :-
    graph(P),
    route(X,Y,P,M),
    X \= Y,
    length(P,L),
    length(M,L).
Пример работы прикреплен к посту.

Но все проблема в том что он работает только с этим графом. То есть если задать другой граф, то она не работает. (даже если в этом графе есть Эйлеров цикл)

Как сделать чтобы программа была универсальная? помогите пожалуйста.
Изображения
Тип файла: png Снимок.PNG (12.1 Кб, 89 просмотров)
Учусь учиться.

Последний раз редактировалось Wild_klas; 10.11.2013 в 13:08.
Wild_klas вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти вершины прямоугольника vslinko Помощь студентам 1 19.11.2012 22:04
Найти все вершины графа sergei15 Паскаль, Turbo Pascal, PascalABC.NET 0 28.05.2012 19:33
Найти все пути, соединяющие две вершины ориентированного графа. dasterse Помощь студентам 0 13.05.2012 18:38
найти вершины квадрата dimon131 Общие вопросы C/C++ 7 23.12.2010 12:04
найти все клики содержащие 4 вершины samazvanka Помощь студентам 0 01.06.2010 19:55