如何减少图中的相交边数?


10

我正在图编辑器上工作。图表显示与连接器(边缘)连接的2D形状(节点)。

我想添加一个操作,在选择了节点的情况下,它们“解缠结”:如果可能的话,它会重新放置它们以减少交叉边缘的数量(如果必须用弯曲点绘制边缘就可以了) 。

因此,我想要一个图算法,在给定一个(拓扑)图嵌入及其节点子集的情况下,仅修改那些节点上的嵌入(拓扑),以最大程度地减少交叉边缘的数量。

通过阅读有关顶点图的信息并浏览Cabello和Mohar(2013),我认为这个问题是NP-难的。因此,对于任何给定参数值都具有已知的多项式时间复杂度的参数化算法(例如,相交边的数量),我将感到满意。这似乎是可行的,但我个人很难提出这样的算法。

问题:

  • 我在哪里寻找这样的算法?
  • 是否存在?
  • 在现有软件中?
  • 这样的操作是否有任何重要的实践经验?(理论上看起来不错的东西在实践中可能并不那么好,反之亦然。)

(我不确定在哪里最好问这个问题:在这里,在StackOverflow还是MathOverflow上?)


1
我认为这个问题可能更适合StackOverflow,但是我确实注意到那里的类似问题的答案令人不满意。我将给出一个理论上可以帮助您的答案,但是最好是将您的问题移植到那里。
mdxn

这里正在做非常深入的工作:complang.tuwien.ac.at/cd/ebner/ebner05da.pdf
Dschoni

谢谢!不仅如此,而且它显然是该问题的非常可读的呈现形式,并且是对一些知名方法的调查。
reinierpost

Answers:


9

如您所见,计算绝对最小交叉数为。绘制图形的过程至少应如此艰难。NP-hard

这个问题所构成的问题实际上比上述问题更加艰巨和复杂。您正在考虑具有一定大小和形状的图节点,同时还要限制结果的大小(区域)。另外,需要尚未确定的美学概念。显然,我们需要对此进行启发,在一般情况下不使用绝对最小值。在一般情况下,在此类应用程序中遇到的节点数可能不大。对于小尺寸,绘制图形的最小边缘交叉版本可能是可行的。

资源:
您可能对以下资源特别是第一个资源感兴趣:

还有很多其他资源。这些应该可以帮助您入门。

其他想法和意见:

这是解决与节点的形状和大小有关的问题的想法。给定图形(无限小的节点),请在“推”或弯曲边缘的同时扩展每个节点(例如,使用样条线同时限制接近度)。您需要使用其他阻碍它的边缘和节点来执行此操作,这可能会引发连锁反应。研究如何有效地计算平衡(例如分子结构)。如果无法使节点的形状达到所需的大小,请缩放整个图。

用户可能会喜欢随机算法的结果。他们可以多次使用您的功能,直到获得他们喜欢的东西。在这种情况下,请避免重复计算(无需再次计算交叉数)。


我将拓扑添加到我的问题中是为了避免对美学的讨论。这很重要,但是我认为它们对基本问题的影响不大-我认为可以调整节点的拓扑结构(即哪些节点被哪些其他节点包围)之后,在一个单独的步骤中进行处理。
reinierpost 2013年

我15年前就开始使用Graphviz。我大约每周为各种图形使用一次。我对它的结果不太满意,而且我知道很难做得更好。
reinierpost

我经常访问graphviz.org,并阅读了他们所引用的一些论文。但是我还没有回答这个特定的问题,而且我的工作描述不是要熟悉文学。这就是为什么我在这里问。
reinierpost

不过,感谢您的参考-我注意到这仍是最新研究
reinierpost 2013年

我要尝试的第一件事是大致基于Shabbeer女士的想法的简单算法(因此不一定有用)。再次感谢。
reinierpost 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.