18.28 Subsets

Module: sage.combinat.subset

Subsets

Module-level Functions

Subsets( s, [k=None])

Returns the combinatorial class of subsets of s.

If s is a non-negative integer, it returns the subsets of range(1,s+1).

If k is specified, it returns the subsets of s of size k.

sage: S = Subsets([1,2,3]); S
Subsets of {1, 2, 3}
sage: S.count()
8
sage: S.first()
{}
sage: S.last()
{1, 2, 3}
sage: S.random_element()
{2}
sage: S.list()
[{}, {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3}]

sage: S = Subsets(3)
sage: S.list()
[{}, {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3}]

sage: S = Subsets(3,2); S
Subsets of {1, 2, 3} of size 2
sage: S.list()
[{1, 2}, {1, 3}, {2, 3}]

Class: Subsets_s

class Subsets_s
Subsets_s( self, s)

TESTS:

sage: S = Subsets([1,2,3])
sage: S == loads(dumps(S))
True

Functions: count,$ \,$ first,$ \,$ iterator,$ \,$ last,$ \,$ random_element,$ \,$ rank,$ \,$ unrank

count( self)

Returns the number of subsets of the set s.

This is given by $ 2^{\vert s\vert}$ .

sage: Subsets(Set([1,2,3])).count()
8
sage: Subsets([1,2,3,3]).count()
8
sage: Subsets(3).count()
8

first( self)

Returns the first subset of s. Since we aren't restricted to subsets of a certain size, this is always the empty set.

sage: Subsets([1,2,3]).first()
{}
sage: Subsets(3).first()
{}

iterator( self)

An iterator for all the subsets of s.

sage: [sub for sub in Subsets(Set([1,2,3]))]
[{}, {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3}]
sage: [sub for sub in Subsets([1,2,3,3])]
[{}, {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3}]
sage: [sub for sub in Subsets(3)]
[{}, {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3}]

last( self)

Returns the last subset of s. Since we aren't restricted to subsets of a certain size, this is always the set s itself.

sage: Subsets([1,2,3]).last()
{1, 2, 3}
sage: Subsets(3).last()
{1, 2, 3}

random_element( self)

Returns a random element of the class of subsets of s (in other words, a random subset of s).

sage: Subsets(3).random_element()
{2}
sage: Subsets([4,5,6]).random_element()
{5}

rank( self, sub)

Returns the rank of sub as a subset of s.

sage: Subsets(3).rank([])
0
sage: Subsets(3).rank([1,2])
4
sage: Subsets(3).rank([1,2,3])
7
sage: Subsets(3).rank([2,3,4]) == None
True

unrank( self, r)

Returns the subset of s that has rank k.

sage: Subsets(3).unrank(0)
{}
sage: Subsets([2,4,5]).unrank(1)
{2}
sage: s = Subsets([2,4,5])

Special Functions: __init__,$ \,$ __repr__

__repr__( self)

TESTS:

sage: repr(Subsets([1,2,3]))
'Subsets of {1, 2, 3}'

Class: Subsets_sk

class Subsets_sk
Subsets_sk( self, s, k)

TESTS:

sage: S = Subsets(3,2)
sage: S == loads(dumps(S))
True

Functions: count,$ \,$ first,$ \,$ iterator,$ \,$ last,$ \,$ random_element,$ \,$ rank,$ \,$ unrank

count( self)

sage: Subsets([1,2,3,3], 2).count()
3
sage: Subsets(Set([1,2,3]), 2).count()
3
sage: Subsets([1,2,3], 1).count()
3
sage: Subsets([1,2,3], 3).count()
1
sage: Subsets([1,2,3], 0).count()
1
sage: Subsets([1,2,3], 4).count()
0
sage: Subsets(3,2).count()
3
sage: Subsets(3,4).count()
0

first( self)

Returns the first subset of s of size k.

sage: Subsets(Set([1,2,3]), 2).first()
{1, 2}
sage: Subsets([1,2,3,3], 2).first()
{1, 2}
sage: Subsets(3,2).first()
{1, 2}
sage: Subsets(3,4).first()

iterator( self)

An iterator for all the subsets of s of size k.

sage: [sub for sub in Subsets(Set([1,2,3]), 2)]
[{1, 2}, {1, 3}, {2, 3}]
sage: [sub for sub in Subsets([1,2,3,3], 2)]
[{1, 2}, {1, 3}, {2, 3}]
sage: [sub for sub in Subsets(3,2)]
[{1, 2}, {1, 3}, {2, 3}]

last( self)

Returns the last subset of s of size k.

sage: Subsets(Set([1,2,3]), 2).last()
{2, 3}
sage: Subsets([1,2,3,3], 2).last()
{2, 3}
sage: Subsets(3,2).last()
{2, 3}
sage: Subsets(3,4).last()

random_element( self)

Returns a random element of the class of subsets of s of size k (in other words, a random subset of s of size k).

sage: Subsets(3, 2).random_element()
{1, 2}
sage: Subsets(3,4).random_element() is None
True

rank( self, sub)

Returns the rank of sub as a subset of s of size k.

sage: Subsets(3,2).rank([1,2])
0
sage: Subsets([2,3,4],2).rank([3,4])
2
sage: Subsets([2,3,4],2).rank([2])
sage: Subsets([2,3,4],4).rank([2,3,4,5])

unrank( self, r)

Returns the subset of s that has rank k.

sage: Subsets(3,2).unrank(0)
{1, 2}
sage: Subsets([2,4,5],2).unrank(0)
{2, 4}

Special Functions: __init__,$ \,$ __repr__

__repr__( self)

TESTS:

sage: repr(Subsets(3,2))
'Subsets of {1, 2, 3} of size 2'

See About this document... for information on suggesting changes.