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

  1. #1
    Membre confirmé 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
    Points : 534
    Points
    534
    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
    "Celui qui reconnaît consciemment ses limites est le plus proche de la perfection." Johann Wolfgang

  2. #2
    Expert éminent
    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 : 38
    Localisation : France, Vienne (Poitou Charente)

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    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 : 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
    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 confirmé 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
    Points : 534
    Points
    534
    Par défaut
    Merci,
    donc l'idée de mon copain ne marche pas c'est ça?
    "Celui qui reconnaît consciemment ses limites est le plus proche de la perfection." Johann Wolfgang

  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 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