Questions tagged «proof-techniques»

有关证明多个定理的一般方法和技术的问题。当询问单个陈述的证据时,请使用与该证据有关的标签。

3
算法分析的魔力背后是否有一个系统?
关于如何分析算法的运行时间存在很多问题(例如,参见运行时分析和算法分析)。许多都是类似的,例如那些要求对嵌套循环或分而治之算法进行成本分析的方法,但是大多数答案似乎都是量身定制的。 另一方面,另一个通用问题的答案通过一些示例解释了更大的图景(尤其是关于渐近分析),但没有说明如何弄脏您的手。 有没有一种结构化的,通用的方法来分析算法的成本?成本可能是运行时间(时间复杂度),也可能是某种其他成本度量,例如执行的比较次数,空间复杂度或其他。 这应该成为一个参考问题,可以用来指导初学者。因此其范围比平常大。请小心给出一般的,有说服力的答案,至少由一个示例说明了这一点,但仍然涵盖了许多情况。谢谢!

11
求解或近似数字序列的递归关系
在计算机科学中,我们经常必须解决递归关系,即为递归定义的数字序列找到闭合形式。在考虑运行时时,我们通常主要对序列的渐近增长感兴趣。 例子是 尾递归函数的运行时间从向下逐步降为,的身体花费时间:000nnnf(n)f(n)f(n) T(0)T(n+1)=0=T(n)+f(n)T(0)=0T(n+1)=T(n)+f(n)\qquad \begin{align} T(0) &= 0 \\ T(n+1) &= T(n) + f(n) \end{align} 的斐波那契序列: F0F1Fn+2=0=1=Fn+Fn+1F0=0F1=1Fn+2=Fn+Fn+1\qquad \begin{align} F_0 &= 0 \\ F_1 &= 1 \\ F_{n+2} &= F_n + F_{n+1} \end{align} 具有括号对的Dyck单词数:nnn C0Cn+1=1=∑i=0nCiCn−iC0=1Cn+1=∑i=0nCiCn−i\qquad\begin{align} C_0 &= 1 \\ C_{n+1}&=\sum_{i=0}^{n}C_i\,C_{n-i} \end{align} mergesort运行时重复出现在长度为列表上:nnn T(1)T(n)=T(0)=0=T(⌊n/2⌋)+T(⌈n/2⌉)+n−1T(1)=T(0)=0T(n)=T(⌊n/2⌋)+T(⌈n/2⌉)+n−1\qquad \begin{align} T(1) &= T(0) = 0 \\ T(n) …

5
如何证明一种语言不是上下文无关的?
我们了解了无上下文语言Ç ˚F 大号CFL\mathrm{CFL}。它具有无上下文语法和下推自动机的特征,因此很容易显示给定语言是无上下文的。 但是,如何显示相反的内容?我的助教坚称要这样做,我们必须为所有语法(或自动机)证明它们无法描述手头的语言。这似乎是一项艰巨的任务! 我读过一些抽奖式引理,但看起来确实很复杂。

10
如何证明一种语言不是正常语言?
我们了解了常规语言。它的特征在于正则表达式,有限自动机和左线性语法中的任何一种,因此很容易证明给定语言是正则的。ř Ë ģREG\mathrm{REG} 但是,如何显示相反的内容?我的助教坚持要做到这一点,我们必须为所有正则表达式(或所有有限自动机,或所有左线性语法)表明它们无法描述当前的语言。这似乎是一项艰巨的任务! 我读过一些抽奖式引理,但看起来确实很复杂。 这旨在成为收集常规证明方法和应用示例的参考问题。有关上下文无关语言的相同问题,请参见此处。

2
什么是共生?
我听说过(结构性)归纳法。它使您可以从较小的结构中构建有限的结构,并为证明这种结构的原理提供证明。这个想法很明确。 但是共生呢?它是如何工作的?怎么能说出无限结构的定论呢? 有(至少)两个角度需要解决,即共归作为一种定义事物的方式和一种证明技术。 关于共生作为证明技术,共生和双仿真之间是什么关系?

8
如何证明语言是正规的?
有很多方法可以证明某种语言不是正规语言,但是我需要做些什么来证明某种语言是正规语言呢? 例如,如果给我是规则的,那么我怎么能证明后面的L ′也是规则的呢?L大号LL′大号′L' L′:={w∈L:uv=w for u∈Σ∗∖L and v∈Σ+}大号′:={w∈大号:üv=w 对于 ü∈Σ∗∖大号 和 v∈Σ+}\qquad \displaystyle L' := \{w \in L: uv = w \text{ for } u \in \Sigma^* \setminus L \text{ and } v \in \Sigma^+ \} 我可以画一个不确定的有限自动机来证明这一点吗?


4
有什么常用技术可以减少彼此的问题?
在可计算性和复杂性理论(可能还有其他领域)中,减少是无处不在的。有很多种类,但是原理保持不变:通过将实例映射到L_1中与解决方案等效的实例,可以证明一个问题至少与其他问题一样困难。本质上,我们表明,如果允许L_1的任何求解器使用归约函数作为预处理器,它也可以求解L_2。L 2 L 2大号1个L1L_1大号2L2L_2大号2L2L_2L 1 L 2大号1个L1L_1大号1个L1L_1大号2L2L_2 这些年来,我已经完成了减少的份额,有些事情困扰着我。尽管每个新的减少都需要(或多或少)创造性的构造,但任务可能会让人感到重复。是否有规范的方法库? 人们可以定期采用哪些技术,模式和技巧来构造归约函数? 这应该成为参考问题。因此,请谨慎给出一般的,有说服力的答案,至少由一个例子说明了这一点,但仍然涵盖了许多情况。谢谢!

5
证明编译器无法检测到无效代码
我打算讲授有关各种主题的冬季课程,其中之一将是编译器。现在,我在考虑整个季度要分配的作业时遇到了这个问题,但是这让我很困惑,因此我可以用它作为示例。 public class DeadCode { public static void main(String[] args) { return; System.out.println("This line won't print."); } } 在上面的程序中,很明显,由于,print语句将永远不会执行return。编译器有时会给出有关死代码的警告或错误。例如,以上代码将无法在Java中编译。但是,javac编译器不会在每个程序中检测到所有死代码实例。我如何证明没有编译器可以这样做?

7
是否有比对角化更直观地证明停顿问题的不确定性?
我理解基于对角化的停顿问题的不确定性证明(例如,在Papadimitriou的教科书中给出)。 尽管证据令人信服(我理解其中的每个步骤),但从我看不到有人会如何从一个问题出发的角度来看,这对我来说并不直观。 在书中,证明是这样的:“假设MHMHM_H解决了输入的停止问题;xM;xM;xM;x,即确定图灵机是否MMM停止输入xxx。构造一个图灵机DDD,将图灵机MMM作为输入,运行MH(M;M)MH(M;M)M_H(M;M)并反转输出。” 然后继续表明D(D)D(D)D(D)无法产生令人满意的输出。 它是在看似随意的建设DDD,饲养的特别的想法MMM本身,然后DDD本身,我想有一个直觉。是什么导致人们首先定义那些构造和步骤? 如果有人不知道以哪种类型的论点开头,那么有人是否会解释如何解释对角化论点(或其他证明)? 附录给出了第一轮答案: 因此,第一个答案指出,证明停顿问题的不确定性是基于Cantor和Russell先前的工作以及对角化问题的发展,而“从头开始”将仅意味着必须重新发现该论点。 很公平。但是,即使我们接受对角化论点作为一个很好理解的给定,我仍然发现从它到停止问题还有一个“直觉差距”。我发现Cantor关于实数不可数的证明非常直观。罗素的悖论更是如此。 我仍然看不到是什么会激励某人基于M的“自我应用” M来定义;M,然后再次将D应用于自身。这似乎与对角化关系不大(从某种意义上说,Cantor的论点没有类似的东西),尽管一旦定义了对角化显然很有效。D(M)D(M)D(M)MMMM;MM;MM;MDDD 聚苯乙烯 @babou总结了让我比自己更困扰的事情:“许多版本的证明都存在这样的问题,即结构似乎是从魔术帽上拔下来的。”

3
为什么相对化是一个障碍?
当我在解释Baker-Gill-Solovay证明时,存在一个可以使用的甲骨文,以及一个可以用的甲骨文给朋友一个,问了一个问题,为什么这样的技术不适合证明问题,我无法给出令人满意的答案。P=NPP=NP\mathsf{P} = \mathsf{NP}P≠NPP≠NP\mathsf{P} \neq \mathsf{NP}P≠NPP≠NP\mathsf{P} \neq \mathsf{NP} 更具体地说,如果我有一种方法可以证明并且如果我可以构造oracles来使上述情况发生,那为什么使我的方法无效呢?P≠NPP≠NP\mathsf{P} \neq \mathsf{NP} 关于这个话题有什么论述/想法吗?

2
如何证明贪心算法是正确的
我有一个贪心算法,我怀疑这可能是正确的,但我不确定。如何检查是否正确?证明贪婪算法正确的技术有哪些?有共同的模式或技术吗? 我希望这将成为一个参考问题,可以用来指导初学者。因此其范围比平常大。请小心给出一般的,有说服力的答案,至少由一个示例说明了这一点,但仍然涵盖了许多情况。谢谢!

2
除了对角线化,自引用或可归约性之外,是否还有其他原因无法确定的特定问题?
我知道的每个不确定的问题都属于以下类别之一: 由于对角线化(间接自引用)而无法确定的问题。这些问题(如暂停问题)是无法确定的,因为您可以使用该语言的所谓决策器来构造行为会导致矛盾的TM。您还可以将有关Kolmogorov复杂性的许多不确定的问题混入这个阵营中。 由于直接自参考而无法确定的问题。例如,由于以下原因,通用语言可能无法确定:如果可以确定,则可以使用Kleene的递归定理来构建获得自己编码的TM,询问是否接受自己的输入,则相反。 由于减少了现有的不确定性问题而无法确定的问题。这里的很好的例子包括邮政函授问题(从停顿问题中减少)和Entscheidungs问题。 当我向学生讲授可计算性理论时,许多学生也开始学习可计算性理论,并且经常问我是否有任何问题可以证明是无法决定的,而最终并没有追溯到某种自指技巧。我可以用一个简单的基数参数将TM的数量与语言的数量相关联,来无条件地证明存在无限多的不确定性问题,但这并未给出不确定性语言的具体示例。 是否存在由于以上未列出的原因而无法确定的任何语言?如果是这样,它们是什么?使用什么技术来显示其不确定性?


2
如何证明一种语言是上下文无关的?
有许多技术可以证明某种语言不是上下文无关的,但是如何证明一种语言不是上下文无关的? 有什么技术可以证明这一点?显然,一种方法是展现该语言的上下文无关语法。是否有系统的技术来查找给定语言的无上下文语法? 对于常规语言中,有 系统的方法来得到一个正规文法/状态自动:例如,迈希尔-尼罗德定理提供了一种方法。上下文无关的语言是否有相应的技术? 在这里,我的动机是(希望)建立一个参考问题,其中包含一系列试图证明给定语言不受上下文限制时通常有用的技术。由于这里有很多问题是特殊情况,因此,如果我们能记录面对此类问题时可以使用的通用方法或通用技术,那就太好了。

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.