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 :

Besoin d'un petit coup de main en algorithmie :D


Sujet :

Algorithmes et structures de données

  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Besoin d'un petit coup de main en algorithmie :D
    Bonjour tout le monde !
    Voila jai un sujet d'algorithme, je suis en master et j'ai des difficultés dans cette matière du fait que je suis dans un option réseau...
    Je vous poste le sujet si quelqu'un pourrait m'aider et me donner un TRES grand coup de main ca serait super

    sujet :
    On considère un ensemble de n objets munis chacun d’une valeur entière et numérotés de 1 à n.
    Ces objets peuvent être rangés dans tout type de structure de données (case d’un tableau, nœud d’un arbre…).
    On désire structurer ces objets de façon que, une fois la structure
    construite, on ait les propriétés suivantes :
    - il est possible en O(1) de déterminer un objet de plus grande valeur ;
    - il est possible en O(log n) de retirer un objet de plus grande valeur et reconstituer alors
    la structure pour qu’elle conserve la propriété précédente (avec n – 1 objets).
    1. Proposer une structure(dite ci-dessous structure de rangement) permettant de réaliser cet objectif.


    Si quelqu'un a tout compris (oui je n'ai strictement rien compris) ça serait super de m'aider.
    Merci beaucoup !
    Niko

  2. #2
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonjour,

    alors décortiquons un peu le problème :
    - des objets ayant des valeurs entières. Imagine une structure type C à un seul champ de type entier. Ben c'est ton objet...
    - tu dois créer une structure de stockage, organisation... par exemple une liste chaînée, un graphe, une table de hachage...
    - la structure que tu vas créer, dois avoir les propriétés qui sont indiquées lorsque tu retires ou ajoute un élément.

    Voilou

  3. #3
    Candidat au Club
    Inscrit en
    Novembre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    merci pour ta reponse jy vois deja un peti peu plus claire
    par contre que représent O(1) et O(log n) ??

  4. #4
    Nouveau membre du Club
    Inscrit en
    Juillet 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juillet 2008
    Messages : 56
    Points : 30
    Points
    30
    Par défaut
    Les O sont sensé représenter tes complexités d'algorithme. La realisation de ta premiere tache doit etre indépendante des parametres de ta structure, complexité constante (O(1)), tandis que la réalisation de la seconde a une complexité logarithmique, donc relative au nombre de données à traiter, mais non linéairement(la courbe du logarithme a tendance a s'afesser avec le temps)
    J'espère avoir un peu aidé.
    Bon appetit!

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 294
    Points : 36 790
    Points
    36 790
    Par défaut
    On désire structurer ces objets de façon que, une fois la structure
    construite, on ait les propriétés suivantes :
    - il est possible en O(1) de déterminer un objet de plus grande valeur ;
    - il est possible en O(log n) de retirer un objet de plus grande valeur et reconstituer alors la structure pour qu’elle conserve la propriété précédente (avec n – 1 objets).
    La structure qui me paraîtrait la plus adaptée serait une liste circulaire dont les éléments sont rangés par ordre croissants:
    - trouver le plus grand = le dernier de la liste = O(1)
    - retirer le plus grand = retirer le dernier = O(1) meilleur que O(log(n)).
    Quel pourrait être le container qui ait ces propriétés?
    - W

  6. #6
    Expert éminent
    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
    Points : 8 586
    Points
    8 586
    Par défaut
    Visiblement, la question est orientée pour aboutir à un tas binaire. Je te laisse faire tes recherches sur le net pour trouver la description de cette structure de données.

    (wiztricks : ta suggestion est bonne dans l'absolu, mais en réalité les tas sont utilisés pour créer des files de priorité et ils ont certains avantages par rapport à ta suggestion, par exemple ils se créent en O(n) plutôt que O(n log n), et ajouter un élément à un tas coûte seulement O(log n) plutôt que O(n) dans ta liste triée. Bien sûr la question aurait dû préciser cette dernière complexité aussi mais ... )

    --
    Jedaï

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 294
    Points : 36 790
    Points
    36 790
    Par défaut
    (wiztricks : ta suggestion est bonne dans l'absolu, mais en réalité les tas sont utilisés pour créer des files de priorité et ils ont certains avantages par rapport à ta suggestion, par exemple ils se créent en O(n) plutôt que O(n log n), et ajouter un élément à un tas coûte seulement O(log n) plutôt que O(n) dans ta liste triée. Bien sûr la question aurait dû préciser cette dernière complexité aussi mais ... )
    Tu penses à un tas binaire rangé par ordre décroissant?
    - W

  8. #8
    Expert éminent
    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
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Tu penses à un tas binaire rangé par ordre décroissant?
    - W
    Un max-heap est ce que les complexités demandées suggèrent. Même si elles ne l'imposent pas parce qu'il n'y a pas suffisamment de détails.

    --
    Jedaï

  9. #9
    Candidat au Club
    Inscrit en
    Novembre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Merci beaucoup pour votre aide ca m'avance deja pas mal, je ne peux pas vous donner plus de détails car je vous ai copié collé le sujet tel que je l'ai eu....je vais faire des recherches sur ce que vous m'avez expliqué
    un grand merci

  10. #10
    Membre émérite
    Avatar de SpiceGuid
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 704
    Points : 2 990
    Points
    2 990
    Par défaut
    Citation Envoyé par Jedai
    Visiblement, la question est orientée pour aboutir à un tas binaire.
    Tas binaire, file de priorité (voir heap-sort et consort).

    La structure qui me paraîtrait la plus adaptée serait une liste circulaire dont les éléments sont rangés par ordre croissants
    Jedai a raison, qui dit liste chaînée dit insertion en O(n), donc "inefficace".

  11. #11
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 294
    Points : 36 790
    Points
    36 790
    Par défaut
    Jedai a raison, qui dit liste chaînée dit insertion en O(n), donc "inefficace".
    Il y a des contraintes sur la complexité pour trouver l'élément max ou le retirer mais nada côté insertion. Et le vrai truc qui coince est la complexité de la suppression qui est O(1) pour la liste chainée alors que l'exercise voudrait un O(log(n)).

    - W

Discussions similaires

  1. Besoin d'un petit coup de main avec Reflection
    Par teddyalbina dans le forum C#
    Réponses: 1
    Dernier message: 18/11/2008, 00h54
  2. Réponses: 8
    Dernier message: 21/04/2007, 16h15
  3. Besoin d'un petit coup de main avec les hash
    Par scaleo dans le forum Langage
    Réponses: 6
    Dernier message: 31/05/2006, 23h12
  4. [DEBUTANT] Besoin d'un petit coup de main
    Par rantanplan08 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 01/04/2006, 12h09
  5. UPDATE trop compliqué, besoin d'un petit coup de main ;)
    Par pwangen dans le forum Requêtes
    Réponses: 1
    Dernier message: 17/02/2006, 11h16

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