Pourquoi est-ce une preuve par contradiction pour cet algorithme? N'est-ce pas une preuve directe à la place?

cs.stackexchange https://cs.stackexchange.com/questions/106019

Question

Première diapositive: trouver max (a)

  1. // Entrée: A [1..N] - un tableau d'entiers
  2. // Sortie: un élément m de a tel que m> = a [j], pour tous les 1 <= j <= a.Length
  3. max = a [j == 1
  4. pour j = 2 à A.Length
  5. Si max <a [j
  6. max = a [j
  7. retourner max

Deuxième diapositive: preuve par contradiction

Preuve: Supposons que l'algorithme soit incorrect. Ensuite, pour une entrée A, soit:

  1. Max n'est pas un élément de a ou
  2. A a un élément a [j] tel que max <a [j

Max est initialisé et affecté aux éléments de a - donc (1) est impossible.

Après l'itération J-Th de la boucle pour (lignes 4 - 6), max> = a [j]. Des lignes 5,6 Max n'augmente que. Par conséquent, lors de la fin, max> = a [j] qui contredit (2).

Fin des diapositives

Cet algorithme (première diapositive) trouve l'élément maximum dans le tableau. Il s'agit d'une preuve par contradiction. Cet algorithme n'est-il pas déjà prouvé quand il arrive max> = a [j] dans la dernière ligne de la deuxième diapositive. Est qui contredit (2) Même nécessaire? Parce que dans la deuxième diapositive, vous avez montré que Max est dans le tableau, puis Vous avez atteint l'état d'un maxium m: un élément m de a tel que m> = a [j] pour tous les 1 <= j <= a.Length.

Cela semble être deux preuves en un. Et comme il me semble que la preuve directe se produit d'abord, la preuve par contradiction est redondante et donc pas nécessaire. Est-ce que j'ai râté quelque chose? Est-ce seulement une preuve par contradiction? Ou est-ce une preuve directe à la place?

L'image ci-dessous n'est que les diapositives 1 et 2 que j'ai transcrites ci-dessus. De l'Université de York.

Find Max: Slides 1 and 2

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à cs.stackexchange
scroll top