README.md

Auteurs

Maxime GRANDVAUX

Guillaume SHI DE MILLEVILLE

Sidiya BABAH

Explication des algorithmes

Naive:

Complexité: O(n^2)

Kadane:

Complexité: O(n)

Maximum subarray sum

Input: un tableau d'entiers A de taille n >= 1

Output: maxSum, indxDebut, indxFin

  1. Déclarer les variables locales currentSum, maxSum, indxDebut, indxFin puis les initialiser à 0,

    • Declarer 3 vecteurs de taille initiale 1 C, I, J et qui sont initialisés à 0
  2. Vérifier:

    • (I) Si A est vide, alors: Une exception sera renvoyée à l'utilisateur

    • (II) Si n == 1, alors: return maxSum = A[1], indxDebut = indxFin = 1

  3. Sinon, pour tout i allant de 1 jusqu'à n:

    • currentSum+ = A[i]
  4. Si currentSum >= 0:

    • currentSum = 0
    • Ajouter l0, indice i vecteur au J
  5. Si currentSum > 0 et maxSum >= currentSum:

    • Ajouter l0, indice i au vecteur C
  6. Si currentSum > maxSum:

    • maxSum = currentSum, Ajouter l0, indice i au vecteur I, i = i + 1.
  7. A la fin des itérations: Compute indxFin, et indxDebut

    • indxFin = max(I)
  8. indxDebut = min {min(C[C > max(J[J < indxFin])]), min(I[I > max(J[J <indxFin])])}

Tableau concaténant et sommant les éléments positifs

Complexité: O(n)

Input: un tableau d'entiers A de taille n >= 1

Output: un vecteur d'entiers B de taille m>=1, m<=n

Une telle fonction permet de simplifier le Max Subarray Problem puisqu'à la place de rechercher une somme d'éléments maximale, on n'effectue qu'une recherche de maximum.

Fonctions disponibles

Complément d'information :

Ces techniques sont utilisées pour détécter la zone la plus lumineuse dans une image dans le domaine de la vision par ordinateur (aussi appelée vision artificielle ou vision numérique). En prennant un exemple plus concret, on peut rechercher des planètes en utilisant des images de nuit d'un ciel dégagé.

Informations historiques : https://en.wikipedia.org/wiki/Maximum_subarray_problem#History

Vidéo proposant plusieurs approches au problème expliqué lors d'une interview "How to : Work at Google"

https://www.youtube.com/watch?v=XKu_SEDAykw



maxime970/Algo documentation built on Jan. 26, 2021, 1:31 a.m.