计算机科学

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

7
反向抛光符号的意义是什么?
我向18岁的孩子教授计算机。在向他们解释了反波兰符号后,有人问为什么它足够重要才能参加公开考试。我解释了70年代计算器的历史意义,但这未能真正解决这个问题。RPN也有并发的实际或理论应用。

1
域名压缩
此问题是从Stack Overflow 迁移而来的,因为可以在Computer Science Stack Exchange上回答。 迁移 7年前。 我对如何紧凑压缩任意IDN主机名(由RFC5890定义)的域感到好奇,并怀疑这可能会成为一个有趣的挑战。Unicode主机或域名(U标签)由一串Unicode字符组成,通常取决于顶级域名(例如,下的希腊字母.gr),被限制为一种语言,该Unicode字符被编码为以xn--(一个标签)。 人们不仅可以根据以下正式要求来建立数据模型: 每个非Unicode标签都是一个字符串匹配^[a-z\d]([a-z\d\-]{0,61}[a-z\d])?$; 每个A标签都是一个字符串匹配^xn--[a-z\d]([a-z\d\-]{0,57}[a-z\d])?$;和 整个域的总长度(A标记和非IDN标记以“。”分隔符连接)不超过255个字符 而且还来自各种启发式方法,包括: 低阶U标签在某些自然语言中通常在词法,句法和语义上都是有效的短语,包括专有名词和数字(连字符除外,不加标点,去除空白并按Nameprep折叠),偏爱较短的短语;和 高阶标签是从SLD和TLD的字典中​​提取的,并为预测低阶标签中使用哪种自然语言提供了上下文。 我担心,如果不考虑数据的这些特定特征,很难对这样的短字符串进行良好的压缩,此外,现有的库将产生不必要的开销,以适应其更一般的用例。 阅读Matt Mahoney的在线书《Data Compression Explained》,很显然,可以利用许多现有技术来利用上述(和/或其他)建模假设,与不那么具体的工具相比,它们应该带来更好的压缩效果。 就上下文而言,此问题是SO上一个问题的分支。 最初的想法 令我惊讶的是,这个问题是脱机培训的绝佳选择,我设想了以下几行的压缩数据格式: 霍夫曼编码的“ 公共后缀 ”,其概率来自域名注册或流量的某些公开来源; 其余的U标签使用霍夫曼编码(自然语言)模型,并从给定的域后缀上下文中某些已发布的域注册或业务量来源中提取概率; 应用来自指定自然语言模型的一些基于字典的转换;和 U标签中每个字符的算术编码,其概率来自脱机训练(甚至可能是在线,但我怀疑数据可能太短而无法提供任何有意义的见解?)的上下文自适应自然语言模型。


4
集合相交的数据结构?
是否有任何数据结构可以维护(有限基础集的)集合的集合,从而支持以下操作?任何亚线性运行时间将不胜感激? 初始化一个空集。 将元素添加到集合中。 给定两个集合,报告它们是否相交。

1
行多态性和子类型化之间的主要区别是什么
我经常听到行多态比子类型化更好,但是我很难找到详细比较它们的方法。我对系统用户的观点特别感兴趣。 我确实看过这篇博客文章,但是它给我留下了比以前更多的问题。例如,它声称具有子类型的系统将分配一种类型,而具有行类型的系统将分配另一种类型。这是否意味着如果一个据称具有子类型的系统分配了“行类型”类型,那么它的命名是否正确? 我确实看到的一个主要区别是,行键入使对齐参数的类型成为可能(也就是说,编写一个仅与a参数字段有关的两个参数函数,但要求其参数具有相同的字段) 。
20 typing 

2
如何有效地找到数字和序列的元素?
出于兴趣,我试图解决Euler项目(数字总和序列)的“最近”类别中的问题 。但是我想不出一种有效解决问题的方法。问题如下(在最初的问题序列中,开始时有两个问题,但不会改变序列): 的数字和序列是1,2,4,8,16,23,28,38,49 ....其中nthnthn^{th}序列的术语是和数字序列中它前面。找到序列的1015th1015th10^{15}th项。 天真的解决方案无法实现,因为它需要大量时间。我试图减少的问题,以矩阵幂的情况下(这将花费O(log(1015))O(log(1015))O(log ( 10^{15}))的时间量),但不能想出这样的复发拟合线性标准作为复发,这种序列是相当特有。可以看出,该序列由重复控制: an=an−1+d(an−1).....(1)an=an−1+d(an−1).....(1) a_n = a_{n-1} + d( a_{n-1} ) ..... (1 ) 其中anana_n是nthnthn^{th}序列的术语和ddd是给定的自然数作为数(例如数字输入返回总和时的功能。d(786)=21d(786)=21\;d(786)=21)。我的第二种方法是尝试在序列中找到某种模式。可以看出,序列的前几项可以写成 a_1 = 1 a_2 = 1 + d( 1 ) a_3 = 1 + d( 1 ) + d( 1 + d( 1 ) ) a_4 = 1 + d( 1 …

2
为什么二倍体(显性/隐性)基因没有在遗传算法中广泛使用?
此问题是从“人工智能堆栈交换” 迁移而来的,因为可以在“计算机科学堆栈交换”上回答。 迁移 5年前。 在遗传算法的大多数实现中,重点是交叉和变异。但是不知何故,它们中的大多数都忽略了基因的二倍体(显性/隐性)性质。就我(有限的)理解而言,基因的显性/隐性是决定生物体实际特征的一个非常重要的因素。 所以我的问题是,为什么在大多数实施方案中基因算法的基因没有二倍体性质? 是因为: 它没有太大的好处 它为原本简单的算法增加了不必要的复杂性 很难实现 还是完全其他?

3
基数排序的实际应用
当您知道键在某个有限范围内时,从根本上讲,基数排序非常快,例如,值在范围内。如果你只值转换为基础这需要时间,做了基础基数排序,然后再转换回原来的一个整体底座算法。[ 0 ... Ñ ķ - 1 ] ķ &lt; LG Ñ Ñ Θ (Ñ )ñ Θ (Ñ ķ )ñnn[ 0 … nķ− 1 ][0…nk−1][0\dots n^k -1]k &lt; lgñk&lt;lg⁡nk<\lg nñnnΘ (n )Θ(n)\Theta(n)ñnnΘ (千k )Θ(nk)\Theta(nk) 但是,我已经读到,实际上,基数排序通常比进行随机化的quicksort慢得多: 对于大型阵列,基数排序的指令数最少,但是由于其相对较差的缓存性能,其总体性能比合并排序和快速排序的内存优化版本差。 基数排序只是一种很好的理论算法,还是有通用的实际用途?

2
使用Bellman Ford获得负循环
我必须在有向加权图中找到一个负周期。我知道Bellman Ford算法是如何工作的,它告诉我是否存在可达到的负周期。但是它没有明确命名。 如何获取循环的实际路径?v1,v2,…vk,v1v1,v2,…vk,v1v1, v2, \ldots vk, v1 应用标准算法后,我们已经进行了次迭代,因此不可能进一步改进。如果我们仍然可以降低到节点的距离,则存在负循环。n−1n−1n-1 我的想法是:由于我们知道仍然可以改善路径的边缘,并且知道每个节点的前身,因此我们可以从该边缘追溯到直到再次遇到它为止。现在我们应该有一个循环。 可悲的是,我没有找到任何可以告诉我这是否正确的论文。那么,它真的像那样工作吗? 编辑:此示例证明我的想法是错误的。给定下图,我们从节点运行Bellman-Ford 。1个11 我们按的顺序处理边缘。经过次迭代后,我们得到节点距离:n − 1a ,b ,c ,da,b,c,da, b, c, dn − 1n−1n-1 2 :- 30 3 :- 151:−51:−51: -5 2:−302:−302: -30 3:−153:−153: -15 和父表:有父有父有父 3 2 3 3 2111333 222333 333222 现在,进行第次迭代,我们发现仍可以使用边沿改善节点的距离。因此,我们知道存在一个负循环,而是其中的一部分。1 一个一个nnn111aaaaaa 但是,通过追溯到父表的方式,我们陷入了另一个负循环,再也不会相遇。一c,dc,dc, daaa 我们如何解决这个问题?

3
如何严格制定一个计算问题?
我经常与想问一个关于计算问题(或其复杂性)的算法的人互动,但是他们并没有以一种严格的方式来表达我们(计算机科学家)可以理解的方式。 用CLRS之类的书来引用它们是没有帮助的,因为那里的示例通常有一种非常直接的方式来严格地陈述,例如,给定一个图的邻接列表,并且图中的两个顶点计算出这些顶点之间的最短路径。 是否有任何一本好书(或其他资源),使对CS知识最少的人可以学习如何以计算机科学家可以理解的严格方式来表述和陈述计算问题? 最好,这本书应该有许多示例,这些示例如何从各个领域和现实世界的示例中严格地阐述计算问题。 澄清度 为了使问题更具体,让我们假设他们了解1/2年级本科CS学生的基本数学/ CS术语,例如集合,函数,图形,列表等(我所拥有的人就是这种情况)心神)。例如,他们阅读了一些入门性教科书,例如Aho和Ullman(尽管他们可能还没有完全理解它)。 Al Aho和Jeff Ullman,计算机科学基金会,1992年。

1
比萨商业声称有3400万种组合
一家披萨商业广告声称您可以将其成分组合成3,400万种不同的组合。我不敢相信,所以我除掉了生锈的组合技巧,并试图弄清楚。到目前为止,这是我的一切:从在线订购网站上,我有了选择 地壳(4种,选择1种) 大小(4种,选择1),某些地壳被限制为一定的大小-不考虑该大小,但希望如此。 奶酪(5种,选择1种) 酱油(4种,选择1种) 酱油级别(3种,选择1种) 肉(9种,最多选择9种) 非肉类(15种,最多选择15种) 因此,我认为这是一个组合问题(顺序并不重要),而不是n选择k问题,除了结皮和结皮,大小,奶酪,酱汁和酱汁水平都只能选择一个以外,null不允许任何其他内容。肉类和非肉类?因此将是:2?2?2^? 外壳 (41)=4(41)=4\binom{4}{1}=4 大小 (41)=4(41)=4\binom{4}{1}=4 奶酪(51)=5(51)=5\binom{5}{1}=5 酱 (41)=4(41)=4\binom{4}{1}=4 酱汁水平(31)=3(31)=3\binom{3}{1}=3 肉29=51229=5122^9 = 512 非肉类215=32768215=327682^{15} = 32768 在这一点上,我很棘手,如何将这些结合起来以得出可能的结合总数? 我发现此站点很有帮助。 ETA: 如果我不考虑地壳尺寸的限制-一些地壳仅在某些尺寸下可用-超过160亿个;提供了16,106,127,360个组合,因此它们相差很大。

1
无锁,恒定的更新时间并发树数据结构?
我最近阅读了一些文献,并且发现了一些相当有趣的数据结构。 我研究了各种不同的方法来将更新时间降低到最坏情况下的更新时间[1-7]。O(1)O(1)\mathcal{O}(1) 最近,我开始研究无锁数据结构,以支持有效的并发访问。 在无锁数据结构的实现中是否使用了这些最坏情况下的更新时间技术?O(1)O(1)\mathcal{O}(1) 我问是因为 在我看来,它们似乎是这种“理论上的增强”的明显实践扩展。 Tarjan,Robert Endre。“以O(1)循环更新平衡的搜索树。”《信息处理快报》,第16号,否。5(1983):253 – 257。 Driscoll,JR,N Sarnak,DD Sleator和RE Tarjan。“使数据结构持久化”。在第18届ACM计算理论年度学术会议论文集中,109-121。STOC '86。美国纽约州:ACM,1986年。 Levcopoulos,C。和Mark H. Overmars。“具有O(1)最坏情况更新时间的平衡搜索树。” Acta Inf。26号 3(1988年11月):269-277。 鲁道夫·弗莱舍。具有O(1)最坏情况更新时间的简单平衡搜索树 Dietz,Paul F和Rajeev Raman。“一个恒定的更新时间手指搜索树。”信息处理,第52号信。3(1994):147 – 154。 Lagogiannis,George,Christos Makris,Yannis Panagis,Spyros Sioutas和Kostas Tsichlas。“具有最坏情况下恒定更新时间的新动态平衡搜索树。” J. Autom。郎 梳子。8号 4(2003年7月):607-632。 Brodal,GerthStølting,George Lagogiannis,Christos Makris,Athanasios Tsakalidis和Kostas Tsichlas。“指针机器中的最佳手指搜索树。” J. Comput。Syst。科学 67号 2(2003年9月):381-418。

1
如何在另一个多边形内打包多边形?
我订购了几张皮革,我希望通过将边缘缝合在一起来制造杂耍球。我将柏拉图式固体用于球的形状。 我可以扫描皮革板并生成一个近似于皮革板形状的多边形(如您所知,它是动物皮肤,并且不是矩形的)。 所以现在,我想将杂耍球的尺寸最大化。 在我的示例中,多边形是常规的多边形,但是我正在寻找使用简单多边形的解决方案。 我可以将多边形应用到图纸中的最大比例因子是多少? 我试图通过使用尽可能多的材料来减少浪费。 显然,将多面体网切成单个多边形会增加可能组合的空间,但也会降低最终几何图形的质量,因为这会涉及更多的缝制和累积的误差。但是,这个问题不是关于枚举展开多面体的不同方法。它们可以独立考虑。因此,多边形是简单的多边形。 正式地: 输入: :一个简单的多边形(目标)PPP :我要放置的一组多边形SSS : n个简单多边形的图-每个节点代表 S中的一个简单多边形,并且每对多边形之间有一个共享公共边的边 GGGnnnSSS (材料和连接性的使用)α&gt;=0,β&gt;=0α&gt;=0,β&gt;=0\alpha >= 0, \beta >= 0 输出: 比例因子fff , G的子图HHHGGG : V (G )中每个多边形的位置和角度大号Ô Ç大号ØCLocV(G )V(G)V(G) 解决方案的质量的度量:m = α 。˚F + β 。| E (高)|米米mm = α 。F+ β。| Ë(高)|| Ë(G )|米=α。F+β。|Ë(H)||Ë(G)| m = \alpha.f …

1
如何在输入字符串的长度上使用归纳法编写证明?
在我的计算机理论课程中,我们遇到的许多问题都涉及对输入字符串的长度进行归纳,以证明有关有限自动机的陈述。我了解数学归纳法,但是当琴弦开始演奏时,我会被绊倒。如果有人会逐步进行这样的证明,我将非常感激。 这是一个示例问题(Hopcroft和Ullman第3版的练习2.2.10): 考虑具有以下过渡表的DFA: 0 1 ________ -&gt; A | AB * B | BA 非正式地描述此DFA接受的语言,并通过对输入字符串的长度进行归纳来证明您的描述正确。 这是本书中已回答的问题,所以我不是在找人做作业。我只需要有人直接向我解释。 图书的答案:( 从此处获取) 自动机告诉看​​到的1的数目是偶数(状态A)还是奇数(状态B),在后一种情况下可以接受。这是对| w |的简单归纳。当且仅当w具有偶数1时才显示dh(A,w)=A。基础:| w | =0。然后,w,空字符串肯定具有偶数1,即零1,并且δ-hat(A,w)=A。 归纳法:假设语句小于w。然后w = za,其中a为0或1。 情况1: a =0。如果w的偶数为1,则z也是如此。根据归纳假设,δ-hat(A,z)=A。DFA的跃迁告诉我们δ-hat(A,w)=A。如果w具有1的奇数,则z也是如此。根据归纳假设,δ-hat(A,z)= B,而DFA的跃迁告诉我们δ-hat(A,w)=B。因此,在这种情况下,δ-hat(A,w)=如果且仅当w的偶数为1时为a。 情况2: a =1。如果w的偶数为1,则z的奇数为1。根据归纳假设,δ-hat(A,z)=B。DFA的跃迁告诉我们δ-hat(A,w)=A。如果w的奇数为1,则z的偶数为。 1。根据归纳假设,δ-hat(A,z)= A,而DFA的跃迁告诉我们δ-hat(A,w)=B。因此,在这种情况下,δ-hat(A,w )=当且仅当w的偶数为1时=A。 我知道如何证明使用归纳法。我对构建字符串的工作方式感到困惑。我对加粗的部分感到困惑。我不明白他们是如何提出的/它实际上如何证明接受的内容/它是如何归纳的。∑ni=0i=n(n+1)2∑i=0ni=n(n+1)2\sum_{i=0}^{n}i = \frac{n(n+1)}{2} 顺便说一下,δ-hat是扩展的转移函数。

1
难解决/难解决的满意度变量的分类
最近,我在论文[1]中发现了SAT的一种特殊对称形式,称为2/2 / 4-SAT。但是那里有许多变体,例如:MONOTONE NAE-3SAT,MONOTONE 1-IN-3-SAT,...NPNP\text{NP} 其他一些变体是容易处理: -,平面NAE-,...SAT SAT222SAT考试SAT\text{SAT}SAT考试SAT\text{SAT} 是否有调查文件(或网页)对所有已证明是 -complete(或在)的(奇怪的)变体进行分类?NP PSAT考试SAT\text{SAT}NPNP\text{NP}PP\text{P} NñNNNNND. Ratner和M. Warmuth(1986)很难找到15-Puzzle 的 x扩展的最短解决方案。

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.