Esempio n. 1
0
def SimpleGraphSpecies():
    """
    Returns the species of simple graphs.

    EXAMPLES::

        sage: S = species.SimpleGraphSpecies()
        sage: S.generating_series().counts(10)
        [1, 1, 2, 8, 64, 1024, 32768, 2097152, 268435456, 68719476736]
        sage: S.cycle_index_series().coefficients(5)
        [p[],
         p[1],
         p[1, 1] + p[2],
         4/3*p[1, 1, 1] + 2*p[2, 1] + 2/3*p[3],
         8/3*p[1, 1, 1, 1] + 4*p[2, 1, 1] + 2*p[2, 2] + 4/3*p[3, 1] + p[4]]
        sage: S.isotype_generating_series().coefficients(6)
        [1, 1, 2, 4, 11, 34]

    TESTS::

        sage: seq = S.isotype_generating_series().counts(6)[1:]
        sage: oeis(seq)[0]                              # optional -- internet
        A000088: Number of graphs on n unlabeled nodes.

    ::

        sage: seq = S.generating_series().counts(10)[1:]
        sage: oeis(seq)[0]                              # optional -- internet
        A006125: a(n) = 2^(n(n-1)/2).
    """
    E = SetSpecies()
    E2 = SetSpecies(size=2)
    WP = SubsetSpecies()
    P2 = E2*E
    return WP.functorial_composition(P2)
Esempio n. 2
0
def SimpleGraphSpecies():
    """
    Returns the species of simple graphs.

    EXAMPLES::

        sage: S = species.SimpleGraphSpecies()
        sage: S.generating_series().counts(10)
        [1, 1, 2, 8, 64, 1024, 32768, 2097152, 268435456, 68719476736]
        sage: S.cycle_index_series().coefficients(5)
        [p[],
         p[1],
         p[1, 1] + p[2],
         4/3*p[1, 1, 1] + 2*p[2, 1] + 2/3*p[3],
         8/3*p[1, 1, 1, 1] + 4*p[2, 1, 1] + 2*p[2, 2] + 4/3*p[3, 1] + p[4]]
        sage: S.isotype_generating_series().coefficients(6)
        [1, 1, 2, 4, 11, 34]

    TESTS::

        sage: seq = S.isotype_generating_series().counts(6)[1:]
        sage: oeis(seq)[0]                              # optional -- internet
        A000088: Number of graphs on n unlabeled nodes.

    ::

        sage: seq = S.generating_series().counts(10)[1:]
        sage: oeis(seq)[0]                              # optional -- internet
        A006125: a(n) = 2^(n(n-1)/2).
    """
    E = SetSpecies()
    E2 = SetSpecies(size=2)
    WP = SubsetSpecies()
    P2 = E2 * E
    return WP.functorial_composition(P2)
Esempio n. 3
0
    def _times_gen(self, structure_class, attr, labels):
        """
        EXAMPLES::
        
            sage: S = species.SetSpecies()
            sage: F = S * S
            sage: list(F._times_gen(F._default_structure_class, 'structures',[1,2]))
            [{}*{1, 2}, {1}*{2}, {2}*{1}, {1, 2}*{}]
        """
        c = lambda F, n: F.generating_series().coefficient(n)
        S = SubsetSpecies()

        for u in getattr(S, attr)(labels):
            vl = u.complement().labels()
            ul = u.labels()
            if c(self._F, len(ul)) == 0 or c(self._G, len(vl)) == 0:
                continue
            for x in getattr(self._F, attr)(ul):
                for y in getattr(self._G, attr)(vl):
                    yield structure_class(self, labels, u, x, y)