graph-algorithm相关内容
在一本书中提到“ Dijkstra的算法仅适用于有向无环图”。 看来,只要没有负周期,该算法也适用于有周期的图。 编辑1: 这本书“ Grokking Algorithms”-Aditya Bhargava。 第7章。第122页。 解决方案 我是 Grokking Algorithms 的作者。抱歉,此错误-只要是正权重周期,Dijkstra的算法确实即可在具有周期的图形上
..
克隆树的算法非常简单,我们可以为此进行预遍历。有没有有效的算法来克隆图? 我尝试了一种类似的方法,并得出结论,我们需要维护新图中已添加的节点的哈希图,否则将出现重复的节点,因为节点可以有很多父母。 解决方案 只需进行深度优先搜索并在访问每个节点时将其复制即可。如您所说,您需要某种方式将原始图中的节点映射到相应的副本,以便可以正确连接循环和交叉边的副本。 此图也足以记住DFS中已
..
我有一个循环加权有向图,目标是删除路径中存在的循环。 例如:路径如下, 来自|到|重量 ------------------ a-> b | 0.5 a-> c | 0.5 c-> e | 1 b-> d | 1 d->一个| 0.25 d-> f | 0.75 图中的循环由路径d-> a引入。谁能建议一种算法,通过调整其他节点的权重来消除周
..
Wiki页面说 任何无向图都可以通过选择其顶点的总顺序并将每个边缘从顺序中较早的端点定向到较晚的端点而制成DAG。 但是我不知道如何获得无向图的总阶。我应该使用DFS吗?如果是这样,我将如何进行? 更多信息:我正在处理一个有向源和一个汇的无向图。我正在尝试引导这些边缘,以便按照边缘方向从源到接收器。 解决方案 总的顺序基本上只是将所有顶点按某种顺序排列-将其视为用1到|
..
在一次采访中,我被要求打印二叉树的边界。例如。 1 / \ 2 3 / \ / \ \ 4 5 6 7 / \ b 8 9 10 答案将是:1、2、4、8、9、10、7、3 我给出了以下答案。 第一种方法: 我使用了 Bool 变量来求解以上问题。 void printLeftEdges(Binary
..
我想用(a)为1的 Hamming distance 的单词列表构建图形,或者将不同的是,如果两个单词仅与一个字母不同( lo l -> lo t ),则将两个单词连接起来。 所以给定 words = [大声笑,很多,机器人] 图形将为 { 'lol':['lot'], 'lot':['lol','bot'], 'bot':['lot'] } 最简单
..
我不确定这是否是问这个问题的合适平台。 但我的问题陈述是:我有一家书店, x没有客户(x很大)。 客户可以告诉我一本书是好是坏(不推荐)。 我有一个内部逻辑将书籍合并在一起,因此,如果客户说一本书不好,他就是说类似的书籍也是不好的,不要向他展示。 我不得不把那些书藏起来。客户之间也可以进行互动,并且彼此之间具有相互信任的程度。 当客户A说Book X1不好时,就会出现这种情况。因
..
我得到了有向图,其中有n个节点,边为具有向量1(0,-1)的向量(每个向量的长度为m)的权重。我想找到从一个节点到另一节点(我们可以多次访问节点)的任何路径(或者说这种路径不存在),这样它的权重之和就等于零向量。我当时在考虑蛮力回溯算法,但不能保证它会结束。我们可以以n和m的方式限制这种路径的长度吗? n = 8,m = 2的图形示例 路径示例 解决方案 我们可以通过指出如果存在这样的路径
..
我已经写了该类作为开始构建“我的算法”的开始,但是我可以在控制台上看到“ Before”一词,但是看不到“ After”! #include // ===========================================
..
假设我们得到的有向图 G =(V,E)具有可能的正和负边长,但没有负循环。设 s∈V 为给定的源 顶点。如果从s到s的最短路径,如何设计在时间 O(k(| V | + | E |))中运行的单源最短路径问题的算法其他任何顶点最多需要 k条边? 解决方案 O(k(| V | + | E |))方法: 我们可以使用经过一些修改的Bellman-Ford算法 创建数组D []以存储从节
..
假定一个函数采用 s (原边六边形), f (目标六边形)和 n (路径的长度)值作为参数,并输出所有长度为n的可能路径的列表。要显示问题,请检查下图: 让我们说我们的起源( s )是红色的虚线十六进制(2,3)和目标( f )是蓝色的虚线的(5,2)。我们希望分5步到达蓝色虚线的十六进制( n = 5 )。还应考虑到,如果步行到达特定的十六进制,则在下一步中也可能会停留在该十六进制中。换句
..
在《坚果壳算法》(第二版)中对深度优先搜索(DFS)的解释中,作者使用了3种状态表示顶点,例如 white (未访问),灰色(有未访问的邻居),黑色(已访问)。 两个状态(白色和黑色)足以进行遍历。为什么要添加灰色状态? 解决方案 这是Da算法的一种变体,显示在 Coerman等人的算法简介。 当您使用3种颜色代替时只有2个,它为您提供了更多信息。拳头,它使您可以在算法运行期间
..
在我正在学习的算法课程中,据说深度优先搜索(DFS)比宽度优先搜索(BFS)更加节省空间。 为什么? 尽管它们基本上是在做相同的事情,但在DFS中,我们堆叠了当前节点的后继者,而在BFS中,则是在排队后继者。 解决方案 您的困惑源于以下事实:您显然假设可以通过用LIFO堆栈替换FIFO队列来从BFS算法获得DFS算法。 这是一个流行的误解-事实并非如此。无法通过将BFS队
..
如何找到(迭代)有向图中从给定节点到所有节点的所有循环? 例如,我想要这样的东西: A-> B-> A A-> B-> C-> A 但不是: B-> C-> B 解决方案 我在搜索中找到了此页面,由于周期与强连接的组件并不相同,因此我一直进行搜索,最后,我找到了一种有效的算法,其中列出了所有有向图的(基本)循环。它来自唐纳德·B·约翰逊(Donald
..
我正在OpenStreetMap地图上编写快递/后勤仿真,并且已经意识到,如下图所示的基本A *算法对于大型地图(例如大伦敦)来说不够快. 绿色节点对应于放置在开放集合/优先级队列中的节点,由于数量巨大(整个地图大约为1-2百万),因此需要5秒钟左右的时间才能找到所描绘的路线.不幸的是,每条路线100ms大约是我的绝对极限. 当前,节点既存储在邻接列表中,又存储在空间100x100 2
..
说我有一个MxN二进制矩阵.它不一定是稀疏的.我对查找数组中所有直角三角形的顶点的坐标感兴趣.直角三角形的意思是:假设矩阵中的1或True值是三角形的顶点,而0或False元素为空.那么直角三角形是在视觉上形成直角三角形的布置.顶点是指对应于三角形直角的顶点.例如.在以下5x6数组中: 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0
..
对于我当前的项目,我想使用图形工具库,因为它们声称是最快的: https ://graph-tool.skewed.de/performance .我有一些算法(最短路径等)可以在非常大的网络上运行,所以速度越快越好! 第一个问题:这是“最快"的说法吗? ;) 在尝试构建适合我需求的图形工具图形时,我发现无法以有效的方式访问顶点属性.也许我错过了什么? 我的问题是,现在可以以更有
..
我需要使用BFS遍历有向无环图(DAG). 我正在通过REST API使用neo4j,因此与neo4j进行通讯的主要方式是使用Cypher. 使用Cypher,我可以从起始节点检索所有路径的集合,并从中得出BFS遍历. 我想知道是否有使用Cypher进行BFS遍历的更简单方法.我期望的输出将是一组节点集. 解决方案 您难道不可以只按长度排序生成的路径,也许取每个路径的最后一个节
..
哪种算法可用于生成具有多个成功路径的迷宫,如果该算法是某些知名算法的修改版本,则说明或添加链接. 我正在使用2D阵列A来存储迷宫的配置. 假设迷宫的大小为n * n,那么从A [0] [0]到A [n-1] [n-1]应该有多个路径. 解决方案 此算法应该能够生成从起点到目标具有独特的无环路径的迷宫: 从一个空的迷宫(或一块坚硬的岩石)开始,只有起点和终点…… 将迷
..
我必须解决以下问题:编写一个程序,给定一个包含成本和两个顶点的有向图,找到给定顶点之间的最低成本走动,或者在图中存在负成本周期时显示一条消息.该程序应使用矩阵乘法算法. 我实现了定义的矩阵乘法算法:伪矩阵乘法,其中加法运算被最小化和加法运算相乘.但是通过这样做,我最终得到了Floyd-Warshall算法.而且,我不能轻易地以此方式确定负成本周期的存在. 我认为我的算法与真实矩阵乘法图
..