计算机科学

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

2
销售时间段
给定个人想要购买的个时隙。人对于每个时隙都有值。每个人只能购买一个连续的时隙块,这可能是空的。nnnkkkiiih(i,j)≥0h(i,j)≥0h(i,j)\geq 0jjj 是否有多项式时间算法来计算卖方可以实现的最大值? 没有连续性约束,我们可以将每个时隙分配给最重视它的人。同样,如果我们固定了个人的时隙顺序,则可以使用动态编程来求解第一个个人购买第一个时间的最大值插槽。kkk0≤i≤k0≤i≤k0\le i \le k0≤j≤n0≤j≤n0\le j \le n

6
有效压缩简单的二进制数据
我有一个文件,其中包含从到有序二进制数字:2 n − 10002n−12n−12^n - 1 0000000000 0000000001 0000000010 0000000011 0000000100 ... 1111111111 7z不能非常有效地压缩该文件(对于n = 20,22 MB被压缩为300 kB)。 是否有可以识别非常简单的数据结构并将文件压缩到几个字节的算法?我也想知道CS或信息理论的哪个领域研究这种智能算法。“ AI”的范围太广,请提出更具体的关键字。 对称性概念应该在数据压缩中起基本作用,但是搜索查询“数据压缩中的对称性”和“数据压缩中的群论”令人惊讶地几乎没有任何相关性。

2
我如何在超市找到我的妻子?
如果两个人在迷宫中迷路,是否有一种算法可以供他们双方使用,而无需事先同意他们将使用哪种算法? 我认为该算法具有一些特点: 每个人都必须能够使用不对另一个人的决定做任何假设的逻辑来推导它,但是由于每个人都知道另一个人的立场相同,因此他们可以推论另一个必须作出的决定。 双方都必须采用完全相同的算法,因为双方的情况完全对称(双方都不了解对方的起始位置,迷宫的大小是固定的,并且由双方完全映射)。请注意,该算法不需要是确定性的:允许将其随机化。

6
有图灵机的物理类比吗?
最近在我的CS课上,我被介绍给Turing Machine。 课后,我花了两个多小时试图弄清楚磁带和机器之间的关系。 直到今天,我还完全不知道计算机磁带的存在或磁带与机器如何相互作用。我仍然看不到为什么机器会读取磁带,但是扫描仪也许比图灵机更接近概念,在图灵机中,纸张被视为磁带,而扫描仪内部的任何东西都将成为图灵机的工作。 但是无论如何,图灵机的想法不是很陈旧吗?我们办公室或客厅中有如此多的物理(而不是假设的)设备,似乎可以完成图灵机的工作。 有人可以提供一个从现实中汲取经验的更好的例子,以便抓住这种假想概念的基本功能吗?

12
为什么过拟合不好?
我已经研究了很多,他们说过度适合机器学习中的动作是不好的,但是我们的神经元确实变得非常强大,可以找到我们所经历或避免的最佳动作/感觉,并且可以从不良中减少/增加。 /好或坏触发的好,表示动作会趋于平缓,最终得到最佳(正确),超强自信的动作。这怎么会失败?它使用正负感应触发器来减少/重新增加44pos中的动作。至22neg。

3
NP完全问题在NP中并非“显而易见”
在我读过的所有完整性证明中(我还记得),很多人总是很容易地证明中存在问题,并且表明这是 -困难是...困难的部分。什么 -完整的问题是这些,其多项式时间验证器是非常不平凡的?NPNP\textbf{NP}NPNP\textbf{NP}NPNP\textbf{NP}NPNP\textbf{NP}

2
展示如何手动执行FFT
假设您有两个多项式:和。3+x3+x3 + x2x2+22x2+22x^2 + 2 我试图了解FFT如何帮助我们将这两个多项式相乘。但是,我找不到任何可行的示例。有人可以告诉我FFT算法如何将这两个多项式相乘。(注意:这些多项式没有什么特别的,但我想简化它以使其易于理解。) 我已经看过伪代码中的算法,但是它们似乎都存在问题(不要指定输入应该是什么,未定义的变量)。令人惊讶的是,我找不到任何人实际经过(手动)使用FFT相乘多项式的示例。

5
图灵机和有限状态机之间的区别?
我正在做一个关于图灵机的演讲,我想在介绍图灵机之前先介绍一下FSM。问题是,我真的不知道彼此之间有什么很大的不同。 我知道这是不同的: FSM具有相继的状态,具体取决于所满足的相应条件,而图灵机在带有读写头的无限“ Tape”上运行。 FSM的错误空间更大,因为我们很容易陷入无休止的状态,而图灵机的错误空间则不大,因为我们可以返回并进行更改。 但是除此之外,我不知道还有更多差异可以使图灵机比FSM更好。 你能帮我么?

4
摩尔斯电码是二进制,三进制还是五进制的?
我正在阅读《代码:计算机硬件和软件的隐藏语言》这本书,在第二章中作者说: 莫尔斯电码被认为是二进制(字面意思是二乘二)代码,因为该代码的组成部分仅由两点组成-点和破折号。 另一方面,维基百科说: 严格来说,它不是二进制的,因为它有五个基本元素(请参阅quinary)。但是,这并不意味着摩尔斯电码不能表示为二进制代码。从抽象的意义上讲,这是电报运营商在传输消息时执行的功能(请参阅五进制)。 但话又说回来,另一个Wikipedia 页面在“二进制代码列表”中包含了摩尔斯电码。 我很困惑,因为我认为摩尔斯电码实际上是三元的。您有3种不同的“可能性”:静默,短蜂鸣或长蜂鸣。 用“搅拌二进制”表示莫尔斯电码是不可能的,不是吗? “严格二进制”是指二进制流:1010111101010 ..我应该如何表示静音,短蜂鸣和/或长蜂鸣? 我能想到的唯一方法是计算机实现的“字号”。如果我(和CPU /代码的解释器)知道每次将读取8位,那么我可以代表摩尔斯电码。我可以简单地用1表示一个短蜂鸣声,或用0表示一个长蜂鸣声,而沉默将由单词长度隐式表示。(假设是8位。)因此,我又有了这个第3个变量/第3个资产我的手:字号。 我的想法是这样的:在一个8位的字中,我可以为要读取的位保留前3位,为莫尔斯电码保留后5位。就像00110000代表'A'。而且我仍然处于“二进制”状态,但是我需要使它变为三进制的字长,不是吗?前3位表示:接下来的5位仅读取1位。 代替二进制,如果我们使用三进制,我们可以显示摩尔斯电码,例如:101021110102110222等。其中1是:dit 0是:dah,2是静默。通过使用222,我们可以对长时间的静音进行编码,因此,如果您具有*-* --- *-之类的信号,则可以显示为:102100022210,但是除非直接使用1和0,否则不可能直接使用就像我提到的“固定”字长一样,但这很好解释,而不是以二进制形式保存摩尔斯电码。想象一下像钢琴之类的东西,您只有钢琴按钮。您想用摩尔斯电码给某人留言,可以将按钮涂成黑色。您无法留下清晰的信息,不是吗?您还需要至少一种颜色,以便您可以设置静音(字符和单词之间的静音。这就是三叉戟的意思)。 我不是问您能否用57进制数或其他任何形式表示摩尔斯电码。 我已经通过电子邮件发送给作者(Charles Petzold);他说,他在“代码”的第9章中演示了摩尔斯电码可以解释为二进制代码。 我的想法哪里出问题了?我在读的书是摩尔斯电码是二进制吗?是否值得商bat?为什么在一个维基百科页面上将摩尔斯电码告诉成五进制,并且在“二进制码列表”页面中也列出了摩尔斯电码? 编辑:我已经通过电子邮件发送给作者并得到了回复: - - -原始信息 - - - 发件人:Koray Tugay [mailto:koray@tugay.biz] 发送:2015年3月3日,星期二,下午3:16 至:cp@charlespetzold.com 主题:莫尔斯电码真的是二进制的吗? 主席先生,您能否在这里看看我的问题:摩尔斯电码是二进制,三进制还是五进制的?五进制? 此致,Koray Tugay 来自:“查尔斯·皮佐尔德” 致:“'Koray Tugay'” 主题:RE:莫尔斯电码真的是二进制的吗?日期:3 2015年3月23:04:35 EET 在“代码”的第9章结尾处,我演示了莫尔斯电码可以解释为二进制代码。 - - -原始信息 - - - …

5
图灵机的实际重要性?
我是一名电气工程师,而且26年前在大学里只有一门CS课程。但是,我也是Mathematica的忠实用户。 我觉得图灵机在计算机科学中非常重要。重要性仅在计算机科学理论中吗?如果有实际意义/应用,其中有哪些?

9
编程语言是否越来越像自然语言?
此问题已从软件工程堆栈交换迁移,因为可以在计算机科学堆栈交换上回答。 迁移 6年前。 我们可以在语言学背景下学习编程语言吗?编程语言会以与自然语言类似的方式自然地进化吗? 尽管完全的合理性和数学上的一致性对于编程语言至关重要,但仍然需要(尤其是现代语言)使它们对人类可读并舒适。 编程语言是否正在发展以变得更加语言化并因此变得更加自然?例如,机器代码,打孔卡和汇编语言已被更易读的语言(如Ruby和Python等)所取代。 当我说计算机语言变得越来越自然时,我并不是说它们包含更多的“英语中的单词”,而是因为它们的语法复杂性和表达含义的能力似乎变得更像一种自然语言。 (例如,能够以理性和人类可理解的方式雄辩地描述来自数据库的查询)。 你们怎么想 编程语言是否变得越来越像自然语言,从而变得适用于语言学法则? 也许语言生活在一个范围内,一方面,您拥有极端理性的语言,另一方面,您拥有更多的创造力。也许编程语言和自然语言是完全相同的,并且两者都只是在这种语言范围内(它们唯一的区别,也许就是他们试图赋予其含义的“事物”)。 人类语言的(巴别塔效应)分离与计算机语言之间是否存在联系?它们是否由于相同的原因而变得更加多样化(即解决不断发展的计算机系统/文化系统等内部的不同问题)?

4
查找图形直径的时间复杂度
找到图的直径的时间复杂度是 多少?G=(V,E)G=(V,E)G=(V,E) O(|V|2)O(|V|2){O}(|V|^2) O(|V|2+|V|⋅|E|)O(|V|2+|V|⋅|E|){O}(|V|^2+|V| \cdot |E|) O(|V|2⋅|E|)O(|V|2⋅|E|){O}(|V|^2\cdot |E|) O(|V|⋅|E|2)O(|V|⋅|E|2){O}(|V|\cdot |E|^2) 图的直径是图中所有顶点对之间的最短路径距离的集合中的最大值。GGG 我不知道该怎么办,我需要对如何解决这样的问题进行完整的分析。

1
regex golf NP-Complete吗?
如最近的XKCD摘录和最近的博客文章所示来自Peter Norvig(以及Slashdot故事中的后者),“ regex golf”(可能更好地称为正则表达式分离问题)是定义可能的最短正则表达式的谜题,该正则表达式接受集合A中的每个单词,而在其中不包含任何单词B集。Norvig的帖子中包含用于生成合理的简短候选者的算法,他指出他的方法涉及解决NP完全集覆盖问题,但他也要小心地指出,他的方法并未考虑所有可能的正则表达式,当然,他不一定是唯一的算法,因此不能保证他的解是最优的,而且其他确定的多项式时间算法也有可能找到等效或更好的解。 为了具体起见并避免解决优化问题,我认为正则表达式分隔的最自然表达是: 给定在某个字母两组(有限)字符串和,是否存在长度的正则表达式,该正则表达式接受每个字符串并拒绝每个字符串?一种AA乙BBΣΣ\Sigma≤ ķ≤k\leq k一种AA乙BB 是否知道有关此特定分离问题的复杂性?(请注意,由于我已将和指定为有限的字符串集,因此问题的自然大小概念是和中所有字符串的总长度;这会淹没任何贡献)。在我看来,它很可能是 NP完全的(实际上,我希望这种减少是某种掩护性问题),但是一些搜索并没有发现任何特别有用的东西。一种一种A乙乙B一种一种A乙乙Bķķk

7
为什么我们需要汇编语言?
我们主要用高级语言编写程序。因此,在学习期间,我遇到了汇编语言。因此,汇编器将汇编语言转换为机器语言,而编译器对高级语言也是如此。我发现汇编语言有指令,如move r1 r3,move 5等等。这很难研究。那么为什么要创建汇编语言呢?还是比高级语言更先出现的汇编语言?为什么在我的计算机工程课上学习汇编程序?

7
为什么在垃圾收集语言中普遍缺少对象析构函数范式?
寻找有关垃圾收集语言设计决策的见解。也许语言专家可以启发我?我来自C ++背景,所以这个领域令我感到困惑。 似乎几乎所有具有OOPy对象支持的现代垃圾收集语言(如Ruby,Javascript / ES6 / ES7,Actionscript,Lua等)都完全省略了析构函数/定型化范例。Python似乎是唯一使用它的class __del__()方法。为什么是这样?在具有自动垃圾收集的语言中,语言是否存在功能/理论上的限制,从而无法在对象上有效实现析构函数/完成方法? 我发现非常缺乏这些语言将内存视为唯一值得管理的资源。套接字,文件句柄,应用程序状态如何?由于无法实现自定义逻辑以清除对象最终确定中的非内存资源和状态,因此我需要使用自定义myObject.destroy()样式调用来填充我的应用程序,将清除逻辑置于“类”之外,破坏尝试的封装,并降级我的应用程序由于人为错误而导致资源泄漏,而不是由gc自动处理。 什么是语言设计决策,这些决策导致这些语言无法对对象处理执行任何自定义逻辑?我必须想象有一个很好的理由。我想更好地理解导致这些语言不支持对象销毁/完成的技术和理论决策。 更新: 也许更好的方式表达我的问题: 为什么一种语言会具有带有类或类结构以及自定义实例化(构造函数)的对象实例的内置概念,却完全省略了销毁/最终确定功能?提供自动垃圾收集的语言似乎是支持对象销毁/完成的主要候选方法,因为他们知道当不再使用某个对象时会100%确定。但是,其中大多数语言都不支持它。 我认为在这种情况下可能永远不会调用析构函数,因为那将是核心内存泄漏,gcs旨在避免这种情况。我可以看到一个可能的论点是,直到将来某个不确定的时间,析构函数/ finalizer才会被调用,但这并没有阻止Java或Python支持该功能。 不支持任何形式的对象完成的核心语言设计原因是什么?

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.