查找图中所有完整的子图

2023-12-20

是否有已知的算法或方法来查找图中的所有完整子图?我有一个无向、未加权的图,我需要找到其中的所有子图,其中子图中的每个节点都连接到子图中的每个其他节点。

有现成的算法吗?


这被称为派系问题 http://en.wikipedia.org/wiki/Clique_problem;这很困难,而且一般来说是 NP 完全的,是的,有很多算法可以做到这一点。

如果图具有额外的属性(例如,它是二分图),那么问题就会变得相当容易,并且可以在多项式时间内解决,但否则就非常困难,并且仅对于小图才能完全解决。

来自维基百科

在计算机科学中,派问题是指与在图中查找特定完整子图(“派”)相关的任何问题,即每对元素相连的元素集。

派系问题包括:

  • 找到最大派(具有最多顶点数的派),
  • 在加权图中找到最大权重团,
  • 列出所有最大派系(无法扩大的派系)
  • 解决测试图是否包含大于给定大小的团的决策问题。

这些问题都很困难:派系决策问题是 NP 完全问题(卡普的 21 个 NP 完全问题之一),找到最大派系的问题既是固定参数棘手的又难以近似,并且列出所有最大派系可能需要指数时间,因为存在具有指数数量的最大派系的图。然而,针对这些问题的算法可以在指数时间内运行,或者在多项式时间内处理某些更专门的输入图。

See also

  • 布隆-克博什算法 http://en.wikipedia.org/wiki/Bron%E2%80%93Kerbosch_algorithm
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

查找图中所有完整的子图 的相关文章

  • 代码高尔夫:弗罗贝尼乌斯数

    Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 编写最短的程序来计算给定正数集的弗罗贝尼乌斯数 弗罗贝尼乌斯数是不能写成集合中数字的正倍数之和
  • 让人们在电影院就座

    这是基于我读到的一篇关于大型软件公司提出的谜题和面试问题的文章 但它有一个转折 一般问题 有一种算法可以让人们在电影院就座 让他们直接坐在朋友旁边 而不是敌人旁边 技术问题 给定一个 N M 网格 用 N M 1 项填充网格 每个项目都有一
  • 额外的函数/方法定义是否会增加程序的内存占用?

    在 C 中 定义不使用的附加方法或函数是否会导致更大的内存占用或更慢的执行速度 基本上 我在一个类中有几种实用程序调试方法 这些方法对于该类的正常使用都不是必需的 如果从未使用过这些定义 是否保留这些定义会在内存占用或速度方面产生影响吗 例
  • 我在哪里可以学习编写词法分析器的基础知识?

    我想学习如何编写词法分析器 我的大学课程有一项作业 我们必须编写一个解析器 以及与之配套的词法分析器 但这是给我们的 没有任何指导或反馈 超出了标准 所以我并没有真正从中学到很多东西 搜索这个主题后 我只能找到相当高级的文章 这些文章重点关
  • 强连通分量有什么用?

    我发现了几种可以解释的算法how在有向图中找到强连通分量 但没有解释why你会想要这样做 强连通分量有哪些应用 您应该查看 Coursera 上 Tim Roughgarden 的算法简介课程 对于他所讨论的每一种算法 他都会解释其一些应用
  • 为什么要使用继承? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 链表、数组和硬件内存缓存

    虽然之前有人问过关于链表与数组的问题 但答案大多归结为我们大多数人在某些时候可能已经学到的东西 列表擅长插入和删除 数组擅长随机访问 现在 像 Bjarne Stroustrup 这样受人尊敬的人已经argued https www you
  • 语法分析和语义分析有什么区别?

    据我了解 Parser由词法分析 句法分析和语义分析三个阶段组成 Lexical 它将我的输入分割成标记 例子 123 100 0 gt 123 100 0 语法 它将研究标记并检查它们是否彼此有意义 我遇到的问题是理解最后阶段的 语义解析
  • 有没有办法获取正在运行或新打开的资源管理器窗口的 IExplorerBrowser 接口以供后续 BrowseToXXX 调用?

    这么问是因为在上一个问题 https stackoverflow com questions 6220899 answer 6221898我是指向 IExplorerBrowser 的指针 但是它创建了一个子窗口 而我想模拟资源管理器的 查
  • 查找二维数组中的最短路径(Javascript)

    我正在尝试实现一种算法 该算法在以下二维数组中找到最短路径 从左上角到右下角 A A A B A B B B B B A B A A A A B B B B A A A A A 规则是 路径必须在 A 和 B 之间交替 输出必须是一个数字
  • 基本编程/算法概念[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我即将 与其他程序员一起 在我的高中
  • 是否有可能比 O(n log n) 更好地计算数字列表的中位数?

    我知道可以在 O n 中计算数字列表的平均值 但是中位数呢 有没有比排序 O n log n 和查找中间元素 或者如果列表中有偶数个项目则两个中间元素的平均值 更好的算法 是的 您可以在 O n 时间内 确定性地 完成此操作 http ww
  • Node2vec 的工作原理

    我一直在读关于node2vec https cs stanford edu jure pubs node2vec kdd16 pdf嵌入算法 我有点困惑它是如何工作的 作为参考 node2vec 由 p 和 q 参数化 并通过模拟来自节点的
  • 带回溯的 Dijkstra 算法?

    In a 相关主题 https stackoverflow com questions 28333756 finding most efficient path between two nodes in an interval graph
  • 在二维平面中找到距离 P 点最近的 K 个点

    资料来源 亚马逊面试问题 解决方案1制作大小为 K 的堆并按最小距离收集点O NLogK 复杂 解决方案2 取大小为 N 的数组并按距离排序 应该使用QuickSort 霍尔修改 取前 K 点作为答案 这太复杂了 NlogN 但可以优化到近
  • 删除networkx有向图中入度和出度等于1的所有节点

    假设我在 NetworkX 中制作了一个有向图 import networkx as nx G nx DiGraph n A B C D E F H I J K L X Y Z e A Z Z B B Y Y C C G G H G I I
  • 如何将 igraph 中的边标签与边分开?

    我想移动边缘标签的位置 使其不在其上方 这是一个小例子 g lt graph empty n 3 g lt graph c 1 2 3 2 1 3 directed T E g weight lt c 3 2 5 plot g edge l
  • 如何为抽象工厂创建的类设置特定属性?

    是否可以让具体工厂使用抽象工厂模式为其创建具有特定类型参数的具体类 或者由各自的具体工厂创建的不同具体类是否需要具有相同的字段 例如 在下图中 您将如何使用客户端 应用程序 给出的不同参数集来实例化 WinButton 和 OSXButto
  • 如何在Matlab中绘制网络?

    我有一个矩阵AMatlab中的维数mx2每行包含两个节点的标签 显示网络中的直接链接 例如 如果网络有4矩阵的节点A可能A 1 2 1 3 2 1 2 4 3 2 4 1 4 2 其中第一行表示有一个链接来自1 to 2 第二行表示有一个链
  • 以任意顺序匹配可选捕获组

    在解析用户输入的许多情况下 用户有机会向输入添加几个可选标志 这些标志应该以任何顺序接受 如何使用正则表达式对其进行解析 以便每个标志都位于它自己的捕获组中 如果存在 例如 有一个必需的令牌a 然后是 3 个可选标记 可以按任何顺序出现b

随机推荐