如何在Sage中生成给定groundset上的所有matroid
Sage指定groundset生成全部拟阵的实现方法
Sage的matroids包原生支持该需求,你可以通过内置的all_matroids方法实现对应功能,具体用法如下:
- 基础生成逻辑:
all_matroids方法首先根据你指定的groundset大小n,返回所有n元集合上的互不同构拟阵的迭代器,调用示例:from sage.matroids.advanced import all_matroids # 生成所有3元groundset上的拟阵 for matroid in all_matroids(3): # 输出拟阵的基集 print(matroid.bases()) - 自定义groundset元素:默认生成的拟阵groundset为
{0,1,...,n-1},如果你需要指定自定义的groundset元素,可以调用rename_elements方法批量替换元素名,示例:# 自定义groundset为{a,b,c} element_map = {0:'a', 1:'b', 2:'c'} for matroid in all_matroids(3): custom_matroid = matroid.rename_elements(element_map) print(custom_matroid.groundset()) - 特殊参数说明:如果你需要生成包含同构情况的所有拟阵,而非仅非同构的拟阵,可额外添加参数
isomorphic=False。注意该参数开启后,当n≥5时生成量会指数级增长,请留意性能限制。
注意:目前
all_matroids方法仅支持groundset大小n≤8的无约束全量生成,n≥9时需要你额外添加秩、连通性等约束条件才能生成对应拟阵。
内容的提问来源于stack exchange,提问作者zjs
相关产品推荐
相关产品推荐

