我有一个有向图G=(V,E),因为它目前非常混乱,所以我想重新绘制它。这是一个流程图,由于|V|>1000且每个V中的v都有多于1个出边,因此很难通过肉眼追踪。例如,左下角的节点与右上角的节点相连。如果这两个节点放在一起会更好。有太多的边缘,追踪每一个边缘是一种痛苦。
我可以访问并更改所有顶点的(x,y)坐标。我希望通过保持当前结构来重新绘制G,以更加友好的方式呈现。我认为最小化交叉边数可能是一个开始的方法。
是否有算法可以帮助我重新绘制这个图形?
我的问题是,如何为V中的每个v分配(x,y)坐标,以使其更好地组织和更易于跟踪和阅读?我应该如何正式表达这些要求?如果这是NP问题,我应该选择启发式算法吗? 这里是一个有点有组织的图形示例, 这里是一些混乱的东西(虽然比我处理的东西小得多)。
非常感谢任何帮助。谢谢。
编辑:我仍在寻找简明扼要的答案。我已经研究了平面直线和正交绘图方法,但我得到的是冗长的研究论文。我正在寻找的是实现、伪代码或至少让我开始的东西。
编辑2:我不是试图显示图形。算法的输入应该是由V和E组成的图G,输出应该是对于每个vi的{(xi,yi)}。
我可以访问并更改所有顶点的(x,y)坐标。我希望通过保持当前结构来重新绘制G,以更加友好的方式呈现。我认为最小化交叉边数可能是一个开始的方法。
是否有算法可以帮助我重新绘制这个图形?
我的问题是,如何为V中的每个v分配(x,y)坐标,以使其更好地组织和更易于跟踪和阅读?我应该如何正式表达这些要求?如果这是NP问题,我应该选择启发式算法吗? 这里是一个有点有组织的图形示例, 这里是一些混乱的东西(虽然比我处理的东西小得多)。
非常感谢任何帮助。谢谢。
编辑:我仍在寻找简明扼要的答案。我已经研究了平面直线和正交绘图方法,但我得到的是冗长的研究论文。我正在寻找的是实现、伪代码或至少让我开始的东西。
编辑2:我不是试图显示图形。算法的输入应该是由V和E组成的图G,输出应该是对于每个vi的{(xi,yi)}。