计算机科学

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


4
评估给定Bubblesort算法的平均时间复杂度。
考虑冒泡的伪代码: FOR i := 0 TO arraylength(list) STEP 1 switched := false FOR j := 0 TO arraylength(list)-(i+1) STEP 1 IF list[j] > list[j + 1] THEN switch(list,j,j+1) switched := true ENDIF NEXT IF switched = false THEN break ENDIF NEXT 在评估平均时间复杂度时,我必须牢记的基本思想是什么?我已经完成了最坏情况和最佳情况的计算,但是我一直在认真思考如何评估内循环的平均复杂度,以形成方程。 最坏的情况是: ∑我= 0ñ(∑j = 0n − (i + …

1
对于以下问题,是否存在亚三次算法?
给定对称实矩阵,有一种算法可计算总和在所有1 \ leq i &lt;j &lt;k \ leq n上,时间复杂度优于O(n ^ 3)?n×nn×nn \times nA=(aij)A=(aij)A=(a_{ij})∑i,j,kmax(aij,aik,ajk)∑i,j,kmax(aij,aik,ajk)\sum_{i,j,k}\max(a_{ij},a_{ik},a_{jk})1≤i&lt;j&lt;k≤n1≤i&lt;j&lt;k≤n1\leq i<j<k\leq nO(n3)O(n3)O(n^3)

3
为什么大多数互斥量实现不公平?
我的理解是,互斥锁的大多数流行实现(例如C ++中的std :: mutex)都不保证公平性 -也就是说,它们不保证在争用的情况下线程将按其获取锁的顺序进行操作。称为lock()。实际上,甚至有可能(尽管希望很罕见)在争用较高的情况下,某些等待获取互斥锁的线程可能永远无法获取它。 对我而言,这似乎是无益的行为-在我看来,公平的互斥体所产生的行为更符合程序员的期望/期望。 给出互斥量通常不被实现为公平的原因是“性能”,但我想更好地理解这意味着什么-特别是,放宽互斥量的公平性要求如何提高性能?看起来“公平”的互斥锁似乎是微不足道的实现-只需将lock()将调用线程附加到互斥锁的链表的末尾,然后再将其置于睡眠状态,然后使unlock()从下一个弹出线程相同列表的开头并将其唤醒。 我在这里缺少什么互斥体实现的见解,可以解释为什么认为为了提高性能而牺牲公平性是值得的吗?

4
类别和集合之间的语义区别到底是什么?
在这个问题中,我问set和type有什么区别。这些答案确实很明确(例如,@ AndrejBauer),因此出于对知识的渴求,我倾向于对类别进行同样的询问: 每当我读到范畴理论(这诚然是相当非正式的),我无法真正了解它集理论的不同之处,具体。 所以在最具体的方式可能,究竟是什么暗示 关于xXx的说,它是在类,比说,?(例如,说是一个组与说在类别中有什么区别?)。X ∈ 小号X X G ^ - [R pCCCx∈SX∈小号x\in SxXxxXxGrpG[Rp\mathrm {Grp} (您可以选择任何类别并进行设置,以使比较最清晰)。

1
什么是感应感应?
什么是感应感应? 我发现的资源是: 第5.7章末尾的HoTT书。 nLab的文章 一篇名为归纳-归纳定义的论文 该博客文章还提到了归纳-归纳类型 前两个参考资料对我来说太简短了,后两个参考文献太技术性了。有人能用外行的术语解释吗?如果有Agda代码,那就更好了。

1
收集APX难题
每个人都知道“ Garey&Johnson”,当我需要一个问题来解决NP硬度证明时,这就是我的首选。但是,我最近发现自己需要APX硬度证明,并且我想知道是否存在类似(且最新的..?)问题集,这些问题被证明是APX困难的。 有人知道这样的事吗?我发现很难相信没有系统地收集此类问题的网站,但是我的Google技能似乎不足。

2
通用/现有量化?
我正在努力理解类型的通用和存在量化的目的。我正在玩玩根据结构演算编写玩具语言的游戏。我一直在阅读有关Morte和Henk的信息,以帮助我更好地理解。 我不明白为什么CoC同时具有lambda和forall抽象。 (∀ X :甲。乙)(λ X :甲。乙)(λx:A.B)(\lambda x:A . B) (∀ X :甲。乙)(∀x:A.B)(\forall x:A . B) 在我看来,lambda包含了手动传递类型的系统中的所有功能。换句话说,以下 (∀ X :* 。λ 一个:X 。一)(∀x:∗.λa:x.a)(\forall x : *. \lambda a : x. a) 可以替换为 (λ X :* 。λ 一个:X 。一)(λx:∗.λa:x.a)(\lambda x : *. \lambda a : x. a) 如果是第一次将其应用于所使用的类型。 我想念什么?有哪些可以阅读的论文,博客或文章对我有帮助? 谢谢。

3
转换为布尔值,用于整数线性编程
我想在整数线性程序中表达以下约束: ÿ= { 01个如果 x = 0如果 x ≠ 0。y={0if x=01if x≠0.y = \begin{cases} 0 &\text{if } x=0\\ 1 &\text{if } x\ne 0. \end{cases} 我已经有整型变量,我承诺- 100 ≤ X ≤ 100。如何以适合于整数线性规划求解器的形式表达上述约束?X ,ÿx,yx,y- 100 ≤ X ≤ 100−100≤x≤100-100 \le x \le 100 据推测,这将需要引入一些其他变量。我需要添加哪些新变量和约束?可以使用一个新变量完全完成此操作吗?二? 等效地,这是在问如何执行约束 ÿ≠ 0 ,当且仅当 X ≠ 0。y≠0 if and …

2
最小公除数
基本上,问题是:对于一组正数,找到一个最小数,它不是的任何元素的除数,即。SSSdddSSS∀x∈S, d∤x∀x∈S, d∤x\forall x \in S,\ d \nmid x 表示n=|S|n=|S|n = |S|和C=max(S)C=max(S)C = \max(S) 。考虑函数F(x)=F(x)=F(x) = 不除x的最小素数xxx。很容易看到F(x)≤logxF(x)≤log⁡xF(x) \leq \log x。对于集合SSS,令F(S)=F(S)=F(S) = 不除S的任何元素的最小素数SSS。我们有一个上限 F(S)≤F(lcm(S))≤F(Cn)≤nlogC.F(S)≤F(lcm⁡(S))≤F(Cn)≤nlog⁡C.F(S) \leq F(\operatorname{lcm}(S)) \leq F(C^n) \leq n \log C. 因此,一种简单的蛮力算法(它枚举了从111到n \ log C的所有数字,nlogCnlog⁡Cn \log C并检查它是否未除以S的任何元素)SSS是多项式的,并且具有时间复杂度O(n2logC)O(n2log⁡C)O(n^2 \log C)。 解决该问题的另一种方法是计算S的每个元素的所有因子,SSS并在蛮力算法中使用它们,以检查xxx是否为O(1)O(1)O(1)时间的答案。该算法的时间复杂度为O(n⋅min(C−−√,nlogC)+nlogC)O(n⋅min(C,nlog⁡C)+nlog⁡C)O(n \cdot \min (\sqrt{C}, n \log C) + n \log C)并且使用O(nlogC)O(nlog⁡C)O(n …

2
有霍夫曼编码到算术编码的推广吗?
在试图理解霍夫曼编码,算术编码和范围编码之间的关系时,我开始想到霍夫曼编码的缺点与分数位打包问题有关。 也就是说,假设一个符号有240个可能的值,并且需要将其编码为位,即使您不需要“全” 8,因为每个符号8个位都可以表示256个可能的值,因此每个符号将被卡住8位每个符号。解决这个问题的方法就是我所说的“小数位压缩”,在这种情况下,您可以使用乘法以2的非幂次幂进行“移位”。就像2的幂的乘积是移位的x * 2 == x &lt;&lt; 1,x * 4 == x &lt;&lt; 2等等对于2的所有幂一样,所以您也可以通过乘以非2的幂来“移位”,然后打包成小数位大小的符号。 问题与霍夫曼编码类似:您最终得到的代码长度必须是非小数位大小的,因此这种打包效率很低。但是,您不能只使用fracitonal-bit-packing解决方案,因为该解决方案假定使用固定大小的符号。 问题是,是否有任何论文或解决方案可对霍夫曼编码进行改进,其思想与小数位打包相似,可实现类似于算术编码的功能?(或任何相反的结果)。

2
LIN中是否有HORN-SAT,如果是,那为什么不表示P = LIN?
复杂性动物园将定义为可由确定性图灵机在线性时间内解决的一类决策问题。大号我ñ大号一世ñLIN 大号我ñ⊆ P大号一世ñ⊆PLIN \subseteq P 由于HORN-SAT在可解(如用于测试命题号角公式的可满足性的线性时间算法中所述(1984年))O (n )Ø(ñ)O(n) 提出了确定(命题)Horn公式是否可满足的新算法。如果Horn公式包含不同的命题字母,并且假定它们正好是,则本文介绍的两种算法在时间上运行,其中是文字出现的总数在。K P 1,… ,P K O (N )N A一个一个AķķKP1个,… ,PķP1个,…,PķP_1,…, P_Kø (Ñ)Ø(ñ)O(N)ññN一个一个A 我想知道为什么我们不能得出这样的结论 大号我ñ= P大号一世ñ=PLIN = P 鉴于在对数空间缩减下,HORN-SAT也被证明是?我肯定错过了什么。还是那是众所周知的事实?PPP (我还没有仔细阅读1984年的论文,所以我不太了解线性时间求解HORN-SAT的算法,因此我可能会误解其含义。)

2
关于算法的好数学书[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 我很喜欢数学的优雅和严谨,现在正在寻找有关算法和算法分析的文献。现在,涵盖什么算法对我来说并没有多大关系,但是如何呈现和对待它们就非常重要。¹我最看重一种非常清晰准确的语言,该语言以严格抽象的方式定义了所有使用的概念。 我发现由Cormen,Leiserson,Rivest和Stein撰写的经典算法简介非常整洁,但是对数学的处理不够好,并且其证明和定义非常非正式。在这方面,Sipser的《计算理论导论》似乎更好,但是仍然没有提供从数学到算法的无缝过渡。 谁能推荐一些东西? ¹:算法至少应使用经典的非平凡抽象数据结构(例如图形,数组,集合,列表,树等)来调用其所需数据的管理,最好也对此类数据结构进行操作。如果完全忽略数据结构的使用和管理问题,我不会太感兴趣。不过,我不太关心用它们解决的问题。


1
解决NP完全问题的所有已知算法是否具有建设性?
是否有已知算法可以在不隐式生成证书的情况下正确输出“是”到NP完全问题? 我知道,将可满足性预言器转变为令人满意的分配器很简单:只需遍历变量,每次都要求可满足性预言器解决该变量与原始问题的结合。 但是这样的包装器会有用吗?所有坐式求解器都在可能分配的空间中进行搜索吗? 还是存在某些类型的NP完全问题(旅行商,子集总和等),其中求解器可以利用数学定理来证明必须存在解?喜欢通过矛盾进行证明吗?

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.