【问题标题】:4 cycles in undirected graph [closed]无向图中的4个循环[关闭]
【发布时间】:2013-02-01 14:49:11
【问题描述】:

我有一个以邻域矩阵形式给出的无向图。我需要找到 4 个周期的计数:包含 4 个边的周期。如果您对算法有任何想法,请帮助我。

【问题讨论】:

  • 嗨,欢迎来到 StackOverflow。为了让我们更容易回答您的问题,如果您提供更多信息会有所帮助。你试过什么?你得到了什么错误?您能否提供一个简短的、独立的示例来说明您所看到的问题?请参阅sscce.orgwhathaveyoutried.comtinyurl.com/so-hints,了解如何写出好问题的详细信息。
  • 感谢您的 cmets。我曾尝试使用 3 个循环来计数,但这需要很长时间。我需要更优化的解决方案。将来我会以防万一你的cmets关于写作问题。

标签: c++ algorithm graph cycle


【解决方案1】:

简单(非最优)方法伪代码:

output = []
skip_nodes = []
for node in input_graph:
    if node in skip_nodes:
        continue
    for path in deep_search(start=node, max_depth=4):
        if len(path) == 4 and path[1] == path[4]:
            output.append(path)
            skip_nodes.append(path[2], path[3], path[4])
return output

【讨论】:

  • Michal,但在这种情况下会有重复,是吗?
  • @user1982807:你是对的。修复它很容易。
  • 你认为除以 4 会得到正确的结果吗?非常感谢。
  • @user1982807:我想是的。但是,它可能不会更快。这取决于图形的大小和密度。
【解决方案2】:

将矩阵自身乘以 4 次,据我所知,非 0 对角线项将参与 4 边循环(此处可能有错误的标准,但您可以进一步挖掘)

http://www.math.vt.edu/people/brown/doc/cycles_dm9875.pdf

【讨论】:

  • 谢谢,我认为这是解决我的问题的好方法。让我对此进行调查,看看它是否是最佳的。
  • 如果你找到一个支持稀疏矩阵的优化矩阵库,你可以让它快速工作。如果将矩阵乘法视为数字表,则可以归结为递归。另外-您的图表是无向的,因此您的矩阵将是对称的。这也可以用来优化乘法
  • 我必须不使用稀疏矩阵。但谢谢你的想法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-24
  • 2018-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多