我最近开始开发一个需要可视化图表的项目,我正在寻找一个合适的算法来解决这个问题。
我正在绘制的图表模拟数据流,因此合理的绘制方式可以是从左到右或从上到下。当然,它们是有向的并且大部分无环--也就是说,可能会有一些反向的边,但这只占很小的比例,如果有一个DAG作为输入会显著提高运行时,我将很乐意在计算顶点位置之前移除这些。
我正在使用C++和Qt进行开发,并已经非常熟悉Qt提供的弹性节点和示例图场景。如果有人看过KCacheGrind,我所尝试做的类似于其调用图形可视化。
我的当前尝试包括一种原始算法,该算法根据每个节点到根的最小距离将每个节点分配到层中,然后尝试在每个层内以尽量减少边交叉的方式定位节点。我无法正确地实现最后一部分,我认为这个问题是NP难的。
我要寻找的是关于过去如何有效解决这个问题的算法方面的指导。
我正在绘制的图表模拟数据流,因此合理的绘制方式可以是从左到右或从上到下。当然,它们是有向的并且大部分无环--也就是说,可能会有一些反向的边,但这只占很小的比例,如果有一个DAG作为输入会显著提高运行时,我将很乐意在计算顶点位置之前移除这些。
我正在使用C++和Qt进行开发,并已经非常熟悉Qt提供的弹性节点和示例图场景。如果有人看过KCacheGrind,我所尝试做的类似于其调用图形可视化。
我的当前尝试包括一种原始算法,该算法根据每个节点到根的最小距离将每个节点分配到层中,然后尝试在每个层内以尽量减少边交叉的方式定位节点。我无法正确地实现最后一部分,我认为这个问题是NP难的。
我要寻找的是关于过去如何有效解决这个问题的算法方面的指导。