“归纳地”和“递归地”具有非常相似的含义吗?


11

“归纳式”和“递归式”的含义是否非常相似?

例如,如果存在一种算法,该算法可以根据已确定的前k个成分确定其前k个+1个成分,并通过第一个成分进行初始化,从而确定n维矢量,那么您将其称为递归还是归纳工作?我一直在“递归地”使用,但是今天有人“归纳地”使用它。


这篇关于归纳和递归的文章很好地总结了它,但要点是它们之间有着密切的联系。数学归纳证明可以写为递归算法。
Merbs

归纳法通常是指从n + 1递归,因此递归是更一般的副词。nn+1
Yuval Filmus 2012年

@YuvalFilmus不是递归的哪种递归?
蒂姆(Tim)

@YuvalFilmus:这是归纳的一个非常有限的概念。
戴夫·克拉克

对我来说,它们在上下文之外是同一件事。在特定情况下,它们可能意味着不同的含义。
吉尔(Gilles)'所以

Answers:


6

,但不是出于其他人给出的原因。递归与归纳之间的区别不在于递归是“自上而下”而归纳是“自下而上”。归纳与所谓的“原始递归”同构,但总的来说,递归比归纳严格得多

自上而下与自下而上的区别是微不足道的-任何“自上而下”的原始递归程序都可以机械地转换为“自下而上”的东西。实际上,任何归纳证明都可以转化为递归程序。在归纳结构演算的框架中,如果您想证明每个自然数都是无色的,则可以将其写为一个函数,该函数通过递归调用构造一个证明n为无色的证明,从而证明n是无色的。 1是无足轻重的。

归纳的关键因素是,事物是根据较小的事物来定义的,并且它们经过有限的多个步骤后才能“自下而上”。自然数是归纳的,因为每个自然数要么是0,要么是较小自然数的后继。列表是归纳的,因为每个列表要么为空,要么可以分解(“展开”)为一个元素和一个较小的列表。

有时,递归程序并不是用较小的东西编写的。例如,使用以下Collat​​z功能:

fun collatz(n) 
   if n <= 1
      return 0;
   else if n % 2 == 0
     return 1 + collatz(n / 2)
   else
     return 1 + collatz(3 * n + 1)
end

该函数既无自顶向下也不自底向上,因此不会对自然数产生归纳。

可能会有一个命令来归纳地对待它,但是对于大多数事情来说,根本没有办法。无限流上的函数就是一个很好的例子。实际上,流是“共归”类型的典型示例。

鲍勃·哈珀(Bob Harper)的“编程语言实用基础”可以免费在线获得,它很好地介绍了归纳,共归和递归类型。


2

对我而言,这主要是观点问题。如果我根据较小的对象定义对象,则可以归纳地进行,因此是自下而上的。如果我通过将问题分解为较小的部分来解决问题,并且以同样的方式将其解决,则将其称为递归,那就是自上而下的。

(编辑)PS。在我们的数学姊妹系中可以看到类似的问题,即递归归纳定义。我引用卡尔·默默特的回答:

我最好的描述是,当我们“一无所有”定义一组对象时,“归纳定义”更为常见,而当我们在已存在的对象集合上定义一个函数时,“递归定义”则更为常见。

但更重要的是:

失去睡眠不值得


因此,“递归=分而治之”,哪个先自上而下,然后自下而上?
蒂姆(Tim)

1

不,他们不一样。而且您是对的(我假设您正在描述的算法):它是递归的。

原因是两个单词的定义,您可以在字典或Wikipedia中阅读它们。

归纳法(假设为“数学归纳法”)专门用于证明一个论点的所有情况都是正确的。

递归专门涉及一个过程,该过程可能在同一过程中以某种方式重复。

RE:其他人的答案:

在看到其他人的答案之后,我可以理解为什么会有混淆:在定义数据结构,函数和语言时,一些理论家似乎以一种混淆的方式使用“归纳”和“递归”(请参阅​​对该问题的评论)。我认为科佩尔(Koppel)的回答(即使目前票数最高)也不能真正反映出这种困惑。既然我们在谈论一种算法,我就不会说有“归纳算法”。我认为这是不必要的分类。


归纳不仅与证明有关。您还一直使用它来归纳定义递归结构(数据结构,语言等)
hugomg 2012年

@missingno请提供该定义的来源。
汤姆(Tom)

我能想到的一个例子是在这里:“的\ mathcal {L}的语言,也被称为其设定的formulæ的,由以下规则合式公式或的wff,感应地定义:”
hugomg

@missingno导致进入此Wikipedia页面,在这里我认为对“归纳”一词有多余且令人困惑的使用,本质上被用作“递归”
Tom

请不要让我寻找更多示例。即使您可能不同意它,它绝对是一个非常普遍的习语,如果您要查找它,也可以在很多书中找到它。它不像有人故意编辑维基百科文章来证明我的观点...
hugomg
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.