У меня есть гигантский ориентированный граф (100 М + узлов) узлов, с несколькими экземплярами экземпляров пути между наборами узлов. путь между любыми двумя узлами может меняться, но то, что я хотел бы найти, - это пути, которые разделяют несколько промежуточных узлов , за исключением для значительного отклонения.Обнаружение необычных шаблонов траекторий в гигантском ориентированном графе
Например, у меня есть 10 экземпляров пути между узлом A и узлом H. Девять из этих десяти экземпляров пути перемещаются через узлы c, d, e, f - но один из экземпляров проходит через c, d, z , e, f - Я хочу найти этот «нечетный» экземпляр.
Любые идеи, как я даже начну подходить к такой проблеме? Существующие аналитические рамки, которые могут подойти к задаче?
Детали на основе комментариев:
- Пир (путь экземпляр запись) представляет собой список узлов путешествовали через с ассоциированным временем прохождения границы на край.
- В настоящее время необработанные записи PIR находятся в формате простой строки - очевидно, я хотел бы сохранить его по-другому в зависимости от того, как я в конечном итоге решит его проанализировать.
- Это не маршрут решение проблема - мне больше не нужно будет найти paths; Мне нужно только проанализировать принятых путей (каждый из которых является PIR).
- Список подпапок должен быть сгенерирован из PIR.
Примером PIR будет что-то вроде: ; 300 узла А; NodeB; 600; 100; nodeC; кивал; 100; nodeF
Это приводит к пути А-> BC-> D-> F; стоимость/время каждой вершины - это число - например, стоить 300, чтобы перейти от A-> B, 600, чтобы перейти от B-> C и 100, чтобы перейти от D-> F. Стоимость/время каждого обхода будет отличаться при каждом обходе. Так, например, в одном ПИРе может стоить 100, чтобы перейти от A-> B, но в следующем он может стоить 150, чтобы перейти от A-> B.
[Самая длинная общая подпоследовательность] [1] должна давать вам общие узлы между двумя путями. Не уверен, как их добыть разумным способом после этого. [1]: http://en.wikipedia.org/wiki/Longest_common_subsequence_problem – BiGYaN
Я опубликовал ответ ниже, который должен работать в большинстве случаев, но «нечетные» не очень четко определены. Однако, похоже, главное, что вы ищете случаи, когда последовательность достаточно распространена, и есть один или несколько путей, которые имеют подпоследовательность, которая является небольшим расстоянием редактирования от нее. Затем задача состоит в том, чтобы точно определить, насколько это распространено, и как мала дистанция редактирования, а также какая метрика расстояния редактирования для использования. – Nuclearman
Пожалуйста, отредактируйте вопрос с ответами на следующие вопросы: Имеются ли узлы, представляющие интерес (например, A и H) для каждого экземпляра проблемы, или же алгоритм должен искать все пары узлов, которые отклоняют пути? Решите его только один раз? Разрешить PIR = «запись экземпляра пути», является ли PIR только списком узлов? Являются ли PIR хранятся в произвольном порядке в файле с последовательным доступом или в БД или что? Учитывая пару имен узлов X, Y, как вы получаете список всех путей между X и Y? Как вы получаете список всех путей, проходящих через узел C, или всех путей, проходящих через один или несколько из C, D ... Z или через все C, D ... Z? –