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

Ma2moun Messages postés 12 Date d'inscription vendredi 25 décembre 2009 Statut Membre Dernière intervention 20 janvier 2012 - 20 janv. 2012 à 12:56
NSUADI Messages postés 540 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 1 février 2013 - 22 janv. 2012 à 00:21
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

cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
20 janv. 2012 à 13:19
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
0
Ma2moun Messages postés 12 Date d'inscription vendredi 25 décembre 2009 Statut Membre Dernière intervention 20 janvier 2012
20 janv. 2012 à 15:41
Et ça marche ;)
Merciii infiniment :) ta démarche m'a beaucoup aidé...!!
0
Ma2moun Messages postés 12 Date d'inscription vendredi 25 décembre 2009 Statut Membre Dernière intervention 20 janvier 2012
20 janv. 2012 à 17:11
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
20 janv. 2012 à 17:18
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ma2moun Messages postés 12 Date d'inscription vendredi 25 décembre 2009 Statut Membre Dernière intervention 20 janvier 2012
20 janv. 2012 à 17:22
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 :(
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
20 janv. 2012 à 18:08
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
0
Ma2moun Messages postés 12 Date d'inscription vendredi 25 décembre 2009 Statut Membre Dernière intervention 20 janvier 2012
20 janv. 2012 à 18:22
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!
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
20 janv. 2012 à 18:29
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
0
Ma2moun Messages postés 12 Date d'inscription vendredi 25 décembre 2009 Statut Membre Dernière intervention 20 janvier 2012
20 janv. 2012 à 18:43
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!!
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
20 janv. 2012 à 18:54
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
0
Ma2moun Messages postés 12 Date d'inscription vendredi 25 décembre 2009 Statut Membre Dernière intervention 20 janvier 2012
20 janv. 2012 à 19:23
C'est tellement vrai ce que tu dis...!!! Il faut penser à une nouvelle démarche!
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
21 janv. 2012 à 20:30
Bonsoir

500 item
meme avec la caculatrice
2^500 -1 j'ai une erreur
et meme théoriquement le temps qui faudrait
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
21 janv. 2012 à 20:36
$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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
21 janv. 2012 à 20:55
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
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
21 janv. 2012 à 21:12
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
0
NSUADI Messages postés 540 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 1 février 2013 2
22 janv. 2012 à 00:21
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
0
Rejoignez-nous