通过一个顶点删除创建一个常规图形

时间:2018-05-08 16:37:06

标签: c algorithm graph

问题:给定一个无向图,使用邻接列表实现。我正在寻找一种算法,通过一个顶点删除将其转换为规则图(每个顶点具有相同的度数)。

例如:

example

1 个答案:

答案 0 :(得分:1)

迭代所有顶点,按度数划分它们。

如果所有都具有相同的度数,则只有在存在具有度数n - 1的顶点时才有可能。

如果你可以将它们划分为2个不同的度数集:让我们用较低的度数调用X,用较高的度数调用Y.让我们调用dg(X)和dg(Y)这些顶点的程度

  • 如果其中一个分区只有1个顶点且其度数为0或另一个分区中的顶点数量,则将其删除
  • 如果dg(Y)-dg(X)> 1,它不可能
  • 如果dg(Y) - dg(X)= 1且| Y | = dg(X),检查X中的顶点是否连接到Y的所有顶点并将其删除。
  • 如果dg(Y) - dg(X)= 1且| X | = dg(Y),检查Y中的顶点是否连接到X的所有顶点并将其删除。
  • 2分区无法使用任何其他情况

如果你可以分成3组:

  • 其中一个必须只有一个顶点,并且该顶点必须连接到另一个最高度集的所有顶点,并且不能连接到剩余的一个顶点。其他最高度集和剩余集之间的度差也必须是1

任何其他情况,不可能