Ця стаття має кілька недоліків. Будь ласка, допоможіть удосконалити її або обговоріть ці проблеми на .
|
Нехай дано орієнтований або неорієнтований граф без петель і кратних ребер. Потрібно перевірити, чи є він ациклічним, а якщо не є, то знайти будь-який цикл.
Вирішимо цю задачу за допомогою пошуку в глибину за O (M).
Алгоритм
Зробимо серію пошуків в глибину в графі. Тобто з кожної вершини, до якої ми ще жодного разу не приходили, запустимо пошук в глибину, який при вході в вершину буде фарбувати її в сірий колір, а при виході — у чорний. І якщо пошук в глибину намагається піти в сіру вершину, то це означає, що ми знайшли цикл (якщо граф неорієнтований, то випадки, коли пошук в глибину з якоїсь вершини намагається піти в предка, не рахуються).
Сам цикл можна відновити проходом по масиву предків.
Див. також
Це незавершена стаття про алгоритми. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Cya stattya maye kilka nedolikiv Bud laska dopomozhit udoskonaliti yiyi abo obgovorit ci problemi na storinci obgovorennya Cya stattya ne mistit posilan na dzherela Vi mozhete dopomogti polipshiti cyu stattyu dodavshi posilannya na nadijni avtoritetni dzherela Material bez dzherel mozhe buti piddano sumnivu ta vilucheno serpen 2011 Cya stattya mozhe mistiti originalne doslidzhennya Bud laska udoskonalte yiyi perevirivshi sumnivni tverdzhennya j dodavshi posilannya na dzherela Tverdzhennya yaki mistyat lishe originalne doslidzhennya mayut buti vilucheni serpen 2011 Nehaj dano oriyentovanij abo neoriyentovanij graf bez petel i kratnih reber Potribno pereviriti chi ye vin aciklichnim a yaksho ne ye to znajti bud yakij cikl Virishimo cyu zadachu za dopomogoyu poshuku v glibinu za O M AlgoritmZrobimo seriyu poshukiv v glibinu v grafi Tobto z kozhnoyi vershini do yakoyi mi she zhodnogo razu ne prihodili zapustimo poshuk v glibinu yakij pri vhodi v vershinu bude farbuvati yiyi v sirij kolir a pri vihodi u chornij I yaksho poshuk v glibinu namagayetsya piti v siru vershinu to ce oznachaye sho mi znajshli cikl yaksho graf neoriyentovanij to vipadki koli poshuk v glibinu z yakoyis vershini namagayetsya piti v predka ne rahuyutsya Sam cikl mozhna vidnoviti prohodom po masivu predkiv Div takozhPoshuk v glibinu Ce nezavershena stattya pro algoritmi Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi