Может ли кто-нибудь объяснить математическую индукцию (доказать рекурсивный метод) - PullRequest
8 голосов
/ 15 мая 2009

Может кто-нибудь объяснить математическую индукцию, чтобы доказать рекурсивный метод? Я студент-первокурсник по информатике, и я еще не учился в Calculus (я прошел через Trig). Я вроде как понимаю, но у меня возникают проблемы, когда меня просят написать индукционное доказательство для рекурсивного метода.

Ответы [ 3 ]

10 голосов
/ 15 мая 2009

Вот объяснение на примере:

Допустим, у вас есть следующая формула, которую вы хотите доказать:

sum(i | i <- [1, n]) = n * (n + 1) / 2

Эта формула предоставляет закрытую форму для суммы всех целых чисел от 1 до n.

Начнем с доказательства формулы для простого базового случая n = 1. В этом случае обе части формулы уменьшаются до 1. Это, в свою очередь, означает, что формула верна для n = 1.

Далее мы докажем, что если формула верна для значения n, то она верна для следующего значения n (или n + 1). Другими словами, если верно следующее:

sum(i | i <- [1, n]) = n * (n + 1) / 2

Тогда верно и следующее:

sum(i | i <- [1, n + 1]) = (n + 1) * (n + 2) / 2

Для этого давайте начнем с первой части последней формулы:

s1 = sum(i | i <- [1, n + 1]) = sum(i | i <- [1, n]) + (n + 1)

То есть сумма всех целых чисел от 1 до n + 1 равна сумме целых чисел от 1 до n плюс последний член n + 1.

Поскольку мы основываем это доказательство на условии, что формула выполняется для n, мы можем написать:

s1 = n * (n + 1) / 2 + (n + 1) = (n + 1) * (n + 2) / 2 = s2

Как видите, мы подошли ко второй части формулы, которую мы пытаемся доказать, что означает, что формула действительно верна.

Это завершает индуктивное доказательство, но что это на самом деле означает?

  1. Формула верна для n = 0.
  2. Если формула верна для n, то она верна для n + 1.

Из 1 и 2 можно сказать: если формула верна для n = 0, то она верна для 0 + 1 = 1. Поскольку мы доказали случай n = 0, то случай n = 1 действительно верен.

Мы можем повторить этот процесс снова. Случай n = 1 является правильным, тогда случай n = 2 является правильным. Это рассуждение может идти до бесконечности; формула верна для всех целочисленных значений n> = 1.

9 голосов
/ 15 мая 2009

индукция! = Calc !!!

Я могу напоить N парней 10 * N пивом.

Базовый случай: 1 парень

Я могу напиться одного парня с 10 пивом

Шаг индукции, если p (n) доказать p (n + 1)

Я могу напиться, ребята, с 10 * я пивом, если я добавлю еще одного парня, я могу напоить его еще 10 пивом. Поэтому я могу выпить 1 + 1 парня с 10 * (i + 1) пивом.

p (1) -> p (i + 1) -> p (i + 2) ... p (inf)

Дискретная математика - это просто!

0 голосов
/ 15 мая 2009

Во-первых, вам нужен базовый случай. Тогда вам нужен индуктивный шаг, который выполняется для некоторого шага n. На вашем индуктивном шаге вам понадобится индуктивная гипотеза. Эта гипотеза является предположением, которое вы должны были сделать. Наконец, используйте это предположение, чтобы доказать шаг n + 1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...