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 :

[optimisation] Minimum d'une liste


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Par défaut [optimisation] Minimum d'une liste
    Petit problème qui s'est posé à notre team de dèv., on a une soluce, à voir si c'est optimal en temps de calculs

    Considérez une liste L[1]...L[N] d'entiers avec disons N= 100 millions; la forme de cette liste a la propriété suivante: il existe une unique valeur maximale C tel que

    - x<y<C entraîne L[x]>=L[y]>=L[C]
    - C<x<y entraîne L[C]<=L[x]<=L[y]

    Comment trouver le plus rapidement possible C ??

  2. #2
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    J'ai l'impression que tu t'es goure dans l'enonce. D'apres ce que tu dis ta liste est triee et n'importe quel indice peut etre C.

    Liste pour moi implique un acces sequentiel, est-ce bien le cas?

  3. #3
    Membre Expert Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Par défaut
    désolé, corrigé: simplement la liste décroit de 1 à C puis croit de C à 100 millions

    Pour liste, en fait c'est un array

  4. #4
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Bonjour,

    Comment trouver le plus rapidement possible C ??
    Une bonne petite recherche dichotomique. (je peux détailler si nécessaire).

  5. #5
    Membre chevronné
    Profil pro
    Directeur Scientifique
    Inscrit en
    Avril 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur Scientifique

    Informations forums :
    Inscription : Avril 2005
    Messages : 419
    Par défaut
    Oui, une recherche dichotomoque sur les L[x+1]-L[x] trouve ton C en O(log N). On ne peut pas faire mieux si on ne connaît pas plus de propriétés "a priori" sur la liste.

  6. #6
    Membre Expert Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Par défaut
    Bien, maintenant qu'on est tous d'accord, je précise, dans l'algo a implémenter:

    - la "forme" du tableau L est connue, mais aucune de ses valeurs n'est connue a priori. Je m'explique: si vous avez besoin de L[500] par exemple, vous devez appeler une fonction qui vous calcule la valeur et qui prend 1/1000 seconde; une fois calculée, vous pouvez la stocker si vous désirez la réutiliser.

    - il y a différents "codes" pour implémenter une dichotomie, il faudrait le plus rapide.

    J'aimerais bien voir un bout d'algo...

Discussions similaires

  1. Réponses: 6
    Dernier message: 04/07/2009, 14h46
  2. Minimum d'une liste, hormis le zéro
    Par divan dans le forum Excel
    Réponses: 2
    Dernier message: 17/04/2008, 07h16
  3. Ecriture d'une list() dans un fichier Pb d'optimisation
    Par sebastien2222 dans le forum Langage
    Réponses: 11
    Dernier message: 13/06/2006, 16h53
  4. Sélectionner le minimum dans une liste
    Par SteelBox dans le forum Prolog
    Réponses: 18
    Dernier message: 01/11/2005, 12h08
  5. trouver le minimum d'une liste
    Par speed034 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 08/12/2004, 12h29

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