IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Sous séquence contigues


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1
    Par défaut Sous séquence contigues
    Bonjour,

    je dois écrire un script Python qui, à l'aide des fonction Liste, boucle for et itérateur range(), et à partir d'une liste non trié d'entiers qu’un utilisateur du programme fournira, affiche la somme maximale d’une sous séquence contiguë présente dans la liste. De plus, je dois retourner les indices du début et de la fin de la sous séquence dans la liste. Les éléments de la liste peuvent être positifs ou négatifs. Par exemple si la liste contient les éléments suivants : 11, 13, -4, 3, -26, 7, -13, 25, -2, 17, 5, -8, 1
    La sous séquence 3, -26, 7, -13, 25 a pour somme -4, par contre, la sous séquence de somme maximale est 25, -2, 17, 5 (de somme 45). Votre script devra afficher par conséquence : 45 7 10.

    J'aimerais si possible que quelqu'un m'éclair sur ce problème car c'est la folie je ne sais pas par ou commencer.
    Merci d'avance.

  2. #2
    Membre très actif

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    211
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 211
    Billets dans le blog
    1
    Par défaut Il manque une info.
    Bonjour plard,

    Une ifo importante manque dans ton énoncé : comment sont déterminées les "sous-rubriques" comme tu les appelles ?

    Tant qu'on ne sait pas cela, il va être difficile de te donner une piste de recherche.

    A+

  3. #3
    Membre Expert

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    Mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : Mai 2008
    Messages : 662
    Par défaut
    On peut partir du principe qu’il faut tester toutes les sous-listes de toutes les longueurs possibles…

    En supposant également qu’on a pas le “droit” d’utiliser des modules “exotiques”, voici (de façon synoptique) l’algo que j’utiliserais*:

    * Définition d’une fonction sum_list qui prend en paramètres une liste d’entiers et retourne leur somme.
    * Définition de trois variables stockant la somme maximale atteinte, avec les indices de liste correspondants.

    * Le cœur du truc*:
    ** Une première boucle qui itère sur tous les entiers de 1 à longueur_liste_fournie, appelons n cette variable.
    ** Une deuxième boucle imbriquée dans la première, qui itère sur les (longueur_liste_fournie - n) sous-listes de longueur n, calcule leur somme, et la compare à la somme maximale précédente (penser aux slice pour obtenir les sous-listes).

    Voilà, j’ai essayé de ne pas donner du code “tout cuit”…

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par plard Voir le message
    J'aimerais si possible que quelqu'un m'éclair sur ce problème car c'est la folie je ne sais pas par ou commencer.
    Pourquoi ne pas commencer par lire quelques chapitres du Python tutorial?
    list et slice (sous séquence contigue) sont expliqués ici. Pour ce qui est des boucles et des contrôles c'est ici
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Par défaut
    L'algorithme suggéré par mont29 est O(n**3). Il est possible de l'optimiser en O(n**2) mais il y a mieux: il y a une solution en temps linéaire.

    Cela passe par la résolution d'un problème un peu différent: Quelle est le suffixe (=sous-séquence contiguë qui se termine à la fin de la séquence) de somme maximale d'un séquence de longueur n ?
    * Pour n = 1, la solution est triviale
    * Pour n > 1, la solution peut être calculée en temps constant à partir de la solution pour (n-1)

    En résolvant ce problème pour tous les préfixes de la séquence en entrée, on peut ensuite trouver la solution du problème initial.

    Avec une implémentation soignée, on arrive à un complexité temporelle en O(n) et spatiale en O(1).

Discussions similaires

  1. Toutes les sous-séquences croissantes et maximales d'une séquence des entiers
    Par hassanJava dans le forum Algorithmes et structures de données
    Réponses: 22
    Dernier message: 23/04/2008, 11h19
  2. Réponses: 28
    Dernier message: 02/03/2008, 00h28
  3. recherche de sous séquences spécifiques
    Par Jasmine80 dans le forum Bioinformatique
    Réponses: 12
    Dernier message: 02/07/2007, 09h00
  4. Inclusion de sous séquences à l'intérieur de séquence (Bin)
    Par netcomput dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 07/05/2005, 01h56
  5. bibliothèque qui fait : [ avi ou dv] ->sous séquence ima
    Par Eric_A dans le forum Bibliothèques
    Réponses: 1
    Dernier message: 09/12/2004, 16h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo