Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > все пути между двумя вершинами


Автор: pablo 25.4.2007, 09:07
Подскажите пожалуйста может есть какой нить алгоритм для нахождения всех путей между 2-мя вершинами в не ориентированном графе ?

Заранее благодарен.

Автор: MBo 25.4.2007, 09:28
запустить рекурсивный поиск в ширину, однако, в отличие от обычного случая, запоминать помеченность вершин не глобально, а в каждой рекурсивной ветви (чтобы избавиться от зацикливания)

Автор: esperant0 25.4.2007, 19:54
Да, обычный перебор, то что вам нужно.

Автор: g1pn0z 1.5.2007, 21:44
вот тоже думаю над графами, а все таки значит я не один такой, 
смотрите мою тему http://forum.vingrad.ru/forum/topic-148770/kw-карта-города.html
там как раз задача с графами)

Автор: esperant0 1.5.2007, 22:53
а вам нужно динамическое программирование

Автор: pablo 3.5.2007, 19:08
Задача решается очень просто. необходимо провести поиск в глубину сохраняя в стеке посещенные вершины. Так обходим весь гряф, и имеем все пути. задача решена, вопросс закрыт.

Автор: goodspeed13 30.11.2011, 21:17
Цитата
Задача решается очень просто. необходимо провести поиск в глубину сохраняя в стеке посещенные вершины. Так обходим весь гряф, и имеем все пути. задача решена, вопросс закрыт.


Не очень понятно, не могли бы поподробнее... Я сделал поиск в глубину в графе, он просто обходит все вершины, а как найти все пути между двумя вершинами не понятно...

Вот код моей функции обхода в глубину: 
[code=cpp]
void Graph::DSearch(int Versh1)
{
    int i;
    visited[Versh1] = true;
    std::cout<<Versh1<<std::endl;
    for (i=0; i<SizeoftheGraph;i++)
    {
        if ((smezh[Versh1][i]==1) && (visited[i]==false))
        {
            DSearch(i);
        }
    }
}

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