Я пытаюсь определить алгоритм наилучшего времени, чтобы выполнить задачу, описанную ниже.
У меня есть набор записей. Для этого набора записей у меня есть данные соединения, которые показывают, как пары записей из этого набора соединяются друг с другом. Это в основном представляет собой неориентированный граф, причем записями являются вершины и данные соединения с краями.
Все записи в наборе содержат информацию о соединении (т.е. нет сиротских записей, каждая запись в наборе подключается к одной или нескольким другим записям в наборе).
Я хочу выбрать любые две записи из набора и иметь возможность показывать все простые пути между выбранными записями. Под "простыми путями" я подразумеваю пути, которые не имеют повторяющихся записей в пути (т.е. Только конечных путей).
Примечание. Две выбранные записи всегда будут разными (т.е. начальная и конечная вершины никогда не будут одинаковыми, без циклов).
Например:
If I have the following records: A, B, C, D, E and the following represents the connections: (A,B),(A,C),(B,A),(B,D),(B,E),(B,F),(C,A),(C,E), (C,F),(D,B),(E,C),(E,F),(F,B),(F,C),(F,E) [where (A,B) means record A connects to record B]
Если бы я выбрал B как свою стартовую запись и E в качестве моей конечной записи, мне бы хотелось найти все простые пути через записи, которые соединяли бы запись B с записью E.
All paths connecting B to E: B->E B->F->E B->F->C->E B->A->C->E B->A->C->F->E
Это пример, на практике у меня могут быть множества, содержащие сотни тысяч записей.