在给定的上限和下限之间组合生成子图(Sage)

时间:2018-02-27 17:48:07

标签: python combinatorics sage

我是圣人的新手,我一直在阅读文档,但这对我来说是一个非常新的领域,掌握一切都有点困难。

我想要做的是,给定一个邻接矩阵,一个上界和一个下界 - 生成通过该矩阵的所有路径,其中“路径”由每行的一个条目组成,这样的权重途径等于或在界限之间。

如果我可以通过1组织给定的途径,那就更好了。)每行中权重低于路径中的条目的数量,和/或2.)与其他途径的最小重叠到#1。

为清楚起见,快速举例。 鉴于4x4矩阵:

[[1,2,3,4],
 [5,6,7,8],
 [10,11,12,13],
 [20,21,22,23]]

上限38和下限37可能的途径可能是:

2,5,10,20 3,5,10,20 2,6,10,20 2,5,11,20 2,5,10,21 我不想写出所有的途径,所以希望你能得到这个想法。

如果我能够快速过滤掉冗余,那么更好的方法是不包括作为其他途径子集的路径(例如,2,5,10,20包含2,5,10,20 - 因为每个路径途径我计划包括每个相应行的所有较低权重边缘。)

1 个答案:

答案 0 :(得分:0)

如果您有对称矩阵(有或没有对角线条目非零),您可以do this

M = matrix([[0,2,3,4],[2,0,7,8], [3,7,0,13], [4,8,13,0]])
G = Graph(M,format='weighted_adjacency_matrix')
G.graphplot(edge_labels=True,spring=True).show()

希望从G本身你可以做你想做的事。 (除非它与图形无关,只与矩阵有关,在这种情况下,你可能完全想要一个不同的东西。)

我不确定你到底想要做什么(“路径”如何对应子图?),并且可能描述的内容超出了本网站的范围(与math.SX.com相对) ,但generic graph documentation有一些路径方法,undirected documentation也可能有用。