Рассмотрим эту концептуальную диаграмму ниже, которая предназначена только для демонстрационных целей.
Abc Foo
\ / \
\ / Foo2
Bar \
/ \ Foo3
Bar2 Bar3 \
/ \ Foo4
X Y
В приведенном выше дереве есть уникальный «путь», Foo-> Bar-> Bar2-> X.Этот путь отличается от Abc-> Bar-> Bar2-> X .. Очевидно, что эта информация теряется в представлении выше, но учтите, что у меня есть все индивидуальные уникальные пути.часть пути "Bar-> Bar2-> X".
Цель алгоритма, который я пытаюсь найти или реализовать, состоит в том, что я хотел бы объединить эту информацию, чтобы я не мог хранить отдельные пути,Но что еще более важно, я пытаюсь найти все эти общие пути и дать им вес.Так, например, в приведенном выше случае, я мог бы сжать информацию о «Bar-> Bar2-> X» и сказать, что это произошло 2 раза.Очевидно, я бы потребовал, чтобы это работало для всех случаев.
И да, конечная идея состоит в том, чтобы быстро задать вопрос «Покажите мне все отличные пути от Foo».В этом примере есть только 1, Foo-> Bar-> Bar2-> X.Foo-> Bar-> Bar2-> Y и Foo-> Bar-> Bar3 не существуют.Диаграмма только для просмотра.
Есть идеи?