Questions tagged «ds.algorithms»

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

1
布尔公式均衡
我正在寻找有关布尔公式平衡问题的复杂性的参考。特别是, 是否知道布尔公式可以在进行平衡?AC0AC0\mathsf{AC^0} 在是否存在布尔公式平衡的简单证明?AC0AC0\mathsf{AC^0} “简单”是指一种证明,比我在下面提到的证明更简单,特别是我正在寻找一种不依赖布尔公式评估的证明。NC1NC1\mathsf{NC^1} 背景 这里所有提到的复杂性类都是统一的。 BFB(布尔公式平衡): 给定一个布尔公式, 找到一个等效的平衡布尔公式。φφ\varphi 我对这个问题的复杂性感兴趣,特别是显示问题的简单证明位于(甚至或)中。诸如基于Spira引理的常见平衡论点对公式树进行了重复的结构修改,似乎只给。 Ť Ç 0 Ñ Ç 1乙˚F 乙∈ Ñ Ç 2AC0AC0\mathsf{AC^0}TC0TC0\mathsf{TC^0}NC1NC1\mathsf{NC^1}乙˚F乙∈ Ñ Ç2BFB∈NC2BFB \in \mathsf{NC^2} 我有的证明,但是证明并不简单,取决于中的证明。乙˚F Ë ∈ Ñ Ç 1乙˚F乙∈ 甲Ç0BFB∈AC0BFB \in \mathsf{AC^0}乙˚FË∈ Ñ Ç1个BFE∈NC1BFE \in \mathsf{NC^1} BFE(布尔公式估计) 给定一个布尔公式和真值赋值的变量, 不满足()?τ φ τ φ τ ⊨ φφφ\varphiττ\tauφφ\varphiττ\tauφφ\varphiτ⊨ φτ⊨φ\tau \vDash \varphi 从Sam …


1
在给定点集上估计多项式的算法有哪些结果?
似乎有许多用于多项式同一性测试的随机算法,用于检查给定的多项式是否为零。是否有算法的结果对一组特定的点进行多项式估计?例如,这可能近似于多项式求出的这些点中的哪一部分为零,或者近似于这些点上的多项式的平均值?点集可以特定于算法。

2
子集编号
修复。对于足够大的,我们想用正整数标记大小为的的所有子集。我们希望该标签满足以下属性:有一组整数,stk≥5k≥5k\ge5nnn{1..n}{1..n}\{1..n\}n/kn/kn/k{1...T}{1...T}\{1...T\}SSS 如果大小为个子集不相交(即这些集合的并集形成所有集合),则它们的标签之和在。kkkn/kn/kn/k{1..n}{1..n}\{1..n\}SSS 否则,它们的标签之和不在。SSS 是否存在和标签st?k≥5k≥5k\ge5T⋅|S|=O(1.99n)T⋅|S|=O(1.99n)T\cdot|S|=O(1.99^n) 例如,对于任何我们可以按以下方式标记子集。 ,每个子集具有在他们的比特数:第一比特等于且仅当子集包含,第二位等于且仅当子集包含等可以很容易地看到,仅包含一个元素。但是这里。我们可以做得更好吗?kkkT=2nT=2nT=2^nnnn111111111222SSS2n−12n−12^n-1T⋅|S|=Θ(2n)T⋅|S|=Θ(2n)T\cdot|S|=\Theta(2^n)

1
生成周长
令。我需要生成周长简单图,以使所有循环的集合形成的双边覆盖(即,每个边正好由两个循环共享),并且使得任意两个的交点 -cycles是顶点,边或空。生成的图应任意大。ģ 克克ģ 克克G≥ 3g≥3g\geq 3GGGGggGggGGGGggGgg 生成方法应该对此具有一定的随机性,但不是琐碎的意义。我希望能够获得相当复杂的图形。例如,假设平面中有一个矩形网格。如果我们确定边界矩形的相对两侧,我们将获得一个满足所有上述要求的图。我认为这张图很简单。克= 4n × 米n×mn\times mG= 4g=4g=4 有没有这样的方法? 对类似问题的任何引用也将受到赞赏。

1
使用BDD表示的图上的算法
图的最简单表示形式是使用邻接矩阵/列表,这意味着每个节点和边都得到了明确表示。长期以来,人们已经认识到隐式表示对于显示强规律性的图形的重要性。例如,Galperin&Wigderson(1983),Papadimitriou&Yannakakis(关于图的简洁表示的注解,1986)探讨了图的问题,其邻接矩阵由布尔公式表示,回答(i,j)是否为边给定节点号i和j的二进制表示。在一些通常满足的约简约束下,对于该表示,显式图的P-完全问题变为PSPACE-完全,NP-完全问题变为NEXPTIME-完全等。 这种规则图的自然方法是使用ROBDD表示布尔公式;困难在于经典算法趋向于逐一枚举节点,这在这种表示上产生了指数成本,因此必须避免。已经有关于使用这种表示法解决经典问题的论文,例如Gentilini等。(以线性符号步数计算强连接的组件),Woelfel(使用 OBDD进行符号拓扑排序)。 我想知道是否对这种技术进行了一些调查,因为在这种情况下疏通文献是不方便的...


1
汉密尔顿分解决策问题
令为无向图。的分解成不相交的子集称为汉密尔顿分解的如果子图诱导每组或者是Hamilton图或由具有单个边缘的。G=(V,E)G=(V,E)G=(V,E)VVVViViV_iGGGViViV_i|Vi|=2|Vi|=2|V_i|=2 示例:当且仅当完整的二部图具有汉密尔顿分解。Km,nKm,nK_{m,n}m=nm=nm=n 我正在寻找一种确定给定图是否具有汉密尔顿分解的算法。这个决策问题NP是否完整?如果没有,我们如何找到这样的分解? 注意:在文献中,汉密尔顿分解通常表示的边的分解,使得诱导子图为汉密尔顿。相反,我对顶点的分解感兴趣。EEEGGG

4
可以使用后缀树查找所有常见的子字符串吗?
我正在尝试使用后缀树来比较字符串序列。我发现使用后缀树的最长公共子字符串问题的实现/理论。但是,我正在寻找的是相关问题的讨论-“所有常见子字符串”。具体来说,我有一个问题,我需要首先找到最长的公共子字符串,然后找到不包括已经找到的lcs索引的下一个最长的公共子字符串,依此类推直到最小长度。通过为两个序列构造一次通用后缀树(GST)可以解决此问题吗?我知道可以通过在每次查找和删除LCS的迭代之后重复构建GST来解决。但是,我想知道我是否错过了一个精巧的技巧,即在GST中仅构造一次。


1
确定最少的硬币称量
在关于信息理论的两个问题中,Erdõs和Rényi给出了确定一组硬币中虚假硬币的数量必须执行的最小称量数量的下限。ññn 更正式地: 假硬币的重量小于正确硬币的重量。正确硬币和错误硬币的权重和b &lt; a是已知的。给出一个秤,通过它可以称量≤n 个硬币。因此,如果我们选择硬币的任意子集并将它们放在秤上,则秤会向我们显示这些硬币的总重量,从中可以轻松计算出称重的伪硬币的数量。问题是,最小的数量A (n )称量可以用来区分正确和错误的硬币?一个一个ab &lt; ab&lt;一个b < a≤ ñ≤ñ\leq nA (n )一个(ñ)A(n) 他们最初提供的简单下限是: 。n / 日志2(Ñ + 1 )ñ/日志2⁡(ñ+1个)n / \log_2 (n + 1) 不难理解为什么要通过各种信息理论或组合论证。问题是如何构建这样的集合来进行这些称重?是否有算法利用建设性的证明来实现这些下限而又不依赖于随机性?是否有实现这些界限的随机算法?

2
3-SAT的准多项式大小电路微不足道吗?
假设我们考虑带有变量和c子句的3-SAT 。我正在研究一种方法,该方法似乎需要O (v 2 + log c)的时间/空间来解决适合此描述的任何SAT问题,且误差可调整为任意量。但是,有一个陷阱。vvvCccØ (v2 + 日志C)O(v2+log⁡c)O(v^{2+\log c}) 此方法需要一组预先计算的值,之后它可以解决适合以上描述的任意3-SAT问题。预先计算的值是一组大小为,每个值都占用O (1 )空间。真正的问题是这些值中的每一个都可能需要O (2 v)时间来计算。我有机会找到一种加快这些计算速度的方法。Ø (v2 + 日志C)O(v2+log⁡c)O(v^{2+\log c})O (1 )O(1)O(1)O (2v)O(2v)O(2^v) 我认为界限本身超过了此问题(对于小)提出的上限。所以我想知道,如果我们允许O (v 2 + log c)预计算,是否有一种简单的方法可以达到我描述的上限?CccØ (v2 + 日志C)O(v2+log⁡c)O(v^{2+\log c}) 我想继续进行这项研究,并希望在一切顺利的情况下发表我的研究结果,但首先我想知道是否有一种简单的方法可以做得更好或更好。 更新 除了研究此算法外,我还研究了相关的问题。如果您有兴趣,我在StackExchange的IT安全站点上询问了有关密码破解和SAT的问题。至少有一个答案反映了这一点。

1
在平面图上找到具有共同来源的最小-最大顶点不相交路径
给定的平面非加权曲线图,顶点对的集合(ķ ≥ 2为常数),发现ķ顶点不相交(除了源)从路径小号到吨我使得最长路径的长度被最小化。(s,t1),…,(s,tk)(s,t1),…,(s,tk)(s,t_1),\dots,(s,t_k)k≥2k≥2k\ge2kkkssstitit_i 问题:是否有多项式时间算法可以解决该问题? 一些相关结果: 如果不固定,即使t 1 = ⋯ = t k,问题也是NP-难的;kkkt1=⋯=tkt1=⋯=tkt_1=\dots=t_k 如果输入图被加权并且路径的来源不重合,即路径是那么即使k = 2,问题也是NP-难的;(s1,t1),…,(sk,tk)(s1,t1),…,(sk,tk)(s_1,t_1),\dots,(s_k,t_k)k=2k=2k=2 具有不同目标的问题,即最小化路径长度的总和是 可以用最小成本流算法来求解一致的源; NP-hard适用于非一致源和一般;kkk 对不重合的源开放,常数。kkk

1
通过有限网格中的行和列排列连接像元
我想知道以下简单问题是否已经研究过,是否知道任何解决方案。 令G为有限(MxN)网格,S为G单元的子集(“小块”)。如果两个碎屑的坐标最多相差一个(即,如果绘制为正方形,则它们共享至少一个拐角点),则称为两个(局部)连接。 现在,可以通过排列网格的线和列来尝试连接碎屑(它们的集合)。换句话说,目标是提出线的排列和列的排列,以使生成的网格中的任何两个碎屑通过(局部)连接的碎屑链连接。 问题:总有解决方案吗? 我不太清楚该如何进攻。由于缺乏更好的主意,我编写了一个原始程序,该程序通过蛮力寻找解决方案(它会随机生成排列并检查生成的网格是否连接了碎屑)。到目前为止,该程序始终在较小的(10x10或7x14)网格上找到解决方案,而较大的网格显然超出了其简化策略的范围(在解决方案中随机绊倒会花费太长时间)。 这是程序解决的网格示例: 初始网格(小块由X表示,空单元由点表示): 0 1 2 3 4 5 6 7 8 9 0 X . X X . X . X X . 1 X . . . . X . . . . 2 . . X . . . . X . X …

1
寻找跨越蜘蛛
是否有多项式时间算法来查找给定图的生成蜘蛛(如果存在)?蜘蛛是一棵树,最多有一个节点的度数大于2: 我知道上的各种度数条件(实质上是足够大的节点度数)可确保存在一个生成的蜘蛛。但是我想知道是否有一个针对任意的算法。谢谢!GGG GGGGGG

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.