У меня есть большой ориентированный ациклический граф, который я хотел бы визуализировать в растровое изображение.
В идеале я бы хотел, чтобы все корневые узлы были вверху изображения, а все листовые узлы - внизу, т.е. все ребра графа были направлены вниз.
Существует ли хороший алгоритм для определения координат всех узлов, который удовлетворяет этим ограничениям и дает хорошую визуализацию?
Советую использовать Gephi .
Эта программа может делать все, что вы хотите, особенно макеты графиков!
Байесовские сети предъявляют аналогичные требования. Вы можете поискать алгоритмы для байесовских сетей. Эта статья , например, может быть полезной.
Посмотрите коллекцию программного обеспечения Graphviz . Он содержит несколько программ для визуализации графиков.
Самый простой способ - записать график на диск в одном из текстовых форматов Graphviz. Затем выполните одну из программ рендеринга и загрузите полученное изображение в свое приложение.