Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Алгоритмы > Нахождение ВСЕХ эйлеровых циклов в графе (pascal) |
Автор: Panourgue 27.12.2006, 10:33 |
Здраствуйте! Алгоритм для нахождения ВСЕХ эйлеровых циклов и цепей (т.е. незамкнутых; это если есть нечетные вершины) в ор- и неорграфах (Delphi / Pascal) Умоляю, помогите! |
Автор: SoWa 27.12.2006, 15:43 |
Во первых поиск, во вторых перебор. |
Автор: Panourgue 27.12.2006, 16:28 |
2SoWa:, А нельзя ли поподробнее? ![]() ---------------- Просто я к программированию и алгоритмам имею не совсем непосредственное отношение... |
Автор: SoWa 27.12.2006, 17:14 |
ООоо! Перебор- это перебор. Когда берешь комбинацию, проверяешь её на условие, и так для каждой возможной комбинации... А во первых- используй поиск по форуму ![]() |
Автор: IvanoffAndrey 31.12.2006, 13:21 | ||
Я бы искал эйлеровы циклы согласно теореме: Граф содержит Эйлеров цикл тогда и тоглько тогда когда все его вершины имеют четную степень. Это значит, 1. что нужно удостовериться в четности всех степеней вершин. 2. Найти один цикл согласно алгоритма Флери 3. сгенерировать всевозможные переставки данного цикла. Вроде так. Если тебя все еще интерисует этот вопрос отвечу подробнее.
Не стоит делать перебор, существуют абсолютно полные алгоритмы например алгоритм Флери, если надо опишу его. |
Автор: VaiMR 16.1.2007, 01:39 | ||||
Вот например так (правда си++):
А вот проверка связности на Паскале:
На Паскале нет Эйлеровых циклов, так как когда писал не нужно было. |
Автор: VaiMR 16.1.2007, 08:40 | ||
Оказывается есть реализация на Паскале в моей копилке:
Этот код писал не сам (взял из учебника) ![]() |
Автор: esperant0 16.1.2007, 09:37 | ||
Почему не стоит, задача класса PSPACE разве нет:? |
Автор: xZero 27.11.2008, 22:55 | ||
таким рекурсивным алгоритмом можно найти один эйлеров цикл. А как найти все эйлеровы циклы в графе? например если v = 1; находим вершины, смежные v. Пусть это вершины 3,5,6. Если в FindCircle(i) ставить вершины в той последовательности, то получим один цикл, если в последовательности, например 5,3,6, то получим уже другой цикл. Таким образом нужно модифицировать как-то этот рекурсивный алгоритм для нахождения всех циклов. Кто-нибудь может подсказать как это реализовать, потому что я пока что не смог придумать... |