2016-11-27 49 views
1

在sagemath我使用下面的方法成功查看集合中的所有功能有向圖的一組大小爲n的,例如,對於n = 3視圖下屬用作從sagemath拉姆達語句有序對

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)} 

更普遍的,我想我不知道,如果代碼是(通過鼠尾草(下引擎罩))這樣做或者乾脆在圖論庫中實際的「功能」是拉模糊。

回答

0

默認情況下,賢者號的頂點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很可能不會使用這些有向圖的基礎函數 。

+0

這正是我所需要的,你的解釋有助於理解。我會探討這個來源。再次感謝! – Diabellical