graph-algorithm相关内容

二部图中的最大赋权独立集

给定的二部图。每个顶点都有一些整数值-权重。 是否可以在多项式时间内找到此图中的最大权重independent vertex set? 如果存在这样的解决方案,则此问题的算法是什么? 推荐答案 在任何图中,独立集的补集都是vertex cover,反之亦然,所以你的问题等价于寻找图中最小权的顶点覆盖。后者可以使用最大流技术解决: 引入一个超源S和一个超宿T。通过以其权重为 ..
发布时间:2022-08-13 17:23:53 其他开发

图中的最长路径

给定一个顶点从0到n-1的无向图,写一个函数,它将找到顶点递增的最长路径(按边数)。 您建议使用哪种方法来解决此难题? 推荐答案 您可以将原始图形转换为有向无环图,方法是将每条(无向)边替换为指向编号较大的节点的有向边。 然后您将得到以下结果:https://www.geeksforgeeks.org/find-longest-path-directed-acyclic-g ..
发布时间:2022-08-13 17:18:02 其他开发

求任意图的最大权独立集的启发式算法

MWIS(最大权重独立集)是一个NP-完全问题,因此如果P!=NP,我们无法在足够好的时间复杂度内找到解决方案。 我正在寻找一种算法,可以在一个良好的时间复杂性内在任意图形中找到MWIS的近似值。我当前正在处理一个具有128个节点和3051条边的连通图。 我找到了this paper,但它似乎只适用于具有唯一MWIS的二部图。 如果有人能帮我一些参考,或者更好的工作算法的伪代码, ..

优先级队列与链表Java

我正在解决BFS问题。我使用了PriorityQueue,但我得到了错误的答案,然后我使用了LinkedList,我得到了正确的答案。我找不出它们之间的区别。这两个代码都在这里。为什么两个答案不同? Code1: LinkedList q=new LinkedList(); q.add(src); dist[src]=0; ..
发布时间:2022-04-15 20:17:58 Java开发

深度优先搜索列出指向所有末端节点的路径

您好,我有一棵树,我想在其中获取从初始(根)节点到所有叶子的路径。 我找到了几个算法,它们列出了图中任意给定两个节点之间的(所有)路径(例如,这样的问题: Graph Algorithm To Find All Connections Between Two Arbitrary Vertices) 对于二叉树,也存在一个算法 http://techieme.in/print-all-paths ..
发布时间:2022-04-15 20:14:58 Java开发

你如何制作一个可以模拟二维网格的邻接矩阵?

基本上就是想知道用Python语言做这件事的好方法是什么,我以前也用过一种暴力的方法做过,但它不是直观的方法。因此,如果有人能帮忙,那就太好了。 推荐答案 对于逐行网格,邻接矩阵如下所示: 在一行中,相邻的数字形成两条平行的对角线。这占据了列&×;列子矩阵,沿着大矩阵的对角线重复。 相邻的行形成一条对角线。这占据了两条对角线,偏移量正好在行子矩阵的外面。 row 1 ro ..

UNION-FIND或DFS:哪一个更适合查找连接组件?

UNION-FIND和DFS均可用于查找连接性。哪种情况下哪种更好? 推荐答案 联合查找算法最适合等价关系发生变化的情况,即需要对您的分区集执行“联合”操作。给出一个固定的无向图,等价关系根本不会改变--边都是固定的。OTOH,如果你有一个添加了新边的图,DFS不会剪切它。虽然DFS的速度比Union-Find快得多,但在实践中,可能的决定因素是您试图解决的实际问题。 tl;DR ..
发布时间:2022-04-15 20:03:24 其他开发

在DAG中寻找哈密顿路径的算法

我指的是斯凯耶纳关于算法的书。 测试图G是否包含Hamiltonian path的问题是NP-hard,其中哈密尔顿路径P是指恰好访问每个顶点一次的路径。与哈密尔顿循环问题不同,G中从P的结束顶点到起始顶点不一定要有一条边。 给定一个有向无圈图G(DAG),给出一个O(n + m)时间算法来测试它是否包含哈密顿路。 我的方法 我计划使用DFS和Topological sorti ..

为什么允许对角线移动会使A*和曼哈顿距离不可接受?

我对使用A*和曼哈顿距离度量的网格中的对角移动有些困惑。有没有人能解释一下为什么使用对角线移动会使其不可接受?在对角运动中,到达目标状态所需的步骤比上下、左下、右少,难道不会找到更好的最优解吗?还是我错过了什么? 推荐答案 正如贝克的评论所表明的那样,曼哈顿距离将高估一个州与其对角可访问的州之间的距离。根据定义,超出估计距离的启发式是不允许的。 现在,到底为什么会这样? 假 ..

生成具有幂律度分布的无标度网络

我正在尝试生成具有以下条件的几个无标度网络: 度分布服从相同指数的幂律 完全相同的节点数。 我需要构建至少60对这样的对,并为每个对运行模拟。 为此,我需要一种方法来生成正好由n个节点组成的具有上述属性的网络。 现在,我可以使用NetworkX Python库,用下面的代码生成遵循给定指数的幂律的度分布图 import networkx as nx import m ..
发布时间:2022-02-21 15:50:37 Python

找到范围的最大相交子集

如果你有一组范围,比如下面这个简单的例子…… [[12, 25], #1[14, 27], #2[15, 22], #3[17, 21], #4[20, 65], #5[62, 70], #6[64, 80] #7] ...您如何计算 最大相交子集(不太清楚如何表达它,但我的意思是“相交并具有最高基数的范围的子集")并确定交叉度(该子集中范围的基数)? 从逻辑上讲,我可以解决它,并且可以 ..
发布时间:2022-01-17 18:20:33 其他开发

从集合中的数字计算目标数字

我正在处理一个家庭作业问题,它问我这个问题: 给定一个有限的数字集合和一个目标数字,使用基本数学运算(add、sub、mult、div)和使用集合中的每个数字,找出该集合是否可用于计算目标数字恰好一次(所以我需要用尽这组).这必须通过递归来完成. 所以,例如,如果我有一套 {1, 2, 3, 4} 目标 10,然后我可以使用 ((3 * 4) - 2)/1 = 10. 我正在尝 ..
发布时间:2022-01-17 09:42:57 其他开发

解决基于版本范围依赖的算法

我有一个依赖算法的问题,依赖类似于maven依赖,除了它是基于严格的版本范围的. 例如: 组件A,版本1依赖:组件B,版本1~3;和组件 C,版本 2~3组件 D,版本 1 依赖于:组件 B,版本 2~4;和组件 C,版本 1~2 现在,当我想安装组件 A,版本 1 和组件 D,版本 1 时,我想获得依赖项.因为它们都依赖于组件 B、C,所以我需要一个正确的算法来获得正确版本的 B 和C ..
发布时间:2022-01-15 22:57:51 其他开发

使用 Hadoop/MapReduce 查找连接的组件

我需要为庞大的数据集找到连接的组件.(图是无向的) 一个明显的选择是 MapReduce.但我是 MapReduce 的新手,我没有时间自己学习并编写代码. 我只是想知道是否有任何现有的 API,因为它是社交网络分析中非常常见的问题? 或者至少如果有人知道任何可靠的(经过试验和测试的)来源,我至少可以自己开始实施? 谢谢 解决方案 我为自己写了一篇博客: ht ..

使用 map reduce 遍历带有 bfs 的图的有效方法是什么?

这是一个招聘人员问我的面试问题,问题基本上是计算所有节点到每个节点的最短路径,我的解决方案如下 启动所有可能的边(没有反向 A - B 与 B-A 相同) 每个节点将在下面表示 (src, cost, current_list, dest) ,src 和 dest 基本上是我们之前启动的所有可能的边 地图: 对于你遍历的每条边,你复制你的元组并添加当前遍历节点到成本和当前列表. ..

段树、区间树、二叉索引树和范围树有什么区别?

段树、区间树、二叉索引树和范围树的区别在于: 关键思想/定义 应用程序 更高维度的性能/订单/空间消耗 请不要只给出定义. 解决方案 所有这些数据结构都用于解决不同的问题: 段树存储区间,并针对“这些区间中的哪些区间包含给定点"查询进行了优化. 区间树也存储区间,但针对“这些区间中的哪些区间与给定区间重叠"查询进行了优化.它也可以用于点查询——类似于线段树. 范围 ..

什么使数据结构递归?

我正在阅读有关 递归数据类型 的内容,其中引用了以下内容: 在计算机编程语言中,递归数据类型(也称为递归定义、归纳定义或归纳数据类型)是一种用于可能包含其他相同类型值的值的数据类型 我知道链表和树可以是递归数据类型,因为它包含相同数据结构的较小版本,就像树可以有子树一样. 然而,我真的很困惑,因为固定大小的数组不是也包含子数组吗?哪个还是一样的类型? 谁能用例子解释一下是什 ..
发布时间:2022-01-01 18:29:06 其他开发

我们可以使用 Union-Find 数据结构检测有向图中的循环吗?

我知道可以使用 DFS 和 BFS 检测直接图中的循环.我想知道我们是否可以使用 Union-Find 检测有向图中的循环? 如果是,那么如何?和 如果我们不能,那为什么? 解决方案 不,我们不能使用 union-find 来检测有向图中的循环.这是因为无法使用不相交集(执行联合查找的数据结构)来表示有向图. 当我们说'a union b'时,我们无法确定边的方向 a ..

Python Dijkstra k 最短路径

我正在尝试制作一个小型公共交通路线应用程序. 我的数据以以下结构表示: graph = {'A': {'B':3, 'C':5},'B': {'C':2, 'D':2},'C':{'D':1},'D': {'C':3},'E': {'F':8},'F':{'C':2}} 地点: graph dict key 是一个节点 subdict key 是两个节点之间的边 subdict ..
发布时间:2021-12-24 14:51:46 Python