首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >算法的迭代版本?

算法的迭代版本?
EN

Stack Overflow用户
提问于 2015-02-09 09:22:00
回答 1查看 1.1K关注 0票数 1

算法是一种列出图的所有最大团的方法。我最近成功地实现了这个算法,只是为了好玩。缺点是算法是递归的,因此只能在小图上运行,直到堆栈溢出。

应该有可能使该算法完全迭代。考虑一下维基百科的基本版本(没有旋转)。该算法的迭代版本在伪码中会是什么样的呢?有什么描述吗?

我正在想象一个堆栈数据结构来模拟递归。我也应该有一个循环,在这个循环中,我测试P和X的空值,但是我没有看到一个完整的答案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-11 20:50:22

递归版本在维基百科中给出。是这样的:

代码语言:javascript
复制
BronKerbosch1(R, P, X):
   if P and X are both empty:
       report R as a maximal clique
   for each vertex v in P:
       BronKerbosch1(R ⋃ {v}, P ⋂ N(v), X ⋂ N(v))
       P := P \ {v}
       X := X ⋃ {v}

为了模拟递归,我们只需要使用堆栈跟踪这三个变量:

代码语言:javascript
复制
BronKerbosch(P):
    S := empty stack
    S.push({}, P, {})
    while S is not empty:
        R, P, X := S.pop()
        if P and X are both empty:   
            report R as a maximal clique            
        if P is not empty:
            v := some vertex in P
            S.push(R, P \ {v}, X ⋃ {v})
            S.push(R ⋃ {v}, P ⋂ N(v), X ⋂ N(v))
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28406314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档