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

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

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

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

+1

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

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

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


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