Pergunta

First Slide: Find Max(A)

  1. // INPUT: A[1..n] - an array of integers
  2. // OUTPUT: an element m of A such that m >= A[j], for all 1 <= j <= A.length
  3. max = A[j==1]
  4. for j = 2 to A.length
  5. if max < A[j]
  6. max = A[j]
  7. return max

Second Slide: Proof By Contradiction

Proof: Suppose the algorithm is incorrect. Then for some input A, either:

  1. max is not an element of A or
  2. A has an element A[j] such that max < A[j]

Max is initialized to and assigned to elements of A - so (1) is impossible.

After the j-th iteration of the for loop (lines 4 - 6), max >= A[j]. From lines 5,6 max only increases. Therefore upon termination, max >= A[j] which contradicts (2).

End Of Slides

This algorithm (first slide) finds the max element in the array. This is a proof by contradiction. Isn't this algorithm already proved when it gets to max >= A[j] in the last line of the second slide. Is which contradicts (2) even necessary? Because in the second slide you showed max is in the array, and then you met the condition of a maxium m: an element m of A such that m >= A[j] for all 1 <= j <= A.length.

This seems to be two proofs in one. And since it seems to me that the direct proof happens first, then the proof by contradiction is redundant and therefore not necessary. Am i missing something here? Is this only a proof by contradiction? Or is it a direct proof instead?

The image below is just the slides 1 and 2 that I transcribed above. From York University.

Find Max: Slides 1 and 2

Nenhuma solução correta

Licenciado em: CC-BY-SA com atribuição
Não afiliado a cs.stackexchange
scroll top