Как программировать и визуализировать N-арное дерево в Python
У меня есть базовое c понимание Python, но я столкнулся с проблемой, которую, я считаю, можно решить с помощью этого языка программирования. Проблема заключается в следующем: есть целый ряд мероприятий, которые проводятся в течение дня, а некоторые зависят от других.
Я отмечаю, что проводил небольшое исследование связанных списков, но я сделал Я не могу найти ответ, чтобы связать узел на левой стороне с двумя узлами одновременно и наоборот.
Продолжая выполнять мою миссию, мы имеем приблизительно 953 процесса. Нам сказали, что действие остановит один из этих процессов, и нам нужно было выяснить, какой из процессов, которые от него зависят, будет затронут. Файлы конфигурации процесса имеют следующий дизайн (файл run.conf)
run.conf
DEPENDENCIES = (if you have them)
EXECUTE = /sources/run.sh
Где / sources / run. sh выполняется, когда предыдущие процессы находятся в ЗАВИСИМОСТЬ успешно завершены (если есть зависимости)
Здесь я приведу пример файла conf. Затем я покажу вам, что я сделал до сих пор и что я хотел бы сделать
activity1.conf
DEPENDENCIES =
activity2.conf
DEPENDENCIES = activity1
activity3.conf
DEPENDENCIES = activity1
activity4.conf
DEPENDENCIES =
activity5.conf
DEPENDENCIES = activity2 activity3 activity4
activity6.conf
DEPENDENCIES = activity5
activity7.conf
DEPENDENCIES =
activity8.conf
DEPENDENCIES = activity7
Я собрал словарь и сумел написать что-то вроде этого (проблема, которую я вижу, заключается в том, что я должен рекурсивно go между parent-> process-> parent или child-> process-> child до go на протяжении всего определенного процесса, но я хотел применить то, что из связанных списков ):
["process": "activity1", "parents": [], "children": [activity2 activity3]]
["process": "activity2", "parents": [activity1], "children": [activity5]]
["process": "activity3", "parents": [activity1], "children": [activity5]]
["process": "activity4", "parents": [], "children": [activity5]]
["process": "activity5", "parents": [activity2 activity3 activity4], "children": [activity6]]
["process": "activity6", "parents": [activity5], "children": []]
["process": "activity7", "parents": [], "children": [activity8]]
["process": "activity8", "parents": [activity7], "children": []]
С этим мне удалось найти первый уровень как отца, так и детей каждого процесса. Например, в файле конфигурации 6, я хотел бы что-то вроде
То, что у меня есть словарь будет выглядеть так, но моя потребность в этом узле должна быть что-то вроде этого, показывая мне ваш путь вверх и вниз по течению:
Но если я остановлюсь, например, в упражнении 3, я смогу представить что-то вроде это, его родители и все его потомки, как я проиллюстрировал:
Исследуя онлайн, я нашел базу данных графа, которую я нашел NEO4J Я скачал ее в свой p c, и, очевидно, это было бы лучше, потому что я видел, что узлы и их отношения могут быть построены, находясь в любом узле, который я могу go в восходящем и нисходящем направлениях, и это будет вопрос графического отображения в python. Но я столкнулся с первой проблемой, которая заключается в том, что компания сомневается, что они установят ее только для того процесса, который мы хотим настроить.
Поэтому я продолжаю свой план А, который заключается в построении сети с Python и посмотрите, как я могу отобразить эти узлы так, чтобы в каком-то вебе мы могли на первый взгляд визуализировать процесс и сквозной путь, к которому он принадлежит.
Кто-нибудь делал что-то подобное, Любая идея, предложение или рекомендация?