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 :

Question d'optimisation d'algo


Sujet :

Algorithmes et structures de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 68
    Points : 42
    Points
    42
    Par défaut Question d'optimisation d'algo[Rectification]
    Salut,
    Il a une question que je pose à propos des tableaux. D'après vous qu'est qui est mieux utiliser 2 tableaux simples ou un tableau à double entrée.
    Vous allez s'en doute me dire que ça dépend des circonstances et aussi comment est énoncé le sujet. Mais supposons ce cas. J'ai fait un algo ou je dois compter combien de fois un chiffre est apparu. Pour cela j'ai créé un tableau constant(qui contient, allez 5 chiffres) et un autre tableau appellé fréquence. Mais je me demande s'il n'est pas préférable d'utiliser un tableau à double entrée.
    Question optimisation laquelle sera la meilleur solution ?
    Merci

  2. #2
    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 snoopo
    Vous allez s'en doute me dire que ça dépend des circonstances et aussi comment est énoncé le sujet.
    Ca depend surtout de ce que represente ton tableau. Pour representer une matrice, un tableau a double entrée ca semble plus naturel.

    Ca depend aussi du langage (performance d'accès aleatoire/iteraif, mémoire, ...)
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #3
    Membre éclairé
    Avatar de parp1
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    829
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2005
    Messages : 829
    Points : 872
    Points
    872
    Par défaut
    Moi je sais qu'en python j'utilise le plus souvent possible les tableaux a une entre pour les images. Pour un simple seuillage c'est plus rapide de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i=0,hauteur*largeur:
    if tab[i]>seuil : tab[i]=255
    i++
    que de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for i =0 ;hauteur:
              for j = 0 ; largeur:
     
               if tab[i][j]>seuil :tab[i][j]=255
                 j++
    i++
    Apres pour ce qui est convolution amincissement s'il y a une solution 1D faites moi signe parcque je suis preneur....

    C'est a toi de voire... la taille des images.... etc
    [SIZE="2"]Dis moi qui tu suis, je te dirais qui je Hais!
    Heureux est l'étudiant, qui comme la rivière suit son cours sans sortir de son lit

    Mon premier Tutoriel


    A 80% des cas je résouts mon problème en rédigeant une nouvelle discussion, du coup je ne poste que 20% de mes problèmes...

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 68
    Points : 42
    Points
    42
    Par défaut
    hmmm ... d'accord.
    J'ai bien ce que je pensais. Je crois que je vais rester sur mon idée originale.

  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 parp1
    Moi je sais qu'en python j'utilise le plus souvent possible les tableaux a une entre pour les images.
    Il y a rapide et rapide

    - Plus rapide a coder, car moins de code a ecrire.

    - Plus rapide a executer, car parallelisable.

    Par exemple pour répartir des calculs sur une image, c'est mieux de faire une liste de petits tableaux 2D.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    mais comme on sait pas plus sur ton problème, on aura bien du mal à te conforter par rapport à ton "idée originale", pusiqu'on la connaît pas, ni le problème ...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 68
    Points : 42
    Points
    42
    Par défaut
    souviron34 a écrit :
    mais comme on sait pas plus sur ton problème, on aura bien du mal à te conforter par rapport à ton "idée originale", pusiqu'on la connaît pas, ni le problème ...
    Ben enfin compte, il s'agit d'un algo ou il faut rendre la monnaie. On a des billets de 50,20,10,5,2. Puis afficher combien de fois ces chiffres sont apparus.
    Ce que j'ai fait c'est iniatiliser un tab const qui recoit les valeurs 50,20,10,etc.. et un autre tableau qui compte pour chacun d'eux le nombre de fois ils sont apparus.
    Je me demandais s'il n'était pas préférable de faire tout ceci dans un tableau à double dim pour une question d'optimisation d'algo.

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    Bon ben par rapport à ce problème, non c'est pas mieux d'avoir un tableau à 2 dims.

    En fait, tu fais un histogramme.

    Donc soit 2 tableaux (quelque soit le problème tu ne parcoures que 1 fois le nombre max), soit un tableau de structures (ce que je ferais) :

    structure billet

    int valeur
    int nb
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  9. #9
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Si c'est pour rendre la monnaie, ce fil peut t'intéresser.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 68
    Points : 42
    Points
    42
    Par défaut
    Désolé de remonter un topic résolu mais je voulais en avoir le coeur net concernant. J'ai discuté avec le prof, pour lui utiliser un tableau à 2 dimensions est la meilleur solution. D'une part pourquoi faire 2 fois le meme traitement alors qu'avec un tableau à double dimension on fait cela en un seul traitement. D'autre part, 2 tableaux à 1 dim prennent plus de place quelque soit le langage, 2 indexations dans l'espace mémoire au lieu d'une seul pour le double dim.
    Voila, voila qu'est que vous en pensez ?

  11. #11
    Membre éclairé Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Points : 844
    Points
    844
    Par défaut
    Entre ton prof et toi, vous pouvez trés bien avoir raison tous les 2. Tout dépend à quelle question on répond :

    - améliorer la lisibilité du code ?
    - améliorer l'occupation en mémoire ?
    - améliorer la vitesse d'exécution ?

    Malheureusement il n'existe pas de solution meilleure pour les 3 questions.

    Je penses que dans ton cas tu devrais suivre les intuitions de ton prof., je penses que s'il te conseille de faire comme ça c'est parce que dans la suite de tes études et dans le milieu professionnel cela te sera plus utile.

    N'oublie pas qu'il peut te poser d'autres questions toujours sur le même exercice. Donc la solution qu'il te propose est peut-être pour te faciliter la tâche pour la suite.
    Avant de poster un message .
    Quand vous avez la réponse à votre question, n'oubliez pas de cliquer sur .

  12. #12
    Membre actif Avatar de femtosa
    Inscrit en
    Juin 2002
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 253
    Points : 222
    Points
    222
    Par défaut
    Citation Envoyé par snoopo
    D'autre part, 2 tableaux à 1 dim prennent plus de place quelque soit le langage, 2 indexations dans l'espace mémoire au lieu d'une seul pour le double dim.


    Je ne comprends pas quand tu dis 2 indexations dans l'espace mémoire ...

    En C par exemple, j'ai toujours cru qu'un tableau à 2 dimensions était strictement égale à un tableau à 1 dimension (en termes d'espace mémoire utilisé !)

    Me trompe-je ...
    "L'expérience est le seul livre que les imbéciles savent lire ... !"

    Qui à dit cela ? Moi je n'sais pas !
    Mais en tout cas, je l'applique au pas !

  13. #13
    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 snoopo
    Désolé de remonter un topic résolu mais je voulais en avoir le coeur net concernant. J'ai discuté avec le prof, pour lui utiliser un tableau à 2 dimensions est la meilleur solution.
    j'ai tendance a me mefier quand on parle de "LA solution", universellement meilleur que toutes les autre...

    D'une part pourquoi faire 2 fois le meme traitement alors qu'avec un tableau à double dimension on fait cela en un seul traitement.
    Il y a plein de raisons de preferer faire 2 fois un traitement simple, plutot qu'une seule fois un traitement complexe.

    La parallelisation: Hyper-threading, multi-core, distributed computing, grid computing, ... sans parler des hardware dédiés (DSP et autres).

    La simplicité: C'est plus simple de faire une composition de 2 transformées de fourier 1D, que d'en faire une seule en 2D.

    D'autre part, 2 tableaux à 1 dim prennent plus de place quelque soit le langage, 2 indexations dans l'espace mémoire au lieu d'une seul pour le double dim.
    Deja pas en C, c'est equivalent. C'est meme plus rapide d'acceder a un tableau 1D (indice = offset) qu'a un 2D ( indice = offsetY * SizeX + OffsetX ).

    Enfin bref, il n'y a pas de "meilleur solution universelle".
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  14. #14
    Membre éclairé Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Points : 844
    Points
    844
    Par défaut
    Citation Envoyé par pseudocode
    La parallelisation: Hyper-threading, multi-core, distributed computing, grid computing, ... sans parler des hardware dédiés (DSP et autres).
    Là c'est un autre monde
    Avant de poster un message .
    Quand vous avez la réponse à votre question, n'oubliez pas de cliquer sur .

  15. #15
    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 mchk0123
    Là c'est un autre monde
    Un monde pas si loin... le processeur multi-core est le "standard" des PC actuel. Autant commencer a écrire du code parallelisable.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  16. #16
    Membre éclairé Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Points : 844
    Points
    844
    Par défaut
    C'est juste que si tu analyse bien la question d'origine : qu'est ce qui est plus rapide : 1 tableau à double entrée par opposé à 2 tableaux à simples entrée, on est à des années lumières de notions comme le multithreading multicore ...

    Mais je suis tout à fait d'accord avec toi pour dire que dés aujourd'hui les solutions multithreadées et multicores sont disponibles et les développeurs doivent faire avec.
    Avant de poster un message .
    Quand vous avez la réponse à votre question, n'oubliez pas de cliquer sur .

Discussions similaires

  1. Petite question d'optimisation
    Par will2taz dans le forum VB.NET
    Réponses: 14
    Dernier message: 05/09/2007, 21h43
  2. [XNA] Question d'optimisation de chargement
    Par Myth_Titans dans le forum XNA/Monogame
    Réponses: 4
    Dernier message: 02/02/2007, 19h11
  3. Questions d'optimisation de requêtes
    Par beberd dans le forum Requêtes
    Réponses: 30
    Dernier message: 18/01/2007, 15h51
  4. question conceptuelle optimisation.
    Par mandrake_of_mandregas dans le forum Access
    Réponses: 1
    Dernier message: 29/12/2005, 10h07
  5. :?: question d'optimisation!
    Par Stopher dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 21/06/2004, 17h15

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