查看underling函数作为sagemath lambda语句中的有序对

时间:2016-11-27 01:20:48

标签: python lambda graph-theory discrete-mathematics sage

在sagemath中,我使用以下命令成功查看一组大小为n的所有函数有向图集,例如,对于n = 3

property= lambda G: all(G.out_degree(v) <= 1 for v in G)
L = filter(property, digraphs(3))
#M=list(digraphs(3))
#len(M)
len(L)
graphs_list.show_graphs(L)

Attached is the example input/output for n = 3.

我想看看底层的功能。即,假设大小为3的集合是{a,b,c},那么我想找到一种方法来输出相应的七个函数(输出中每个图一个)。 I,E。

之类的东西
f1 = {(a,a),(b,b),(c,c)}, f2 = {(a,b),(b,b),(c,c)}, ... , f7 = {(a,a),(b,a),(c,a)} 

更一般地说,我想我想知道代码是否(通过sage(引擎盖下))这样做,或者只是拉入图形理论库,其中实际的&#34;函数&#34;被遮盖了。

1 个答案:

答案 0 :(得分:0)

默认情况下,Sage会对顶点012而不是abc进行编号。

这几乎可以满足您的需求:

sage: for g in L:
....:     print g.edges(labels=False)
....:
[]
[(0, 1)]
[(0, 1), (1, 0)]
[(0, 1), (1, 2)]
[(0, 1), (1, 2), (2, 0)]
[(0, 1), (2, 1)]
[(0, 1), (1, 0), (2, 1)]

这更接近您想要的输出。

sage: def im(g, v):
....:     n = g.neighbors(v)
....:     return v if not n else n[0]
....: 
sage: for g in L:
....:     print('{' + ','.join(['({},{})'.format(v, im(g, v)) for v in g.vertices()]) + '}')
....:     
{(0,0),(1,1),(2,2)}
{(0,1),(1,0),(2,2)}
{(0,1),(1,0),(2,2)}
{(0,1),(1,0),(2,1)}
{(0,1),(1,0),(2,0)}
{(0,1),(1,0),(2,1)}
{(0,1),(1,0),(2,1)}

关于Sage在幕后做什么,请探索 源代码,让我们知道你发现了什么。

但请注意,您已获得功能有向图的列表 通过过滤所有有向图的列表,所以Sage可能不会使用 这些有向图的基本功能。