Я работаю над драгоценным камнем под названием ActiveTouch. Он предназначен для создания сложных сетей с неактивным доступом или кэш-памяти. В настоящее время я пытаюсь определить способ идентификации циклов в сети.Определить петли внутри карты зависимостей
Упрощенная версия карты зависимостей - это хеш, где ключ представляет модель, а значение представляет собой модели, которые были затронуты.
Например
{
A => [B, C],
B => [D, F],
D => [A]
}
В этом примере мы можем видеть, что есть петля зависимость между А и D, A-> B-> D-> А или D-> A-> B-> D
Чтобы определить цикл, мне нужно увидеть все возможные пути. Как я могу увидеть все возможные пути, как это:
[
[A, B, D, A],
[A, B, F],
[A, C],
...
[D, A, B, D]
]
Ответ на Ruby, было бы здорово, но на любом языке будет достаточно.
Спасибо! Прошло некоторое время с тех пор, как я получил удовольствие от программирования, подобного этому, и не могу вспомнить его из школы! Я посмотрел немного дальше и нашел рубиновый пример Тарьяна в другом вопросе - http://stackoverflow.com/questions/261573/best-algorithm-for-detecting-cycles-in-a-directed-graph – KPheasey