“귀납적으로”와“재귀 적으로”는 매우 비슷한 의미가 있습니까?


11

"유도 적으로"와 "재귀 적으로"는 매우 비슷한 의미입니까?

예를 들어, 결정된 첫 번째 k 개의 구성 요소를 기반으로 첫 번째 k + 1 구성 요소를 결정하여 n-dim 벡터를 결정하는 알고리즘이 있고 첫 번째 구성 요소로 초기화 된 경우 재귀 적으로 또는 유도 적으로 작동합니까? 나는 "재귀 적으로"를 사용하고 있지만, 오늘날 누군가는 "유도 적으로"말했다.


Induction and Recursion 에 관한이 기사 는 그것을 훌륭하게 요약하지만, 요점은 그것들이 밀접하게 관련되어 있다는 것입니다. 수학적 유도 증명은 재귀 알고리즘으로 작성 될 수 있습니다.
Merbs

귀납적으로 일반적으로 에서 n + 1 까지 재귀 적으로 의미 하므로 재귀 적으로 더 일반적인 부사입니다. nn+1
Yuval Filmus

@YuvalFilmus는 어떤 종류의 재귀 적으로 귀납적이지 않습니까?
Tim

@ YuvalFilmus : 유도의 매우 제한된 개념입니다.
Dave Clarke

나에게 그들은 문맥에서 똑같은 것을 의미합니다. 특정 상황에서, 그것들은 다른 것들을 의미 할 수 있습니다.
Gilles 'SO- 악마 그만해'10

답변:


6

아니요 , 그러나 다른 사람들이 제공 한 이유가 아닙니다. 재귀와 유도의 차이점은 재귀가 "하향식"이고 유도가 "하향식"이라는 것이 아닙니다. 유도는 "primitve 재귀"라고 불리는 것에 동형 적이지만 일반적으로 재귀는 유도보다 훨씬 강력 합니다.

하향식과 상향식의 구별은 사소한 것입니다. "하향식"기본 재귀 프로그램은 기계적으로 "하단"으로 변환 될 수 있습니다. 실제로, 유도에 의한 모든 증거는 재귀 프로그램으로 바뀔 수 있습니다. 귀납적 구성의 미적분학의 틀에서, 모든 자연수가 어리 석다는 것을 증명하고자한다면, n- 1은 어리 석다.

귀납의 핵심 요소는 사물이 더 작은 것의 측면에서 정의되고 아주 많은 단계 후에 "하단"이라는 것입니다. 자연수는 모든 자연수가 0이거나 더 작은 자연계의 계승이므로 귀납적입니다. 모든 목록이 비어 있거나 목록과 작은 목록으로 나눌 수 있기 때문에 목록은 귀납적입니다.

때로는 재귀 적 프로그램은 작은 것의 관점에서 작성되지 않습니다. 예를 들어 다음 Collatz 기능을 사용하십시오.

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

이 기능은 하향식이나 상향식이 아니며 자연수를 유도하지 않습니다.

귀납적으로 취급하라는 명령이있을 수 있지만 대부분의 경우 단순히 방법이 없습니다. 무한 스트림을 통한 함수가 좋은 예입니다. 실제로, 스트림은 "유도 성 (coinductive)"유형의 프로토 타입 예이다.

온라인에서 무료로 제공되는 Bob Harper의 "프로그래밍 언어의 기초"는 귀납적, 공동성 및 재귀 유형에 대한 좋은 소개를 제공합니다.


2

나에게 그것은 대부분 관점의 문제입니다. 더 작은 것을 기준으로 객체를 정의하면 유도 적으로 수행하므로 상향식입니다. 같은 방식으로 해결되는 더 작은 조각으로 문제를 해결하면 재귀라고합니다.

(편집) PS. Mathematics 자매 부서 인 Recursive vs. inductive definition 에서 유사한 질문을 참조하십시오 . Carl Mummert의 답변에서 인용합니다.

가장 좋은 설명은 "무의미한"개체 집합을 정의 할 때 "유도 정의"가 더 일반적이고 이미 존재하는 개체 컬렉션에서 함수를 정의 할 때 "재귀 정의"가 더 일반적이라는 것입니다.

그러나 더 중요한 것은 :

그것은 잠을 잃을 가치가 없다


그래서 "재귀 = 나누고 정복하기"는 어느 쪽입니까?
Tim

1

아니요, 동일하지 않습니다. 그리고 당신 말이 맞습니다 (나는 당신이 묘사하는 알고리즘에 대해 가정하고 있습니다) : 그것은 재귀 적입니다.

그 이유는 사전이나 위키 백과에서 읽을 수있는 두 단어의 정의 때문입니다.

귀납법 ( '수학적 귀납법'이라고 가정)은 특히 모든 주장이 사실임을 증명하는 것입니다.

재귀는 구체적으로 프로세스가 동일한 프로세스 내에서 어떤 방식으로 반복되는지에 관한 것입니다.

RE : 다른 사람들의 답변 :

다른 사람들의 대답을 본 후, 나는 왜 혼란이 있는지 이해할 수 있습니다. 데이터 구조, 함수 및 언어를 정의 할 때 일부 이론가들은 혼란스런 방식으로 '유도 적'과 '재귀 적'을 사용하는 것처럼 보입니다 (이 질문에 대한 주석 참조). Koppel의 답변 (현재 최고 투표율을 보더라도)이 실제로 그 혼란을 반영한다고 생각하지 않습니다. 우리가 알고리즘에 대해 이야기하고 있기 때문에 '유도 알고리즘'이 없다고 말할 수는 없습니다. 나는 그것이 불필요한 분류라고 생각합니다.


귀납은 증거에 관한 것이 아닙니다. 당신은 또한 재귀 구조 (데이터 구조, 언어 등)를 유도 적으로 정의하는데 항상 사용합니다
hugomg

@missingno 해당 정의에 대한 소스를 제공하십시오.
Tom

내가 생각할 수있는 한 가지 예는 다음과 같습니다. "수식, 잘 구성된 수식 또는 wff라고도하는 \ mathcal {L}의 언어는 다음 규칙에 의해 귀납적으로 정의됩니다."
hugomg

@missingno 이 위키피디아 페이지로 연결되는데, 여기서 '유도 적'이라는 단어가 중복적이고 혼란스럽게 사용 된다고 생각합니다. 기본적으로 '재귀 적'으로 사용됩니다.
Tom

더 많은 예제를 찾지 않도록하십시오. 당신이 그것에 동의하지 않을 수도 있지만, 그것은 매우 일반적인 관용구이며 그것을 찾으면 많은 책에서도 찾을 수 있습니다. 그리고 누군가가 내 요점을 증명하기 위해
위키피디아
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.