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 :

[complexité algo] recurrence avec changement de variable


Sujet :

Algorithmes et structures de données

  1. #21
    Membre éclairé Avatar de rvfranck
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 746
    Par défaut
    Salut,

    En relisant mon cours sur les techniques de démonstration je me suis rendu compte qu'on aurait pu utiliser l'induction mathématique généralisée.

    je rappelle que la recurrence était
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    T(n) = T(n/2 + racine(n)) + n  (avec n > 16)
    et que T(n) = constante sinon
    et qu'il fallait demontrer que T(n) = O(n) pour tout n >= 0
    base de l'induction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    pour n = 0, T(0) = O(0) qui est bien une constante
    pour n = 1, T(1) = O(1) qui est bien une constante
    .
    pour n = 16, T(16) = O(16) qui est bien une constante
    donc pour n de [0 à 16], T(n) = O(n) = constante

    Hypothèse d'induction: pour tout n > 16, T(n/2 + racine(n)) = O(n/2 + racine(n))
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    on a donc: T(n/2 + racine(n)) <= c(n/2 + racine(n)) ( c > 0)
    T(n/2 + racine(n)) <= (cn)/2 + c*racine(n)
    T(n/2 + racine(n)) + n <= (cn)/2 + c*racine(n) + n
    T(n) <= (cn)/2 + c*racine(n) + n
    T(n) <= cn pour tout c > 0
    donc T(n) = O(n) pour n > 16

    T(n) = O(n) pour n<=16 et T(n) = O(n) pour n > 16
    => T(n) = O(n) pour tout n


  2. #22
    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
    T'as montré que T(n) est en O(n), mais rien sur sa complexité.

    La fonction suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    T : n =
     si n = 0 retourner 0
     sinon retourner T(n-1)
    Sa complexité est en O(n) mais la fonction est nulle

  3. #23
    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 : 52
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par rvfranck Voir le message
    Hypothèse d'induction:
    pour tout n > 16, T(n/2 + racine(n)) = O(n/2 + racine(n))
    (...)
    donc T(n) = O(n) pour n > 16
    y a comme un truc qui me chiffonne...
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  4. #24
    Membre éclairé Avatar de rvfranck
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 746
    Par défaut
    Citation Envoyé par millie Voir le message
    T'as montré que T(n) est en O(n), mais rien sur sa complexité.

    La fonction suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    T : n =
     si n = 0 retourner 0
     sinon retourner T(n-1)
    Sa complexité est en O(n) mais la fonction est nulle
    Voici mon premier post sur le sujet,

    Citation Envoyé par rvfranck Voir le message
    Bonjour,

    Dans un exo on me demande de démontrer que T(n)=O(n) avec:
    T(n) = T((n/2) + racine(n)) + n pour tout n>16

    J'ai tenté d'effectuer un changement de variable pour avoir une recurrence linéaire, mais je n'y arrive pas.
    Pourriez vous m'indiquer les changements de variables à faire, ou alors une autre méthode pour resoudre mon problème?

    Merci d'avance.
    Je ne comprends pas ce que tu essais de me dire!!!

  5. #25
    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
    Ok, j'ai toujours cru qu'on parlait de complexité, au temps pour moi.

  6. #26
    Membre éclairé Avatar de rvfranck
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 746
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    y a comme un truc qui me chiffonne...
    C'est quoi le truc, c'est pas correct mon hypothèse?

  7. #27
    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 : 52
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par rvfranck Voir le message
    C'est quoi le truc?
    bah le truc c'est que si tu poses:

    pour tout n > 16, T(n/2 + racine(n)) = O(n/2 + racine(n))
    ton probleme est déjà résolu. Meme pas besoin d'induction, il suffit d'un changement de variable: k=n/2+racine(n) pour montrer que: pour tout k > 12, T(k)=O(k)
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [MySQL] affichage aleatoire d'une variable avec changement au bout d'un temps donné
    Par spokito dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 28/07/2011, 20h02
  2. Probleme de date avec changement d'année
    Par GrisburT dans le forum Oracle
    Réponses: 11
    Dernier message: 30/11/2004, 16h15
  3. Evenement avec changement d'enregistrement
    Par SegmentationFault dans le forum Bases de données
    Réponses: 4
    Dernier message: 13/08/2004, 15h30
  4. Probleme avec changement du mot de passe utilisateur
    Par Davenico dans le forum Outils
    Réponses: 2
    Dernier message: 19/12/2003, 14h42
  5. Procédure avec un nombre variable d'arguments
    Par charly dans le forum Langage
    Réponses: 15
    Dernier message: 21/06/2002, 11h08

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