Génération de règles d'association en VB.net

Signaler
Messages postés
12
Date d'inscription
vendredi 25 décembre 2009
Statut
Membre
Dernière intervention
20 janvier 2012
-
Messages postés
540
Date d'inscription
mardi 4 août 2009
Statut
Membre
Dernière intervention
1 février 2013
-
Bonjour,

Est-ce que quelqu'un peut nous aider à résoudre ce problème en VB.net svp?

Nous avons les variables suivantes A, B, C, D, E...
et nous désirerons obtenir des règles d'association de la forme:

A ==> B, C, D, E
A, B ==> C, D, E
A, B, C ==> D, E
.
.
B ==>A, C, D, E
B, C ==> A, D, E
B, C, D ==> A, E
B, C, D, E ==> A
.
.
E ==> A, B, C, D
.
etc

Jusqu'à obtenir tous les cas possibles de règles.
Merci d'avance pour votre aide et votre collaboration

16 réponses

Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
Salut

cela peut t'aider

 Private Function MakeCombinaison(ByVal word As String) As List(Of String)

        'combinaison de 1 2 3 4 5 6 7 8 ..N lettres 
        ' si j'ai un chaine de N lettres j'ai donc 2^N -1 combinaisons
        ' mot 1 lettre = N!/((N-1)! * 1!) 
        ' 2 lettres = N!/((N-2)! * 2!)
        ' 3 lettres = N!/((N-3)! * 3!)
        ' 4 lettres = N!/((N-4)! * 4!) 
        ' 5 lettres = N!/((N-5)! * 5!) 
        ' 6 lettres = N!/((N-6)! * 7!) 
        ' 7 lettres = N!/((N-7)! * 7!) 
        ' 8 lettres = N!/((N-8)! * 8!)
        ' N lettres = N!/((N-N)! * N!) 

        ' pour obtenir toutes les combinaisons on se sert d'une boucle qui iter varie de 1 à 2^N -1 
        ' iter est converti en binaire et devancé par des 0 de façon à obtenir toujours N chiffres 
        ' on remplace les 1 du nombre binaire par le caractère du meme index de la chaine
        ' on retire les 0 de la chaine 
        Dim strbinary As String

        Dim binarydigit As Char()
        Dim list1 As New List(Of String)
        For iter = 1 To 2 ^ (word.Length)

            strbinary = Convert.ToString(Convert.ToInt32(iter), 2)
            strbinary = strbinary.PadLeft(word.Length, "0"c)
            binarydigit = strbinary.ToCharArray
            For iter2 = 0 To binarydigit.Length - 1
                If binarydigit(iter2) = "1" Then
                    binarydigit(iter2) = word(iter2)

                End If
            Next
            strbinary = binarydigit
            strbinary = strbinary.Replace("0", String.Empty)
            If strbinary.Length > 0 Then
                list1.Add(strbinary)
            End If
        Next
        list1 = list1.Distinct.ToList
        list1.Sort()
        Return list1
    End Function

Dim combinaison As New List(Of String)
        combinaison = MakeCombinaison("ABCDEFGHIJkLMNOPQRS")



attention exige beaucoup de mémoire
Messages postés
12
Date d'inscription
vendredi 25 décembre 2009
Statut
Membre
Dernière intervention
20 janvier 2012

Et ça marche ;)
Merciii infiniment :) ta démarche m'a beaucoup aidé...!!
Messages postés
12
Date d'inscription
vendredi 25 décembre 2009
Statut
Membre
Dernière intervention
20 janvier 2012

Est-ce que vous avez une idée dans le cas où nous avons comme input des String au lieu de Char?

Par exemple, nous avons :
'veil-type'='p', 'ring-number'='o', 'habitat'='l', 'gill-attachment'='f', 'gill-size'='b'
au lieu de A, B, C, D, E

Merci d'avance
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Bonjour,

il ne te viendrait bien sûr pas à l'idée que tu pourrais continuer avec tes lettres, comme montré, puis remplacer (dans les résultats) par leur correspondance ?


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
12
Date d'inscription
vendredi 25 décembre 2009
Statut
Membre
Dernière intervention
20 janvier 2012

Surement que ceci ne nous résout pas le problème surtout que n'avons pas un nombre fini d'input, il faut chercher à le faire autrement :(
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Ah bon !


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
12
Date d'inscription
vendredi 25 décembre 2009
Statut
Membre
Dernière intervention
20 janvier 2012

Eh ouii :( Je fais de l'extraction de la connaissance à partir de bases de données, certaines sont des bases assez grandes que je ne peux prévoir le nombre de mes items en entrées!! Je ne sais pas si vous voyez ce que je veux dire!
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
La seule chose que je vois, c'est qu'il te faut forcément connaître leur nombre et qu'il est celui résultant d'une requête sur ta base !
A partir de là ===>> à toi de réfléchir un peu, en espérant que tu n'es pas venu ici chercher un code tout cuit correspondant exactement à ton cas.
commence par mettre sur papier le mécanisme.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
12
Date d'inscription
vendredi 25 décembre 2009
Statut
Membre
Dernière intervention
20 janvier 2012

J'ai longtemps essayé de trouver une solution à mon problème, j'ai fait plusieurs tests mais aucune de mes démarches n'a fonctionné!! Pour les bases sur lesquelles je travaille, elles sont assez grandes, certaines possèdent plus que 500 items en entrée... Du coup, l'idée de remplacer les lettres alphabétiques par mes données correspondantes ne fonctionne pas...!! J'y réfléchis sur les changements possibles mais... rien jusqu'à maintenant!!
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
tu as bien sûr réfléchi à ce que donnerait alors
2^N -1 combinaisons avec N = 500 ?
et tu as essayé de le calculer, juste pour en avoir une petite idée avant de te lancer dans une telle démarche sur 500 articles ?
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
12
Date d'inscription
vendredi 25 décembre 2009
Statut
Membre
Dernière intervention
20 janvier 2012

C'est tellement vrai ce que tu dis...!!! Il faut penser à une nouvelle démarche!
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
Bonsoir

500 item
meme avec la caculatrice
2^500 -1 j'ai une erreur
et meme théoriquement le temps qui faudrait
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
$ardi, shayW
c'est l'histoire de l'échiquier et des grains de riz (et encore, pour un nombre de "cases" presque décuple).
Lire, donc :
pour seulement 64 cases

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
on voit très vite (s'il parvenait à stocker toutes ces données là) comment (et le temps qu'il faudrait pour le faire) il pourrait les exploiter valablement par la plus simple des requêtes.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
si la population en chine est estimé
à 1348950000
cela done 2^63/1348950000 = 6837445444
nombre de grains de riz dans 1 kg 39 339
1kgderiz
on obtient
170936 kg de riz que chaque chinois doit fournir
Messages postés
540
Date d'inscription
mardi 4 août 2009
Statut
Membre
Dernière intervention
1 février 2013
1
en effet ça risque de demander des ressources énormes et sans compter le temps ... il doit surement avoir un autre moyen de procéder

Ce qui compte,ce n'est pas ce qu'on a mais plutôt ce que l'on fait avec ce qu'on a...

Visual Basic .Net is the best
and vb6.0