Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Полный обход графа / 9 сообщений из 9, страница 1 из 1
22.05.2013, 09:21
    #38267661
philipp1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полный обход графа
Есть некий хэш, содержащий в качестве ключа названиеА, а в качестве значения названиеБ.
Как обойти и составить полный список "пути" для каждого узла где названиеБ предыдущего шага = названиеА текущего. Включая пути, которые закольцовываются - заканчиваются там где и начинаются.
Код: php
1.
2.
3.
4.
5.
6.
7.
названиеА - названиеБ
названиеА - названиеС
названиеБ - названиеС
названиеЯ - названиеЫ

Из такого набора получается кольцо
названиеА - названиеБ - названиеС - названиеА
...
Рейтинг: 0 / 0
22.05.2013, 10:43
    #38267822
skole
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полный обход графа
Для этого применяется рекурсия
...
Рейтинг: 0 / 0
22.05.2013, 12:29
    #38268110
philipp1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полный обход графа
skole,

понятно что рекурсия, но на каком то месте завис и все, мыслей нет.
...
Рейтинг: 0 / 0
22.05.2013, 12:53
    #38268149
skole
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полный обход графа
Кидаешь все узлы и линки в массив и начинаешь обход в два приема, у тебя плоский граф, проблем не должно быть.
...
Рейтинг: 0 / 0
22.05.2013, 13:12
    #38268184
philipp1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полный обход графа
skole,
Не должно, но есть.
...
Рейтинг: 0 / 0
22.05.2013, 13:34
    #38268218
skole
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полный обход графа
Собери все узлы в одну коллекцию, а линки в другую, начинай обход в цикле, построй логику цикла таким образом, чтобы получить результат.
...
Рейтинг: 0 / 0
22.05.2013, 15:06
    #38268422
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полный обход графа
skoleКидаешь все узлы и линки в массив и начинаешь обход в два приема, у тебя плоский граф, проблем не должно быть.
Почему массив. Эта структура неудачна для поиска уже существующих на предмет циклов.
...
Рейтинг: 0 / 0
23.05.2013, 09:40
    #38269483
Rivmer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полный обход графа
philipp1,

Храни найденные пути в виде массива хешей, и при добавлении нового участка просто проверяй, есть он уже в этом хеше или нет. Как только встретился - все, стоп, началось зацикливание.
...
Рейтинг: 0 / 0
23.05.2013, 13:18
    #38269941
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полный обход графа
skoleКидаешь все узлы и линки в массив и начинаешь обход в два приема, у тебя плоский граф, проблем не должно быть.

+1

вот тут именно по такому принципу и решалась подобная задача. Разница лишь в том, что там новый элемент добавлялся только к одному родителю (прошлому элементу), а в данном случае надо добавлять к двум как я понял (так как у рёбер графа нету направленности).

При данном методе зацикленности не будет, так как пройдя все элементы по очереди произойдёт выход из цикла и всё :)

P.S. код на js
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Полный обход графа / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]