在SageMath中可视化13个顶点的完全3一致超图超边
使用SageMath可视化13顶点完全3一致超图并着色
完全3一致超图(13个顶点)的边数为$\binom{13}{3}=286$,手动绘制确实不现实,SageMath可以快速实现创建、着色和可视化,正好能呈现你需要的杂乱效果。
步骤1:创建超图
SageMath内置了complete_hypergraph函数,直接生成指定顶点数和边大小的完全超图:
# 生成13个顶点的完全3一致超图 H = complete_hypergraph(13, 3)
步骤2:超图着色
你可以直接调用SageMath的超图着色方法,先获取色数,再生成着色方案:
# 获取超图的色数 chromatic_num = H.chromatic_number() print("该超图的色数为:", chromatic_num) # 生成贪心着色方案(也可指定其他算法) coloring = H.coloring(greedy=True)
注:13顶点的完全3一致超图色数为7,因为需要将顶点划分为独立集(每个独立集最多2个顶点,否则会构成超边),13个顶点最少需要7个独立集。
步骤3:可视化(带着色)
由于边数极多,通过调整边的透明度、顶点大小和标签,既能呈现杂乱感,又能区分顶点着色:
# 绘制超图,设置边透明度(0.1)避免完全重叠,顶点带标签和着色 plot = H.plot( vertex_colors=coloring, edge_alpha=0.1, vertex_size=30, vertex_labels=True, edge_color="gray" ) # 显示图像 plot.show() # 保存为PDF/PNG文件(可选) plot.save("13-vertex-3-uniform-complete-hypergraph.pdf")
自定义着色(可选)
如果需要指定颜色映射,可手动构建颜色字典替换默认着色:
# 自定义颜色映射 custom_colors = { 0: "#FF5733", 1: "#33FF57", 2: "#3357FF", 3: "#FF33A6", 4: "#FFC300", 5: "#8C489F", 6: "#489F8C" } # 将着色结果映射为自定义颜色 vertex_color_dict = {v: custom_colors[c] for v, c in coloring.items()} # 重新绘制 custom_plot = H.plot( vertex_colors=vertex_color_dict, edge_alpha=0.1, vertex_size=30, vertex_labels=True ) custom_plot.show()
运行上述代码后,就能得到你需要的、充满超边的可视化效果,同时顶点按着色方案区分。
内容的提问来源于stack exchange,提问作者B. Phair
相关产品推荐
相关产品推荐

