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é] Diviser pour règner, resolution recurrence


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    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 [complexité] Diviser pour règner, resolution recurrence
    Salut,

    J'arrive pas à resoudre cette récurrence:
    T(n) = 20 * T(n/5) + 4 * T(n/10) + n^2

    Il s'agit en fait d'un algo qui reduit un problème de taille n en 20 sous problèmes de taille n/5 et 4 sous problèmes de taille n/10. le cout de diviser et combiner vaut theta(n^2) et je dois determiner l'ordre asymptôtique du temps d'execution de l'algo.

    J'ai donc ramené le problème à cette récurrence mais je n'arrive pas à la resoudre parce que 10 n'est pas une puissance de 5.
    Et si je découpais la récurrence en 2 (proposition d'un ami):
    20 * T(n/5) + n^2 et T(n/10) pour trouver les ordres de chaque récurrence et après j'essayerai de les additionner , c'est raisonnable?

    Sinon, je suis ouvert à toutes autres methodes de resolution.

    Merci

  2. #2
    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
    En fait tout dépend du calcul de ta complexité, veux tu un calcul grand O, théta, ... ?

    Si c'est une résolution grand O, tu peux dire que T(n/5) > T(n/10) pour un grand n et donc négliger T(n/10). Ensuite, il suffira de résoudre T(n) = a T(n/b) + f(n).

  3. #3
    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
    On peu aussi s'amuser a poser f(a,b) = n / ( 5^a * 10^b ) et calculer les premiers développements de T(n) = T( f(0,0) )

    on ne sait jamais...
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  4. #4
    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
    Merci,
    donc l'idée de mon copain ne marche pas c'est ça?

  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 : 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
    Merci,
    donc l'idée de mon copain ne marche pas c'est ça?
    Si tu poses:
    A(n) = 20 * A(n/5) + n^2
    B(n) = 4 * B(n/10)

    alors
    S(n)=A(n)+B(n)
    S(n)=20 * A(n/5) + n^2 + 4 * B(n/10)

    Ce qui est different de
    T(n)=20 * T(n/5) + n^2 + 4 * T(n/10)

    Donc l'étude de A(n) et B(n) pourra te servir pour trouver la complexité de S(n), mais pas celle de T(n)... A moins de trouver une relation entre S(n) et T(n), ce qui ne semble pas evident.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

Discussions similaires

  1. Produit matriciel : diviser pour régner
    Par molka21 dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 05/03/2012, 19h49
  2. Explication de la résolution de récurrence diviser pour régner
    Par mamioop dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 26/12/2011, 20h25
  3. Diviser Pour Régner
    Par touftouf57 dans le forum Algorithmes et structures de données
    Réponses: 13
    Dernier message: 01/11/2011, 18h48
  4. stratégie "Diviser pour régner"
    Par z_meryem dans le forum C
    Réponses: 7
    Dernier message: 31/03/2008, 03h03
  5. "diviser pour régner" itération - puissance n
    Par Sokoudan dans le forum Caml
    Réponses: 23
    Dernier message: 30/04/2007, 16h41

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