计算机科学

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

1
每个足够大的字符串都重复吗?
令为固定大小的有限字符集。令α为Σ上的一些字符串。我们说一个非空子串β的α是一个重复的,如果β = γ γ对于一些字符串γ。ΣΣ\Sigmaαα\alphaΣΣ\Sigmaββ\betaαα\alphaβ= γγβ=γγ\beta = \gamma \gammaγγ\gamma 现在,我的问题是以下条件是否成立: 对于每一个,存在一些Ñ ∈ Ñ使得对于每个字符串α超过Σ至少长度的Ñ,α含有至少一个重复。ΣΣ\Sigman∈Nn∈Nn \in \mathbb{N}αα\alphaΣΣ\Sigmannnαα\alpha 我已经对二进制字母进行了检查,在这种情况下,这非常容易,但是大小为3的字母已经很难检查了,我是否想证明任意大的语法。 如果上述猜想是正确的,那么我可以(几乎)消除在其他问题中插入空字符串的需求。

1
河内塔楼的复杂性
我对河内塔的复杂性存有以下疑问,我想请您发表评论。 是NP吗? 尝试的答案:假设Peggy(提供者)解决了问题并将其提交给Victor(验证者)。Victor可以轻松地看到解决方案的最终状态是正确的(在线性时间内),但是他别无选择,只能遍历Peggy的每一个举动,以确保她没有做出非法举动。由于Peggy必须至少制作2 ^ |个磁盘| -1步(可证明),Victor也必须效仿。因此,Victor没有多项式时间验证(NP的定义),因此不能出现在NP中。 在PSPACE中吗?似乎如此,但我想不出如何扩展上述推理。 它是PSPACE完整的吗?似乎没有,但是我只有一个模糊的想法。ToH是特定实例的自动计划是PSPACE完整的。我认为,规划比ToH困难得多。 更新:输入= nnn,磁盘数;输出=每个步骤的磁盘配置。更新此内容后,我意识到此输入/输出格式不适合决策问题。对于这种问题,我不确定要获取NP,PSPACE等概念的正确形式。 更新#2:在Kaveh和Jeff发表评论后,我被迫使问题更加精确: 假设输入为一对整数,其中n是磁盘数。如果磁盘采取的移动顺序是以(磁盘编号,from-peg,to-peg)(磁盘编号,from-peg,to-peg)...的格式记下的,则从第一次移动到最后,以二进制编码,输出第i位。(n,i)(n,i)(n,i)nnniii 让我知道是否需要更详细的编码。我想卡夫的评论在这种情况下适用吗?

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

4
测量单向网络延迟
这是关于衡量我创建的网络延迟的一个难题。我相信解决方案是不可能的,但是朋友们不同意。无论哪种方式,我都在寻找令人信服的解释。(尽管我认为它很困惑,但我认为它适合本网站,因为它适用于通信协议(例如在线游戏)的设计和体验,更不用说NTP了。) 假设两个机器人位于两个房间中,并通过具有不同单向延迟的网络连接,如下图所示。当机器人A向机器人B发送消息时,它需要3秒钟才能到达,但是当机器人B向机器人A发送消息时,它需要1秒钟才能到达。延迟永远不会改变。 尽管它们可以测量时间的流逝(例如,它们具有秒表),但是它们是相同的,并且没有共享的时钟。他们不知道其中哪个是机械手A(消息延迟3s),哪个是机械手B(消息延迟1s)。 发现往返时间的协议是: whenReceive(TICK).then(send TOCK) // Wait for other other robot to wake up send READY await READY send READY // Measure RTT t0 = startStopWatch() send TICK await TOCK t1 = stopStopWatch() rtt = t1 - t0 //ends up equalling 4 seconds 是否有确定单程行程延迟的协议?机器人可以发现其中哪个机器人的消息发送延迟更长?

1
是否存在固定大小的现有数据结构,如果插入了新元素,该结构将推出最旧/最后一个元素?
我正在寻找一个数据结构,如果插入了新元素,它将推出其最早/最后的元素。例如,让我们D代表结构。D包含3个类型Number D的默认值的元素将被初始化为1, 2和3。 d = [ 1 ,2 ,3 ]d=[1个,2,3]D = [1, 2, 3] 如果Number将包含值5的插入D,3则会将推出,而1和2会向右移。 d = [ 5 ,1 ,2 ]d=[5,1个,2]D = [5, 1, 2] 首先想到的是一个数组,但是定义不包括推送行为。


4
使用人类作为构建计算机的组成部分?
好的,在开始之前,我意识到这只是主题问题(我已经阅读了本网站的“问题”帮助),特别是因为这不是一个实际问题。然而: 我在Google上找不到任何相关内容 从纯粹的观点来看,它肯定一定属于计算机科学范畴吗? 无论如何,如果我超越了界限,那么我道歉并欢迎关闭,因为我是其他SE网站的狂热用户,因此我理解这些问题。 除了警告之外,这里是:我很想知道是否有可能构建一个以人为离散逻辑组件的功能性计算系统,以解决个人在实际时间尺度上无法解决的问题。例如,假设许多人被困在一个没有任何机器的岛上,而他们需要处理一些复杂的数字才能逃脱。 我想象安排人员,以便他们从系统中其他组接收输入,做出简单的决策(也许不是二进制决策),然后将输出传递给其他组。 然后,我想象可以开发某种编程语言来控制数据和计算流程,并且该语言可以用于解决复杂的问题而无需个人理解整体问题。 因此,我想以上内容不是一个可以回答的问题,但是任何人都不会知道任何研究,书籍,论文或任何有关实现目标,可以解决和潜在解决的问题,什么样的控制语言的知识。部署以及如何扩展该体系结构以处理更复杂的问题? 我想从本质上讲,我正在寻找可以“随意”排列的“理想化”原子(如自包含)和标准计算单元上的任何内容,我只是在以人类的眼光思考。 我觉得这个主意引人入胜。我希望有一天能尝试一下,看看能达到什么效果!抱歉,我使用过的标签,当我在这里搜索标签时,我很快意识到我不知道我在想什么正确的术语,尽管我确信它存在于该领域中...

2
是否有一个非平凡类型等于它自己的派生类型?
一篇名为“常规类型的导数是其单孔上下文的类型”的文章显示,类型的“拉链”(即一个孔上下文)遵循类型代数中的微分规则。 我们有: ∂XX∂X0∂X1个∂X(S+ T)∂X(S× T)↦ 1↦ 0↦ 0↦ ∂&X小号+ ∂XŤ↦ ∂&X小号× T+ S× ∂XŤ∂xx↦1∂x0↦0∂x1↦0∂x(S+T)↦∂xS+∂xT∂x(S×T)↦∂xS×T+S×∂xT\begin{align} \partial_x x &\mapsto 1 \\ \partial_x 0 &\mapsto 0 \\ \partial_x 1 &\mapsto 0 \\ \partial_x (S + T) &\mapsto \partial_x S + \partial_x T \\ \partial_x (S\times T) &\mapsto \partial_xS \times T + S \times …

2
我们知道,上下文无关的语言不会在补充条件下封闭。 据我了解,上下文无关的语言是某些字母的的子集,在complement(!?)下关闭 a ,b一种∗b∗a∗b∗a^*b^*一,ba,ba,b 这是我的论点。每个CF语言都有一个半线性的Parikh图像。半线性集在补码下是封闭的。代表半线性集的向量集可以轻松地转换为线性语法。π (大号)= { (米,Ñ )| 一米b Ñ ∈ 大号}大号LLπ(L )= { (m ,n )∣ a米bñ∈ 大号}π(L)={(m,n)∣ambn∈L}\pi(L) = \{ (m,n) \mid a^mb^n \in L \} 题。是否有对此事实的易于访问的参考? 从技术上讲,这些语言称为有界语言,即的某些单词。 w 1,… ,w kw∗1个… w∗ķw1∗…wk∗w_1^* \dots w_k^*w1个,… ,wķw1,…,wkw_1,\dots,w_k 我对此问题的动机来自于最近一个关于的上下文无关性的问题。在补码似乎更易于处理。a ∗ b ∗{ añb米| ñ2≠ m }{anbm∣n2≠m}\{ a^nb^m \mid n^2 \neq …

1
是否存在针对终端程序完全优化的编译器?
在安德鲁·W·阿佩尔(Andrew W. Appel)的《现代编译器在ML中的实现》一书中,他说,在第17章中,可计算性理论表明,总是有可能发明新的优化转换,并继续证明完全优化的编译器将解决停顿问题:不产生输出且永不停止的Q可以轻松地用其最佳表示Opt(Q)代替,即“ L:goto L”。因此,完全优化的编译器可以解决停止问题。 所以我的问题是:是否存在用于终端程序的完全优化的编译器?我唯一的想法是:即使保证某个程序可以终止,它仍然可以任意复杂,对于任何具体的优化编译器C,一个人也许可以构造一个以C作为输入的程序,并以某种方式生成较差的程序,如下所示:某种特殊情况。 另外,将自己限制为终止程序有什么含义?

3
在运行时边界中是否出现比逆Ackermann增长慢的函数?
一些复杂的算法(联合查找)具有渐近时间复杂度中出现的近似恒定的逆阿克曼函数,如果忽略近似恒定的逆阿克曼项,则它们是最坏情况下的时间最优。 是否有已知算法的运行时间有任何示例,这些算法的运行时间从根本上比逆阿克曼倒数慢(例如,在多项式或指数等变换下不等同于阿克曼的函数倒数)给出了最著名的最坏情况时间解决根本问题的复杂性?

4
压缩两个整数,不考虑顺序
将有序对(x,y)与无序对{x,y}(集合)进行比较,然后从理论上将信息相比较,差异仅是一位,因为x是第一个还是y都需要一个单独的位来表示。 因此,如果给定集合{x,y},其中x,y是两个不同的32位整数,是否可以将它们打包为63位(而不是64位)?应该可以从63位结果中恢复原始的32位整数,但不能恢复其顺序。

5
计算到底是什么?
我知道某种意义上的计算是什么(计算机所做的就是这样),但是我想要一个更严格的定义。 Dictionary.com的计算,计算,计算和计算的定义是循环的,因此无济于事。 Wikipedia将计算定义为“遵循明确定义的模型的任何类型的计算”。它将计算定义为“经过有变而将一个或多个输入转换为一个或多个结果的蓄意过程”。但是似乎该定义包括许多动作作为计算,即使通常不将其视为计算。 例如,这是否就意味着炸弹爆炸是一种计算,输入是点燃的保险丝,输出是爆炸? 那么,计算到底是什么?

1
是否在检测“双重”算术级数3SUM困难?
这是受采访问题启发的。 我们给出一个整数数组并且必须确定是否有不同的使得 i < j < ka1,…,ana1,…,ana_1, \dots, a_ni<j<ki<j<ki \lt j \lt k ak−aj=aj−aiak−aj=aj−aia_k - a_j = a_j - a_i k−j=j−ik−j=j−ik - j = j - i 也就是说,序列和都在算术级数上。{ 我,Ĵ ,ķ }{ a一世,一Ĵ,一ķ}{ai,aj,ak}\{a_i, a_j, a_k\}{ i ,j ,k }{i,j,k}\{i,j,k\} 有一个简单的算法,但是找到次二次算法似乎很困难。Ø (ñ2)O(n2)O(n^2) 这是一个已知问题吗?我们可以证明这一点的3SUM难度吗?(或者提供次二次算法?) 如果愿意,可以假定,并且对于已知常数。(在面试问题中,)。一个[R + 1 - 一- [R ≤ ķ ķ …

2
子集总和:将特殊情况减少为一般情况
Wikipedia指出子集总和问题是找到给定整数集合的总和为零的子集。进一步说,这等同于为任何给定找到具有和的子集。ssssss 因此,我认为,因为它们是等效的,所以任何一方都必须减少。通过设置s = 0,从到零的1是微不足道的。但是我没有运气找到从零到减少小号,即给定的一组整数甲,构建一组整数乙包含与总和的子集小号(对于任何小号),当且仅当有作为子集阿与总和为零。ssss=0s=0s = 0sssAAABBBssssssAAA 你能给我一些指导吗?

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.