2016-12-11 4 views
-1

Я хочу показать правильность «Алгоритм для нахождения максимального элемента в массиве» с использованием индукции и противоречия.Правильность алгоритма для нахождения максимума в массиве

ans=-infinity 
for (i=0; i<n; i++) 
    ans= max(ans, A[i]) 

где A[0:n-1] является массивом и max функция возвращать максимум двух аргументов.

Что я делаю:

Базовый случай: i=0, ans= max(-infinity,A[0])=A[0], так как только один элемент был processsed, это максимум.

Индукционная гипотеза: i=k<n-1, Предположим, что алгоритм правильно находит максимум до k итераций.

Индуктивный шаг: i=k+1, пусть ans_{i} обозначают максимальный элемент, полученный с помощью алгоритма Шифрование до i шагов, и пусть ans'_{i} обозначают еще один максимальный элемент из массива A[0:i-1].

Тогда из индукционной hypothsis, ans_{k} = ans'_{k}

Теперь, ради противного, предположим ans_{k+1} < ans'_{k+1}

Теперь, как я должен продолжить, чтобы показать это противоречие?

Любое предложение? Должен ли я изменить этот подход?

+0

Принадлежность к math.stackexchange.com (который принадлежит «другому сайту в сети Stack Exchange») не предлагает в качестве предложения. Серьезно, парни SO, трудно ли добавить в список предложений «Другой» вариант ?) –

+0

Вам не нужно доказательство от противоречия, поскольку индукционное доказательство уже делает работу. – trincot

+0

Что за муньо-ноль обозначений, избили меня, если я понял, чего вы пытаетесь достичь. Посмотрите, проблему можно просто поставить так: «Если M (i-1) является максимальным для' arr [0 ... i-1] ', то M (i) = max (' arr [i] ', M (i-1)) является max для 'arr [0 ... i]' ". И демон проста: «если M (i-1)> =' arr [i] ', то M (i-1) = M (i) - по определению максимальной функции - будет больше любого' arr [0 ... i] '. Если M (I-1) <' arr [i] ', то' arr [i] 'больше любого' arr [0 ... i-1] '- транзитивностью порядок порядка - так что M (i) = arr [i] - точно такое же значение, как и возвращение максимальной функцией " –

ответ

0

Где n равно нулю, мы получаем -инфекцию. Где n одно или выше, мы получаем max2 (ans_ (n-1), A [n-1]). Итак, индукционные работы, если max2 (-infinity, x) не возвращает -infinity, что может быть, если A [n-1] = NaN. Шаг противоречия на самом деле показывает, что функция, возможно, не является строгой, как должно быть.

Смежные вопросы