计算机科学

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

2
对5个整数进行排序,最多7个比较
如何排序5个整数的列表,以便在最坏的情况下需要进行7个比较?我不在乎执行了多少其他操作。我对整数没有什么特别的了解。 我尝试了几种不同的分而治之方法,这些方法使我只能进行8次比较,例如遵循mergesort方法,或者将mergesort与使用二进制搜索来组合以找到插入位置,但是每次我得到8次结果时,都会比较最坏的情况。 现在,我只是在寻找提示,而不是解决方案。

2
构造两个满足
构造两个函数满足:F,g ^:R+→ R+f,g:R+→R+ f,g: R^+ → R^+ 是连续的;F,g ^f,gf, g 单调增加;F,g ^f,gf, g 和 g ≠ O (f )。F≠ O (g)f≠O(g)f \ne O(g)G≠ O (f)g≠O(f)g \ne O(f)

1
Ukkonen算法的运行时间如何取决于字母大小?
我担心Ukkonen算法的渐近运行时间问题,它可能是在线性(?)时间构造后缀树的最流行算法。 这是丹·古斯菲尔德(Dan Gusfield)撰写的《关于字符串,树和序列的算法》(第6.5.1节)的引用: “ ... Aho-Corasick,Weiner,Ukkonen和McCreight算法都需要空间,或者O (m )时限应替换为O (m log m )和O的最小值(m log | Σ |) ”。Θ (m | Σ |)Θ(米|Σ|)\Theta(m|\Sigma|)O (米)Ø(米)O(m)Ø (米日志m )Ø(米日志⁡米)O(m \log m)Ø (米日志| Σ | )Ø(米日志⁡|Σ|)O(m \log|\Sigma|) [ 是字符串长度,Σ是字母的大小]米米mΣΣ\Sigma 我不明白为什么这是真的。 空间:好吧,如果我们使用大小为数组表示节点外的分支,那么实际上,我们最终会占用Θ (m | Σ |)空间。但是,据我所知,还可以使用哈希表(例如Python中的字典)存储分支。这样一来,我们将只将Θ (m )指针存储在所有哈希表中(因为树中有Θ (m )个边),同时仍然能够访问O (1 )中的子节点。Θ(|Σ|)Θ(|Σ|)\Theta(|\Sigma|)Θ (米|Σ|)Θ(m|Σ|)\Theta(m|\Sigma|)Θ (米)Θ(m)\Theta(m)Θ (米)Θ(米)\Theta(m)Ô (1 )Ø(1个)O(1) …

1
如何将图灵机的识别语言转换为不受限制的语法?
根据Wikipedia的这篇文章,无限制语法等效于图灵机。这篇文章指出,我可以将任何图灵机都转换为无限制的语法,但是它仅显示了如何将语法转换为图灵机。 我确实如何做到这一点并将图灵机的识别语言转换为不受限制的语法?我曾尝试用语法规则替换过渡规则,但是图灵机也可以具有许多不同的状态配置...大号LL



2
在所有输入上最多停止50步的图灵机是否可以确定?
让F= { ⟨ 中号⟩ :M是一个TM,它最多以50个步长停止每个输入}F={⟨M⟩:M is a TM which stops for every input in at most 50 steps}F = \{⟨M⟩:\text{M is a TM which stops for every input in at most 50 steps}\}。我需要确定F是可确定的还是递归可枚举的。我认为这是可以决定的,但我不知道如何证明。 我的想法 这“ 50步”部分立即为我打开了R标志。如果用于特定输入,则可以确定。但是,这里适用于所有输入。检查它的无穷输入使我认为问题是co-RE,即其补充是可以接受的。 也许,我可以检查配置,发现50个步骤之后的所有配置都不会导致接受状态-我该怎么做?


1
生成用于随机测试图算法的输入?
在测试算法时,一种常见的方法是随机测试:根据某种分布(通常是均匀的)生成大量输入,对它们运行算法并验证正确性。给定算法签名,现代测试框架可以自动生成输入,但有一些限制。 如果输入是数字,列表或字符串,则直接生成此类输入。树比较难,但仍然很容易(使用随机的无上下文语法或类似方法)。 如何有效地生成随机图?通常,随机地均匀地选择图形不是您想要的:它们应该是连接的,平面的,无循环的或具有任何其他属性。由于潜在的大量不良图集,拒绝采样似乎次优。 有哪些有用的发行版可以查看?在这里有用意味着 这些图很可能很好地测试了算法 它们可以有效地产生。 我知道有很多用于随机图的模型,因此我希望能从中获得一些最了解图的模型的见解。 如果“某些算法”过于笼统,请使用最短路径查找算法作为测试中的具体算法类别。用于测试的图应该是连通的并且相当密集(具有很高的概率,或者至少在预期中)。对于测试,最佳解决方案是围绕最短路径创建随机图,以便我们知道所需的结果(而不必采用其他算法)。


5
二部图的最大独立集
我正在尝试寻找Biparite图的最大独立集。 在“ 1998年5月13日-华盛顿大学-CSE 521-网络流的应用”的一些注释中,我发现以下内容: 问题: 给定一个二分图G=(U,V,E)G=(U,V,E)G = (U,V,E),找到一组独立的U′∪V′U′∪V′U' \cup V'这是尽可能大的,在那里U′⊆UU′⊆UU' \subseteq U和V′⊆VV′⊆VV' \subseteq V。如果集合的元素之间没有EEE边,则集合是独立的。 解: 构造上的顶点的流图U∪V∪{s,t}U∪V∪{s,t}U \cup V \cup \{s,t\}。对于每个边缘(u,v)∈E(u,v)∈E(u,v) \in E有一个无限容量边缘从uuu到 vvv。对于每个u∈Uu∈Uu \in U,存在从单元容量边缘sss到uuu,并且对于每个v∈Vv∈Vv \in V,存在从单元容量边缘vvv到 ttt。 查找有限容量切口(S,T)(S,T)(S,T),与s∈Ss∈Ss \in S和t∈Tt∈Tt \in T。让 U′=U∩SU′=U∩SU' = U \cap S和V′=V∩TV′=V∩TV' = V \cap T。该组U′∪V′U′∪V′U' \cup V',因为没有无限容量的边缘交叉的切断是独立的。切口的大小是|U−U′|+|V−V′|=|U|+|V|−|U′∪V′||U−U′|+|V−V′|=|U|+|V|−|U′∪V′||U - U'| + |V - V'| …

3
线分隔两组点
是否有办法确定两条点是否可以用一条线分开? 我们有两套分的和是否有分开的线路和,使得所有的点,只有上线的一侧,所有的点,只有在另一边。B A B A A B B一种AA乙BB一种AA乙BB一种AA一种AA乙BB乙BB 我想到的最幼稚的算法是为和构建凸多边形,并测试它们的交集。看起来时间像构造凸多边形一样,其时间复杂度应为。实际上,我不希望时间复杂度有任何改善,我不确定它是否可以改善。但是,至少应该有一种更漂亮的方法来确定是否有这样一条线。B O (n log h )一种AA乙BBØ (ñ 日志h )O(nlog⁡h)O(n\log h)

3
对于每个可计算的函数
对于每个可计算函数都存在一个可以在时间内最多解决的问题,或者是否存在一个可计算函数使得可以在解决的每个问题都可以也可以在时间内解决?fffΘ(f(n))Θ(f(n))\Theta(f(n))fffO(f(n))O(f(n))O(f(n))o(f(n))o(f(n))o(f(n)) 昨天这个问题浮现在我的脑海。我已经考虑了一下,但无法解决。我真的不知道该怎么用谷歌搜索,所以我在这里问。这是我想出的: 我的第一个想法是答案是肯定的:对于每个可计算的函数,“输出点”(或创建带有点的字符串或其他东西)的问题显然无法在时间。因此,我们只需要证明它可以在时间内解决。没问题,只需采用以下伪代码:ffff(n)f(n)f(n)f(n)f(n)f(n)o(f(n))o(f(n))o(f(n))O(f(n))O(f(n))O(f(n)) x = f(n) for i from 1 to x: output(".") 显然,该算法解决了所述问题。而且它的运行时显然在,因此问题得以解决。那很容易,对吗?除了不,不是因为您必须考虑第一行的成本。如果计算所需的时间在,则上述算法的运行时仅在。显然,并非所有功能都适用1。Θ(f(n))Θ(f(n))\Theta(f(n))Θ(f(n))Θ(f(n))\Theta(f(n))f(n)f(n)f(n)O(f(n))O(f(n))O(f(n)) 因此,这种方法并没有带我到任何地方。我将感谢任何为我指出正确方向的人,以正确解决此问题。 1例如,考虑函数。显然,,但是没有算法可以在时间内计算。p(n)={12if n is primeotherwisep(n)={1if n is prime2otherwisep(n) = \cases{1 & \text{if $n$ is prime} \\ 2 & \text{otherwise}}O(p(n))=O(1)O(p(n))=O(1)O(p(n)) = O(1)pppO(1)O(1)O(1)

2
无向图上的最短路径?
所以我认为这个(虽然有些基本)问题属于这里: 假设我有一个大小为100的节点的图,以10x10的模式排列(请考虑棋盘)。该图是无向的和未加权的。在图形中移动涉及向前移动三个空间,向右或向左移动一个空间(类似于国际象棋骑士在棋盘上的移动方式)。 给定一个固定的开始节点,人们将如何找到通往板上其他任何节点的最短路径? 我以为可行的移动节点之间只有一条边。因此,鉴于此信息,我希望找到从起始节点到结束节点的最短路径。 我最初的想法是每条边的权重均为1。因此,我决定使用深度优先搜索的更改形式来进行此操作。 但是,我无法终生想象如何使用搜索获得最短路径。 我尝试的另一件事是将图以树形图作为起始节点作为根,然后选择最浅的(最低的行号)结果,该结果为我提供了所需的结束节点……这是可行的,但是效率极低,因此不适用于较大的图形。 有没有人有任何想法可以为我指出正确的方向? 非常感谢你。 (我试图对图表进行可视化处理,但由于声誉低下而无法执行)

3
给定半径的最大封闭圆
我尝试找到解决以下问题的方法: 给定点和半径的集合,找到圆的中心点,以使圆包含该集中的最大点数。运行时间应为。ř ø (Ñ 2)小号SS[RrrO (ñ2)O(n2)O(n^2) 起初,这似乎类似于最小的封闭圆问题,可以轻松地在。这个想法是要设定一个任意的中心并环绕所有点。接下来,逐步替换圆以触摸最左/最右的点,然后将圆缩小到给定的半径,这显然是行不通的。SO (ñ2)O(n2)O(n^2)小号SS

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.