Как программировать и визуализировать N-арное дерево в Python - PullRequest
0 голосов
/ 30 апреля 2020

Как программировать и визуализировать 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, я хотел бы что-то вроде

enter image description here

То, что у меня есть словарь будет выглядеть так, но моя потребность в этом узле должна быть что-то вроде этого, показывая мне ваш путь вверх и вниз по течению:

enter image description here

Но если я остановлюсь, например, в упражнении 3, я смогу представить что-то вроде это, его родители и все его потомки, как я проиллюстрировал:

enter image description here

Исследуя онлайн, я нашел базу данных графа, которую я нашел NEO4J Я скачал ее в свой p c, и, очевидно, это было бы лучше, потому что я видел, что узлы и их отношения могут быть построены, находясь в любом узле, который я могу go в восходящем и нисходящем направлениях, и это будет вопрос графического отображения в python. Но я столкнулся с первой проблемой, которая заключается в том, что компания сомневается, что они установят ее только для того процесса, который мы хотим настроить.

Поэтому я продолжаю свой план А, который заключается в построении сети с Python и посмотрите, как я могу отобразить эти узлы так, чтобы в каком-то вебе мы могли на первый взгляд визуализировать процесс и сквозной путь, к которому он принадлежит.

Кто-нибудь делал что-то подобное, Любая идея, предложение или рекомендация?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...