Étant donné une séquence Q de n nombres entiers (positifs ou négatifs), la sous-séquence maximale de Q est la suite contiguë d'éléments du tableau qui a la somme maximale parmi toutes les sous-séquences possibles.
Par exemple, pour le tableau Q suivant :
La séquence de somme maximale est
6
-1
8
Remarque : Si il existe plusieurs sous séquences de même somme maximale, on prendra la première trouvée.
Il existe de nombreux façons de résoudre ce problème dont l'algorithme de Kadane qui le résout en O(N). Nous allons considérer une solution proposée par Perumalla et al. qui propose une variante parallèle.
Maximum subsequence :
Input : Q tableau de n entiers
Output : Sous séquence maximale
L'exemple suivant est tiré de l'article donné dans les références. Il faut bien le comprendre
Vous devez implémenter le calcul de la sous séquence maximale dans un unique fichier nom.c en respectant les contraintes suivantes
Le fichier de données sera considéré comme toujours bien formé, i.e composé d'une suite d'entiers relatifs séparés par des espaces. Le tableau sera de taille n=2m .
Vous pouvez tester votre solution grâce au fichier python3 contenu dans le zip en bas de la page. Placez votre fichier nom.c dans le répertoire src et exécutez
~/>python3 evaluate.py
nom;True;True;False;Error
Le projet sera à rendre sur Jalon au plus tard le dimanche 1er avril à 23.00, sous forme d'un fichier zip contenant
gcc -o nom -Wall -std=c99 nom.c -lm -fopenmp
Les points suivants seront évalués
L'évaluation étant semi-automatique, un programme produisant un résultat correcte mais mal formé (espaces, retour à la ligne ...) sera considéré comme faux.