计算机科学

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

3
NFA是否接受另一个NFA的子集,是否有有效的测试?
因此,我知道测试常规语言是否为常规语言的子集是可以确定的,因为我们可以将它们都转换为DFA,计算,然后测试该语言是否为空。小号ř ∩ ˉ 小号RRRSSSR∩S¯R∩S¯R \cap \bar{S} 但是,由于这需要转换为DFA,因此DFA以及测试算法可能就输入NFA中的状态数而言呈指数关系。 在多项式时间内有已知的方法吗?总的来说,该问题是否已被证明是Co-NP完整的? 请注意,问题出在Co-NP中,因为而不是接受的单词将是的多项式证明者。RRRSSSR⊈SR⊈SR \not \subseteq S 编辑:这是不正确的,因为不能保证这样的单词在状态数上将是多项式。


2
大无限链
首先,让我写大的定义只是为了使事情明确。OOO f(n)∈O(g(n))⟺∃c,n0>0f(n)∈O(g(n))⟺∃c,n0>0f(n)\in O(g(n))\iff \exists c, n_0\gt 0使得0≤f(n)≤cg(n),∀n≥n00≤f(n)≤cg(n),∀n≥n00\le f(n)\le cg(n), \forall n\ge n_0 假设我们有有限数量的函数:令人满意:f1,f2,…fnf1,f2,…fnf_1,f_2,\dots f_n O(f1)⊆O(f2)⋯⊆O(fn)O(f1)⊆O(f2)⋯⊆O(fn)O(f_1)\subseteq O(f_2)\dots \subseteq O(f_n) 通过传递性,我们得到:OOOO(f1)⊆O(fn)O(f1)⊆O(fn)O(f_1)\subseteq O(f_n) 如果我们有无限链,这是否成立?换句话说,吗?O′sO′sO'sO(f1)⊆O(f∞)O(f1)⊆O(f∞)O(f_1) \subseteq O(f_\infty) 我无法想象发生了什么。

7
是常规的,如果是正常吗?
如果是规则的,是否遵循是规则的? AA2A2A^2AAA 我尝试证明: 是的,出于矛盾,假设不是规则的。然后。阿2 = 阿⋅ 甲AAAA2=A⋅AA2=A⋅AA^2 = A \cdot A 由于两种非常规语言的连接不是常规的,所以不能是常规的。这与我们的假设相矛盾。因此,是常规的。因此,如果是规则的,则是规则的。 A A 2 AA2A2A^2AAAA2A2A^2AAA 证明正确吗? 我们可以将其概括为,等吗?而且如果是规则的,那么不必是规则的吗?A3A3A^3A4A4A^4A∗A∗A^*AAA 示例:不是常规的,但是是常规的。A={12i∣i≥0}A={12i∣i≥0}A=\lbrace 1^{2^i} \mid i \geq 0\rbraceA∗A∗A^*



3
头尾之间的差异
考虑无偏硬币的nnn翻转序列。令HiHiH_i表示在第一个iii翻转中看到的超过头的数量的绝对值。定义H=maxiHiH=maxiHiH=\text{max}_i H_i。证明E[Hi]=Θ(i√)E[Hi]=Θ(i)E[H_i]=\Theta ( \sqrt{i} )和E[H]=Θ(n−−√)E[H]=Θ(n)E[H]=\Theta( \sqrt{n} )。 这个问题出现在Raghavan和Motwani撰写的“随机化算法”的第一章中,因此上面的陈述也许有基本的证明。我无法解决它,所以我将不胜感激。

3
在一个非常大的文件中查找出现次数最多的元素
我听说这个面试问题问了很多,我希望就好的答案给出一些意见:您有一个大于10 GB的大文件,并且您想找出哪个元素出现得最多,什么是好的方法去做这个? 在地图上进行迭代并保持跟踪可能不是一个好主意,因为您会占用大量内存,并且在条目进入时保持跟踪并不是最好的选择,因为提出此问题时文件通常已经存在。 我想到的其他想法包括拆分要迭代的文件并由多个线程处理,然后将这些结果组合在一起,但是映射的内存问题仍然存在。

4
有人可以给一个简单但非玩具的上下文相关语法示例吗?
我正在尝试理解上下文相关的语法。 我明白为什么语言喜欢 { w ^ w ^ | W ^ ∈ 一∗}{ww∣w∈A∗}\{ww \mid w \in A^*\} {anbncn∣n∈N}{anbncn∣n∈N}\{a^n b^n c^n \mid n\in\mathbb{N}\} 不是上下文无关的,但是我想知道一种类似于无类型lambda演算的语言是否上下文相关。 我想看一个简单但非玩具的示例(我考虑了上面的玩具示例),它是上下文相关语法的示例,对于某些生产规则,例如可以判断是否有一些符号字符串当前处于范围内(例如,在生成函数主体时)。 上下文敏感的语法是否足够强大,可以使未定义/未声明/未绑定的变量成为语法错误(而不是语义错误)?

2
所有上下文相关的语言都是可以决定的吗?
我正在浏览上下文相关语言的Wikipedia定义,发现了这一点: 每种语言类别都是其正上方类别的适当子集。每个类别中的任何自动机和任何语法都在其正上方的类别中具有等效的自动机或语法。 我可以看到线性有界自动机在文章的排序器的正下方。如果是这种情况,那么这意味着LBA上的每个计算都将在某个时刻停止(因为每个LBA都是决策者)。但是我觉得可能有一些计算可以同时在LBA上运行而永不停止。例如,我们可以在LBA上编写一个计算 阅读磁带上的第一个符号并向右移动; 阅读下一个符号,然后向左移动。 这种(无用的)计算(显然是LB计算)将无限期地左右摆动,并且永不停止,因此不能作为决策者。我在哪里想错了?


4
比较有理数
给定a,b,c,d∈Na,b,c,d∈Na,b,c,d \in \mathbb N和b,d∉{0}b,d∉{0}b,d \notin \{0\}, ab&lt;cd⟺ad&lt;cbab&lt;cd⟺ad&lt;cb \begin{eqnarray*} \frac a b < \frac c d &\iff& ad < cb \end{eqnarray*} 我的问题是: 给定a,b,c,da,b,c,da,b,c,d 假设我们可以决定x&lt;y∈Zx&lt;y∈Zx < y \in \mathbb Z在O(|x|+|y|)O(|x|+|y|)\mathcal{O}(|x| +|y|),是有决定的任何方式ad&lt;cbad&lt;cbad<cb,而无需预形成的乘法(或分割),a⋅da⋅da\cdot d和c⋅bc⋅bc \cdot b。还是有某种证明是不可能的。 有没有一种比分母相乘更快的方法来比较有理数。

2
具有双重权重参数的最小生成树
考虑图。每个边缘具有两个权重和。查找最小化乘积。该算法应相对于在多项式时间内运行 。ê 甲é 乙é (Σ ê ∈ Ť 甲ë)(Σ Ë ∈ Ť 乙ë) | V | ,| E |G(V,E)G(V,E)G(V,E)eeeAeAeA_eBeBeB_e(∑e∈TAe)(∑e∈TBe)(∑e∈TAe)(∑e∈TBe)\left(\sum_{e \in T}{A_e}\right)\left(\sum_{e \in T}{B_e}\right)|V|,|E||V|,|E||V|, |E| 我发现很难在生成树上适应任何传统算法(Kruskal,Prim,Edge-Deletion)。怎么解决呢?有什么提示吗?

3
为什么更大的输入量意味着更难的实例?
在下面,假设我们正在使用无限磁带的图灵机。 在向某人解释时间复杂性的概念以及为什么要相对于实例的输入大小对其进行度量时,我偶然发现了以下说法: [..]例如,很自然,与将两个整数与3位相乘相比,您需要更多的步骤来将两个整数与100000位相乘。 这项主张令人信服,但不知何故。在我遇到的所有算法中,输入大小越大,您需要的步骤就越多。换句话说,时间复杂度是输入大小的单调递增函数。 时间复杂度始终是输入大小增加的函数吗?如果是这样,为什么会这样呢?除了挥舞手外,还有其他证据吗?

3
我们能快找到所有总和为N的四平方组合吗?
在Stack Overflow(此处)提出了一个问题: 给定一个整数,打印出的整数值的所有可能的组合和其中求解方程式。A ,B ,C D A 2 + B 2 + C 2 + D 2 = NñNNA ,B ,CA,B,CA,B,CdDD一个2+ B2+ C2+ D2= NA2+B2+C2+D2=NA^2+B^2+C^2+D^2 = N 这个问题当然与Bachet的数论猜想有关(由于他的证明,有时也称为Lagrange的四平方定理)。有一些论文讨论了如何找到一个解决方案,但是我一直找不到任何关于我们能够以多快的速度找到特定所有解决方案的信息(即所有组合,而不是全部排列)。ñNN 我已经考虑了很多,在我看来,它可以在时空中求解,其中是所需的总和。但是,由于缺乏有关该主题的任何先验信息,我不确定这是否对我而言是重要的主张,还是仅是微不足道的,显而易见的或已知的结果。Nø (Ñ)O(N)O(N)ñNN 因此,问题是,对于给定的,我们能快找到所有四平方和?ñNN 好的,这是我正在考虑的(几乎)O(N)算法。前两个支持函数,最近的整数平方根函数: // the nearest integer whose square is less than or equal to N public int SquRt(int N) { …

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.