从 sagemath lambda 语句中将底层函数视为有序对
view underling functions as ordered pairs from sagemath lambda statement
在 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},那么我想找到一种方法来输出相应的七个函数(输出中的每个图一个)。 IE。像
f1 = {(a,a),(b,b),(c,c)}, f2 = {(a,b),(b,b),(c,c)}, ... , f7 = {(a,a),(b,a),(c,a)}
更一般地说,我想我想知道代码是(通过 sage(幕后))执行此操作还是简单地引入图论库,其中实际 "functions" 被遮盖了。
默认情况下,Sage 将顶点编号为 0
、1
、2
而不是 a
、b
、c
。
这几乎可以满足您的要求:
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 可能不使用
这些二合字母的基本功能。
在 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},那么我想找到一种方法来输出相应的七个函数(输出中的每个图一个)。 IE。像
f1 = {(a,a),(b,b),(c,c)}, f2 = {(a,b),(b,b),(c,c)}, ... , f7 = {(a,a),(b,a),(c,a)}
更一般地说,我想我想知道代码是(通过 sage(幕后))执行此操作还是简单地引入图论库,其中实际 "functions" 被遮盖了。
默认情况下,Sage 将顶点编号为 0
、1
、2
而不是 a
、b
、c
。
这几乎可以满足您的要求:
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 可能不使用 这些二合字母的基本功能。