Commit d589263b authored by Guillaume Sabbagh's avatar Guillaume Sabbagh
Browse files

Flèches élémentaires pour les catégories aléatoires

parent bb6eb692
from GrapheDeComposition import GC,MGC
from Monoide import Monoide,ElementMonoideGC,MonoideGC
from Categorie import Categorie
from CategorieProduit import CategorieProduit
from CategorieLibre import CategorieLibre
import random
......@@ -131,7 +132,7 @@ class GrapheCompositionAleatoire(GC):
loi = LoiDeComposition()
if PROGRESS_BAR:
print("Création d'une catégorie aléatoire à "+str(nb_fleches)+" flèches ("+str(nb_tentatives_complexification_loi_de_compo)+' complexification de la loi de composition)')
print("Création d'une catégorie aléatoire à "+str(nb_fleches)+" flèches ("+str(nb_tentatives_complexification_loi_de_compo)+' complexifications de la loi de composition)')
iterator = tqdm(range(nb_tentatives_complexification_loi_de_compo))
else:
iterator = range(nb_tentatives_complexification_loi_de_compo)
......@@ -144,11 +145,16 @@ class GrapheCompositionAleatoire(GC):
#on a une table de loi de composition aléatoire
for classe in loi.classe_equiv_vers_fleche:
self |= {classe}
#on va retirer les flèches qui peuvent être trouvées par composition de flèches élémentaires
fleches_composites = {loi.table[(i,j)] for i,j in itertools.product(range(nb_fleches),repeat=2) if loi.table[(i,j)] not in [i,j] if loi.table[(i,j)] != None}
fleches = {i:MGC(loi.fleche_vers_classe_equiv[i],loi.fleche_vers_classe_equiv[i+nb_fleches]) for i in range(nb_fleches)}
self |= set(fleches.values())
self._fleches_elem = {fleches[i] for i in set(range(nb_fleches)) - fleches_composites}
for i,j in itertools.product(range(nb_fleches),repeat=2):
if loi.table[(i,j)] != None:
MGC.identifier_morphismes(fleches[j]@fleches[i],fleches[loi.table[(i,j)]])
if fleches[loi.table[(i,j)]] != fleches[j]@fleches[i]:
MGC.identifier_morphismes(fleches[j]@fleches[i],fleches[loi.table[(i,j)]])
with open("out.csv","w") as f:
f.write(","+",".join(map(str,range(nb_fleches)))+"\n")
for a in range(nb_fleches):
......@@ -156,13 +162,17 @@ class GrapheCompositionAleatoire(GC):
for b in range(nb_fleches):
f.write(','+str(loi.table[(a,b)]))
f.write('\n')
def __getitem__(self,couple_sources_cibles:tuple) -> Generator[MGC,None,None]:
for e in super().__getitem__(couple_sources_cibles):
if e.is_identite or e in self._fleches_elem:
yield e
def test_GrapheCompositionAleatoire():
random.seed(1)
for i in range(2):
GCA = GrapheCompositionAleatoire()#random.randint(1,50),random.randint(10,500))
for i in range(20):
GCA = GrapheCompositionAleatoire()
GCA.transformer_graphviz()
GCA.loi_de_composition_to_csv('lois de composition/loi_de_compo.csv')
return GCA
......@@ -280,6 +290,13 @@ def test_MonoideGC():
mon.transformer_graphviz()
mon.loi_de_composition_to_csv(destination="lois de composition/monoide.csv")
# def DiagrammeAleatoire(Diagramme):
# """Diagramme aléatoire sur une catégorie."""
# def __init__(self, categorie_indexante:Categorie = GrapheCompositionAleatoire(), categorie_cible:Categorie, nom:str = None):
# if nom == None:
# nom = "Diagramme aléatoire sur "+str(categorie_cible)
if __name__ == '__main__':
test_GrapheCompositionAleatoire()
test_MonoideGC()
\ No newline at end of file
digraph categorie {
0
0 -> 0
0 -> 1
0 -> 2
1
1 -> 0
1 -> 1
1 -> 2
2
2 -> 0
2 -> 1
2 -> -2
3
3 -> 3
3 -> 4
4
4 -> 3
4 -> -4
4 -> 7
5
5 -> -3
5 -> -1
5 -> 6
6
6 -> 9
6 -> -6
6 -> -4
6 -> 5
7
7 -> 8
7 -> -5
7 -> 4
7 -> -3
8
8 -> -6
8 -> 11
8 -> 7
9
9 -> -7
9 -> -5
9 -> 6
10
10 -> -8
10 -> 13
10 -> -10
11
11 -> 8
11 -> 12
11 -> -9
12
12 -> 11
12 -> -10
13
13 -> 10
13 -> -9
14
14 -> 17
14 -> -14
15
15 -> 16
15 -> -13
16
16 -> -14
16 -> 15
17
17 -> -13
17 -> 14
18
18 -> 21
19
19 -> -17
20
20 -> -18
20 -> 23
21
21 -> 18
21 -> -19
22
22 -> -22
22 -> -20
23
23 -> 24
23 -> 20
24
24 -> 23
25
25 -> -21
26
26 -> -26
27
27 -> 28
28
28 -> 27
29
29 -> -25
30
30 -> -30
31
31 -> 32
32
32 -> -32
32 -> 31
33
33 -> 34
33 -> -29
34
34 -> 33
34 -> 37
34 -> -34
35
35 -> -31
35 -> 36
35 -> -33
36
36 -> 35
36 -> -36
36 -> -34
37
37 -> 34
37 -> 38
37 -> -33
38
38 -> 41
38 -> -38
38 -> 37
39
39 -> 40
39 -> -37
39 -> -35
40
40 -> -40
40 -> -38
40 -> 39
41
41 -> 42
41 -> -37
41 -> 38
42
42 -> 41
42 -> 45
43
43 -> -39
43 -> -41
44
44 -> -42
44 -> 47
45
45 -> 42
45 -> -43
46
46 -> 49
46 -> -46
46 -> -44
47
47 -> 48
47 -> -45
47 -> 44
48
48 -> -46
48 -> 51
48 -> 47
49
49 -> -47
49 -> -45
49 -> 46
50
50 -> -48
51
51 -> 48
52
52 -> -52
53
53 -> 54
54
54 -> -54
54 -> 53
55
55 -> 56
55 -> -51
56
56 -> -56
56 -> 59
56 -> 55
57
57 -> -55
57 -> 58
57 -> -53
58
58 -> -56
58 -> 57
58 -> 61
59
59 -> 56
59 -> -55
59 -> -57
60
60 -> -60
60 -> -58
61
61 -> 58
61 -> 62
62
62 -> 61
63
63 -> -59
64
64 -> -64
64 -> 67
65
65 -> -63
65 -> 66
66
66 -> -64
66 -> 65
66 -> -66
67
67 -> 64
67 -> -63
67 -> 68
68
68 -> 67
68 -> -68
68 -> 71
69
69 -> -67
69 -> 70
69 -> -65
70
70 -> -68
70 -> 69
71
71 -> 68
71 -> -67
72
72 -> 75
73
73 -> -71
74
74 -> -72
74 -> 77
74 -> -74
75
75 -> 72
75 -> 76
75 -> -73
76
76 -> 75
76 -> -74
77
77 -> 74
77 -> -73
78
79
}
digraph cc {
0
0 -> 0
0 -> 4
0 -> 5
1
1 -> 1
1 -> 2
1 -> 3
2
2 -> 1
2 -> 2
2 -> 3
2 -> 5
3
3 -> 1
3 -> 2
3 -> 3
4
4 -> 0
4 -> 4
4 -> 5
5
5 -> 0
5 -> 2
5 -> 4
5 -> 5
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment