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 :

Ordonner un test par combinaisons de k croissant parmi 27


Sujet :

Mathématiques

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 31
    Points : 10
    Points
    10
    Par défaut Ordonner un test par combinaisons de k croissant parmi 27
    Bonjour.

    Je programme actuellement en C un petit solveur de Sudoku pour occuper mon temps perdu. Seulement je me heurte pour la première fois à un vrai problème de programmation : complexité d'algorithme =/

    En fait actuellement mon truc résout à peu près tout ce qui lui passe sous la main, excepté ce qui passe obligatoirement par X-Wing et généralisation.
    J'ai alors besoin d'executer un test du type :

    for(a1=0;a1<2;a1++)
    {for(a2=0;a2<2;a2++)
    {for(a3=0;a3<2;a3++)
    (...)
    {for(a27=0;a27<2;a27++)
    { //test sur la combinaison des ai
    }}}}}}}}}}}}}}}}}}}}}}}}}}}

    J'immagine que vous voyez direct le problème, ca fait quelque chose comme 134 000 000 de tests...

    Seulement, dans disons 99,99999 % des cas ces tests ne sont effectifs que pour des combinaisons de moins de 4 ai à l'état "1".
    Mon idée est donc d'ordonner ces tests de manière à ce qu'ils se fassent dans l'ordre suivant :

    -> toutes les combinaisons de 2 ai à l'état "1" (le cas 1 ai est inutile)
    -> toutes les combinaisons de 3 ai à l'état "1"
    -> toutes les combinaisons de 4 ai à l'état "1"
    -> (...)
    -> toutes les combinaisons de 27 ai à l'état "1"

    afin d'arreter l'algorithme le plus tôt possible dans la plupart des cas (dès qu'un résultat en ressort).
    Mais voilà ... je sais du tout comment faire un truc pareil =X

    En fait, j'aimerais bien ne pas avoir de code, mais simplement une technique qui puisse me permettre de faire mes tests dans cet ordre.

    Au fond ca revient à trouver toutes les combinaisons de n parmi 27 pour les tester en temps réel. J'ai déjà trouvé des fonctions qui permettent de créer des tableaux de combinaisons de ce genre, simplement je préfèrerais éviter d'avoir à créer un tableau plus grand que mon pc pour l'interprêter ensuite, le but étant quand même d'accélérer mon programme...
    Ce qui m'intéresse surtout est de pouvoir comprendre le principe afin de créer ma propre fonction qui puisse faire mes tests sans créer de poids titanesque et inutile dans la mémoire =d.

    Bref, merci d'avance à qui pourrait essayer de m'aider.

  2. #2
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Points : 1 913
    Points
    1 913
    Par défaut
    Au fond ca revient à trouver toutes les combinaisons de n parmi 27 pour les tester en temps réel.
    Ca c'est un grand classique et je peux (si tu veux) te passer un snippet python qui fait le boulot.
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 31
    Points : 10
    Points
    10
    Par défaut
    Ben c'est sympa mais à vrai dire outre le fait que je lise pas le python c'est surtout le principe qui m'intéresse, mon truc c'est de programmer le plus possible à la main, je préfère éviter d'importer des fonctions que je pourrais coder moi même =o

Discussions similaires

  1. Ordonner autrement que par asc et desc
    Par phibu dans le forum Langage SQL
    Réponses: 2
    Dernier message: 20/01/2009, 16h48
  2. Réponses: 3
    Dernier message: 28/03/2008, 14h48
  3. Ordonner les éléments par rapport à une sélection ?
    Par brunoperel dans le forum Langage SQL
    Réponses: 3
    Dernier message: 22/03/2007, 12h13
  4. ordonner une filelistbox par date
    Par zgag06 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 30/08/2006, 20h03
  5. [MySQL] Requête ordonnant les résultats par mois
    Par DukyGeorge dans le forum Langage SQL
    Réponses: 12
    Dernier message: 15/05/2006, 19h48

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