首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将下面的函数视为sagemath lambda语句中的有序对

将下面的函数视为sagemath lambda语句中的有序对
EN

Stack Overflow用户
提问于 2016-11-27 01:20:47
回答 1查看 57关注 0票数 1

在sagemath中,我使用以下方法成功地查看了一组大小为n的函数有向图的集合,例如,n=3

代码语言:javascript
复制
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)

附件是n= 3的输入/输出示例。

我想看看基本的功能。也就是说,假设3的集合是{a,b,c},那么我想找到一种方法来输出相应的七个函数(输出中的每个图都有一个函数)。我,就像

代码语言:javascript
复制
f1 = {(a,a),(b,b),(c,c)}, f2 = {(a,b),(b,b),(c,c)}, ... , f7 = {(a,a),(b,a),(c,a)} 

更广泛地说,我想我想知道代码(通过sage (底层))是在做这件事,还是简单地引入了一个图论库,其中实际的“函数”是模糊的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-03 14:36:48

默认情况下,Sage将顶点为012而不是abc

这几乎可以做你想做的事:

代码语言:javascript
复制
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)]

这更接近您想要的输出。

代码语言:javascript
复制
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很可能不会对这些有向图使用底层函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40824885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档