Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Придумать Алгоритм(обход цепи)


Автор: TGrey 2.2.2010, 21:17
Здравствуйте, сидим думаем над алгоритмом, но что-то пока ничего рабочего не придумали. Каждый раз как появляется идея, после ее проверки по рисунку все "крашится"=)
В общем имеется программа для построения цепей эл. тока с графическим интерфейсом, то есть рисуются элементы, соединяются и т.п. Теперь появился вопрос, как определить кол-во контуров.
Каждый элемент связан с последующим по указателю, то есть переходить в перед\назад не проблема. Но как обойти так, чтобы оно по 10 раз не считало один и тот же контур... Тут пришли в замешательство. Может есть у кого идеи, или знаете, где есть алгоритм.
user posted image
Вот хотя бы пример 3 контура: В цепи можно выделить три контура abcd, adef и abcdef.

Но нужно сделать так, чтобы и на более сложных цепях рассчитывало.
Код я бы выложил, но идей нет и кода нет( Так что можно предлагать не кодом, а просто текстом описать идею.
Спасибо.

Автор: xvr 3.2.2010, 11:57
Ваша задача называется 'Нахождение циклов в графе'. Абсолютно классическая задача, освещена во всех учебниках (и не только) по теории графов. Google вам поможет  smile 

Автор: Леопольд 3.2.2010, 12:03
Судя по всему, самый простой вариант - обойти всё. Отбросить совпадения.

Автор: xvr 3.2.2010, 12:32
Цитата(Леопольд @ 3.2.2010,  12:03)
Судя по всему, самый простой вариант - обойти всё. Отбросить совпадения.

Тогда уж 'обойти все, найти циклы'  smile Там не все так просто, спросите у гугла 
Цитата

Results 1 - 10 of about 16,400 for нахождение циклов в графе


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)