Questions tagged «graph-theory»

关于图的问题,通过边连接的节点的离散结构。流行的口味是具有边缘能力的树木和网络。

8
图形搜索:广度优先与深度优先
搜索图时,有两种简单的算法:广度优先和深度优先(通常通过将所有邻接图节点添加到队列(广度优先)或堆栈(深度优先)来完成)。 现在,一个相对于另一个有什么优势吗? 我能想到的: 如果您希望数据在图表内很远,那么深度优先可能会更早找到它,因为您可以非常快速地进入图表的较深部分。 相反,如果您希望数据在图表中靠前很远,那么广度优先的结果可能会更早。 我有什么想念的吗?还是主要取决于个人喜好?


1
在有向图中计算两个节点之间的简单路径的数量有多难?
有一个简单的多项式算法可以确定有向图中两个节点之间是否存在路径(只需使用例如深度优先搜索就可以进行常规图遍历)。 但是,令人惊讶的是,如果我们不想计算存在的数量而不想测试路径的数量,那么问题就会变得更加棘手。 如果我们允许路径重用顶点,那么有一种动态编程解决方案可以找到从s到t的n条边的路径数量。但是,如果我们只允许不重复使用顶点的简单路径,那么我能想到的唯一解决方案是路径的蛮力枚举,这具有指数时间复杂性。 所以我问 计算两个顶点之间的简单路径数难吗? 如果是这样,那是NP完全的吗?(我说这是因为从技术上讲这不是决策问题...) P中是否还有其他类似的难点问题?**

2
为什么C的void类型不同于Empty / Bottom类型?
维基百科以及我发现的其他来源都将C的void类型列为单位类型,而不是空类型。我觉得这很混乱,因为在我看来,它void更适合于空/底类型的定义。 void据我所知,没有价值观存在。 返回类型为void的函数指定该函数不返回任何内容,因此只能执行某些副作用。 类型的指针void*是所有其他指针类型的子类型。同样,void*在C中进行来回转换是隐式的。 我不确定最后一点是否可以作为void空类型的参数,void*或多或少是与无关的特例void。 另一方面,void它本身不是所有其他类型的子类型,据我所知,这是将类型作为底部类型的要求。
28 type-theory  c  logic  modal-logic  coq  equality  coinduction  artificial-intelligence  computer-architecture  compilers  asymptotics  formal-languages  asymptotics  landau-notation  asymptotics  turing-machines  optimization  decision-problem  rice-theorem  algorithms  arithmetic  floating-point  automata  finite-automata  data-structures  search-trees  balanced-search-trees  complexity-theory  asymptotics  amortized-analysis  complexity-theory  graphs  np-complete  reductions  np-hard  algorithms  string-metrics  computability  artificial-intelligence  halting-problem  turing-machines  computation-models  graph-theory  terminology  complexity-theory  decision-problem  polynomial-time  algorithms  algorithm-analysis  optimization  runtime-analysis  loops  turing-machines  computation-models  recurrence-relation  master-theorem  complexity-theory  asymptotics  parallel-computing  landau-notation  terminology  optimization  decision-problem  complexity-theory  polynomial-time  counting  coding-theory  permutations  encoding-scheme  error-correcting-codes  machine-learning  natural-language-processing  algorithms  graphs  social-networks  network-analysis  relational-algebra  constraint-satisfaction  polymorphisms  algorithms  graphs  trees 

4
查找图形直径的时间复杂度
找到图的直径的时间复杂度是 多少?G=(V,E)G=(V,E)G=(V,E) O(|V|2)O(|V|2){O}(|V|^2) O(|V|2+|V|⋅|E|)O(|V|2+|V|⋅|E|){O}(|V|^2+|V| \cdot |E|) O(|V|2⋅|E|)O(|V|2⋅|E|){O}(|V|^2\cdot |E|) O(|V|⋅|E|2)O(|V|⋅|E|2){O}(|V|\cdot |E|^2) 图的直径是图中所有顶点对之间的最短路径距离的集合中的最大值。GGG 我不知道该怎么办,我需要对如何解决这样的问题进行完整的分析。

3
找到无向图的最小割
这是我正在尝试解决的以往考试中的一个问题: 对于无向图 与正权w ^ (ē )≥ 0,我试图找到最小割。除了使用最大流最小割定理,我不知道其他方法。但是该图是无向的,那么我应该如何对其进行定向?我曾想过要在两端指向边缘,但是哪个顶点将成为源,哪个顶点将成为宿?还是有另一种方法来找到最小切割?GGG瓦特(É )≥ 0w(Ë)≥0w(e) \geq 0


2
逻辑最小剪切NP是否完整?
此问题是从Stack Overflow 迁移而来的,因为可以在Computer Science Stack Exchange上回答。 迁移 7年前。 逻辑最小割(LMC)问题定义 假设是一个无权有向图,和是两个顶点,并且可以从到达。LMC问题研究如何遵循以下约束,通过去除的某些边,使无法从到达:s t V t s t s GG=(V,E)G=(V,E)G = (V, E)ssstttVVVtttsssŤttsssGGG 删除的边的数量必须最少。 我们无法删除的任何顶点的每个出口边缘(即,没有带有外沿的顶点可以删除其所有外沿)。GGG 第二个约束称为逻辑删除。因此,我们寻求对的某些边进行逻辑上最小的去除,以使从不可到达。吨小号GGGŤttsss 解决方案尝试 如果我们忽略LMC问题的逻辑去除约束,它将是未加权有向图的最小割问题,因此它将是多项式可解的(最大流最小割定理)。GGG 如果我们忽略LMC问题的最小去除约束,这将是一个DAG再次解多项式:找一个顶点这样从可达和不是从可达。然后考虑路径,它是从到的任意路径。现在将路径视为的子图:答案将是子图每个出口边缘。显然,可以在多项式时间内通过DFS在中找到顶点。不幸的是,该算法通常无法正常工作ķ 小号吨ķ p 小号ķ p ģ p ķ ģkkkkkkssstttkkkpppssskkkpppGGGpppkkkGGG 对于任意有向图。 我试图通过动态编程技术解决LMC问题,但是解决问题所需的状态数却成指数增长。此外,我尝试减少一些NP-Complete问题,例如3-SAT,max2Sat,max-cut和LMC问题的派系,而这些LMC问题我没有设法找到。 我个人认为,即使是二进制DAG(即,没有节点的出度大于2的DAG),LMC问题也是NP-Complete 。GGG 问题 LMC问题是否在任意有向图中为NP完全?(主要问题)GGG LMC问题是否在任意DAG中为NP完全?GGG LMC问题是否在任意二进制DAG中为NP完全?GGG

1
有解决此顶点循环覆盖问题的有效算法吗?
此问题是从数学堆栈交换迁移而来的,因为可以在计算机科学堆栈交换中回答。 迁移 3年前。 我一直在尝试找到一种算法,以找到有向图G的最大顶点循环覆盖率-即,一组不相交的循环,其中包含G中的所有顶点,并具有尽可能多的循环(我们不考虑这里的各个顶点循环)。我知道找到最小顶点循环覆盖以及找到具有精确k个循环的顶点循环覆盖的问题是NP完全的。但是最大案例呢?GGGGGGkkk 虽然我通常会找到一个有趣的答案,但是我想用于此的图实际上受其构造的限制,因此即使问题是NP完全的,对于这些特定实例也可能会有多项式解。 我们有一个整数,元素l i的列表,我们将使用S,元素s i对L进行排序后再对其进行引用。举个例子:LLLlilil_iSSSsisis_iLLL L=(1,3,2,5,0,7,4,2,6,0,8,1)S=(0,0,1,1,2,2,3,4,5,6,7,8)L=(1,3,2,5,0,7,4,2,6,0,8,1)S=(0,0,1,1,2,2,3,4,5,6,7,8) L = (1, 3, 2, 5, 0, 7, 4, 2, 6, 0, 8, 1)\\ S = (0, 0, 1, 1, 2, 2, 3, 4, 5, 6, 7, 8) 该图的顶点将与对被识别,使得升我 = Ñ和š 我 ≠ Ñ。当且仅当s j = n时,该图具有有向边(n ,i )→ (m ,j …

1
k-clique问题NP是否完整?
此问题是从理论计算机科学堆栈交换迁移而来的,因为可以在计算机科学堆栈交换上回答。 迁移 7年前。 在这本有关图论中的派系问题的维基百科文章中,它一开始就指出在图G中找到大小为K的派系的问题是NP完全的: 还对群体进行了计算机科学研究:发现图形中是否存在给定大小的群体(群体问题)是NP完全的,但是尽管有这种硬度结果,但仍研究了许多用于寻找群体的算法。 但是在另一篇有关CS中的集团问题的 Wikipedia文章中, 它说它正在解决固定大小的问题k是P中的问题,它可以在多项式时间内强行使用。 蛮力算法来检验图G是否包含k顶点集团,并找到它包含的任何此类集团,就是检查每个子图至少具有k个顶点,并检查其是否形成集团。该算法花费时间O(n ^ kk ^ 2):要检查O(n ^ k)个子图,每个子图都有O(k ^ 2)个边,需要检查其在G中的存在。因此,只要k为固定常数,就可以在多项式时间内解决该问题。但是,如果k是问题输入的一部分,则时间是指数的。 我在这里缺少什么吗?问题的措词可能有所不同?最后一句话是什么意思:“但是,当k是问题输入的一部分时,时间是指数的。” 当k是问题输入的一部分时,为什么会有差异? 我的想法是要在图G中找到大小为k的集团,就是我们首先从G中选择节点的大小为k的子集,然后测试它们是否都与其他k个节点相关,这可以以常数完成时间。重复此步骤,直到我们得到大小为k的小集团。我们可以从G中选择的k个节点的集合数为n!/ k!*(nk)!。

3
图的最小生成树何时不唯一
给定一个加权的无向图G:哪些条件必须成立,以便G 有多个最小生成树? 我知道,当所有权重都不同时,MST是唯一的,但是您不能撤销此声明。如果图中有多个权重相同的多重边,则可能有多个MST,但也可能只有一个: 在此示例中,左侧的图具有唯一的MST,而右侧的图则没有。 我最能找到MST非唯一性的条件是: 考虑图G中的所有无弦循环(不包含其他循环的循环)。如果在这些循环中的任何一个中最大加权边存在多次,则该图将没有唯一的最小生成树。 我的想法是像这样一个周期 使用n个顶点,您可以精确地忽略其中一条边,但仍将所有顶点连接在一起。因此,您有多种选择来删除具有最大权重的边缘以获得MST,因此MST不是唯一的。 但是,然后我想到了这个示例: 您可以看到此图的确有一个符合我的条件的循环:(E,F,G,H),但据我所知,最小生成树是唯一的: 因此,看来我的情况不正确(或者可能不完全正确)。我非常感谢为最小生成树的非唯一性找到必要和充分条件的任何帮助。

1
在图形上添加边时,最短距离会变化多少?
令G=(V,E)G=(V,E)G=(V,E)是一些完整的,加权的,无向的图。我们通过从E到E '一对一地增加边来构造第二个图。我们总共将Θ (| V |)边加到G '。G′=(V,E′)G′=(V,E′)G'=(V, E')EEEE′E′E'Θ(|V|)Θ(|V|)\Theta(|V|)G′G′G' 每次我们添加一个边缘(u,v)(u,v)(u,v)于E′E′E',我们考虑所有对之间的最短距离在(V,E′)(V,E′)(V, E')和(V,E′∪{(u,v)})(V,E′∪{(u,v)})(V, E' \cup \{ (u,v) \})。我们计算由于加而导致的最短距离变化了多少(u,v)(u,v)(u,v)。让CiCiC_i是变化的,当我们添加的最短距离的数量iii边数,令为总和。nnn C = ∑ i C i有多大?C=∑iCinC=∑iCinC = \frac{\sum_i C_i}{n} 由于,所以C = O (n 2)也是如此。这个界限可以改善吗?请注意,我将C定义为所有相加边的平均值,因此,即使证明了C = Ω (n ),也没有那么有趣的一轮,因为距离变化很大。Ci=O(|V|2)=O(n2)Ci=O(|V|2)=O(n2)C_i = O(|V|^2)=O(n^2)C=O(n2)C=O(n2)C=O(n^2)CCCC=Ω(n)C=Ω(n)C = \Omega(n) 我有一种算法可以贪婪地计算几何t跨度,该算法可以在时间内工作,因此,如果C为o (n 2),则我的算法要比原始贪婪算法快,并且如果C真的很小,其速度可能比最著名的算法快(尽管我对此表示怀疑)。O(Cnlogn)O(Cnlog⁡n)O(C n \log n)CCCo(n2)o(n2)o(n^2)CCC 一些特定于问题的属性可能有助于确定界限:添加的边权重始终大于图中已存在的任何边的权重(不一定严格地更大)。此外,它的权重比u和v之间的最短路径短。(u,v)(u,v)(u,v)uuuvvv 您可以假定顶点对应于2d平面中的点,并且顶点之间的距离是这些点之间的欧几里得距离。也就是说,每个顶点对应于平面中的某个点(x ,y ),并且对于边(u ,v )= ((x 1,y …

2
加权图的最小生成树在给定的权重下具有相同数量的边吗?
如果加权图具有两个不同的最小生成树和,那么这是真的,对于任何边缘在,在边缘的数量用相同的重量(包括本身)与的边数相同,权重与?相同。如果这个说法是正确的,那我们怎么证明呢?T 1 = (V 1,E 1)T 2 = (V 2,E 2)e E 1 E 1 e e E 2 eGGGŤ1个= (V1个,E1个)T1=(V1,E1)T_1 = (V_1, E_1)Ť2= (V2,E2)T2=(V2,E2)T_2 = (V_2, E_2)ËeeË1个E1E_1Ë1个E1E_1ËeeËeeË2E2E_2Ëee

2
在有向图中找到至少两个相同长度的路径
假设我们有一个有向图和两个节点和。我想知道是否已经有算法来计算以下决策问题:G=(V,E)G=(V,E)G=(V,E)AAABBB 和之间是否至少有两条相同长度的路径?AAABBB 复杂度如何?我可以在多项式时间内求解吗? 我想在图表上添加一个新的约束,也许这个问题可以解决。在邻接矩阵上,每一列都不为空。因此,每个节点在输入上至少有一个箭头,并且至少还有一个与其连接的节点。因此,如果节点是第个节点,则是图中的边。iii(i,i)(i,i)(i,i)

1
查找稀疏图的周长的最佳算法?
我想知道如何找到一个稀疏无向图的周长。稀疏的意思是。最佳的意思是最低的时间复杂度。|E|=O(|V|)|E|=O(|V|)|E|=O(|V|) 我考虑过对Tarjan的无向图算法进行一些修改,但是没有找到好的结果。实际上,我以为,如果我可以在找到2个相连的分量,那么可以通过从第一部分实现的某种归纳法找到周长。不过,我可能走错了路。渐近优于(即)的任何算法都可以使用。Θ (| V | 2)o (| V | 2)O(|V|)O(|V|)O(|V|)Θ(|V|2)Θ(|V|2)\Theta(|V|^2)o(|V|2)o(|V|2)o(|V|^2)

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.