Qt 图形绘制

Ale*_*ing 5 c++ qt drawing graph

我最近开始开发一个需要我可视化图形的项目,我正在寻找一种不错的算法来解决这个问题。

我正在绘制的图表模型数据流,因此合理的绘图可以是从左到右或从上到下。当然,它们是有向的并且大多是非循环的——也就是说,可能有一些向后的边缘,但这些比例很小,如果使用 DAG 作为输入基本上会在计算顶点位置之前删除这些边缘,我很乐意在计算顶点位置之前删除这些边缘。提高运行时间。

我在这个项目中使用 C++ 和 Qt,并且已经非常熟悉 Qt 提供的弹性节点和图表场景示例。如果有人看过 KCacheGrind,我想做的就是类似于它的调用图可视化。

我当前的尝试包括一种原始算法,该算法根据每个节点与根的最小距离将其分配给一个层,然后尝试以最小化边缘交叉的方式将节点定位在每个层内。我无法正确实现最后一部分,我相信这个问题是 NP-Hard 的。

我正在寻找的是关于过去使用什么类型的算法来有效解决这个问题的指导。