Questions tagged «ds.algorithms»

有关完成任务的明确指令的问题,以及有关时间/内存/等方面的相关分析。

3
与某些给定集合相交的最小集合
令为可能具有相同元素的集合。我正在寻找一个最小的集,例如。S1,S2,…,SnS1,S2,…,SnS_1,S_2,\ldots,S_nXXX∀i,X∩Si≠∅∀i,X∩Si≠∅\forall i,\,X\cap S_i \ne \emptyset 这个问题有名字吗?还是减少到某些已知问题? 在我的上下文中,描述了一个强连接组件的基本循环,我正在寻找与所有循环相交的最小顶点S1,…,SnS1,…,SnS_1,\ldots,S_nXXX

2
相似矩阵
给定两个 ×矩阵和,确定是否存在置换矩阵使得等于(图同构)的问题。但是,如果我们放松使其只是一个可逆矩阵,那么复杂度是多少?除了作为一个排列之外,对可逆矩阵是否还有其他限制,将这个问题与其他困难问题联系起来?A B P B = P − 1 A P P Pn×nn×nn \times nAAABBBPPPB=P−1APB=P−1APB = P^{-1}APGIPPPPPPGI

1
如何计算平方矩阵的幂?
假设我们给定矩阵,令。我们能以多快的速度计算该矩阵的功率?A∈RN×NA∈RN×NA \in \mathbb R^{N\times N}m∈N0m∈N0m \in \mathbb N_0AmAmA^m 与计算乘积相比,下一个最好的事情是利用快速指数,这需要矩阵乘积。mmmO(logm)O(log⁡m)\mathcal O(\log m ) 对于可对角化的矩阵,可以使用特征值分解。它的自然概括,约旦分解,在插管下不稳定,因此不算在内(afaik)。 一般情况下可以加快矩阵求幂吗? 快速指数说明此问题的变体也很有用: 通用矩阵A的平方AAA可以比已知的矩阵乘法算法更快地计算吗?

1
在阅读Dick Lipton的博客时,我偶然发现了他的Bourne Factor帖子结尾处的以下事实: 如果对于每个,都存在形式的关系 其中,每个,和的位长均为,则因式分解为多项式电路。(2 n)!= m − 1 ∑ k = 0 a k b c k k m = p o l y (n )a k b k c k p o l y (n )nnn(2n)!=∑k=0m−1akbckk(2n)!=∑k=0m−1akbkck (2^n)! = \sum_{k=0}^{m-1} a_k b_k^{c_k} m=poly(n)m=poly(n)m = poly(n)akaka_kbkbkb_kckckc_kpoly(n)poly(n)poly(n) 换句话说,具有指数位数的位,可以有效地表示。(2n)!(2n)!(2^n)! 我有几个问题: 有人可以提供上述关系的证明,告诉我名称和/或提供任何参考文献吗? 如果我要给你,以及,和每一个,是否可以提供一个多项式时间算法来检查关系的有效性(即)?中号一个ķ …


2
存在亚线性时间算法的问题的表征
我想知道是否存在针对哪个亚线性时间(输入大小)算法的问题是否具有特定属性。这包括亚线性时间(例如,属性测试,用于决策问题的近似替代概念),亚线性空间(例如,图灵机具有只读磁带,亚线性工作空间和仅写输出的草图绘制/流算法)磁带)和亚线性测量(例如,稀疏恢复/压缩感测)。尤其是,我对属性测试算法的框架以及经典的随机和近似算法模型都感兴趣。 例如,存在动态规划解决方案的问题表现出最优的子结构和重叠的子问题;那些存在贪婪解的子集表现出最优的子结构和拟阵的结构。等等。欢迎处理该主题的任何参考资料。 除了允许确定性子线性算法的一些问题外,我所见过的几乎所有子线性算法都是随机的。是否存在与准入次线性时间算法的问题相关的特定复杂性类别?如果是,那么此类别是否包含在BPP或PCP中?

2
带有LR解析的置换短语
排列短语是对标准(E)BNF上下文无关语法定义的扩展:排列短语包含n个生成词(或等效地,非末尾词)A 1至A n。在置换词组的位置,我们希望只看到一次所有这些产生式,但是我们对这些非末端的顺序不感兴趣。{ 一1个,… ,Añ}{一种1个,…,一种ñ}\{ A_1, \dots, A_n \}ññn一种1个一种1个A_1一种ñ一种ñA_n 例如: S <- X { A, B, C } Y 等效于: S <- X A B C Y S <- X A C B Y S <- X B A C Y S <- X B C A Y S <- …

6
什么时候说两种算法“相似”?
我不从事理论工作,但是我的工作需要不时阅读(和理解)理论论文。一旦理解了(一组)结果,我就会与与之共事的人讨论这些结果,其中大多数人也不是理论上的人。在其中一种讨论中,出现了以下问题: 什么时候说两个给定的算法“相似”? “相似”是什么意思?我们可以说,如果您可以在论文中提出以下任一主张而不会混淆/烦扰任何审阅者(欢迎使用更好的定义),则可以说两种算法是相似的: 声明1.“算法与算法相似,也解决了问题 ”AAABBBXXX 声明2。“我们的算法类似于算法 ”CCC 让我稍微具体一点。假设我们正在使用图算法。首先,两种算法必须相似的一些必要条件: 他们必须解决相同的问题。 他们必须具有相同的高级直观想法。 例如,谈到图遍历,广度优先和深度优先遍历满足以上两个条件;对于最短路径计算,广度优先和Dijkstra的算法满足上述两个条件(当然,在未加权图上);等等 这些条件是否也足够?更具体地,假设两种算法满足必要条件以变得相似。如果真的,您是否会称它们相似? 他们有不同的渐近表现? 对于一类特殊的图,一种算法需要时间,而另一种算法则需要时间?Ω(n)Ω(n)\Omega(n)O(n1/3)O(n1/3)O(n^{1/3}) 他们有不同的终止条件?(回想一下,他们正在解决相同的问题) 两种算法的预处理步骤是否不同? 两种算法的内存复杂度是否不同? 编辑:问题显然是非常依赖于上下文的,并且是主观的。我希望以上五种条件能够提出一些建议。如果需要获得答案,我很乐意进一步修改问题并提供更多详细信息。谢谢!

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 )和它们连接到它们所属的顶点到根据ö …

1
使最小宽度树分解趋于多项式时间
众所周知,图的树分解由树和每个顶点的关联包,满足以下条件:GGGTTTTv⊆V(G)Tv⊆V(G)T_v \subseteq V(G)v∈V(T)v∈V(T)v \in V(T) 每个顶点都在某个包中。GGGTTT 对于每个边缘,都有一个包含边缘两个端点的袋子。GGG 对于每个顶点,包含的袋子都诱导出的连接子树。v∈V(G)v∈V(G)v \in V(G)vvvTTT 我们还可能需要从分解中获得以下条件,称为“ 稀薄度”: 对于每对袋的,的,如果和与,则a)有顶点不相交的路径,或b)树T在从节点a到节点b的路径上包含边p q,使得| V (Ť p)∩ V (Ť q)| ≤ ķ和设定VTaTaT_aTbTbT_bTTTA⊆TaA⊆TaA \subseteq T_aB⊆TbB⊆TbB \subseteq T_b|A|=|B|=k|A|=|B|=k|A| = |B| = kkkkA−BA−BA-BGGGTTTpqpqpqaaabbb|V(Tp)∩V(Tq)|≤k|V(Tp)∩V(Tq)|≤k|V(T_p) \cap V(T_q)| \leq k相交所有在路径。V(Tp)∩V(Tq)V(Tp)∩V(Tq)V(T_p) \cap V(T_q)A−BA−BA-BGGG 罗宾·托马斯(Robin Thomas)表明,总是存在最小宽度的树分解,而且这种分解也是精简的,并且由多个作者(例如Patrick Patrickenen和Reinhard Diestel)提供了对此事实的简单证明。 我感兴趣的是:给定图和最小宽度的树分解,我们可以发现一个最小宽度 瘦的树分解在多项式时间?GGGGGGGGG 提到的两个证明不能产生如此有效的建设性。在贝伦鲍姆和迪埃斯特尔的论文中,提到“在托马斯定理的另一个(更具建设性的)简短证明中,P。贝伦鲍姆,Schlanke Baumzerlegungen von Graphen,汉堡大学的Diplomarbeit,2000年”。las,我无法在线上找到该手稿,而我的德语不是那么好。

1
优化决策树的算法
背景 二进制决策树ŤŤT是一个根树,其中每个内部节点(根)由索引标记Ĵ ∈ { 1 ,。。。,n }Ĵ∈{1个,。。。,ñ}j \in \{1,..., n\}这样从根到叶子的路径都不会重复索引,叶子用的输出标记,每个边用标记左孩子,用标记右边孩子。要将树应用于输入:0 1 x{ A ,B }{一种,乙}\{A,B\}0001个1个1XXx 从根开始 如果您在叶子上,则输出叶子标签或并终止乙一种一种A乙乙B 读取当前节点的标签,如果则移至左子级;如果则移至右子级。x j = 0 x j = 1ĴĴjXĴ= 0XĴ=0x_j = 0XĴ= 1XĴ=1个x_j = 1 跳至步骤(2) 将树用作评估函数的一种方式,特别是如果对每个我们有则树表示总函数。树的查询复杂度是其深度,函数的查询复杂度是表示该树的最小树的深度。˚F X ∈ { 0 ,1 } Ñ Ť (X )= ˚F (X )ŤŤTFFfX ∈ { 0 ,1 …

1
这种有向图问题的名称是什么?
取一个有向图,其中的边用自然数装饰。我们想要两个顶点v 1和v 2之间的所有路径P的集合,以使路径中的每个连续边都用自然数装饰,该自然数大于装饰前一条边的自然数。GGGPPPv1v1v_1v2v2v_2 一个应用程序是公交车或火车时刻表。如果您要根据车站之间的交通路线来确定两个城市之间的不同路线。(您不能在第一趟火车到达之前乘坐第二趟预定出发的火车。) 我非正式地将其称为“计划图”。但是我不知道文献中的名字是什么。 对与此相关的算法的任何引用也很有趣。

3
为什么尽管差示逼近率具有标准优势,但与标准方法相比并没有得到很好的研究?
有一种标准的近似理论,其中近似比率为(针对MIN目标的问题),A-某些算法A返回的值,OPT-最佳值。另一种理论是微分逼近,其中逼近率为\ inf \ frac {\ Omega-A} {\ Omega-OPT},\ Omega-给定实例的可行解的最差值。该理论的作者声称,与经典理论相比,它具有一定的优势。例如:supAOPTsupAOPT\sup\frac{A}{OPT}MINMINMINAAAAAAOPTOPTOPTinfΩ−AΩ−OPTinfΩ−AΩ−OPT\inf\frac{\Omega-A}{\Omega-OPT}ΩΩ\Omega 对于已知为同一问题的不同实现的“最小顶点覆盖”和“最大独立集”等问题,它给出了相同的近似率; 对于相同问题的最大版本和最小版本,它给出相同的比率。同时,在标准理论中我们知道MIN TSP和MAX TSP的比率非常不同。 它不仅可以测量到最佳距离,还可以测量到最接近\ Omega的距离ΩΩ\Omega。因此,在“顶点覆盖”的情况下,标准近似理论认为222是最佳上限。但是要点222是悲观者与最优者之间的最大比率。因此,保证了该算法输出具有最差值的解。 我的论据是:在渐近分析中,我们不考虑常数和低阶项(在这里,我记得Avi Widgerson的话:“我们成功是因为我们使用了正确的抽象级别。”)比较算法资源使用情况的抽象级别。但是,当我们研究近似值时,出于某种原因,我们在可以避免近似值的地方引入了差异。 我的问题是 为什么微分逼近理论研究得这么差。还是所涉及的论点不够充分?

2
寻找最大的有限直径的点集
鉴于点在和距离找到这些点,使得没有两个人的欧几里得距离超过最大子。p1个,… ,pñp1个,…,pñp_1,\ldots,p_n[Rd[Rd\mathbb{R}^{d}升升l升升l 这个问题的复杂性是什么? 在两点之间的距离最大为的点上具有边的点的图形中,问题等同于找到最大团。反过来可能不成立,因为不是每个图形可以得到这种方式(一个实例是星为)。因此,一个相关的问题是:有关此类图的知识是什么?升升lķ1 ,7ķ1个,7K_{1,7}d= 2d=2d=2

2
用于TSP的Bellman-Held-Karp算法的时间复杂度,取2
一个独立于Bellman和Held-Karp的问题最近讨论了TSP的当前经典动态编程算法。据普遍报道,该算法在时间内运行。但是,正如我的一名学生最近指出的那样,这种运行时间可能需要一个不合理的强大计算模型。O(2nn2)O(2nn2)O(2^n n^2) 这是该算法的简要说明。输入由具有个顶点的有向图和非负长度函数。对于任何顶点和,以及任何不包含和的顶点子集,令表示诱导子图从到的最短哈密顿路径的长度。。Bellman-Held-Karp算法基于以下递归(或经济学家和控制理论家喜欢称其为“ Bellman方程”):Ñ ℓ :È → [R +小号吨X 小号吨大号(小号,X ,吨)小号吨ģ [ X ∪ { 小号,吨} ]G=(V,E)G=(V,E)G=(V,E)nnnℓ:E→R+ℓ:E→R+\ell\colon E\to\mathbb{R}^+ssstttXXXssstttL(s,X,t)L(s,X,t)L(s,X,t)ssstttG[X∪{s,t}]G[X∪{s,t}]G[X\cup\{s,t\}] L(s,X,t)={ℓ(s,t)minv∈X (L(s,X∖{v},v)+ℓ(v,t))if X=∅otherwiseL(s,X,t)={ℓ(s,t)if X=∅minv∈X (L(s,X∖{v},v)+ℓ(v,t))otherwise L(s,X,t) = \begin{cases} \ell(s,t) & \text{if $X = \varnothing_{\strut} $} \\ \min_{v\in X}~ \big(L(s, X\setminus\lbrace v\rbrace, v) + \ell(v,t)\big) & \text{otherwise} \end{cases} 对于任何顶点sss,最优旅行推销员巡视的长度为L(s,V∖{s},s)L(s,V∖{s},s)L(s,V\setminus\{s\}, s)。因为第一个参数sss在所有递归调用中都是常数,所以存在Θ(2nn)Θ(2nn)\Theta(2^n n)不同的子问题,并且每个子问题最多依赖于其他n个子问题nnn。因此,动态编程算法以O(2nn2)O(2nn2)O(2^n n^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.