子集

class sympy.combinatorics.subsets.Subset(subset, superset)[源代码][源代码]

表示一个基本的子集对象。

属性:
cardinality

返回所有可能子集的数量。

rank_binary

计算二进制有序秩。

rank_gray

计算子集的格雷码排名。

rank_lexicographic

计算子集的字典序排名。

size

获取子集的大小。

subset

获取由当前实例表示的子集。

superset

获取子集的超集。

superset_size

返回超集的大小。

方法

bitlist_from_subset(subset, superset)

获取与子集对应的位列表。

iterate_binary(k)

这是一个辅助函数。

iterate_graycode(k)

用于 prev_gray 和 next_gray 的辅助函数。

next_binary()

生成下一个二进制顺序子集。

next_gray()

生成下一个格雷码顺序子集。

next_lexicographic()

生成下一个字典序排列的子集。

prev_binary()

生成前一个二进制有序子集。

prev_gray()

生成前一个格雷码顺序子集。

prev_lexicographic()

生成按字典顺序排列的前一个子集。

subset_from_bitlist(super_set, bitlist)

获取由位列表定义的子集。

subset_indices(subset, superset)

返回列表中子集在超集中的索引;如果 subset 的所有元素都不在 superset 中,则列表为空。

unrank_binary(rank, superset)

获取指定秩的二进制有序子集。

unrank_gray(rank, superset)

获取指定秩的格雷码顺序子集。

示例

>>> from sympy.combinatorics import Subset
>>> a = Subset(['c', 'd'], ['a', 'b', 'c', 'd'])
>>> a.next_binary().subset
['b']
>>> a.prev_binary().subset
['c']
classmethod bitlist_from_subset(subset, superset)[源代码][源代码]

获取与子集对应的位列表。

示例

>>> from sympy.combinatorics import Subset
>>> Subset.bitlist_from_subset(['c', 'd'], ['a', 'b', 'c', 'd'])
'0011'
property cardinality

返回所有可能子集的数量。

示例

>>> from sympy.combinatorics import Subset
>>> a = Subset(['c', 'd'], ['a', 'b', 'c', 'd'])
>>> a.cardinality
16
iterate_binary(k)[源代码][源代码]

这是一个辅助函数。它通过 k 步迭代二进制子集。这个变量可以是正数或负数。

示例

>>> from sympy.combinatorics import Subset
>>> a = Subset(['c', 'd'], ['a', 'b', 'c', 'd'])
>>> a.iterate_binary(-2).subset
['d']
>>> a = Subset(['a', 'b', 'c'], ['a', 'b', 'c', 'd'])
>>> a.iterate_binary(2).subset
[]
iterate_graycode(k)[源代码][源代码]

用于 prev_gray 和 next_gray 的辅助函数。它执行 k 步超调以获取相应的格雷码。

示例

>>> from sympy.combinatorics import Subset
>>> a = Subset([1, 2, 3], [1, 2, 3, 4])
>>> a.iterate_graycode(3).subset
[1, 4]
>>> a.iterate_graycode(-2).subset
[1, 2, 4]
next_binary()[源代码][源代码]

生成下一个二进制顺序子集。

示例

>>> from sympy.combinatorics import Subset
>>> a = Subset(['c', 'd'], ['a', 'b', 'c', 'd'])
>>> a.next_binary().subset
['b']
>>> a = Subset(['a', 'b', 'c', 'd'], ['a', 'b', 'c', 'd'])
>>> a.next_binary().subset
[]
next_gray()[源代码][源代码]

生成下一个格雷码顺序子集。

示例

>>> from sympy.combinatorics import Subset
>>> a = Subset([1, 2, 3], [1, 2, 3, 4])
>>> a.next_gray().subset
[1, 3]
next_lexicographic()[源代码][源代码]

生成下一个字典序排列的子集。

示例

>>> from sympy.combinatorics import Subset
>>> a = Subset(['c', 'd'], ['a', 'b', 'c', 'd'])
>>> a.next_lexicographic().subset
['d']
>>> a = Subset(['d'], ['a', 'b', 'c', 'd'])
>>> a.next_lexicographic().subset
[]
prev_binary()[源代码][源代码]

生成前一个二进制有序子集。

示例

>>> from sympy.combinatorics import Subset
>>> a = Subset([], ['a', 'b', 'c', 'd'])
>>> a.prev_binary().subset
['a', 'b', 'c', 'd']
>>> a = Subset(['c', 'd'], ['a', 'b', 'c', 'd'])
>>> a.prev_binary().subset
['c']
prev_gray()[源代码][源代码]

生成前一个格雷码顺序子集。

示例

>>> from sympy.combinatorics import Subset
>>> a = Subset([2, 3, 4], [1, 2, 3, 4, 5])
>>> a.prev_gray().subset
[2, 3, 4, 5]
prev_lexicographic()[源代码][源代码]

生成按字典顺序排列的前一个子集。

示例

>>> from sympy.combinatorics import Subset
>>> a = Subset([], ['a', 'b', 'c', 'd'])
>>> a.prev_lexicographic().subset
['d']
>>> a = Subset(['c','d'], ['a', 'b', 'c', 'd'])
>>> a.prev_lexicographic().subset
['c']
property rank_binary

计算二进制有序秩。

示例

>>> from sympy.combinatorics import Subset
>>> a = Subset([], ['a','b','c','d'])
>>> a.rank_binary
0
>>> a = Subset(['c', 'd'], ['a', 'b', 'c', 'd'])
>>> a.rank_binary
3
property rank_gray

计算子集的格雷码排名。

示例

>>> from sympy.combinatorics import Subset
>>> a = Subset(['c','d'], ['a','b','c','d'])
>>> a.rank_gray
2
>>> a = Subset([2, 4, 5], [1, 2, 3, 4, 5, 6])
>>> a.rank_gray
27
property rank_lexicographic

计算子集的字典序排名。

示例

>>> from sympy.combinatorics import Subset
>>> a = Subset(['c', 'd'], ['a', 'b', 'c', 'd'])
>>> a.rank_lexicographic
14
>>> a = Subset([2, 4, 5], [1, 2, 3, 4, 5, 6])
>>> a.rank_lexicographic
43
property size

获取子集的大小。

示例

>>> from sympy.combinatorics import Subset
>>> a = Subset(['c', 'd'], ['a', 'b', 'c', 'd'])
>>> a.size
2
property subset

获取由当前实例表示的子集。

示例

>>> from sympy.combinatorics import Subset
>>> a = Subset(['c', 'd'], ['a', 'b', 'c', 'd'])
>>> a.subset
['c', 'd']
classmethod subset_from_bitlist(super_set, bitlist)[源代码][源代码]

获取由位列表定义的子集。

示例

>>> from sympy.combinatorics import Subset
>>> Subset.subset_from_bitlist(['a', 'b', 'c', 'd'], '0011').subset
['c', 'd']
classmethod subset_indices(subset, superset)[源代码][源代码]

返回列表中子集在超集中的索引;如果 subset 的所有元素都不在 superset 中,则列表为空。

示例

>>> from sympy.combinatorics import Subset
>>> superset = [1, 3, 2, 5, 4]
>>> Subset.subset_indices([3, 2, 1], superset)
[1, 2, 0]
>>> Subset.subset_indices([1, 6], superset)
[]
>>> Subset.subset_indices([], superset)
[]
property superset

获取子集的超集。

示例

>>> from sympy.combinatorics import Subset
>>> a = Subset(['c', 'd'], ['a', 'b', 'c', 'd'])
>>> a.superset
['a', 'b', 'c', 'd']
property superset_size

返回超集的大小。

示例

>>> from sympy.combinatorics import Subset
>>> a = Subset(['c', 'd'], ['a', 'b', 'c', 'd'])
>>> a.superset_size
4
classmethod unrank_binary(rank, superset)[源代码][源代码]

获取指定秩的二进制有序子集。

示例

>>> from sympy.combinatorics import Subset
>>> Subset.unrank_binary(4, ['a', 'b', 'c', 'd']).subset
['b']
classmethod unrank_gray(rank, superset)[源代码][源代码]

获取指定秩的格雷码顺序子集。

示例

>>> from sympy.combinatorics import Subset
>>> Subset.unrank_gray(4, ['a', 'b', 'c']).subset
['a', 'b']
>>> Subset.unrank_gray(0, ['a', 'b', 'c']).subset
[]
subsets.ksubsets(k)[源代码]

找到按字典序排列的大小为 k 的子集。

这使用了 itertools 生成器。

参见

Subset

示例

>>> from sympy.combinatorics.subsets import ksubsets
>>> list(ksubsets([1, 2, 3], 2))
[(1, 2), (1, 3), (2, 3)]
>>> list(ksubsets([1, 2, 3, 4, 5], 2))
[(1, 2), (1, 3), (1, 4), (1, 5), (2, 3), (2, 4),     (2, 5), (3, 4), (3, 5), (4, 5)]