计算机科学

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

2
并非所有的红黑树都是平衡的?
直观地,“平衡树”应该是每个节点的左右子树必须具有“大约相同”数目的节点的树。 当然,当我们谈论红黑树*(请参阅最后的定义)时,实际上是指它们在高度上是平衡的,从某种意义上说,它们是平衡的。 假设我们尝试将上述直觉形式化如下: 定义:二叉树被称为μμ\mu -balanced,具有0≤μ≤120≤μ≤120 \le \mu \leq \frac{1}{2},如果对于每个节点,不等式NNN μ≤|NL|+1|N|+1≤1−μμ≤|NL|+1|N|+1≤1−μ \mu \le \frac{|N_L| + 1}{|N| + 1} \le 1 - \mu 对于每个,都有一个节点,上面的语句失败。是和的左子树中的节点数。是树下以为根(包括根)的节点数。μ′>μμ′>μ\mu' \gt \mu|NL||NL||N_L|NNN|N||N||N|NNN 我相信,在有关此主题的一些文献中,这些树被称为重量平衡树。 可以证明,如果具有节点的二叉树是平衡的(对于常数),那么树的高度是,因此保持了很好的搜索属性。nnnμμ\muμ>0μ>0\mu \gt 0O(logn)O(log⁡n)\mathcal{O}(\log n) 所以问题是: 是否有一些使每个足够大的红黑树达到平衡?μ>0μ>0\mu \gt 0μμ\mu 我们使用的Red-Black树的定义(来自Cormen等人的Introduction to Algorithms): 二进制搜索树,其中每个节点的颜色为红色或黑色, 根是黑色的 所有NULL节点均为黑色 如果节点为红色,则其两个子节点均为黑色。 对于每个节点,从该节点到后代NULL节点的所有路径都具有相同数量的黑色节点。 注意:在上面的 balanced 的定义中,我们不计算NULL节点。(尽管我相信这是否重要)。μμ\mu

7
随机算法与不确定算法之间的区别和关系?
随机算法与不确定算法之间有什么区别和关系? 来自维基百科 甲随机算法是一种算法,其采用一程度的随机性作为其逻辑的一部分。该算法通常使用统一的随机位作为辅助输入来指导其行为,以期在所有随机位的可能选择的“平均情况”下获得良好的性能。形式上,算法的性能将是由随机位确定的随机变量;因此,运行时间或输出(或两者)都是随机变量。 与确定性算法相反,非确定性算法是在不同的运行过程中表现出不同行为的算法。每次运行算法都有几种不同的行为方式。一个并行算法可因竞争条件不同在不同的运行执行。一个概率算法的行为取决于随机数发生器。解决非确定性多项式时间问题的算法可以在多项式时间或指数时间内运行,具体取决于其在执行过程中所做的选择。 随机算法和概率算法是同一概念吗? 如果是,则随机算法只是一种不确定性算法吗?

7
是否有比对角化更直观地证明停顿问题的不确定性?
我理解基于对角化的停顿问题的不确定性证明(例如,在Papadimitriou的教科书中给出)。 尽管证据令人信服(我理解其中的每个步骤),但从我看不到有人会如何从一个问题出发的角度来看,这对我来说并不直观。 在书中,证明是这样的:“假设MHMHM_H解决了输入的停止问题;xM;xM;xM;x,即确定图灵机是否MMM停止输入xxx。构造一个图灵机DDD,将图灵机MMM作为输入,运行MH(M;M)MH(M;M)M_H(M;M)并反转输出。” 然后继续表明D(D)D(D)D(D)无法产生令人满意的输出。 它是在看似随意的建设DDD,饲养的特别的想法MMM本身,然后DDD本身,我想有一个直觉。是什么导致人们首先定义那些构造和步骤? 如果有人不知道以哪种类型的论点开头,那么有人是否会解释如何解释对角化论点(或其他证明)? 附录给出了第一轮答案: 因此,第一个答案指出,证明停顿问题的不确定性是基于Cantor和Russell先前的工作以及对角化问题的发展,而“从头开始”将仅意味着必须重新发现该论点。 很公平。但是,即使我们接受对角化论点作为一个很好理解的给定,我仍然发现从它到停止问题还有一个“直觉差距”。我发现Cantor关于实数不可数的证明非常直观。罗素的悖论更是如此。 我仍然看不到是什么会激励某人基于M的“自我应用” M来定义;M,然后再次将D应用于自身。这似乎与对角化关系不大(从某种意义上说,Cantor的论点没有类似的东西),尽管一旦定义了对角化显然很有效。D(M)D(M)D(M)MMMM;MM;MM;MDDD 聚苯乙烯 @babou总结了让我比自己更困扰的事情:“许多版本的证明都存在这样的问题,即结构似乎是从魔术帽上拔下来的。”

4
枚举一定大小的所有非同构图
我想枚举所有大小为无向图,但是我只需要每个同构类的一个实例。换句话说,我想枚举个顶点上的所有非同构(无向)图。我怎样才能做到这一点?nnnnnn 更准确地说,我想要一种算法,该算法将生成具有以下特性的无向图的序列:对于个顶点上的每个无向图,都存在一个索引,使得与同构。我希望该算法尽可能高效。换句话说,我关心的指标是生成和迭代此图列表的运行时间。第二个目标是,如果算法不太复杂而无法实现,那就太好了。G1,G2,…,GkG1,G2,…,GkG_1,G_2,\dots,G_kGGGnnniiiGGGGiGiG_i 请注意,每个同构类至少需要有一个图,但是如果该算法产生多个实例,则可以。特别是,如果输出序列包含两个同构图,则可以,只要这可以帮助您更轻松地找到这样的算法或启用更有效的算法,只要它覆盖所有可能的图即可。 我的应用程序如下:我有一个程序要在大小为所有图形上进行测试。我知道如果两个图是同构的,则我的程序将在两个同构上表现相同(对两个图都正确,或者对两个图都不正确),因此足以枚举每个同构类的至少一个代表,然后对其进行测试。对这些输入进行编程。在我的应用程序中,很小。nnnnnn 我考虑过一些候选算法: 我可以列举所有可能的邻接矩阵,即所有对称的 0或1矩阵,对角线都为0。但是,这需要枚举矩阵。这些矩阵中有许多将表示同构图,因此这似乎在浪费大量精力。n×nn×nn\times n2n(n−1)/22n(n−1)/22^{n(n-1)/2} 我可以列举所有可能的邻接矩阵,并针对每个矩阵测试它与我先前输出的任何图是否同构;如果它与之前输出的内容不是同构的,则将其输出。这将大大缩短输出列表,但是仍然需要至少个计算步骤(即使我们假设图形同构检查是超快的),因此通过我的指标。2n(n−1)/22n(n−1)/22^{n(n-1)/2} 可以枚举邻接矩阵的子集。特别是,如果是个顶点,则可以不失一般性地假设顶点的排列方式为。换句话说,每个图都是同构的,其中顶点以非降序排列。因此,仅枚举具有此属性的邻接矩阵就足够了。我不知道这样的邻接到底有多少矩阵也有,但它是许多不到他们可以用比少很多被列举GGGnnnV={v1,…,vn}V={v1,…,vn}V=\{v_1,\dots,v_n\}degv1≤degv2≤⋯≤degvndeg⁡v1≤deg⁡v2≤⋯≤deg⁡vn\deg v_1 \le \deg v_2 \le \cdots \le \deg v_n2n(n−1)/22n(n−1)/22^{n(n-1)/2}2n(n−1)/22n(n−1)/22^{n(n-1)/2}计算步骤。但是,这仍然留下了很多冗余:许多同构类仍然会被覆盖很多次,因此我怀疑这是最优的。 我们可以做得更好吗?如果我理解正确,大约是非同构图的等价类。我们能否找到一种运行时间比上述算法更好的算法?我们可以接近下界?我主要关心小(例如或左右;足够小以至于可以合理地运行这样的算法来完成),而不是大的渐近性。2n(n−1)/2/n!2n(n−1)/2/n!2^{n(n-1)/2}/n!∼2n(n−1)/2/n!∼2n(n−1)/2/n!\sim 2^{n(n-1)/2}/n!nnnn=5n=5n=5n=8n=8n=8nnn 相关:构建不等价的二元矩阵(尽管不幸的是,似乎没有收到有效的答案)。

2
Lambda微积分纯粹是语法吗?
我已经阅读了几周有关Lambda演算的信息,但是我还没有看到与现有数学函数有实质性区别的任何东西,我想知道这是否只是一种记号问题,或者是否有任何新的含义由lambda演算公理创建的属性或规则不适用于每个数学函数。因此,例如,我读过: “可以有匿名函数”:Lambda函数不是匿名函数,它们全称为lambda。如果名称不重要,则可以用数学符号将相同的变量用于不同的功能。例如,Galois Connection中的两个函数通常都被称为*。 “函数可以接受函数作为输入”:可以使用普通函数来完成此操作。 “功能是黑匣子”:只是输入和输出也是数学函数的有效描述... 这似乎是一个讨论或自以为是的问题,但我认为应该对这个问题有一个“正确”的答案。我想知道lambda演算是否只是用于数学函数的符号或语法约定,或者lambda和普通函数之间是否存在实质性或语义上的差异。

2
Church-Turing论文和神经网络的计算能力
Church-Turing论文指出,所有可以物理计算的东西都可以在Turing Machine上进行计算。论文“通过神经网络进行模拟计算”(Siegelmannn和Sontag,理论计算机科学,131:331-360,1994;PDF)声称某种形式的神经网络(在本文中介绍了设置)更为强大。作者说,他们的模型可以在指数时间内识别出图灵机模型中不可计算的语言。 这与“教会图灵”论证不矛盾吗?

4
图灵说“机器不会引起意外”是由于谬论引起的?
我遇到过下面的语句由阿兰·图灵M. 这里: “我认为,机器不能引起意外的观点是由于哲学家和数学家特别容易受到谬论的影响。这是基于这样的假设,即一旦将事实呈现给人们,该事实的所有后果就会浮现。在许多情况下,这是一个非常有用的假设,但很容易忘记它是错误的。” 我不是英语母语人士。谁能用简单的英语解释它?


2
为什么神经网络似乎在拓扑受到限制的情况下表现更好?
全向学习者是完全连接的(至少一层到两层以上的隐藏层)反向传播网络。不幸的是,他们通常学习缓慢,倾向于过度适应或笨拙的概括。 通过愚弄这些网络,我观察到修剪某些边缘(以使它们的权重为零且无法更改)趋向于使网络学习得更快并且泛化得更好。是否有一个原因?仅仅是因为权重搜索空间的维数减少,还是还有更细微的原因? 另外,更好的概括是否是我正在研究的“自然”问题的产物?

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

3
为什么相对化是一个障碍?
当我在解释Baker-Gill-Solovay证明时,存在一个可以使用的甲骨文,以及一个可以用的甲骨文给朋友一个,问了一个问题,为什么这样的技术不适合证明问题,我无法给出令人满意的答案。P=NPP=NP\mathsf{P} = \mathsf{NP}P≠NPP≠NP\mathsf{P} \neq \mathsf{NP}P≠NPP≠NP\mathsf{P} \neq \mathsf{NP} 更具体地说,如果我有一种方法可以证明并且如果我可以构造oracles来使上述情况发生,那为什么使我的方法无效呢?P≠NPP≠NP\mathsf{P} \neq \mathsf{NP} 关于这个话题有什么论述/想法吗?

2
在哪里获取图表来测试我的搜索算法?
我正在实现一组路径查找算法,例如Dijkstra的,Depth First等。 最初,我使用了两个自制的图表,但现在我想进一步挑战一下,因此我正在寻找 基准测试中使用的图表; 现实世界中的城市图表(或从Google地图上下载此类信息的方法,或者其他任何可能的来源)。 我希望这些资源具有或允许我轻松创建边界,以便在可能的情况下尝试针对不同大小的图形集进行算法。 我正在寻找简单的解决方案,因为我不希望偏离主要目标(比较一组不同的算法),所以我需要一种快速的方法来将图形数据转换为自己的格式(基本上是连接(x, y)点集)。 更具体地说,我正在寻找的是2D循环图。如果这些图反映了现实世界中的城市街道(考虑单向街道,两向街道等,那就更好了!)。

4
广义3SUM(k-SUM)问题?
所述3SUM问题试图识别3点的整数a,b,ca,b,ca,b,c从一组大小的使得。n a + b + c = 0SSSnnna+b+c=0a+b+c=0a + b + c = 0 据推测,没有比二次方更好的解决方案,即。或者换句话说:。o(n log (n )+ n 2)o(n2)o(n2)\mathcal{o}(n^2)o(nlog(n)+n2)o(nlog⁡(n)+n2)\mathcal{o}(n \log(n) + n^2) 因此,我想知道这是否适用于广义问题:在大小为的集合为中的找到整数,使得。我∈ [ 1 .. ķ ] 小号Ñ Σ 我∈ [ 1 .. ķ ]一个我 = 0aiaia_ii∈[1..k]i∈[1..k]i \in [1..k]SSSnnn∑i∈[1..k]ai=0∑i∈[1..k]ai=0\sum_{i \in [1..k]} a_i = 0 我认为您可以在针对(推广简单的k = 3算法很简单)。 但是对于k的其他值是否有更好的算法?ķ …

5
布尔搜索说明
我的母亲正在学习一些在线课程,以便成为一名图书馆员,在此课程中,他们涵盖布尔搜索,因此他们可以有效地搜索数据库,但是,她遇到了一个听起来像这样的问题: 搜索“ x OR y”将产生105,000次点击,而仅搜索x将产生80 000次点击,仅搜索y将获得35000次点击。当组合的单个搜索给出115,000次点击时,为什么搜索“ x OR y”给出105,000次点击? 对我来说,这听起来很奇怪,所以我自己用培根和三明治一词进行了测试。 仅培根产生了1.79亿个结果 仅三明治生产了3.12亿个结果 培根或三明治给出了491,000,000的结果 但对我来说加起来:1.79亿(培根)+ 3.12亿(三明治)= 4.91亿(培根或三明治) 为什么OR查询的命中次数少于两个查询的总和?
29 sets  counting 


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.