计算机科学

为学生,研究人员和计算机科学从业者提供的问答

7
如果A为假而B为假,为什么A暗示B为真?
在我看来,英语中的“隐含”与逻辑运算符“隐含”的含义不同,在大多数情况下,“或”一词在我们日常语言使用中的含义类似于“异或”。 让我们举两个例子: 如果今天是星期一,那么明天是星期二。 这是真的。 但是,如果我们说: 如果太阳是绿色的,那么草是绿色的。 这也被认为是正确的。为什么?这背后的自然英语“逻辑”是什么?这让我震惊。

5
O(mn)被认为是“线性”或“二次”增长吗?
如果我有一个函数,其时间复杂度为O(mn),其中m和n是其两个输入的大小,我们将其时间复杂度称为“线性”(因为在m和n中均为线性)或“二次”(因为它是两种尺寸的产品)?或者是其他东西? 我觉得称它为“线性”是令人困惑的,因为O(m + n)也是线性的,但速度要快得多,但是我觉得称其为“二次数”也是很奇怪的,因为它在每个变量中都是线性的。


3
真的有可能证明下界吗?
给定任何计算问题,为这种计算找到下界的任务确实可行吗?我想它可以归结为如何定义单个计算步骤以及我们用于证明的模型,但是鉴于此,我们是否真的能证明通常的下界?我的意思是,我们能否证明“问题不能比时间更快地解决”而不是“问题可以在时间内或更快地解决”?XXXt(X)Ť(X)t(X)XXXt(X)Ť(X)t(X) 我试图找到有关下限及其证明的信息,但是我真的找不到任何有趣的东西,关于该主题的书籍/论文/网站有什么建议吗?


1
贪婪算法何时可以解决硬币兑换问题?
给定一组具有不同面额和值v的硬币,您希望找到代表值v所需的最少数量的硬币。Ç 1 ,。。。,Ç ñc1,...,cnc1, ... , cn 例如,对于硬币集1,5,10,20,这给2和6的硬币和6和19的硬币。 我的主要问题是:何时可以使用贪婪策略解决此问题? 优点:这句话显然是不正确的吗?(摘自:如何分辨贪婪算法是否足以解决最小硬币找零问题?) 但是,本文证明,如果贪婪算法适用于第一个最大定理值和第二个最大定理值,那么它将适用于所有第一个定理值,并且建议仅使用贪婪算法与最佳DP算法进行检查。 http://www.cs.cornell.edu/~kozen/papers/change.pdf 附言 请注意,该线程中的答案令人难以置信-这就是为什么我再次提出这个问题。

3
检索动态图的最短路径
我目前正在研究有向图中的最短路径。有许多有效的算法可用于查找网络中的最短路径,例如dijkstra算法或bellman-ford算法。但是,如果图形是动态的,该怎么办?我说动态是指我们可以在程序执行期间插入或删除顶点。我正在尝试找到一种有效的算法,用于在插入边e之后更新从顶点到每个其他顶点u的最短路径,而无需在新图中再次运行最短路径算法。我怎样才能做到这一点?提前致谢。vvvüuuËee 注意:更改可以在算法的第一次迭代后完成 注[2]:两个节点中给出,源和Ť目标。我需要找到这些节点之间的最短路径。当图形更新时,我只需要更新π (s ,t ),这是s和t之间的最短路径。sssŤttπ(s ,t )π(s,t)\pi(s,t)sssŤtt 注意[3]:我只对边缘插入盒感兴趣。 正式定义:给定一个图。定义一个更新操作作为1)的边缘的插入ë到ë或2)的边缘的氨基酸缺失ë从ë。目的是有效地找到更新操作后所有对最短路径的成本。有效地,我们的意思至少比每次更新操作后执行All-Pairs-Shortest-Path算法(例如Bellman-Ford算法)更好。G = (V,E)G=(V,E)G = (V,E)ËeeËEEËeeËEE 编辑:下面是问题的简化版本: 给出了一个加权图,该图由单向边以及两个关键顶点s和t组成。还给出了候选双向边缘的集合C。我必须建立一个边缘(Û ,v )∈ Ç以最小化从距离小号到吨。ģ (V,E)G(V,E)G(V,E)sssŤttCCC(Û ,v )∈ Ç(u,v)∈C(u,v) \in CsssŤtt

2
是否有一种有时有效的算法来解决#SAT问题?
令为一个布尔公式,由通常的AND,OR和NOT运算符以及一些变量组成。我想计算的令人满意的作业数量。也就是说,我想找到真值的不同分配到的变量数目为其假定真值。例如,公式具有三个令人满意的赋值;有四个。这是#SAT问题。乙乙B乙乙B乙乙B乙乙B一个∨ b一种∨ba\lor b(一个∨ b )∧ (ç ∨ ¬ b)(一种∨b)∧(C∨¬b)(a\lor b)\land(c\lor\lnot b) 显然,对此问题的有效解决方案将是对SAT的有效解决方案,这不太可能,而且实际上此问题是#P完全的,因此可能比SAT严格得多。因此,我不期望有一个保证有效的解决方案。 但是众所周知,SAT本身真正困难的实例相对很少。(例如,Cheeseman 1991,“ 真正困难的问题在哪里”。)普通的修剪搜索,尽管在最坏的情况下是指数式的,但可以有效地解决许多实例。解决方法虽然在最坏的情况下是指数级的,但在实践中甚至更为有效。 我的问题是: 是否有已知算法可以快速计算一个典型布尔公式的满意赋值数量,即使这种算法在一般情况下需要指数时间也是如此?有什么比列举每个可能的任务明显更好的了吗?

1
排序为线性程序
数量惊人的问题使线性编程(LP)的问题自然减少。请参见[1]的第7章中的示例,例如网络流量,二分匹配,零和博弈,最短路径,线性回归形式甚至电路评估! 由于电路评估简化为线性规划,因此任何问题都必须具有线性规划公式。因此,通过简化为线性程序,我们有了一种“新”的排序算法。所以,我的问题是PPP 将对实数数组进行排序的线性程序是什么?nnn Reduce-to-LP-and-solve排序算法的运行时间是多少? 算法由S.达斯古普塔,C. PAPADIMITRIOU和U.瓦齐拉尼(2006)


2
用于“求和”一组和的高效算法
给定自然数X的多集,请考虑所有可能总和的集合: sums(X)={∑i∈Ai|A⊆X}sums(X)={∑i∈Ai|A⊆X}\textrm{sums}(X)= \left\{ \sum_{i \in A} i \,|\, A \subseteq X \right\} 例如,而 。sums({1,5})={0,1,5,6}sums({1,5})={0,1,5,6}\textrm{sums}(\left\{1,5\right\}) = \left\{0, 1, 5, 6\right\}sums({1,1})={0,1,2}sums({1,1})={0,1,2}\textrm{sums}(\left\{1,1\right\}) = \left\{0, 1, 2\right\} 计算逆运算最有效的算法是什么(以输入和的大小来衡量)?具体来说,可以有效地计算以下任何一项: 给定集是否为有效的和集。(例如,有效,而无效。){0,1,2}{0,1,2}\left\{0,1,2\right\}{0,1,3}{0,1,3}\left\{0,1,3\right\} 一个累加到给定集合的多重集。 在最小的多重集,总结到给定。(例如,和总和为但前者较小。){ 1 ,1 ,1 } { 0 ,1 ,2 ,3 }{1,2}{1,2}\left\{1,2\right\}{1,1,1}{1,1,1}\left\{1,1,1\right\}{0,1,2,3}{0,1,2,3}\left\{0,1,2,3\right\}

1
如何证明随机播放算法的正确性?
我有两种方法可以按随机顺序生成项目列表,并想确定它们是否同样公平(公正)。 我使用的第一种方法是构造元素的整个列表,然后对其进行随机播放(例如Fisher-Yates随机播放)。第二种方法更多是一种迭代方法,该方法使列表在每次插入时都保持乱序。在伪代码中,插入函数为: insert( list, item ) list.append( item ) swap( list.random_item, list.last_item ) 我对展示这种特殊混洗的公平性感兴趣。使用此算法的优点是足够的,即使稍微不公平也可以。要决定,我需要一种评估其公平性的方法。 我的第一个想法是,我需要以这种方式计算可能的总排列与一组最终长度可能的总排列。但是,我对如何计算该算法产生的排列有些困惑。我也不能确定这是最好的还是最简单的方法。

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

5
为什么身体素质低下的人有机会生存到下一代?
我目前正在阅读和观看遗传算法,并且发现它非常有趣(我上大学时没有机会学习它)。 我了解突变是基于概率的(随机性是进化的根源),但我不知道生存的原因。 据我了解,一个个体III具有适应性例如另一个个体具有适应性我们有,那么比具有更好的生存可能性到下一代。F(i)F(i)F(i)JJJF(j)F(j)F(j)F(i)>F(j)F(i)>F(j)F(i) > F(j)IIIJJJ 概率意味着可以生存而可能无法生存(“运气不好”)。我不明白为什么这很好?如果将始终在选择中幸免,那么算法中会出什么问题?我的猜测是该算法将类似于贪婪算法,但我不确定。JJJ III III

4
忙碌的海狸是人类已知增长最快的功能吗?
此问题是从理论计算机科学堆栈交换迁移而来的,因为可以在计算机科学堆栈交换上回答。 迁移 7年前。 我只是有一个有趣的问题。人类已知的增长最快的功能是什么?它是忙海狸? 我们知道函数,但是此函数的增长速度比慢,而增长速度又慢于,其增长速度比慢。然后,我们可以组合函数,得到比增长更快,依此类推。X2x2x^22X2X2^xX !X!x!XXXXx^x(xX)!(XX)!(x^x)!XXXXx^x 然后我们得出递归函数,例如Ackermann函数,其增长速度比快得多。然后人们对繁忙的海狸函数的了解甚至比阿克曼函数的增长还要快。A(x,x)A(x,x)A(x,x)(xx)!(xx)!(x^x)!B(x)B(x)B(x) 在这一点上,我还没有听说过其他功能比忙碌的海狸更快的功能。这是否意味着没有其他功能可以比忙碌的海狸更快地成长?(除了阶乘外,像等)B(x)B(x)B(x)A(B(x),B(x))A(B(x),B(x))A(B(x), B(x))

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.