计算机科学

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

2
为什么非可计算函数比可计算函数更多?
我目前正在阅读有关算法和复杂性的书。目前,我正在阅读有关可计算和不可计算的函数的书,并且我的书中指出,不可计算的函数比可计算的函数多,实际上,大多数函数都是不可计算的。从某种意义上说,我可以直观地接受这一点,但是这本书没有给出正式的证明,也没有对此主题进行详尽的阐述。 我只是想看一个证明/让这里的人详细介绍一下/更严格地理解为什么不可计算的功能比可计算的功能多得多的原因。

2
为什么总功能无法枚举?
我们了解了函数枚举的概念。实际上,它们对应于编程语言。 这位教授在一个通俗的评论中提到,所有总功能(即始终为每个输入终止的功能)的类别不可枚举。那将意味着我们不能设计一种编程语言来允许我们编写所有全部功能,而不能编写其他所有功能,这将是一件很高兴的事情! 那么,如果我们想要体面的计算能力,我们(显然)如何不得不接受非终止的可能性呢?

2
具有联合类型的lambda项的特征
许多教科书都涵盖了lambda微积分中的交集类型。交集的键入规则可以定义如下(在带有子类型的简单键入的lambda演算的顶部): Γ⊢M:T1Γ⊢M:T2Γ⊢M:T1∧T2(∧I)Γ⊢M:⊤(⊤I)Γ⊢M:T1Γ⊢M:T2Γ⊢M:T1∧T2(∧I)Γ⊢M:⊤(⊤I) \dfrac{\Gamma \vdash M : T_1 \quad \Gamma \vdash M : T_2} {\Gamma \vdash M : T_1 \wedge T_2} (\wedge I) \qquad\qquad \dfrac{} {\Gamma \vdash M : \top} (\top I) 交叉点类型在归一化方面具有有趣的属性: 一个lambda长期不使用键入的⊤I⊤I\top I治当且仅当它是强烈正火。 一个lambda项接受一个不包含的类型,只要⊤⊤\top它具有正常形式。 如果不添加交集而是添加并集怎么办? Γ⊢M:T1Γ⊢M:T1∨T2(∨I1)Γ⊢M:T2Γ⊢M:T1∨T2(∨I2)Γ⊢M:T1Γ⊢M:T1∨T2(∨I1)Γ⊢M:T2Γ⊢M:T1∨T2(∨I2) \dfrac{\Gamma \vdash M : T_1} {\Gamma \vdash M : T_1 \vee T_2} (\vee …

3
子查询是否为SQL查询增加了表达能力?
SQL是否需要子查询? 想象一下关系数据库的结构化查询语言的足够通用的实现。由于规范SQL SELECT语句的结构实际上对于使其有意义很重要,因此我不直接诉诸关系代数,但是您可以通过对表达式的形式进行适当的限制来用这些术语来构架。 一个SQL SELECT查询通常由投影(的SELECT部分)的一些数目的JOIN操作(JOIN部分),一些数目的SELECTION 操作(在SQL中,WHERE条款),然后设置为单位的运算(UNION,EXCEPT,INTERSECT等),接着再SQL SELECT查询。 被连接的表可以是表达式的计算结果。换句话说,我们可以有一条语句,例如: SELECT t1.name, t2.address FROM table1 AS t1 JOIN (SELECT id, address FROM table2 AS t3 WHERE t3.id = t1.id) AS t2 WHERE t1.salary > 50,000; 我们将使用计算表作为SQL查询的一部分称为子查询。在上面的示例中,第二个(缩进的)SELECT是一个子查询。 能否以不使用子查询的方式编写所有SQL查询?上面的示例可以: SELECT t1.name, t2.address FROM table1 AS t1 JOIN table2 AS t2 ON t1.id = t2.id …

4
如何确定社交网络中可能的连接?
我很想确定一种解决“建议的朋友”算法的方法。 Facebook具有一项功能,它会向您推荐您可能认识的个人。这些用户通常(不包括用户特别推荐朋友的极端情况)与自己的网络高度相似。即,共同的朋友数量很多。我认为Twitter的“关注对象”机制遵循类似的路径。 Facebook员工Stephen Doyle(Igy)表示,使用EdgeRank公式的相关新闻提要似乎表明,比起类似外表之类的朋友,有价值的更多。另一个用户建议使用Google Rank系统。 Facebook的指出他们的新闻饲料优化为哪里∑uewede∑uewede\sum u_{e}w_{e}d_{e} =查看用户与边缘创建者之间的亲和力分数 w e =该边缘的权重(创建,评论,喜欢,标签等) d e =基于创建边缘多长时间的时间衰减因子 ueueu_{e} wewew_{e} deded_{e} 对这些项目求和应该可以得出对象的等级,正如Igy所暗示的那样,这意味着建议朋友使用相似格式的东西。 所以我猜想这是通常通过等级系统完成所有类型的连接的方式吗?

2
如何证明贪心算法是正确的
我有一个贪心算法,我怀疑这可能是正确的,但我不确定。如何检查是否正确?证明贪婪算法正确的技术有哪些?有共同的模式或技术吗? 我希望这将成为一个参考问题,可以用来指导初学者。因此其范围比平常大。请小心给出一般的,有说服力的答案,至少由一个示例说明了这一点,但仍然涵盖了许多情况。谢谢!

4
从单纯形均匀采样
我正在寻找一种算法来生成N个随机数的数组,这样N个数字的总和为1,所有数字都位于0和1之内。例如,N = 3,即随机点(x,y, z)应位于三角形内: x + y + z = 1 0 < x < 1 0 < y < 1 0 < z < 1 理想情况下,我希望该区域内的每个点都具有相等的概率。如果太难了,我可以放弃要求。谢谢。

2
如何有效地确定给定的梯子是否有效?
在我当地的壁球俱乐部,有一个梯子的工作原理如下。 在本赛季开始时,我们会在单独的一行中构建一个表,其中包含俱乐部的每个成员的姓名。 然后,我们在每个名字旁边写上获胜游戏数和玩游戏数(格式:玩家获胜/游戏)。 因此,在本赛季开始时,表格如下所示: Carol 0/0 Billy 0/0 Alice 0/0 Daffyd 0/0 任何两名玩家均可参加比赛,其中一名玩家获胜。如果最接近桌面底部的玩家获胜,则将切换玩家的位置。然后,我们重复步骤2,更新每个玩家旁边的获胜次数和比赛数。例如,如果爱丽丝击败比利,我们有 Carol 0/0 Alice 1/1 Billy 0/1 Daffyd 0/0 这些比赛在整个赛季中持续进行,最终导致球员按实力顺序排列。 不幸的是,更新是以相当偶然的方式发生的,因此会出错。以下是无效表格的一些示例,也就是说,对于某些开始顺序(我们忘记了本赛季开始时使用的顺序)以及比赛和结果的顺序,无法正确按照上述步骤操作而无法生成的表格: Alice 0/1 Billy 1/1 Carol 0/1 Daffyd 0/0 Alice 2/3 Billy 0/1 Carol 0/0 Daffyd 0/0 Alice 1/1 Billy 0/2 Carol 2/2 Daffyd 0/1 给定一个表,我们如何有效地确定它是否有效?我们可以从以下几点开始: 名称的顺序无关紧要,因为我们忘记了原始的起始顺序。 获胜总数应为比赛总数的一半。(这表明上面的第一个示例无效。) …

1
具有许多可除条件的子集和问题
令SSS为一组自然数。我们认为SSS可分偏序下,即s1≤s2⟺s1∣s2s1≤s2⟺s1∣s2s_1 \leq s_2 \iff s_1 \mid s_2。让 α(S)=max{|V|∣V⊆S,Vα(S)=max{|V|∣V⊆S,V\qquad \displaystyle \alpha(S) = \max \{|V| \mid V\subseteq S, V的反链}}\}。 如果考虑数字的多重集在的子集和问题SSS,那么与有关的问题的复杂性又能怎么说呢α(S)α(S)\alpha(S)?很容易看出α(S)=1α(S)=1\alpha(S)=1,那么问题就很容易。注意,当α(S)=1α(S)=1\alpha(S)=1††\dagger时,即使是较难的背包问题也很容易。 ††\dagger 解决M. Hartmann和T.Olmstead(1993)的顺序背包问题


2
除了对角线化,自引用或可归约性之外,是否还有其他原因无法确定的特定问题?
我知道的每个不确定的问题都属于以下类别之一: 由于对角线化(间接自引用)而无法确定的问题。这些问题(如暂停问题)是无法确定的,因为您可以使用该语言的所谓决策器来构造行为会导致矛盾的TM。您还可以将有关Kolmogorov复杂性的许多不确定的问题混入这个阵营中。 由于直接自参考而无法确定的问题。例如,由于以下原因,通用语言可能无法确定:如果可以确定,则可以使用Kleene的递归定理来构建获得自己编码的TM,询问是否接受自己的输入,则相反。 由于减少了现有的不确定性问题而无法确定的问题。这里的很好的例子包括邮政函授问题(从停顿问题中减少)和Entscheidungs问题。 当我向学生讲授可计算性理论时,许多学生也开始学习可计算性理论,并且经常问我是否有任何问题可以证明是无法决定的,而最终并没有追溯到某种自指技巧。我可以用一个简单的基数参数将TM的数量与语言的数量相关联,来无条件地证明存在无限多的不确定性问题,但这并未给出不确定性语言的具体示例。 是否存在由于以上未列出的原因而无法确定的任何语言?如果是这样,它们是什么?使用什么技术来显示其不确定性?

2
什么是批处理编译器?
我在编译器的课程中有以下引文(在图形着色的情况下): 因为它很慢,所以在批处理编译器中倾向于使用图形着色,而在JIT编译器中倾向于使用线性扫描。 我在网上找不到清晰的定义。那么,是什么使编译器成为批处理编译器呢?
28 compilers 

2
“真正的并发”是什么意思?
我经常听到诸如“真正的并发语义”和“真正的并发等效”之类的短语而没有任何参考。这些术语是什么意思,为什么重要? 真正的并发等效的一些例子是什么,对它们有什么需求?例如,在哪些情况下它们比更多的标准等价物(双仿真,痕量等价物)更适用?

6
是否有可以在任何两种语言之间“翻译”源代码的程序?
是否存在可以在任何两种语言之间“翻译”源代码的程序(假设翻译者可以访问必需的库)? 如果存在,它们如何工作(使用的技术,所需的知识等)?它们将如何可行地构造? 如果不是,阻碍其发展的限制因素是什么?这是AI的完整问题(自然语言翻译列为其中一个)吗? 仅当语言具有相同的表达能力时,才可以预期 EDIT转换,可以解决相同类型的问题,并且要转换的代码可以用目标语言表示。(例如,不建议将Shell脚本转换为MATLAB)。


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.