Простой способ представить граф - это структура данных в форме:
{1:[2,3],
2:[1,3],
3:[1,2]}
Где ключи в этом словаре являются узлами, а ребра представлены списком других узлов они связаны cted to. Эта структура данных может также легко представить ориентированный граф, если связи не симметричны:
{1:[2],
2:[3],
3:[1]}
Я мало знаю о теории графов, поэтому то, что я собираюсь предложить, может уже иметь простое решение, но я не не знаю, что искать. Я столкнулся с ситуацией, когда граф несколько ориентирован в зависимости от того, на каком узле вы находитесь, и от узла, из которого вы пришли. Для иллюстрации у меня есть рисунок:
Представьте, что вы мчитесь по краю A на картинге, и в узле 1 вы вешаете левый край на край B. Поскольку вы едете так быстро, когда вы нажимаете узел 3 вы вынуждены перейти на ребро F. Однако, если бы вы двигались с ребра F, вы могли бы перейти к ребру E или B. Ясно, что третий узел связан с 1 и 2, но независимо от того, Невозможно связаться с ними из этого узла, зависит от того, откуда вы пришли.
Мне интересно, существует ли концепция теории графов, которая описывает это, и / или существует ли простая структура данных для ее описания. Пока я буду писать свой код на python, я воспользуюсь советами на любом приемлемом языке.
Изменить: Я попытался опубликовать изображение, чтобы согласиться с этим, но я не уверен, появляется ли оно. Если его нет, вот ссылка на изображение
Edit 2: Я должен был быть ясным. Размещенное изображение предназначено для того, чтобы быть частью полного графа, в котором есть больше узлов за пределами экрана от A, D и F.