Questions tagged «directed-acyclic-graph»

这是一种数学结构,由一组点或顶点以及一组连接器或边组成。边连接顶点,并且那些顶点是定向的。同样,也不允许循环或将顶点连接到顶点的有向边。

5
正拓扑排序
假设我有一个有向无环图,其顶点具有实数权重。我想找到DAG的拓扑顺序,其中对于拓扑顺序的每个前缀,权重的总和为非负数。或者,如果您更喜欢顺序理论术语,则我有一个加权偏序,并且我想要一个线性扩展,这样每个前缀的权重都为非负数。对这个问题了解多少?在多项式时间内是NP完全的还是可解的?

3
给定一个加权dag,是否有O(V + E)算法用其祖先权重之和替换每个权重?
当然,问题在于重复计算。对于某些类的DAG =树,甚至是串行并行树,这很容易做到。我发现唯一可以在合理的时间内在一般DAG上运行的算法是一种近似算法(摘要扩散),但是提高精度的位数是指数级的(我需要很多位)。 背景:此任务是在BBChop(http://github.com/ealdwulf/bbchop)概率计算中完成的(多次使用不同的“权重”),该程序用于查找间歇性错误(例如,贝叶斯版本的“ git bisect')。因此,有问题的DAG是修订历史。这意味着边的数量不太可能接近节点数量的平方,对于小于k的节点,它可能小于节点数量的k倍。不幸的是,我没有发现修订版DAG的任何其他有用属性。例如,我希望最大的三连接组件仅随着节点数的平方根增长,但可悲的是(至少在linux内核的历史上)它线性增长。


2
是否存在一种算法,可以在插入/删除的情况下有效维护DAG的连接信息?
给定有向无环图,是否有可能有效地支持以下操作?G(V,E)G(V,E)G(V,E) :确定 G中是否存在从节点 a到节点 b的路径isConnected(G,a,b)isConnected(G,a,b)isConnected(G,a,b)GGGaaabbb :在图形 G中从 a到 b添加一条边link(G,a,b)link(G,a,b)link(G,a,b)aaabbbGGG :删除从边缘一至 b在 ģunlink(G,a,b)unlink(G,a,b)unlink(G,a,b)aaabbbGGG :向G添加一个顶点add(G,a)add(G,a)add(G,a) :从G删除一个顶点remove(G,a)remove(G,a)remove(G,a) 一些注意事项: 如果我们不允许,现在看来,这将是很容易保持连通性信息,使用不相交集类型的数据结构。unlinkunlinkunlink 显然,可以使用深度或广度优先搜索,使用曲线图的幼稚基于指针的表示来实现。但这效率低下。isConnectedisConnectedisConnected 我希望所有这三个操作的摊销常数或对数时间。这可能吗?

1
混合图非循环性测试算法的参考?
混合图是可能同时具有有向边和无向边的图。通过忘记有向边的方向可以获取其下面的无向图,而在另一个方向上,可以通过为每个无向边分配一个方向来获得混合图的方向。如果一组边可以定向以形成有向环,则它在混合图中形成一个环。混合图只有且没有循环时才是非循环的。 这是所有标准,并且有许多发表的论文提到无环混合图。因此,必须知道以下用于测试混合图的非循环性的算法: 重复以下步骤: 删除任何没有传入有向边和入射无向边的顶点,因为它不能属于任何循环。 如果任何一个顶点都没有传入的有向边,但恰好有一个入射的无向边,那么任何使用无向边的循环都必须进入该边。用传入的有向边替换无向边。 当无法执行更多步骤时,请停止。如果结果为空图,则原始图必须一定是非循环的。否则,可以从剩下的任何顶点开始,在图形上回溯,在每一步中,通过向后进入输入边或沿着非指向性边(不是用来到达当前顶点的那个边)进行后退,直到看到重复的顶点。在该顶点的第一次和第二次重复之间(以相反顺序)跟随的边沿顺序在混合图中形成一个循环。 Wikipedia上有关混合图的文章提到了非循环混合图,但没有提及如何对其进行测试,因此我想向其添加有关此算法的一些信息,但是为此,我需要一个公开的参考。有人可以告诉我它(或其他任何用于测试非周期性的算法)在文献中出现的地方吗?

2
使用Eppstein算法找到k条最短路径
我试图找出如何路径图形P(G)P(G)P(G)在此根据Eppstein的算法纸作品,以及如何我可以重建kkk从最短路径sss到ttt与相应的堆结构H(G)H(G)H(G)。 至今: out(v)out(v)out(v)包含离去一个顶点的所有边vvv中的曲线图GGG其不是在最短路径的一部分GGG。使用此边缘而不是最短路径上的边缘时,它们由称为的“时间浪费”按堆排序δ(e)δ(e)\delta(e)。通过应用Dijkstra,我找到了从到每个顶点的最短路径ttt。 我可以通过边的长度+(头顶点的值(有向边指向的位置)-尾点的值(有向边开始的位置)来计算,如果>0>0> 0,则为不在最短路径上,如果=0=0= 0,则在最短路径上。 现在我建立一个2最小堆Hout(v)Hout(v)H_{out}(v)由heapifying边集out(v)out(v)out(v)根据它们的δ(e)δ(e)\delta(e)对于任何v∈Vv∈Vv \in V,其中,所述根outroot(v)outroot(v)outroot(v)只有一个孩子(=子树)。 为了构建 i插入ö ü 吨- [R ö ø 吨(v )在ħ Ť(Ñ Ë X 吨Ť(v ))在终端顶点开始吨。每次在插入时以某种方式触摸顶点时,都会用*标记。HT(v)HT(v)H_T(v)outroot(v)outroot(v)outroot(v)HT(nextT(v))HT(nextT(v))H_T(next_T(v))ttt∗∗* 现在我可以建立通过插入的其余部分ħ Ò ù 吨(瓦特)在ħ Ť(v )。在每个顶点ħ ģ(v )包含任一2从儿童ħ Ť(v )和1从ħ Ò ù 吨(瓦特)或0由第一和2从第二和是3堆。HG(v)HG(v)H_G(v)Hout(w)Hout(w)H_{out}(w)HT(v)HT(v)H_T(v)HG(v)HG(v)H_G(v)222HT(v)HT(v)H_T(v)111Hout(w)Hout(w)H_{out}(w)000222 借助我可以构建一个称为D (G )的DAG,其中包含一个顶点,该顶点来自H T(v )的每个带*标记的顶点,以及每个来自H o u t(v )的非根顶点。HG(v)HG(v)H_G(v)D(G)D(G)D(G)∗∗*HT(v)HT(v)H_T(v)Hout(v)Hout(v)H_{out}(v) 的根在d (ģ )被称为ħ (v )和它们连接到它们所属的顶点到根据ö …

3
位置受限的拓扑排序的复杂性
我得到个顶点的DAG作为输入,其中每个顶点都另外加上了一些。GGGnnnxxxS(x)⊆{1,…,n}S(x)⊆{1,…,n}S(x) \subseteq \{1, \ldots, n\} 甲拓扑排序的是一个双射从顶点到,使得对所有,,如果有从一个路径到在然后。我想决定是否存在的拓扑排序,这样对于所有,。GGGfffGGG{1,…,n}{1,…,n}\{1, \ldots, n\}xxxyyyxxxyyyGGGf(x)≤f(y)f(x)≤f(y)f(x) \leq f(y)GGGxxxf(x)∈S(x)f(x)∈S(x)f(x) \in S(x) 这个决策问题的复杂性是什么? [注意:显然这是在NP中。如果查看允许的顶点/位置对的图,并且成对之间的无向边会因为违反顺序而发生冲突,那么您会得到一个不连续的图,每个图最多要选择一对,每个图最多要选择一对位置,每个顶点最多一对-似乎与3维匹配有关,但我看不出使用此特定问题的附加结构是否仍然困难。

1
销毁DAG中的所有长路径可能有多昂贵?
我们考虑具有一个源节点sss和一个目标节点 DAG(有向无环图)ttt;允许连接同一对顶点的平行边。甲kkk - 切口是一组边,其除去的破坏所有sss - ttt路径长于kkk ; 较短的sss - ttt路径以及较长的“内部”路径(不在sss和之间的路径ttt)都可以生存! 问题: 是否足以从DAG中删除最多约1/k1/k1/k的边缘部分,以破坏所有长于k的sss - ttt路径? kkk 也就是说,如果e(G)e(G)e(G)表示在边缘的总数GGG,确实然后每DAG GGG具有kkk -馏分用至多约边缘?两个例子:e(G)/ke(G)/ke(G)/k 如果所有 -路径具有长度,则 -馏分用边缘存在。之所以成立,是因为必须有不相交的切口:仅根据节点与源节点的距离对它们进行分层。 吨> ķ ķ ≤ È (ģ )/ ķ ķ ķ ģ 小号sssttt>k>k> kkkk≤e(G)/k≤e(G)/k\leq e(G)/kkkkkkkGGGsss如果G=TnG=TnG=T_n是一个传递比赛(一个完整的DAG),则也是一个kkk -馏分用 边缘存在:修复一个 拓扑顺序对节点,将节点分成 个长度为连续间隔,并删除连接相同间隔节点的所有边;这将破坏所有的 -路径长于。 ≤k(n/k2)≈e(G)/k≤k(n/k2)≈e(G)/k\leq k\binom{n/k}{2} \approx e(G)/kn / k s t kkkkn/kn/kn/kssstttkkk 备注1:天真的尝试给出一个肯定的答案(我也曾尝试过)将试图表明每个DAG必须具有大约不相交的切口。不幸的是,示例2展示了这种尝试可能会严重失败:通过一个很好的论点,David …

1
DAG中边缘标记问题的精确算法
我正在实现某些系统部分,需要一些帮助。因此,我将其定义为图问题以使其独立于域。 问题:我们得到有向无环图。在不失一般性的前提下,假设恰好具有一个源顶点和恰好一个宿顶点t;让P表示集合来自所有定向通道的小号到吨在ģ。我们也给出了一组顶点r \ subseteq V。问题是将非负整数权重分配给G的边缘,因此,当且仅当它们包含R中相同的顶点子集时,P中的任何两个路径才具有相同的权重G=(V,E)G=(V,E)G=(V,E)GGGssstttPPPssstttGGGR⊆VR⊆VR \subseteq VGGGPPPRRR。(路径的权重是其边缘的权重之和。)中路径的权重范围应尽可能小。PPP 目前,我的方法似乎无效。我只是在寻找一些参考文献或一些好的见解。否则,任何其他事情都将受到赞赏。 编辑:这个问题有硬度证明吗?紧凑编号是否始终存在?

2
词典上标记的DAG的最小拓扑排序
考虑以下问题:给定输入有向无环图,从到总阶数(例如整数)的某个集合的标注函数,在哪里被问到计算字典序最小的拓扑排序的来讲。更确切地说,一个拓扑排序的是的枚举作为,使得对于所有,每当有来自路径到在λ V 大号&lt; 大号 ģ λ ģ V v = v 1,... ,v Ñ我≠ Ĵ v 我v Ĵ ģG=(V,E)G=(V,E)G = (V, E)λλ\lambdaVVVLLL&lt;L&lt;L<_LGGGλλ\lambdaGGGVVVv=v1,…,vnv=v1,…,vn\mathbf{v} = v_1, \ldots, v_ni≠ji≠ji \neq jviviv_ivjvjv_jGGG,那么我们必须有。这样的拓扑排序的标签是的元素序列,其顺序为。这些序列(都具有长度)的字典顺序被定义为如果存在某个位置使得和对于所有。请注意,可以将中的每个标签分配给多个顶点这一事实(否则问题就不那么容易了)。i&lt;ji&lt;ji < jl = λ (v 1),… ,λ (v n)| V | 升&lt; LEX 升'我升我&lt; 大号升' 我升Ĵ = 升' Ĵ Ĵ &lt; 我š …

4
针对DAG的定向NP难题
树宽用于衡量图形与树的接近程度。在有界树宽的图上,几个NP难问题是可解决的。如果问题仍然困扰着树,那么树的宽度就无法挽救我们。这是我以前的问题之一的动机,该问题要求在树上进行NP难题。 有几种树宽的有向版本,用于测量有向图与有向无环图(DAG)的接近程度。在DAG上仍难解决的哪些定向问题是什么?一个有针对性的问题是必须使用边缘的方向。例如,哈密顿路径是有向的问题,而顶点覆盖不是。我上一个问题的答案之一给出了产生难以解决的问题的一般方法。DAG有这样的配方吗?

1
正拓扑排序,取2
这是大卫·爱普斯坦最近提出的问题的后续行动,也是出于同样的问题。 假设我在其顶点上有实数权重。最初,所有顶点均未标记。我可以通过以下方式更改标记顶点的集合:(1)标记没有未标记的前任顶点的顶点,或者(2)标记没有标记的后继顶点的顶点。(因此,标记顶点的集合始终是部分顺序的前缀。)我想找到一系列标记/取消标记操作,并以所有标记的顶点结尾,这样标记顶点的总权重始终为非负数。 找到这样一系列操作有多难? 与David的问题不同,甚至不清楚该问题是否在NP中。原则上(尽管我没有任何示例),每个合法举动序列都可以具有指数长度。我能证明的最好的问题是PSPACE。 取消标记操作实际上是不必要的吗? 如果存在有效的移动序列,是否必须有一个永不取消标记顶点的有效移动序列?为肯定会使这个问题等同于大卫。另一方面,如果有时需要取消标记,则应使用一个较小的(恒定大小)示例来证明这一点。

1
枚举顶点标记DAG的拓扑种类
令是有向无环图,令是将每个顶点映射到某个有限字母的标签的标记函数。写中,拓扑排序的是一个双射从至(即,的排序中的序列),以使得无论何时然后(即,如果存在从到的边G=(V,E)G=(V,E)G = (V, E)λλ\lambdav∈Vv∈Vv \in Vλ(v)λ(v)\lambda(v)LLLn:=|V|n:=|V|n := |V|GGGσσ\sigma{1,…,n}{1,…,n}\{1, \ldots, n\}VVVVVV(v,v′)∈E(v,v′)∈E(v, v') \in Eσ−1(v)&lt;σ−1(v′)σ−1(v)&lt;σ−1(v′)\sigma^{-1}(v) < \sigma^{-1}(v')vvvv′v′v'然后出现在序列中的之前)。所述标签的是单词在。vvvv′v′v'σσ\sigmaσ(1)⋯σ(n)σ(1)⋯σ(n)\sigma(1) \cdots \sigma(n)LnLnL^n 给定,我想高效地枚举的拓扑类型的标签。枚举拓扑类别的标签的复杂性是什么?当然,由于可能有成倍的指数增长,我想研究复杂度与输出大小或延迟的关系。特别是,可以使用多项式延迟执行枚举吗?(甚至是持续的延迟?)(G,λ)(G,λ)(G, \lambda)GGG 在所有顶点都带有不同标签的情况下(或者,等价地,顶点被自己标记为),我知道标签可以在固定的摊销时间内枚举,其结果是枚举位姿的线性扩展(与枚举DAG的拓扑种类相同)。但是,当任意标注顶点时,可能会出现大量拓扑类别具有相同标签的情况,因此,您不能仅枚举拓扑类别并计算其标签以获得一种枚举标签的有效方法。用poset术语,标记的DAG可以看作是标记的GGG{1,…,n}{1,…,n}\{1, \ldots, n\}GGG(G,λ)(G,λ)(G, \lambda) 姿态,而我找不到这些的枚举结果。 由于这里有其他问题的答案,我已经知道一些相关问题的难度。特别是,我知道在字典上找到最小的标签是NP-hard。我也知道,确定给定的标签是否可以通过某种拓扑排序实现是NP难的(从这个问题的难度:给定候选标签序列,求出的拓扑排序,其中每个顶点必须出现在某个位置正确的标签出现在sssGGGsss)。但是,我不认为这会暗示枚举的难度,因为您可以按自己喜欢的任何顺序枚举(不一定是字典顺序),并且枚举算法无法有效地确定标签是否可以实现,甚至具有恒定的延迟(因为可能首先要成指数地列举许多序列)。 请注意,枚举第一个标签显然很容易(只要进行任何拓扑排序即可)。要列举的另一个标签比,您可以通过施加一些元素进行的得到一些位置列举其中尝试每个:和,并检查是否具有处于位置的拓扑排序,这可以在PTIME中清楚地完成。但是随着您输出越来越多的标签,我不确定如何概括这种方法。ssssssvvvVVVi∈{1,…,n}i∈{1,…,n}i \in \{1, \ldots, n\}si≠λ(v)si≠λ(v)s_i \neq \lambda(v)vvvģ v 我iiiGGGvvviii

1
标记DAG的Dilworth定理的推广
一个反链在一个DAG 是一个子集是成对可达,即,不存在顶点的,使得是从可到达的在。根据偏序理论中的迪尔沃斯定理,可以知道,如果DAG没有大小为反链,则它可以分解为最多不相交的链,即有向路径。甲⊆ V v ≠ v ' ∈ 甲v v ' é ķ ∈ Ñ ķ - 1(V,E)(V,E)(V, E)A⊆VA⊆VA \subseteq Vv≠v′∈Av≠v′∈Av \neq v' \in Avvvv′v′v'EEEk∈Nk∈Nk \in \mathbb{N}k−1k−1k-1 现在,我对带标签的DAG感兴趣,即每个顶点在一些固定的有限标签中带有标签 DAG 。给定一个反链,我可以定义它的标记的大小作为标签的出现最小数量在,即。在这种情况下,是否有迪尔沃思定理的类似物?换句话说,如果我假设DAG没有标记大小为k的反链\ in \ mathbb {N}λ (v )Σ 甲⊆ Vvvvλ(v)λ(v)\lambda(v)ΣΣ\SigmaA⊆VA⊆VA \subseteq V甲分钟一个&Element; Σ | { v ∈ 甲| λ (v )= 一个} …

3
通过网络进行有效的DAG比较
在分布式版本控制系统(例如Mercurial和Git)中,需要有效地比较有向无环图(DAG)。我是一名Mercurial开发人员,对于听到有关讨论比较两个DAG的时间和网络复杂性的理论工作,我们将非常感兴趣。 有问题的DAG由记录的修订构成。修订由哈希值唯一标识。每个修订依赖于先前修订的零(初始提交),一个(普通提交)或多个(合并提交)。这是一个示例,一个接一个a地e进行修订: a --- b --- c --- d --- e 当某人仅拥有部分历史记录并想要检索缺失的部分时,图形比较就会出现。想象一下,我只好a到c并提出x和y基于c: a --- b --- c --- x --- y 在Mercurial中,我将进行hg pull下载d和e: a --- b --- c --- x --- y \ d --- e 目标是确定图何时具有许多(例如,超过100,000个)节点d并e有效地进行识别。效率兼顾 网络复杂度:传输的字节数和所需的网络往返数 时间复杂度:交换变更集的两个服务器完成的计算量 典型的图形将很狭窄,几乎没有像上述的平行轨迹。还有通常只有叶节点少数的(我们称之为水银他们的头),如e与y以上。最后,当使用中央服务器时,客户端通常会有几个不在服务器上的变更集,而服务器可以为客户端提供100多个新变更集,具体取决于客户端上一次从服务器上拉出的是谁。一个非对称解决方案是首选:集中式服务器应该比较给客户做一点计算。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.