以可逆方式将有向图转换为无向图


10

我正在寻找一种算法,以可逆的方式将有向图(有向图)转换为无向图,即,如果我们得到无向图,则该有向图应该是可重构的。我知道这将以无向图具有更多顶点为代价,但是我不介意。

有谁知道该怎么做或可以提出任何建议?提前致谢。


更新:关于下面的AdrianN的答案。这可能是一个很好的起点,但我认为它不能以当前形式运行。这是为什么我不这样认为的图像: 在此处输入图片说明


DW发表评论后进行更新:我认为图的顶点是未标记的。如果一个解决方案涉及到标注顶点(就像AdrianN一样),那么无论标注如何完成,它都应该给出相同的(同构)无向图。我对带有标记顶点的图的“同构”定义是,存在与这两个图相关的标记的排列,但是我不确定未标记图的确切定义。


1
我认为这个问题太广泛了。你有什么限制?
adrianN 2014年

我现在真的想不出任何限制。我猜有任何一种方法可以将有向图的信息编码为无向的,只要它是可逆的。我想我想到的是最简单的无向图类型,因此我正在寻找一种不对顶点或边使用颜色的解决方案。
Heterotic

我认为您应该在问题中指定“同一图形”的含义。您是说顶点被标记,还是顶点未被标记?您是说两个都相同,还是两个图是同构的?听起来您的意思是后者。您确定这是您的应用程序中的要求吗?如果你被允许保留的标签,这个问题变得更容易和AdrianN的回答可以(因为边缘3 4 是不一样的边缘1 '2 ' ))。 (V,E)(3,4)(1,2)
DW

2
结合您的更新进入正题。在任何时间点,SE帖子应自上而下可读,而不必担心历史记录;那是单独存档的。
拉斐尔

Answers:


6

e=(x,y)v1e,,v5eexv1ev1ev2ev1ev3ev3ev4ev4ev5ev3ey

v5ee=(x,y)v4ev4ev3ev3ev1ev2ev1ev2ev1exv3ey(x,y)v1e,,v5e


7

David Richerby的回答(被接受)是好的。

我按照他的指示写了一个简单的示例有向图,希望对您有所帮助。

有向图a <-> b,c-> a,b-> c

(我会将其发布为对David答案的评论,但我没有所需的声誉点。)


1
图形表示形式是对原始答案的巨大改进。感谢您将其发布为答案而不是评论。
OrangeSherbet

1
当我看着数学论文中的正式解释或公式时,我总是感到不知所措。我只需要克服这种焦虑,然后慢慢看每个句子-向上看我不熟悉的事物。然后,我写下了这样的示例以确保我理解。到最后,我总是对这么简单这么长感到震惊,并且对我花了多少精力来理解它感到恐惧。有时候我觉得自己来自不同的星球。很高兴能帮助您更快地理解它。一旦看到它,就很容易。
威廉·威廉姆斯

2

DG

  1. 编号的节点D
  2. GGD
  3. 对于每一个边缘,在的边缘添加到如果否则该边缘添加到uvDGu<vG
  4. G是和的不交集并GG

在进行脱节联合时,必须注意使其可逆。

例


这是一个很好的尝试,它与我想出的答案是一致的,但是由于反向不是唯一的,所以它不起作用。例如,图O-> OOO将被转换为图OO-OO-OOOO,但是后者也可能来自有向图O-> O O-> OOO,因此该过程不可逆。
Heterotic

我添加了一张图片使其更加清晰。
adrianN 2014年

-1

身份函数呢?即,每个有向图可以看作是具有相等大小的分区的无向二分图,反之亦然。


我假设你的意思是用图对图进行编码。这是行不通的,因为它不能应付双向边缘,并且如果是反转所有边缘的结果,则和具有同构编码,但本身不一定是同构的。G=(V,E)(V×{0,1},{(u,0,v,1)(u,v)E})GGGG
David Richerby 2014年

-1

这是一个刺路:

将方向信息替换为无向图中的其他顶点。换句话说,使用无向图中的附加顶点可以“编码”方向信息。例如,对于具有至少一条边的每个有向顶点,添加等于1 +“传入”边的数目的无向顶点的数目。边缘为零的顶点保持不变。

要执行相反方向,请为每个具有0个或多于1个边的顶点创建一个有向顶点。(只有一个边缘的顶点是“方向编码”顶点)。连接另一个多边顶点的每个边都是有向图中的连接。现在是棘手的部分,我无法解释一种算法(但我认为存在):您必须仅给出每个顶点的传入箭头数,才能推断出箭头的方向。

我认为棘手的部分有点像打扫雷:-)找出炸弹(传入边缘)的位置,并为每个方块(顶点)指定相邻炸弹的数量。


什么是“有向顶点”?无论如何,这不是唯一可解码的。假设顶点附有一串度数为1的顶点,以及一堆其他度数的顶点。您如何判断它们中有多少代表从度1的顶点进入的边,以及有多少正在对入度进行编码?无论如何,解决Minesweeper都是NP难题,解决方案并不总是唯一的,而且当不一定将正方形排列在一个不错的网格中时,解决方案也不是完全可以解决的。xx
David Richerby 2014年

“有向顶点”是指有向图中的顶点(与等效的无向图相反)。您可以将“真实”边缘与“度数编码”边缘区分开,因为只有“度数编码”顶点具有单个边缘。这就是我描述中使用“ 1 +”的原因。我将对您的扫雷风格的“棘手部分”说几句。我不知道它完全等同于扫雷车,但我可以相信我可能只是在路上踢了斗:-)
亚伦

另外,当我初读它时,我不太了解您的解决方案,但是现在知道它是如何工作的。聪明!
亚伦

令为原始图中没有输入边且只有一个输出边的顶点。在编码图中,出现为一个顶点,正好有一条边从其中出来。您如何区分那种1度顶点和那种在度内编码的1度顶点?xx
David Richerby 2014年

我认为现在是“ minesweeper-moot”,但我的想法是采用有向边并将其转换为和。所以将有两个边,而不是1。任何只有1个边的顶点都是度编码。 有两个度数编码顶点,表示度数为1。在这个简单的示例中,解码很容易,因为我们知道只有两个顶点,它们的度数分别为0和1,因此(x,y)(x0,x),(x,y),(y,y0)(y,y1)xy(x,y)
Aaron
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.