人类为什么可以解决某些“无法确定”的问题?


44

高阶模式匹配是一个不确定的问题。这意味着不存在算法,给定的公式a => b,其中ab是在简单类型λ演算的开放式术语,认定的取代S,使得aS => bS,其中=>代表“具有相同的BN正常形式”。但是,人类可以有效地解决该问题。例如,给定以下问题:

a = (λt . t 
    (F (λ f x . (f (f (f x))))) 
    (F (λ f x . (f (f x)))))
b = (λ t . t
    (λ f x . (f (f (f (f (f (f x)))))))
    (λ f x . (f (f (f (f x))))))

任何对lambda演算有足够了解的人都将能够注意到F教堂数字的“双重”功能,很快就会带来以下解决方案:

 F = (λ a b c . (a b (a b c)))

我的问题是:如果这个问题无法确定,那么人类如何迅速而轻松地解决它?


24
“人类可以有效地解决该问题”-需要引用。您的证据是什么?显示一个可以有效解决问题的示例并不意味着您可以针对问题的所有实例有效解决问题。您不能通过显示X的一个示例来证明“对于所有X,X都是正确的”。
DW

33
问题是无法确定的,这意味着没有算法可以针对问题的每个实例正确回答“是”或“否” 。这并不意味着可以找到一种算法来解决某些(或许多)问题实例。[呵呵。正如我在撰写此评论时DW回答的那样。]
Rick Decker

23
解决这个问题?我什至不明白这个问题。
MikeTheLiar 2015年

2
我的理解是这样的:该解决方案是一个临时的解决方案。问题的每个实例都有一个-在大多数情况下,不像示例中那样容易引起,但是您始终可以说“如果获得实例X,则输出Y”,因为只能基于正确性来判断算法-但是以这种方式对所有此类解决方案进行硬编码不会产生有限的过程(这是唯一合理的种类,因此通常是什么意思)。换句话说,为了确定问题,在选择算法策略之前,您不可以查看给出了哪个实例。
范德蒙德2015年

同样,这就是为什么通常只考虑或调用无数个实例的问题的原因,因为否则您可以枚举上述所有解决方案。
范德蒙德2015年

Answers:


78

人类可以有效地解决该问题的某些实例,但是没有理由相信人类可以有效地解决所有实例。显示人类可以有效解决的一个实例并不意味着人类可以有效解决所有的实例。

不确定的意思是“没有可以解决所有实例并且总是终止的算法”。仍然存在可以解决某些情况的算法,即使对于无法确定的问题也是如此。

因此没有矛盾。


23
@srvm,是的,这确实意味着。例如,这是一个计算机算法的愚蠢示例:“如果输入恰好是您问题中给出的示例,则输出F = (λ a b c . (a b (a b c)))并暂停”。这是一种计算机算法,可以在某些情况下(特别是仅在一种情况下)解决问题。是的,没关系–提出类似的新问题似乎是正确的选择。与往常一样,请务必告诉我们您在问题中进行了哪些研究(在提出问题之前应先进行一些研究)。
DW

10
真的硬问题索赔,即使是在NP完全问题,大多数情况下,就可以轻松解决。这符合我的经验。通常,问题的某些特征使解决方案(至少是部分解决方案)显而易见。该的有成功和失败之间小心平衡,但不会有太多的那些。
罗斯·米利肯

3
如果您考虑使用@srvm,那么在特殊情况下解决此类困难问题正是优化程序要做的。
Cort Ammon

2
@srvm:我们使计算机几乎每天都解决的无法解决的问题的一个很好的例子就是停顿问题。我们知道暂停问题无法确定,但是我们仍然坚持编写短绒,静态分析器和编译器来尝试检测不需要的无限循环。我们如何通过“经验法则”来做到这一点。也就是说,我们从人类经验(不是算法)中知道某些类型的代码进入了无限循环。因此,我们要求计算机查找已知情况。我们知道,此类程序永远不会捕获所有错误。但这总比没有好。
slebetman

2
后代的新链接是:真正困难的问题所在
Alex Moore-Niemi

3

由于意见音符之一,应该意识到,有解决高阶模式匹配的一些不错的算法,在实践中(作为一个快速谷歌搜索,就会发现)。

我不知道能解决这个特定问题的任何人,但是这个“加倍”问题感觉更接近于程序综合领域。我确实相信有些程序综合系统可以解决此类问题。

创建使这些系统陷入困境的示例很容易,而且人类在这些问题上似乎特别擅长。创建自动定理证明人工智能(针对更雄心勃勃/不切实际的尝试)的目的是,开发出与人类更接近的算法来解决这类问题。


1

人们总是尝试用自己的知识来解决问题,因此人们开发了一些算法来解决某些实例的问题。因此,人们开发了一种算法,但不能确定特定的算法能否解决每个问题。因此,没有一种算法可以解决所有问题,但是即使没有完美的算法,仍然会有一些人类可以解决的问题,例如可以说我们知道如何解决问题,但是没有算法。


8
这不只是对现有答案的解释吗?我知道我批评了您的大多数答案,因此以下内容听起来可能是不真诚的,但事实并非如此。您真的想为该网站做出贡献真是太好了。如果您能帮助我们回答2500个未回答的问题中的一些问题,而不是回答我们已经回答了您想要说的所有问题的问题,那将是非常不错的 。谢谢!
大卫·里希比
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.