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

Algorithmes et structures de données Discussion :

Invariant de boucle


Sujet :

Algorithmes et structures de données

  1. #1
    Membre régulier
    Inscrit en
    Mai 2008
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 146
    Points : 81
    Points
    81
    Par défaut Invariant de boucle
    Bonjour à tous,

    J'ai devant les yeux un algorithme itératif de tri (qui ressemble pas mal au tri-par-tas) et je me rends compte que théoriquement je sais comment le prouver mais à la pratique je tremblotte...

    On a donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    T : tableau de n*n initialisé avec des "-0-";
    pour i de 1 àfaire : 
                  Insertion(T,T[i]);//insertion de T[i] dans le tableau T
    pour i de 1 àfaire :
                  T[i] = ExtraireMin(T);//qui extrait la valeur la plus petite du tableau T
    Pour la terminaison : Lorsque la variable i = n², les 2 boucles pour se terminent ainsi que l'algorithme. (c'est le cas d'arrêt).

    Pour l'invariant de boucle, je bloque un peu : " Au k-ième tour de boucle, le tableau T, contenant k termes, est trié par ordre croissant ".

    En effet, à l'état initial -avant le premier tour de boucle -, on a tableau vide donc trié par ordre croissant. (ça signifie quelque chose ça ?!)

    Edit: Pas vide en fait, remplit de -0-... mais ça ne m'aide pas...Oo

    Au premier tour de boucle, i = 1 et le tableau T contient 1 élément qui est donc trivialement trié.

    Au dernier tour de boucle, i = n² et T contient n termes trié par ordre croissant . (on revient à la terminaison ?!).

    Merci d'avance pour l'aide et les explications apportées.

  2. #2
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    insertion de T[i] dans le tableau T
    Déjà, ca me semble curieux de mettre le i-ème élément de T dans le tableau T... vu qu'il est déjà dans T.

    Je pense que ca sera plus clair avec un algo moins introspectif.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #3
    Membre régulier
    Inscrit en
    Mai 2008
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 146
    Points : 81
    Points
    81
    Par défaut
    euh à vrai dire, j'ai le choix de l'invariant, pas de l'algo...
    Les commentaires (idiots) du code n'était pas forcément nécessaire je l'avoue...

    Mais que pensez vous de l'invariant s'il vous plait ?

  4. #4
    Membre émérite
    Avatar de Franck Dernoncourt
    Homme Profil pro
    PhD student in AI @ MIT
    Inscrit en
    Avril 2010
    Messages
    894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PhD student in AI @ MIT
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 894
    Points : 2 464
    Points
    2 464
    Par défaut
    Comme le souligne pseudocode, le code que tu donnes est assez véreux, mais si on en fait abstraction,
    • pour la première boucle pas besoin d'invariant (ou sinon juste dire que le tableau est rempli de 0 donc trié),
    • pour la seconde boucle l'invariant est comme tu le proposais " Au k-ième tour de boucle, le tableau T, contenant k termes, est trié par ordre croissant ".

  5. #5
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par larchicha
    euh à vrai dire, j'ai le choix de l'invariant, pas de l'algo...
    Les commentaires (idiots) du code n'était pas forcément nécessaire je l'avoue...
    C'est pas tant le commentaire que le nom de la variable 'T' qui devrait avoir un autre nom, genre 'Temp'.

    Citation Envoyé par Franck Dernoncourt Voir le message
    pour la seconde boucle l'invariant est comme tu le proposais " Au k-ième tour de boucle, le tableau T, contenant k termes, est trié par ordre croissant ".[/LIST]
    C'est même plus fort que cela.

    Au k-ième tour de boucle: T[1],...,T[k] = Les k plus petits élements de T, triés par ordre croissant
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  6. #6
    Membre régulier
    Inscrit en
    Mai 2008
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 146
    Points : 81
    Points
    81
    Par défaut
    Merci de ces précisions messieurs...(ou mesdames).
    Votre aide est grandement appréciée.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Invariant de boucle entrée/sortie
    Par martin999999 dans le forum Caml
    Réponses: 9
    Dernier message: 24/09/2012, 00h07
  2. Invariant de boucle
    Par pomme_verte dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 11/03/2012, 19h04
  3. Calcul d'un invariant de boucle
    Par caroline-bx1 dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 21/10/2011, 14h03
  4. Preuve de correction d'une boucle par invariant : correction d'un exercice
    Par Titom78 dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 05/08/2011, 16h08
  5. Réponses: 2
    Dernier message: 29/05/2002, 20h43

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