2016-11-27 1 views
1

В sagemath я использую следующий для успешного просмотра набора всех функциональных орграфов на множестве размера п, например, при п = 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}, тогда я хотел бы найти способ вывода соответствующих семи функций (по одному для каждой диаграммы на выходе). Я, д. что-то вроде

f1 = {(a,a),(b,b),(c,c)}, f2 = {(a,b),(b,b),(c,c)}, ... , f7 = {(a,a),(b,a),(c,a)} 

В более общем плане, я полагаю, мне интересно, если код (через шалфея (под капотом)) делать это или просто вытягивать в графе теоретико-библиотеки, в которой фактические «функции» являются затемняется.

ответ

0

По умолчанию номера 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, вероятно, не использует основные функции для этих ордеров.

+0

Это именно то, что мне нужно, и ваше объяснение помогает понять. Я исследую источник. Еще раз спасибо! – Diabellical

Смежные вопросы