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 :

Preuve de terminaison d'un algorithme


Sujet :

Algorithmes et structures de données

  1. #1
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 32
    Par défaut Preuve de terminaison d'un algorithme
    Bonsoir tout le monde,
    J'ai fait un algorithme et avant de calculé sa complexité, je veux prouver que mon algorithme se termine. Le probléme, c'est que je n'ai aucune idée sur les preuves de terminaison d'un algorithme. Pourriez vous m'aider svp ?
    Merci d'avance !

  2. #2
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Ca dépend de ton algorithme, de sa forme, il y a des algorithmes dont il est très facile de prouver la terminaison et d'autres pour lesquels il faut connaître des maths avancés.
    En gros prouver la terminaison d'un algorithme, c'est démontrer qu'il prend un nombre fini d'étape à s'exécuter quelle que soit l'entrée, dans le cas d'un algorithme récursif, ça revient à montrer qu'on revient au cas de base en un un nombre fini de récursion, pour un algorithme itératif il faut montrer que toutes les boucles terminent, etc...

    --
    Jedaï

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Par défaut
    parfois on reste sans preuve voir conjecture tchèque

  4. #4
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Une technique parfois utilisée qui va fonctionner pour des algorithmes récursifs est de définir une mesure sur l'ensemble de tes paramètres à valeur dans un ensemble disposant d'une relation bien fondée. Puis de démontrer que ta mesure est strictement décroissante à chaque appel pour ta relation bien fondée

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    fonction(Naturel a, Naturel b) {
     Si(a=b)
       retourner a;
     Si(a<b)
       retourner fonction(a, b-1);
     Sinon
       retourner fonction(a-1,b);
    }
    Déjà il faudrait démontrer que le typage est correct.

    Ensuite, on définit la mesure m : (a,b):Nat²->max(a,b)
    On utilise la relation bien fondée < dans Nat.

    Ensuite, on démontre que :
    Pour tout (a,b):Nat², Si(a!=b), Si a<b m(a,b-1)<m(a,b) sinon m(a-1,b)<m(a,b)

    On fixe (a,b) entier naturel
    Si a<b
    On a m(a,b) = b
    Comme a<=b-1, on a m(a,b-1) = b-1
    On a bien m(a,b-1)<m(a,b)

    Si b<a (car b!=a)
    on a m(a,b) = a et m(a-1, b) = a-1. C'est ce qu'on voulait

  5. #5
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 32
    Par défaut
    Merci pour votre aide !
    Mon algorithme est itératif mais il y'a beaucoup (trop ! ) de boucles. Donc is j'ai bien compris, faut juste montrer avec des formules mathématiques que mon algorithme se termine dans tous les cas (en fonction bien sur des données d'entrées) ?

  6. #6
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Par défaut
    Donc is j'ai bien compris, faut juste montrer avec des formules mathématiques que mon algorithme se termine dans tous les cas (en fonction bien sur des données d'entrées) ?
    Oui, si ton algo est itératif, ça revient à montrer que quelque soit les entrées tu ne rentres jamais dans une boucle infinie.

  7. #7
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 32
    Par défaut
    Citation Envoyé par PRomu@ld Voir le message
    Oui, si ton algo est itératif, ça revient à montrer que quelque soit les entrées tu ne rentres jamais dans une boucle infinie.
    c'est trés clair ! Merci !!!!

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

Discussions similaires

  1. Algorithme polynomial et preuve de programme
    Par yaya125 dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 28/02/2011, 18h12
  2. Algorithme de randomisation ... ( Hasard ...? )
    Par Anonymous dans le forum Assembleur
    Réponses: 8
    Dernier message: 06/09/2002, 14h25
  3. recherches des cours ou des explications sur les algorithmes
    Par Marcus2211 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 19/05/2002, 22h18
  4. Recherche de documentation complète en algorithmes
    Par Anonymous dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 29/03/2002, 12h09
  5. Algorithme génétique
    Par Stephane.P_(dis Postef) dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 15/03/2002, 17h14

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