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

Mathématiques Discussion :

recherche d'un algorithme comparaison des digits d'un nombre en base trois


Sujet :

Mathématiques

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 79
    Points : 42
    Points
    42
    Par défaut recherche d'un algorithme comparaison des digits d'un nombre en base trois
    Bonjour à tous,

    tout d'abord j'espère que je suis dans la bonne section pour poser mes questions.

    Voilà ce que je souhaite pour mon algorithme :

    Entrée : ensemble des nombres en base trois successifs de 0 à n
    Sortie : plus petit ensemble de nombres en base trois tel que n'importe quel nombre en base 3 compris entre 0 et n n'ait pas plus d'un digit différent des nombres présent dans l'ensemble de sortie.

    Un petit exemple pour illustrer :

    Je prends les nombres de 0 à 9 :
    J'ai donc en entrée de mon algorithme :
    {000,001,002,010,011,012,020,021,022}

    en sortie :
    {000,011,022}

    Là l'exemple est très simple et je pourrai avoir plusieurs ensembles de sortie possibles mais mon objectif est de minimiser au maximum mon ensemble de sortie.


    Etat de mes recherches :
    J'ai d'abord fait un algorithme prenant comme premier nombre le nombre 0 puis éliminant tous les nombres ayant un seul digit de différence avec 0, puis j'ai fait pareil pour tous les nombres restant, cela me permet de réduire mon ensemble d'arrivée et de finir avec quelque chose de correct mais qui ne me satisfait pas encore.

    Ensuite, j'ai remarqué que si je commençais pas exemple par 4 (012) au lieu de 0, cela me permettait de réduire un peu plus mon ensemble d'arrivée. j'ai donc essayer de commencer mes boucles par tous les nombres allant de 0 à n et mon résultat varie vraiment beaucoup.

    Hélas, je n'arrive toujours pas à ce que je souhaite, je sais qu'avec un ensemble de départ des nombres de 0 à 81 je peux arriver à un ensemble d'arrivée avec seulement 9 nombres mais mes meilleurs résultats obtenus tournent autour de 15 nombres.

    Voilà, c'est pourquoi je demande votre aide si vous pouvez m'aiguiller vers certaines pistes.

    Merci d'avance pour votre aide

  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 084
    Points
    16 084
    Par défaut
    Cela ressemble a un système réducteur, ce dont on a déjà parlé sur le forum. Malheureusement il n'y a pas de solution miracle a ce problème, sauf tester toutes les configuration possibles.

    Pour être plus clair, voila ton problème (N=9) sous forme de système réducteur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
       | 0 0 0 1 1 1 2 2 2 |
       | 0 1 2 0 1 2 0 1 2 |
    ---+-------------------+
    00 | X X X X . . X . . |
    01 | X X X . X . . X . |
    02 | X X X . . X . . X |
    10 | X . . X X X X . . |
    11 | . X . X X X . X . |
    12 | . . X X X X . . X |
    20 | X . . X . . X X X |
    21 | . X . . X . X X X |
    22 | . . X . . X X X X |
    Dans ce tableau, on voit par exemple que l'élément "10" couvre les nombres 00, 10, 11, 12 et 20. C'est à dire que cet élément a au plus 1 digit de différence avec ces nombres.

    Le but est de choisir le plus petit ensemble de lignes du tableau telles que, au final, chaque colonne a au moins une croix. Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    00 | X X X X . . X . . |
    11 | . X . X X X . X . |
    02 | X X X . . X . . X |
    Une heuristique sympathique (mais pas toujours optimale) consiste a prendre successivement des lignes, en choisissant a chaque fois celle qui ajoute le plus de nouvelles croix au résultat final (= la ligne qui donne la meilleure couverture).

    Coup de chance, dans le cas N=81 cela nous donne 9 éléments.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    0000 | X X X X . . X . . X . . . . . . . . X . . . . . . . . X . . . . . . . . . . . . . . . . . . . . . . . . . . X . . . . . . . . . . . . . . . . . . . . . . . . . . |
    0111 | . . . . X . . . . . X . X X X . X . . . . . X . . . . . . . . . . . . . . . . . X . . . . . . . . . . . . . . . . . . . . . . . . . . X . . . . . . . . . . . . . |
    0222 | . . . . . . . . X . . . . . . . . X . . X . . X X X X . . . . . . . . . . . . . . . . . . . . . . . . . . X . . . . . . . . . . . . . . . . . . . . . . . . . . X |
    1012 | . . . . . X . . . . . . . . . . . . . . . . . . . . . . . X X X X . . X . . . . . X . . . . . . . . X . . . . . . . . X . . . . . . . . . . . . . . . . . . . . . |
    1120 | . . . . . . . . . . . . . . . X . . . . . . . . . . . . . . . . . X . . X . . X . . X X X . . . . . . X . . . . . . . . . . . . . . . . . X . . . . . . . . . . . |
    1201 | . . . . . . . . . . . . . . . . . . . X . . . . . . . . X . . . . . . . . X . . . . . . . X X X . X . . X . . . . . . . . . . . . . . . . . . . . X . . . . . . . |
    2021 | . . . . . . . X . . . . . . . . . . . . . . . . . . . . . . . . . . X . . . . . . . . . . . . . . . . . . . . X . . X . X X X . . . . . . . X . . . . . . . . X . |
    2102 | . . . . . . . . . . . X . . . . . . . . . . . . . . . . . . . . . . . . . . X . . . . . . . . . . . . . . . . . X . . . . . . X X X . . X . . X . . X . . . . . . |
    2210 | . . . . . . . . . . . . . . . . . . . . . X . . . . . . . . . . . . . . . . . . . . . . . . . . X . . . . . . . . X . . . . . . . . X . . . . . X . . X X X X . . |

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 79
    Points : 42
    Points
    42
    Par défaut
    Merci pour cette réponse,

    D'accord je comprends l'heuristique proposée et je vais voir si je peux l'appliquer facilement.

    Y a t-il des recherches en cours sur ces systèmes de réduction pour que je puisse me documenter un peu plus ?

    merci

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 79
    Points : 42
    Points
    42
    Par défaut
    J'ai recherché sur le thème systèmes réducteurs et trouvé plusieurs informations intéressantes sur le forum.

    merci

  5. #5
    Membre expert
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 387
    Points : 3 535
    Points
    3 535
    Billets dans le blog
    1
    Par défaut
    La grille de résultat est assez "magique" :




    Avec la logique on pourrait résoudre le problème, mais ça reviens au même je pense que ci dessus.

    Pouvez vous donnez un autres exemple sur le même principe avec des nombres au hasard de 0 à 80 par exemple ainsi que la solution ?

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 79
    Points : 42
    Points
    42
    Par défaut
    J'ai en fait décidé de relancer mon sujet lol.

    J'ai travaillé tout l'après midi et cherché différentes solutions pour améliorer l'ensemble d'arrivé.

    j'ai testé une boucle commençant par prendre tous les nombres autres que 0 comme premier nombre, les résultats sont intéressant.

    A savoir que je trouve 27 nombres en prenant au départ 243 nombres.
    Je trouve aussi 95 nombres en partant de 729 nombres
    Je suis au mieux à 272 nombres en partant de 2187

    Les réductions sont donc assez bonnes.

    Après cela avec vous d'autes idées de réductions ?

    En réfléchissant un peu, on s'aperçoit que l'on peut peut-être combiner les réductions, c'est à dire partir par exemple des 27 nombres réduisant les 243 et en multipliant tous ces nombres par trois, on trouve 81 nombres pour réduire les 729.

    Mais voilà, 81 me semble la meilleure solution que je peux trouver dans l'état actuel de mes recherches alors qu'il est possible de descendre à 73.

    Donc voilà où j'en suis, cela inspire t-il quelqu'un ?

    merci d'avance

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 35
    Points : 19
    Points
    19
    Par défaut
    Oui, on peut descendre à 73 mais les systèmes réducteurs des LOTOFOOT ont les combinaisons déjà préétablies et donc je pense qu'elles sont optimisées au max ...

    Par contre, le 1er qui a réussi à trouver les 73 combinaisons permettant d'assurer la perte de range a dû galéré longtemps avant d'arriver au bout de ces recherches.

    Est-ce qu'il est encore possible d'OPTIMISER les systèmes existants sur le marché (LOTOFOOT ou autre), je sais pas mais je fais egalement des recherches à ce sujet.

    Bonne chance à tous ceux qui cherchent

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/01/2013, 21h04
  2. Réponses: 16
    Dernier message: 02/08/2012, 22h00
  3. Comparaison des données avec ceux d'un base de données
    Par Haya-Jiji dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 11/05/2009, 02h57
  4. Comparaison des performances des algorithmes de tri
    Par biba13 dans le forum Pascal
    Réponses: 2
    Dernier message: 09/05/2007, 21h28

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