当前位置: 首页 > 知识库问答 >
问题:

有向无环图中多重请求的有效求根

黄泰宁
2023-03-14

我正在努力寻找一个时间复杂度为o(m log n)+o(n)的问题的解决方案。

假设有向无环图有n个节点和m个请求,每个节点最多有一个父节点。在时间=0时,图为空。请求有两种类型:添加边(u,v)或查找顶点为u的子图的根。只有在不破坏图的任何属性的情况下才应该添加边(它应该保持无循环,每个节点最多仍然应该有一条传入边)。

for child in children[v]:
    root[child] = u
    children[u].append(child)
children[v] = []

这样,检查添加edge是否破坏属性或返回root需要O(1)个时间。然而,更新过程的总复杂度为O(n^2)(在这样的图中最多可以有n-1条边,每个u的子图[u]的大小最多为n-1)。总复杂度为O(m+n^2)。

你能就如何解决这个问题提出一些想法吗?我假设一定存在一个O(m log^2n+n)解。

共有1个答案

公羊浩气
2023-03-14

这可以通过使用路径压缩的联合查找来实现,但不使用按等级的联合,因为能够控制哪个节点仍然是其组件的根是很重要的。时间复杂度为O(m log n+n)。

 类似资料:
  • 问题内容: 我正在学习AngularJS,并尝试构建从Wordpress获取数据的前端系统。 在后端,一切似乎都已正确设置,当我使用jQuery ajax请求时,它可以毫无问题地获取数据。 但是,当我尝试使用AngularJS做同样的事情时,它不起作用。我正在尝试使用以下代码复制ajax请求: 如果我将其记录下来,它将输出0。我缺少什么? 谢谢你的帮助。 PS控制器如下所示: 问题答案: 在ang

  • 输入: 生成的树: 输出: 规则: < li >输入代码总是会产生一个有向无环图 < li >每个节点都有一些wait_time值 < li >完整的图形遍历应该计算整个图形的总等待时间 < li >必须并行遍历所有独立节点(或者至少时间计算应该是这样) < li >如果两个不同节点的wait_time发生重叠,则将考虑最大值,遍历时间较短的节点将移动到下一个独立节点 < li >除了根和叶(可以

  • 我试图通过PHP实现AAA Cooper的SOAP API。当我将XML请求发送到http://wsportal.aaacooper.com:8188/wsportal20/wsGenEst,它通过邮递员,工作正常,但使用CURL时,它不会返回任何内容 我使用直接url(来自wsdl文件),因为他们的wsdl文件似乎已损坏,并且无法使用:http://wsportal.aaacooper.com:

  • 在图论中,如果一个有向图从任意顶点出发无法经过若干条边回到该点,则这个图是一个有向无环图(DAG图)。 因为有向图中一个点经过两种路线到达另一个点未必形成环,因此有向无环图未必能转化成树,但任何有向树均为有向无环图。 一、简介 有向无环图是图论的重要概念,我们将首先介绍图的概念和定义,随后介绍有向图,再逐渐引至有向无环图(DAG)。值得一提的是,当DAG用于指代模型时一般指向贝叶斯网络。 一个图G

  • 你有一辆2005年本田雅阁,油箱里还剩50英里(最大重量)。在50英里半径范围内,你可以访问哪些麦当劳的位置(图节点)?这是我的问题。 如果你有一个加权有向无环图,你如何找到在给定的权限制内可以访问的所有节点? 我知道Dijkstra的算法,但我似乎找不到任何关于它在最小路径问题之外的用途的文档。在我的例子中,我们没有特别想结束的节点,我们只想在不超过最大权重的情况下尽可能多地结束。似乎您应该能够

  • 给定:有权边的有向无环图,其中一个节点可以有多个父节点。 问题:对于根节点的每个子节点,找到一条从该子节点到某个叶的最小代价(权重之和)路径。一个节点只能存在于一个这样的最小开销路径中。 图表示例: > 这个逻辑有道理吗?我担心这种消除冲突的迭代方式可能对某些图不收敛。例如,在重新计算节点2的最小路径时,如果现在发现2->5是最小路径,并且假设在第一次迭代期间,节点5在其他节点的最小路径中使用,那