计算机科学

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

2
寻找可满足性问题的解决方案比确定可满足性难吗?
确定给定布尔表达式在计算上是否可以满足与实际找到该表达式的解决方案的问题是否存在? 换句话说,是否有另一种方式可以找到给定的表达式是令人满意的,而无需明确确定布尔变量的“正确设置”?还是所有可能的证明都将多项式时间减少到“正确的设置”? 原谅我的无知,我只是一名工程专业的学生。维基百科似乎暗示仅找到SAT或UNSAT 的行为是NP完全的。

1
Big-Oh时间复杂度可以包含多个变量吗?
例如,让我们说我正在做字符串处理,需要对两个字符串进行一些分析。我没有给出关于它们的长度可能最终是多少的信息,因此它们来自两个不同的家庭。将算法的复杂度称为或(取决于我们使用的是朴素算法还是优化算法)是否可以接受?O (n * m )Ø(ñ∗米)O(n * m)O (n + m )O(n+m)O(n + m) 同样,让我们​​假设我们选择的算法实际上需要两个阶段-第一个字符串的设置阶段,这使我们能够处理任意数量的其他字符串而不会产生初始成本。说它具有构造,再进行任意数量的计算,是否被认为合适?O (m )O (n )Ø(ñ)O(n)O (米)Ø(米)O(m) 因为两个计算都是线性的,所以仅将它们称为是否合适?O (n )Ø(ñ)O(n)

1
是否有任何现有的问题都无法通过停止甲骨文解决?
我知道,如果可以使用暂停的预言机(或者,我认为等同于超计算),那么大多数问题都是微不足道的。但是,应用显示停止问题的参数对于Turing机器是不可能的,这也表明Turing + oracle无法决定Turing + oracle的停止问题。是否有任何实际的,实际的,通过停止先知无法解决的问题的示例? 注意:“甲骨文”是指标准图灵机的甲骨文,而不是具有甲骨文本身的TM。

3
为什么我们不能有效地翻转NDTM的答案?
我读过几次书,说不可能有效地扭转NDTM的答案。但是,我不明白为什么。例如,给定以O (n )运行的NDTM ,此文本(第3.3节)指出,尚不清楚另一个NDTM T如何确定在O (n 100)时间内如何翻转M的答案。中号MMO (n )O(n)O(n)ŤTTØ (ñ100)O(n100)O(n^{100})中号MM 我的问题如下:如果存在一系列导致进入接受状态的不确定性选择,则NDTM输出。此外,存在一种通用的NDTM N U,它可以以很小的(对数)开销模拟每个NDTM。那么为什么我们不能这样构造T:首先,用通用NDTM模拟M,这应该在时间O (n log n )中实现。然后输出1 – M的答案。这意味着我们可以在时间O (n log n )中翻转任何线性NDTM的答案。1个11ñüNUNUØ (ñ 日志n )O(nlog⁡n)O(n\log n)Ø (ñ 日志n )O(nlog⁡n)O(n\log n)

2
接受给定字符串并拒绝其他给定字符串的最小DFA
给定字母两组字符串,我们可以计算最小的确定性有限状态自动机(DFA)从而使A,BA,BA,BΣΣ\SigmaMMMA⊆L(M)A⊆L(M)A \subseteq L(M)和?L(M)⊆Σ∗∖BL(M)⊆Σ∗∖BL(M) \subseteq \Sigma^*\setminus B 换句话说,代表一组积极的例子。DFA必须接受A中的每个字符串。 B代表一组否定示例。DFA不接受B中的任何字符串。AAAAAABBBBBB 是否可以使用DFA最小化技术来解决此问题?我可以想象创建一个具有三种状态的类似于DFA的自动机:接受状态,拒绝状态和“无关”状态(任何以“无关”状态结尾的输入都可以被接受或被拒绝)。但是,我们能否找到一种将这种情况最小化到普通DFA的方法呢? 给出正面和负面的例子,您可以将其视为学习DFA的问题。 这是受 regex golf NP-Complete吗?,它向正则表达式而不是DFA询问类似的问题。

2
依赖类型理论中的宇宙
我正在Homotopy类型理论在线书中阅读有关依赖类型理论的内容。 在“ 类型论”一章的第1.3 节中,它介绍了宇宙层次的概念:ü0:U1个:U2:⋯ü0:ü1个:ü2:⋯\mathcal{U}_0 : \mathcal{U}_1 : \mathcal{U}_2 : \cdots,其中 每个宇宙ü一世ü一世\mathcal{U}_i是下一个宇宙的元素ü我+ 1ü一世+1个\mathcal{U}_{i+1}。此外,我们假设我们的宇宙是累积的,即,所述的所有元件一世Ť ^ h一世ŤHi^{\mathrm{th}}宇宙也在的元件(我+ 1 )Ť ^ h(一世+1个)ŤH(i+1)^{\mathrm{th}}宇宙。 但是,当我看一下附录A中各种类型的构成规则时,乍一看,如果有一个Universe出现在柱上方,则该Universe出现在下方。例如,对于联产品类型形成规则: Γ ⊢ 甲:ù一世Γ ⊢ 乙:ù一世Γ ⊢ 甲+ 乙:ù一世(+ - ˚Fø - [R 中号)Γ⊢一个:ü一世Γ⊢乙:ü一世Γ⊢一个+乙:ü一世(+--FØ[R中号)\dfrac{\Gamma \vdash A : \mathcal{U}_i \quad \Gamma \vdash B : \mathcal{U}i}{\Gamma \vdash A + B : \mathcal{U}_i}(+\mbox{-}FORM) 所以我的问题是为什么必须要有层次结构?在什么情况下,您需要从一个Universe跳到更高的层次结构?这是真的不明显,我怎么给定的任意组合,你可以结束了一个类型乙是不是在ü我。更详细地:在附录A.2.4,A.2.5,A.2.6,A.2.7,A.2.8,A.2.9,A.2.10,A.3.2的部分中的形成规则,无论提ü我在前提和判断,或仅在判断中。一个米:U一世一个米:ü一世A_m: \mathcal{U}_i乙乙Bü一世ü一世\mathcal{U}_iü一世ü一世\mathcal{U}_i …

2
确定两个正则表达式是否等效的算法
给定两个任意的正则表达式,是否存在一种“高效”算法来确定它们是否与同一组字符串匹配? 更笼统地说,我们可以计算两个匹配集的交集大小吗? 有哪些算法可以做到这一点,它们所处的复杂性等级是什么? 如果我们不允许Kleene星,那是否完全改变了图片?

1
表示集合分区的紧凑方式是什么?
存在用于表示集合分区的有效数据结构。这些数据结构对诸如Union和Find这样的操作具有良好的时间复杂性,但是它们并不是特别节省空间。 一种节省空间的方式来表示集合的分区是什么? 这是一个可能的起点: 我知道 具有元素的集合的分区数是,即第个贝尔数。因此,表示具有元素的集合分区的最佳空间复杂度是 位。为了找到这样的表示,我们可以寻找(一组元素的分区集合)与(一组从到的整数)之间的一对一映射。NNNBNBNB_NNNNNNNlog2(BN)log2⁡(BN)\log_2(B_N)NNN111BNBNB_N 有没有这样的映射可以有效地计算?我所说的“高效”是指我想将此紧凑表示形式转换为或时间多项式中的/易于操作的表示形式(例如列表列表。NNNlog2(BN)log2⁡(BN)\log_2(B_N)

1
确定性上下文无关语言的激进困境?
常规语言的抽动引理可以用来证明某些语言不是规则的,无上下文语言的抽动引理(连同奥格登的引理)可以用来证明某些语言不是上下文的。 确定性上下文无关语言是否存在激进的困境?也就是说,是否存在类似于泵激引理的引理,可以用来表明语言不是DCFL?我很好奇,因为我所知道的几乎所有证明语言不是DCFL的证明技术都非常复杂,我希望有一种更简单的技术。

3
DFT中交叉边缘和前边缘之间的差异
在深度优先的树中,有定义树的边(即遍历中使用的边)。 有一些剩余的边缘连接其他一些节点。交叉边缘和前边缘有什么区别? 从维基百科: 基于此生成树,原始图的边缘可分为三类:前向边缘(从树的节点指向其后代之一),后边缘(从节点到其祖先之一),和交叉边缘,两者都不起作用。有时,属于生成树本身的树边缘与前边缘分开进行分类。如果原始图形是无向的,则其所有边缘均为树形边缘或后边缘。 从一个节点指向另一个节点的遍历中未使用的边线是否不建立父子关系?

1
ML类型推断的指数成本的简洁示例
引起我注意的是,像OCaml这样的功能语言中类型推断的成本可能很高。该主张是有一系列表达式,使得对于每个表达式,相应类型的长度在表达式的长度上是指数的。 我设计了以下顺序。我的问题是:您是否知道一个具有更简洁表达式的序列,可以实现相同的类型? # fun a -> a;; - : 'a -> 'a = <fun> # fun b a -> b a;; - : ('a -> 'b) -> 'a -> 'b = <fun> # fun c b a -> c b (b a);; - : (('a -> 'b) -> 'b -> …

2
为什么在复杂性理论中通常使用决策问题?
从维基百科: 计算问题的类型:最常用的问题是决策问题。但是,可以根据功能问题,计数问题,优化问题,承诺问题等来定义复杂性类。 我还看到NP-complete,NP-hard,NP ...的定义仅用于决策问题。我不知道为什么会这样吗? 是因为其他任何问题都可以等效地转换为决策问题吗?

2
如果A映射到B的补集是可还原的
我正在为计算理论的最终学习而努力,并且正在努力回答该声明是否为假的正确方法。 通过定义的,我们可以构造下面的语句,≤m≤m\leq_m w∈A⟺f(w)∈B→w∉A⟺f(w)∉Bw∈A⟺f(w)∈B→w∉A⟺f(w)∉Bw \in A \iff f(w) \in B \rightarrow w \notin A \iff f(w) \notin B 这就是我遇到的问题,我想说的是,由于我们有这样的可计算函数,所以如果有函数f,它将仅给我们从A到B的映射,否则不会。fff 我不知道该如何正确地表达这句话,或者我是否步入正轨。

2
我们可以通过显示没有验证者来证明它不是一种可计算的枚举吗?
可计算枚举(ce,等同于递归枚举,等同于半判定)集合的定义之一如下: A⊆Σ∗A⊆Σ∗A \subseteq \Sigma^*为Ce当且仅当有一个可判定语言V⊆Σ∗V⊆Σ∗V\subseteq \Sigma^*(被称为校验)ST所有x∈Σ∗x∈Σ∗x\in \Sigma^*, x∈Ax∈Ax\in A当且仅当存在一个y∈Σ∗y∈Σ∗y\in\Sigma^* ST⟨x,y⟩∈V⟨x,y⟩∈V\langle x, y \rangle \in V。 所以一个方式来表明一个语言不是CE是表明,没有可判定验证VVV吧。该方法是否有用以表明实践中不使用语言?

3
有效计算的概念
如果多项式时间Turing机器算法的运行时间在最坏的情况下受输入大小中的多项式函数的限制,则认为该算法是有效的。我知道强力的“ Turing-Turing”论点: 可以在图灵机上有效模拟任何合理的计算模型 但是,我不了解用于分析微积分算法的计算复杂性的扎实理论。λλ\lambda 对于每个已知的计算模型,我们是否都有计算效率的概念?是否有仅对可计算性问题有用但对计算复杂性问题无用的模型?

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.