计算机科学

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

7
所有图灵语言是否可以互换
注意,虽然我知道如何编程,但我还是CS理论的初学者。 根据这个答案 图灵完整性是可计算性的抽象概念。如果一种语言是图灵完备的语言,那么它就可以进行任何其他图灵完备的语言可以进行的计算。 并写在任何图灵完备的语言的任何程序可以在另一个被改写。 好。这很有道理。我可以将C转换(编译)为Assembly(并且每天都做!),也可以将Assembly转换为C(您可以使用C编写虚拟机)。同样适用于任何其他语言-您可以将任何一种语言编译为Assembly,然后在用另一种其他语言编写的VM中运行它。 但是,可以任意写在一个图灵完备的语言程序重新编写的另一个? 如果我的部件具有LIGHTBUTTON操作码怎么办?在没有灯泡的情况下,我实际上无法在系统(语言)上模拟该语言。 好。因此,您会说,由于我们正在处理计算机理论,因此我们不在讨论物理设备限制。 但是,没有乘法的设备呢?师?据我所知(尽管这更多是关于math.SE的问题),无法模拟加法和减法的乘法(绝对不是除法)[1]。 那么,“图灵完整语言”(可以添加,减去和跳转)如何模仿另一种可以添加,减去,乘法和跳转的语言呢? 编辑 [1]。关于任意实数。


2
凭经验判断问题是否可以完全解决
这个问题的灵感来自对StackOverflow的评论。 除了了解Garey Johnson这本书中的NP完全问题,以及其他许多问题之外;有一条经验法则可以知道问题是否看起来像是NP完整的问题吗? 我并不是在寻找严格的东西,而是在大多数情况下都能找到可行的东西。 当然,每次我们必须证明一个问题是NP完全问题,或者是NP完全问题的轻微变体时;但是在急于证明之前,对证明的肯定结果抱有一定的信心会很棒。


4
类型和种类有什么区别?
我正在学习编程语言Haskell,并且试图围绕a type和a 之间的区别进行思考kind。 据我了解,a kind is a type of type。例如a ford is a type of car和a car is a kind of vehicle。 这是思考这个问题的好方法吗? 因为,我的大脑当前的连接方式是a ford is a **type** of car,但同时需要car is a **type** of vehiclea car is a **kind** of vehicle。即条款,type并且kind可以互换。 有人能对此有所启示吗?

3
汉明距离等于或大于2的等长单词对的语言是否与上下文无关?
以下语言上下文是否免费? L={uxvy∣u,v,x,y∈{0,1}+,|u|=|v|,u≠v,|x|=|y|,x≠y}L={uxvy∣u,v,x,y∈{0,1}+,|u|=|v|,u≠v,|x|=|y|,x≠y}L = \{ uxvy \mid u,v,x,y \in \{ 0,1 \}^+, |u| = |v|, u \neq v, |x| = |y|, x \neq y\} 如sdcvvc所指出的,该语言中的单词也可以描述为汉明距离为2或更大的两个相同长度单词的串联。 我认为它不是上下文无关的,但是我很难证明这一点。我尝试将此语言与常规语言(例如)相交, 然后使用抽引引理和\或同态性,但是我总是得到一种过于复杂的语言,难以描述和编写下。 0∗1∗0∗1∗ 0∗1∗0∗1∗ \ 0^*1^*0^*1^*

2
如何证明一种语言是上下文无关的?
有许多技术可以证明某种语言不是上下文无关的,但是如何证明一种语言不是上下文无关的? 有什么技术可以证明这一点?显然,一种方法是展现该语言的上下文无关语法。是否有系统的技术来查找给定语言的无上下文语法? 对于常规语言中,有 系统的方法来得到一个正规文法/状态自动:例如,迈希尔-尼罗德定理提供了一种方法。上下文无关的语言是否有相应的技术? 在这里,我的动机是(希望)建立一个参考问题,其中包含一系列试图证明给定语言不受上下文限制时通常有用的技术。由于这里有很多问题是特殊情况,因此,如果我们能记录面对此类问题时可以使用的通用方法或通用技术,那就太好了。


10
“对于较小的n值,可以将O(n)视为O(1)”
我已经听过好几次了,对于足够小的n值,可以将O(n)视为/视为O(1)。 范例: 这样做的动机是基于这样一个错误的观念:O(1)总是比O(lg n)更好,总是比O(n)更好。仅当在实际条件下问题的大小实际变大时,运算的渐近顺序才有意义。如果n保持很小,那么每个问题都是O(1)! 什么足够小?10个?100?一千 您在什么时候说“我们不能再将其视为免费手术了”?有经验法则吗? 这似乎可能是特定于域或特定于案例的,但是关于如何考虑这一点是否有一般的经验法则呢?

6
什么是GCD最有效的?
我知道Euclid算法是获取正整数列表的GCD(最大公约数)的最佳算法。但是实际上,您可以通过多种方式对该算法进行编码。(就我而言,我决定使用Java,但C / C ++可能是另一种选择)。 我需要在程序中使用最高效的代码。 在递归模式下,您可以编写: static long gcd (long a, long b){ a = Math.abs(a); b = Math.abs(b); return (b==0) ? a : gcd(b, a%b); } 在迭代模式下,它看起来像这样: static long gcd (long a, long b) { long r, i; while(b!=0){ r = a % b; a = b; b = …

2
优化版本的决策问题
此问题是从理论计算机科学堆栈交换迁移而来的,因为可以在计算机科学堆栈交换上回答。 迁移 7年前。 已知每个优化/搜索问题都有一个等效的决策问题。例如最短路径问题 优化/搜索版本: 给定一个未加权无向图G=(V,E)G=(V,E)G = (V, E)和两个顶点v,u∈Vv,u∈Vv,u\in V,找到之间的最短路径vvv和。uuu 决策版本: 给定无向非加权图,两个顶点和一个非负整数,在和之间的是否存在一条路径,该路径的长度最大为?v ,Ü ∈ V ķ ģ ù v ķG=(V,E)G=(V,E)G = (V, E)v,u∈Vv,u∈Vv,u\in VkkkGGGuuuvvvkkk x∗∈Xx∗∈Xx^*\in XX ∈ X ˚F (X )≤ ķf(x∗)=min{f(x)∣x∈X}f(x∗)=min{f(x)∣x∈X}f(x^*) = \min\{f(x)\mid x\in X\}x∈Xx∈Xx\in Xf(x)≤kf(x)≤kf(x) \leq k 但是反过来也是如此,也就是说,每个决策问题都有一个等效的优化问题吗?如果不是,那么没有等效优化问题的决策问题的例子是什么?

2
是Dominosa NP-Hard吗?
此问题是从“数学堆栈交换” 迁移而来的,因为可以在“计算机科学堆栈交换”上回答。 迁移 6年前。 Dominosa是一个相对较新的益智游戏。在 网格上播放。在游戏开始之前,将多米诺骨牌 放置在网格上(构成完美的平铺) )。在下一步中,将隐藏多米诺骨牌,仅保留数字。游戏的目的是恢复多米诺骨牌的原始排列。您可以在这里玩游戏:http : //www.puzzle-dominosa.com/:(0 ,0 ),(0 ,1 ),... ,(Ñ ,Ñ )(n + 1 )× (n + 2 )(n+1)×(n+2)(n+1)\times(n+2)(0 ,0 ),(0 ,1 ),... ,(Ñ ,Ñ )(0,0),(0,1),…,(n,n)\left(0,0\right),\left(0,1\right),\ldots,\left(n,n\right) 规则: 规则很简单。您必须找到网格上所有多米诺骨牌的位置。多米诺骨牌是一对数字。每对中只能有一个。 我有一些多项式算法可以解决难题的一小部分。我还可以证明典型的Dominosa网格至少具有解决方案。2ñ2+ o (n )2n2+o(n)2^{\frac{n}{2}+o\left(n\right)} 是Dominosa NP-Hard吗?

6
输入到图灵机的长度可以无限吗?
仅考虑字母,可以作为输入到Turing机器的字符串来自集合。但这对于输入为无限二进制字符串有意义吗?例如,如果图灵机接受所有以0开头的字符串,那么无穷零的二进制字符串是否也属于图灵机接受的语言?Σ *Σ = { 0 ,1 }Σ={0,1个}\Sigma = \{0,1\}Σ∗Σ∗\Sigma^{*}


1
平衡二叉树的两种定义
我已经看到了平衡二叉树的两个定义,它们对我来说看起来有所不同。 如果二叉树认为每个节点的左子树中的内部节点数与右子树中的内部节点数最多相差1,则该树是平衡的。 如果对于任何两个叶子,深度差最大为1,则二叉树是平衡的。 是否满足def的每棵树。1也满足def。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.