graph-algorithm相关内容

什么是BFS的时间复杂度取决于图的表示?

$ b 一个邻接矩阵 $ b $我想知道BFS的时间复杂度是多少b 邻接列表 边缘列表 与其空间复杂度相同吗? 解决方案 使用邻接矩阵实现的BFS的复杂度将为O(| V | 2 ) 。而且,当由邻接列表实现时, O(| V | + | E |)。 为什么在Adjacency Matrix的情况下更是如此? 这主要是因为每次我们想要找到与给定顶点'U'相邻的边时,我们 ..

检测图中的所有圆圈

我有一个存储在Map数据结构中的有向图,其中关键字是节点的ID ,[value]是关键节点指向的节点的nodeId的数组。 p> 映射 map = new HashMap(); map.put(“1”,new String [] {“2”,“5”}); map.put(“2”,new String [] { ..
发布时间:2018-05-25 17:21:54 Java开发

检测邻接矩阵中的周期

让 A 成为图的邻接矩阵 G =(V,E)。如果节点 i 和 j A(i,j)= 1 $ c>与边相连, A(i,j)= 0 否则。 我的目标是了解 G 是否是非循环的。周期的定义如下: i 和 j 连接: A(i,j)= 1 j 和 k 连接: A(j,k)= 1 li> k 和 i 连接: A(k ,我)= 1 我已经实现了一个导航矩阵的解决方案,如下所示: 从边缘 ..
发布时间:2018-05-25 17:18:01 其他开发

使用Hadoop / MapReduce查找连接组件

我需要为一个庞大的数据集找到连接的组件。 (图为无向) 一个明显的选择是MapReduce。但是我是MapReduce的新手,很短的时间就可以拿起它并自己编写代码。 我只是想知道是否有任何现有的API for因为这是社交网络分析中的一个非常常见的问题吗? 或者至少有人知道任何可靠的(经过测试的)源代码,至少我可以使用它开始执行自己? 谢谢 解决方案 它适用于我自己: ..

是否有用于图形操作和算法的JavaScript库?

我需要的是纯数学图的JavaScript实现。要明确我不是指像 sigma.js 或 我正在寻找的库将实现以下功能: 创建有向图和无向图对象 创建加权和未加权的图元对象 添加/删除顶点和边/来自图 向顶点和边添加标签(即附加元数据) 实现基本图搜索和遍历算法深度优先搜索,广度优先搜索, Dijkstra算法, ..
发布时间:2018-05-25 17:16:45 前端开发

非递归深度优先搜索(DFS)使用堆栈

好的,这是我在Stack Overflow上的第一篇文章,我一直在阅读一段时间,真的很欣赏这个网站。我希望这是可以接受的要求。所以我一直在阅读“算法入门”(Cormen。MIT Press),我一直都在使用图算法。我一直在研究正式的算法,为广度和深度首先搜索细节非常详细。 以下是深度优先搜索的伪代码: p> DFS(G) -------------------- --------- ..
发布时间:2018-05-25 17:16:14 其他开发

最小直径生成树算法

给定一个无向图和连通图G,找到一个直径最小的生成树。 解决方案 singhsumit链接相关论文由 Hassin and Tamir 撰写,题为“关于最小直径跨度树问题“,但他的答案目前已被删除。本文的主要思想是在无向图中找到最小直径生成树可以通过找到图的“绝对1中心”并返回根植于其中的最短路径树来实现。 绝对1中心是指顶点或边上的点,距离最远顶点的距离最小。这可以通过Kariv和H ..
发布时间:2018-05-25 17:12:02 其他开发

在直接权重图中找出从节点A到节点B的所有简单路径,其权重之和小于某个值?

我有一个有向加权图G =(V,E),可能有循环。 我正在尝试确定完成任务的最佳时间有效算法:o在源和目标节点之间找到G中的所有简单路径,并且此路径中边的总权重小于某个值(为了方便起见我们将这个值表示为PATH_WEIGHT_LIMIT) 所有权重都是正数,并且可以是浮点数。所以,原型我的函数将会是: $ $ $ $ $ c $ def> find_paths(G,source,t ..

有效地找到所有连接的感应子图

有没有一种有效的(*)算法来查找连接的无向顶点标记图的所有连通(诱导)子图? ,在一般情况下,任何这样的算法可能具有O(2 ^ n)复杂度,因为对于一个团(Kn),存在2 ^ n个连接的子图。然而,我通常处理的图将会有更少的连接子图,所以我正在寻找一种方法来生成它们,而不必考虑所有2 ^ n子图并丢弃那些未连接的子图(如解决方案到这个问题)。 一种算法运行时间在解决方案的数量上是线性的 ..

证明给定一个查询点q,可以在时间O(log n)中检验q是否位于P内

我正在尝试解决第6章 - 点位置的书籍“计算几何算法和应用,3rd - de berg等”的一些练习。不幸的是,我不知道如何解决以下练习: 给定一个凸多边形P作为其排序顺序中的n个顶点的数组 沿着边界。显示给定一个查询点q,它可以在 时间O(log n)中进行测试,不管q是否在P内。 到目前为止我的想法: 我知道确定一个点是否位于O(log n)中的p的唯一方法是使用有向无环图 ..

最大的赏金来自两个穿过矩形网格的裸片

我正在努力解决类似于在GeeksforGeeks的问题,但不同: 给定一个矩形的2-d网格,每个单元格中存在一些硬币值,任务是从左上角和右下角开始角落向右或向右,从右下到左上左右,最大化拾取的硬币的总和。每个单元格中的硬币只能被选择一次。 链接中的解决方案是同时开始遍历,但这不会在这里工作。 我该如何解决?这种做法的强力方式是枚举所有路径,并选择两个最大化所选硬币总和的路径,但这 ..
发布时间:2017-05-12 20:06:37 软件设计

BFS与拓扑分类之间的关系

可以使用DFS(具有相反的边)并使用队列来完成拓扑排序。也可以使用队列完成BFS。在使用队列进行拓扑排序时,在使用BFS的队列时,元素的存储和检索方式之间存在任何关系。澄清将会有所帮助。谢谢。 解决方案 不,没有任何关系。我假设你是指从Kahn算法的维基百科/拓扑调整算法,维基百科注意: 注意,反映结果排序的非唯一性,结构S可以简单地是一个集合或一个队列或堆栈。 因此,用于拓扑 ..

为什么DFS和BFS的时间复杂度取决于图表的显示方式?

网站 http://web.eecs.utk .edu /〜huangj / CS302S04 / notes / graph-searching.html 描述了当使用邻接列表时,DFS和BFS具有复杂度O(V + E),并且如果使用邻接矩阵,复杂度为O(V 2 )。为什么是这样? 解决方案 在这两种情况下,运行时间取决于迭代给定给定节点。使用邻接列表,运行时间与输出边的数量成正比。由于 ..

如何查找图形是否是二分的?

我一直在试图了解二分图。据我理解,它是一个图G,可以分为两个子图U和V.So U和V的交集是一个空集合,并联是图G. 我试图找到一个图是否是二分的或不使用BFS。仍然不清楚我怎么可以使用BFS找到这个。 让我们说我们有如下定义的图。 a:e,f b:e c:e,f,h d:g,h e:a ,b,c f:a,c,g g:f,d h:c,d 我在这里需要 ..

稀疏图和密集图之间的区别是什么?

我正在阅读在计算机内存中表示图形的方法。我看到它是通过邻接列表和邻近矩阵的密集图表示稀疏图的理想选择。但我想了解稀疏图和密集图之间的主要区别? 解决方案 密集图是边缘数量接近最大边缘数量的图形。 稀疏图是边缘数量接近最小边数的图形。稀疏图可以是断开图表。 ..
发布时间:2017-04-03 12:58:34 其他开发

D3.js用于力导向图的算法是什么?

我有兴趣知道什么算法D3用来在库中实现力导向图特性。阅读了 Kobourov的总结的武力历史导向图让我有点不知道什么是在库中使用的确切的算法或方法(算法/启发式组合)。 D3 API参考 a>说Barnes-Hut算法用于计算作用于物体的电荷,O(N * log(N))操作。 Kobourov的文章提到Quigley-Eades算法,Hu的算法是使用Barnes-Hut的多级算法。其中一个在 ..
发布时间:2017-03-10 21:22:51 前端开发

Tarjan的强连接组件算法的功能实现

我进行了实施 Scala中的 Tarjan的SCC算法教科书版本。但是,我不喜欢的代码 - 这是非常必要/程序与大量的突变状态和记账索引。是否有更多的“功能”版本的算法?我相信命令式版本的算法隐藏的算法背后的核心思想不像功能版本。我发现其他人遇到相同问题使用此特定算法,但我无法将他的Clojure代码翻译成idomatic Sc​​ala。 注意:如果有人想实验,我有一个很好的设置生成随机图 ..