计算机科学

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

2
是否存在“ O(1)-完全”问题?
许多复杂性类都有“完全”的问题。对于可以在时间内解决的复杂度问题,是否存在完整的问题?O(1)Ø(1个)O(1) 复杂的是,该类取决于计算模型。在一个合理的计算模型中,一个问题可以在时间内解决,但在另一个模型中则无法解决,因为“合理”通常意味着与图灵机的多项式时间等价。但是,仍然可以针对特定的合理模型进行计算。O(1)Ø(1个)O(1) 我认为查看恒定时间多对一减少是最有意义的。但是,如果有相关文献,我也愿意考虑其他合理的减少措施。 对于任何计算模型,是否都存在或已经研究过类似的东西?

2
布尔矩阵中的孤岛计数
给定布尔矩阵X,令0项代表海洋,1项代表陆地。将一个岛定义为垂直或水平(但不是对角线)相邻的1个条目。n × 米ñ×米n \times mXX\mathrm X0001个1个11个1个1 最初的问题是计算给定矩阵中的孤岛数量。作者描述了一个递归解(内存)。O(n米)Ø(ñ米)\mathcal{O}(nm) 但是我没有尝试找到一种流式处理(从左到右,然后向下到下一行)的解决方案,该解决方案可以动态地计算具有或O(n )或O(n + m )内存的岛(没有限制)时间复杂度)。那可能吗?如果没有,我该如何证明?O(米)Ø(米)\mathcal{O}(m)O(n)Ø(ñ)\mathcal{O}(n)O(n+m)Ø(ñ+米)\mathcal{O}(n+m) 该count功能某些输入的预期输出的一些示例: Ç Ò ù Ñ 吨⎛⎝⎜010111010⎞⎠⎟= 1 ; Ç Ò ù Ñ 吨⎛⎝⎜101010101⎞⎠⎟= 5 ; Ç Ò ù Ñ 吨⎛⎝⎜111101111⎞⎠⎟= 1 ;CØüñŤ(010111010)=1个;CØüñŤ(101010101)=5;CØüñŤ(111101111)=1个; count\begin{pmatrix} 010\\ 111\\ 010\\ \end{pmatrix} = 1; % count\begin{pmatrix} 101\\ 010\\ 101\\ \end{pmatrix} = 5; % …

1
ws如何与| w | = | s | 和w≠s是上下文无关的,而w#s不是?
为什么(如果这样),分隔符##\#会在两种语言之间产生差异? 说: L = { w s :| w | = | s |瓦特,š ∈ { 0 ,1 }∗,w ≠ s }L={ws:|w|=|s|w,s∈{0,1}∗,w≠s}L=\{ws : |w|=|s|\, w,s\in \{0,1\}^{*}, w \neq s \} 大号#= { w #s :| w | = | s |瓦特,š ∈ { 0 ,1 }∗,w ≠ s }L#={w#s:|w|=|s|w,s∈{0,1}∗,w≠s}L_{\#}=\{w\#s : …

1
类型系统可以用作外部功能的证明助手吗?
鉴于: 具有非常有表现力的类型系统的语言(例如Idris)也可以具有转义机制,例如外部函数接口/ unsafePerformIO。 有一些证明助手可以用来证明用某种语言编写的程序的某些特性,而该语言没有能够表达这些特性的类型系统。 Curry-Howard的对应关系表明,具有给定类型的函数的类型检查成功实现是该类型所表示内容的证明。 可以在母语的类型系统中表达外语代码某些属性的非平凡的证明吗? 例如,假设我有一个名为stable_qsort的C函数,该函数以非常巧妙和高效的方式对数字进行排序,同时保持已经相等的元素的顺序,还有一个Idris程序通过其FFI调用stable_qsort,但是我不相信这种相对晦涩的方法C函数。我可以证明该函数不会在我的Idris代码中对所有输入重新排序相等的元素,而不是使用单独的证明助手吗?

2
外部一致性与线性化
埃里克·布鲁尔(Eric Brewer)在Spanner,TrueTime和CAP定理中写道: 关于扳手一个细微的事情是,它得到串行化自锁,但它得到外部的一致性(类似于线性化从TrueTime [)加着重号。 外部一致性的定义是什么,它与线性化有何不同?

2
Curry-Howard同构的并行或并发程序的当前状态是什么?
在吉拉德的证明和类型中,我们可以阅读: 从算法的角度来看,后续的演算不具有Curry-Howard同构性,因为有许多编写相同证明的方式。这使我们无法将其用作类型化的演算,尽管我们瞥见了这种可能与并行性相关的深层结构。λλ\lambda 证明和类型,JY Girard(页28) 但是我们也可以阅读(关于线性逻辑) 从计算机科学的角度来看,它为懒惰,副作用和内存分配[GirLaf,Laf87,Laf88]问题提供了一种新方法,并有望应用于并行性。 证明和类型,JY Girard(第149页,Yves Lafont撰写) 并行程序如何与Curry-Howard同构关联?目前对此有何想法?

3
有限状态自动机的语言不定式的条件
有一个定理说: 给定一个有限状态自动机有状态,如果存在一个串w ^,其长度满足ñ ≤ | w | ≤ 2 Ñ - 1然后由自动机接受的语言是无限的。ñnnwwwñ ≤ | w | ≤ 2 Ñ - 1n≤|w|≤2n−1n \leq |w| \leq 2n-1 我了解限制,但我不明白为什么约束| w | ≤ 2 Ñ - 1是存在的。| w | ≥ñ|w|≥n|w| \geq n| w | ≤2Ñ-1|w|≤2n−1|w| \leq 2n-1

1
什么是超级宇宙?
我正在阅读这篇关于类型论中的宇宙的著名论文。起初,我期望与SetωAgda 类似,但事实证明,它甚至更通用。它似乎将Universe构造从普通的归纳-递归类型推广到粘合剂(类似于和)。我想问的主要问题是,它的目的是什么?ΠΠ\PiΣΣ\Sigma 以下是一些Idris代码,它们定义了通常的Tarski风格的Universe: mutual public export data U : (level : Nat) -> Type where GroundU : Ground -> U level BinderU : Binder -> (a : U level) -> (b : (x : T {level} a) -> U level) -> U level UnivU : U (S level) LiftU : …

1
如何最大限度地
我看到了很多算法问题,这些问题总是导致以下问题: 你有一个整数数组h[1..n]≥0H[1 ..ñ]≥0h[1..n]\geq 0,则需要找到i,j一世,Ĵi,j这样最大化(h[j]−h[i])(j−i)(H[Ĵ]-H[一世])(Ĵ-一世)(h[j]-h[i])(j-i)中O(n)Ø(ñ)O(n)时间。 显然,O(n2)Ø(ñ2)O(n^2)时间解决方案是考虑所有对,但是,有什么方法可以使的表达式最大化,O(n)Ø(ñ)O(n)而又不了解性质hHh吗? 我想到了一个想法是修复jĴj,那么我们需要找到i∗一世∗i^*从11个1到j−1Ĵ-1个j-1等于argmaxi{(h[j]−h[i])(j−i)}argmax一世{(H[Ĵ]-H[一世])(Ĵ-一世)}\text{argmax}_i\{(h[j]-h[i])(j-i)\}或argmaxi{h[j]j−h[j]i−h[i]j+h[i]i}argmax一世{H[Ĵ]Ĵ-H[Ĵ]一世-H[一世]Ĵ+H[一世]一世}\text{argmax}_i\{h[j]j-h[j]i-h[i]j+h[i]i\},由于jĴj是固定的,因此我们需要argmaxi{−h[j]i−jh[i]+ih[i]}argmax一世{-H[Ĵ]一世-ĴH[一世]+一世H[一世]}\text{argmax}_i\{-h[j]i-jh[i]+ih[i]\}。 但是,我看不出要摆脱内部jĴj依赖项的方法。有什么帮助吗?

2
除了“最接近匹配”之外,还有其他解决“悬而未决”问题的方法吗?
以下上下文无关文法呈现出“悬空别的”型歧义(想象代表和代表和代表一些其他类型的指令或块): 例如,可以将解析为或(这是该语法中最简单/最短的歧义词)。b c Sa一个aif expr thenbbbelsecCc aacbc(a(acbc))(a(ac)bc)S→aSbS|aS|c小号→一个小号b小号|一个小号|C \begin{aligned} S &\rightarrow aSbS \;|\; aS \;|\; c\\ \end{aligned} aacbc一个一个CbCaacbc(a(acbc))(一个(一个CbC))(a(acbc))(a (a c )b c )(一个(一个C)bC)(a(ac)bc) 解决这种“悬而未决”的歧义的“标准”方式迫使“其他”()语句与最接近/最内的“如果-那么”()配对。这可以通过以下方式完成: 这个语法是明确的。在上面的示例中,它强制执行解析。一个小号bbb一个一个a(a(acbc))小号Ť→ 一个Ťb 小号|一个小号|C→ 一个Ťb Ť|C小号→一个Ťb小号|一个小号|CŤ→一个ŤbŤ|C \begin{aligned} S &\rightarrow aTbS \;|\; aS \;|\; c\\ T &\rightarrow aTbT \;|\; c\\ \end{aligned} (a (a c b c ))(一个(一个CbC))(a(acbc)) 问题:是否存在另一种自然方法来解决会导致解析?换句话说,我正在寻找一种语法,该语法生成​​与上述两种语言相同的语言,并且语言明确,并且将解析为。(a (a …

2
什么是文件?
我正在寻找文件的正式定义,该定义不仅包括存储,还包括与存储无关的抽象,例如procfs或/ dev / null(或任何基于保险丝的文件)。 到目前为止,我知道所有文件都是抽象的 可以识别 可以具有名称(通常按层次结构组织) 可以作为字节流访问 通常提供权限和其他(系统特定的)元数据 但是到目前为止,我在任何OS书籍中都找不到有用的正式定义。

1
平面表达式的最简单完整组合器基础对
在克里斯·冈崎(Chris Okasaki)的论文“ 拼合组合器:没有括号的情况下生存 ”中,他表明,两个组合器既足以作为编码图灵完备表达式的基础,又不需要应用运算符或括号。 通过使用应用程序运算符对S和K组合器进行前缀编码,与John Trump在“ 二进制Lambda微积分和组合逻辑 ”中对组合逻辑的编码相比,只需要两个组合器来进行平面表达式,就可以将代码密度提高到最优。产生的Goedel编号将每个整数映射为有效的,格式正确的闭项表达式,这与大多数计算和最小描述长度的esolang不同,后者的规范表示通常允许描述语法无效的程序。 但是Okasaki的编码在从lambda演算项到位串的单向映射中是最有用的,而不一定是相反的,因为当用作实用的替换指令时,此归约中使用的两个组合器相对复杂。 什么是不需要应用程序运算符的最简单的完整组合器基础对?

1
允许无限数量的规则的CFG有多强大?
我最近想知道如果我们允许无上下文语法具有无限数量的规则会发生什么。显然,如果我们允许任意这样的无限规则集,则某个字母每种语言都可以用CFG其中。但是,如果我们将限制为可以由上下文无关文法创建的规则集呢?LLLΣΣ\SigmaG=({S},Σ,R,S)G=({S},Σ,R,S)G = (\{S\},\Sigma,R,S)R={S→w∣w∈L}R={S→w∣w∈L}R = \{S \rightarrow w \mid w \in L \}RRR 为此,给定一组非终结符和终结符,让我们将规则不视为元素,而是视为字母字符串。现在我的问题是,如果我们将无限规则CFG定义为元组,其中NNNΣΣ\SigmaN×(N∪Σ)∗N×(N∪Σ)∗N \times (N\cup \Sigma )^*R(N,Σ)=N∪Σ∪{→}R(N,Σ)=N∪Σ∪{→}R_{(N,\Sigma)} = N \cup \Sigma \cup \{\rightarrow\}G=(N,Σ,R,S)G=(N,Σ,R,S)G = (N, \Sigma, R, S) NNN是非终结点的有限集 ΣΣ\Sigma是一个有限字母 RRR是格式为一组规则,其中,,使得在上存在一些CFGA→wA→wA \rightarrow wA∈NA∈NA \in Nw∈(N∪Σ)∗w∈(N∪Σ)∗w \in (N \cup \Sigma)^*G′G′G'R(N,Σ)R(N,Σ)R_{(N,\Sigma)}R=L(G′)R=L(G′)R = L(G') S∈NS∈NS \in N是初始非终结点 我们为这种无限规则CFG 定义了,就像对CFG所做的那样,无限规则CFG生成的语言类别(让我们称之为),上下文无关语言的类别之间是什么关系?和类?L(G)L(G)L(G)irCFirCFirCFCFCFCFRERERE 显然,我们有,但是等效于这些类之一(或其他一些类)?CF⊆irCF⊆RECF⊆irCF⊆RECF \subseteq irCF \subseteq …

2
对于任何语言,都有使得但
我正在尝试为以下方面提供证明: 对于任何语言一个AA,存在一个语言乙BB使得一≤Ť乙A≤TBA \le_{\mathrm{T}} B但乙≰Ť一个≰TA\nleq_{\mathrm{T}} A。 我当时想让乙BB为一个Ť 中号ATMA_{\mathrm{TM}},但我意识到并不是所有的语言都可以将图灵化为一个Ť 中号ATMA_{\mathrm{TM}},因此A≤TBA≤TBA \le _T B不成立。有什么其他选择BBB我有,让我写它使用Oracle的TM BBB决定AAA? 谢谢!

2
有效计算n个除数的最小整数
为了解决这个问题,我首先观察到 ϕ(pe11 pe22⋯ pekk)=(e1+1)(e2+1)⋯(ek+1)ϕ(p1e1 p2e2⋯ pkek)=(e1+1)(e2+1)⋯(ek+1)\phi(p_1^{e_1} \space p_2^{e_2} \cdots \space p_k^{e_k}) = (e_1 + 1)(e_2 + 1)\cdots(e_k +1) 其中ϕ(m)ϕ(m)\phi(m)是的(不一定是素数)的除数数mmm。如果mmm是使得的最小整数ϕ(m)=nϕ(m)=n\phi(m) = n,则 ϕ(m)=nϕ(m)=n\phi(m) = n (e1+1)(e2+1)⋯(ek+1)=n(e1+1)(e2+1)⋯(ek+1)=n(e_1 + 1)(e_2 + 1)\cdots(e_k +1) = n 现在,我们必须选择eieie_i这样∏ipeii∏ipiei\prod_{i} p_i^{e_i}是最小的。的选择ppp很简单-它们只是升序的质数。 然而,我的选择首先想到的eieie_i是不正确的。我以为您可以简单地将nnn分解为因子,然后按降序对因子进行排序,然后减去1。在大多数情况下,它可以正常工作,例如n=15n=15n = 15除数的最小整数是: 15=5⋅315=5⋅315 = 5 \cdot 3 15=(4+1)(2+1)15=(4+1)(2+1)15 = (4 + 1)(2 + 1) m=2432=144m=2432=144m …

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.