Commit 041f8724 authored by Guillaume Sabbagh's avatar Guillaume Sabbagh
Browse files

Catégorie des composantes connexes

parent 466e2d37
from Categorie import Categorie
from CategorieQuotient import CategorieQuotient
from Morphisme import Morphisme
import itertools
class CategorieComposantesConnexes(CategorieQuotient):
"""Catégorie quotientée par la relation d'équivalence sur les objets suivante :
x ~ y si il existe f: x -> y ou il existe f: y -> x."""
def __init__(self,categorie_a_quotienter:Categorie, nom:str = None):
if nom == None:
nom = "Catégorie des composantes connexes de "+str(categorie_a_quotienter)
CategorieQuotient.__init__(self,categorie_a_quotienter,nom)
for obj1, obj2 in itertools.product(categorie_a_quotienter.objets,repeat=2):
if obj1 != obj2:
if categorie_a_quotienter.existe_morphisme(obj1,obj2) or categorie_a_quotienter.existe_morphisme(obj2,obj1):
self.identifier_morphismes(categorie_a_quotienter.identite(obj1),categorie_a_quotienter.identite(obj2))
for m in categorie_a_quotienter({obj1},{obj2}):
self.identifier_morphismes(m,categorie_a_quotienter.identite(obj2))
for m in categorie_a_quotienter({obj2},{obj1}):
self.identifier_morphismes(m,categorie_a_quotienter.identite(obj2))
else:
for m in categorie_a_quotienter({obj1},{obj1}):
self.identifier_morphismes(m,categorie_a_quotienter.identite(obj1))
def test_CategorieComposantesConnexes():
from CategorieAleatoire import GrapheCompositionAleatoire
import random
random.seed(3)
for i in range(5):
c = GrapheCompositionAleatoire()
c.transformer_graphviz()
c_a = CategorieComposantesConnexes(c)
c_a.transformer_graphviz()
c_a.fonct_surjection.transformer_graphviz()
if __name__ == '__main__':
test_CategorieComposantesConnexes()
\ No newline at end of file
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