Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupport News AboutSign UpSign In
| Download
Project: Contra Dance
Views: 138
reset() typeset_mode(True)
def all_paths(G,a,b): old_paths = G.all_paths( a, b ) # get all paths without edge multiplicity new_paths=[] for p in old_paths: # traverse each path replacing each edge by a list of (multi) edges multi_path=[] for i,u in enumerate(p): if i < len(p)-1: v = p[i+1] edges = G.edge_boundary([u], [v] ) multi_path.append(edges) new_paths.extend( CartesianProduct(*multi_path )) # each sequence of (multi) edges will be a source of multiple paths #new_paths.extend( cartesian_product(*multi_path )) return new_paths
# start is at position 1 and end is position 5 _ = var('start') _ = var('end')
# define all the positions for i in ['8','16']: for l in [1,3,5,7]: _ = var('_'+str(i)+'Pos'+str(l))
#Add arrows for calls, small subset, rest are at end reset('D') # create the graph D = DiGraph(multiedges=True) for i in ['MDsD1']: D.add_edge((start,_8Pos1,str(i))) D.add_edge((_16Pos5,end,str(i))) for j in [[1,1],[3,3],[5,5],[7,7]]: for k in [['_8','_16']]: D.add_edge(var(str(k[0])+'Pos'+str(j[0])),var(str(k[1])+'Pos'+str(j[1])),str(i)) for i in ['HH']: D.add_edge((start,_8Pos3,str(i))) D.add_edge((_16Pos7,end,str(i))) for j in [[1,3],[3,1],[5,7],[7,5]]: for k in [['_8','_16']]: D.add_edge(var(str(k[0])+'Pos'+str(j[0])),var(str(k[1])+'Pos'+str(j[1])),str(i)) for i in ['RsLs']: D.add_edge((_16Pos7,end,str(i))) for j in [[5,7],[7,5]]: for k in [['_8','_16']]: D.add_edge(var(str(k[0])+'Pos'+str(j[0])),var(str(k[1])+'Pos'+str(j[1])),str(i)) for i in ['BRCT']: D.add_edge((start,_8Pos7,str(i))) D.add_edge((_16Pos3,end,str(i))) for j in [[1,7],[3,5],[5,3],[7,1]]: for k in [['_8','_16']]: D.add_edge(var(str(k[0])+'Pos'+str(j[0])),var(str(k[1])+'Pos'+str(j[1])),str(i))
# show the graph, it's not pretty...yet len(set(D.vertices())) #D.graphplot(edge_labels=True,layout='circular').show() D.graphplot(edge_labels=True,layout='circular').show() D.get_pos() #positions = D.get_pos() #positions #D.get_pos()
10\displaystyle 10
# count the dances paths=all_paths(D,start,end) len(paths)
<string>:11: DeprecationWarning: CartesianProduct is deprecated. Use cartesian_product instead See http://trac.sagemath.org/18411 for details.
9\displaystyle 9
D.set_pos({ start:[0,4], _8Pos1:[1,5.5], _8Pos3:[1,4.5], _8Pos5:[1,3.5], _8Pos7:[1,2.5], _16Pos1:[2,5.5], _16Pos3:[2,4.5], _16Pos5:[2,3.5], _16Pos7:[2,2.5], end:[3,4] })
D.graphplot(edge_labels=True, vertex_size=3000).plot(figsize=12) K = D.graphplot(edge_labels=True, vertex_size=3000).plot(figsize=12)
K.save('paperplot.png')
D.get_pos()
{A1bPos5:[2,3.50000000000000],A1bPos7:[2,2.50000000000000],A1aPos5:[1,3.50000000000000],A1aPos7:[1,2.50000000000000],A1bPos1:[2,5.50000000000000],A1bPos3:[2,4.50000000000000],start:[0,4],end:[3,4],A1aPos1:[1,5.50000000000000],A1aPos3:[1,4.50000000000000]}\displaystyle \left\{\mathit{A1bPos}_{5} : \left[2, 3.50000000000000\right], \mathit{A1bPos}_{7} : \left[2, 2.50000000000000\right], \mathit{A1aPos}_{5} : \left[1, 3.50000000000000\right], \mathit{A1aPos}_{7} : \left[1, 2.50000000000000\right], \mathit{A1bPos}_{1} : \left[2, 5.50000000000000\right], \mathit{A1bPos}_{3} : \left[2, 4.50000000000000\right], \mathit{start} : \left[0, 4\right], \mathit{end} : \left[3, 4\right], \mathit{A1aPos}_{1} : \left[1, 5.50000000000000\right], \mathit{A1aPos}_{3} : \left[1, 4.50000000000000\right]\right\}
for p in paths: print p
((start, A1aPos1, 'MDsD1'), (A1aPos1, A1bPos7, 'BRCT'), (A1bPos7, end, 'HH')) ((start, A1aPos1, 'MDsD1'), (A1aPos1, A1bPos7, 'BRCT'), (A1bPos7, end, 'RsLs')) ((start, A1aPos1, 'MDsD1'), (A1aPos1, A1bPos3, 'HH'), (A1bPos3, end, 'BRCT')) ((start, A1aPos3, 'HH'), (A1aPos3, A1bPos5, 'BRCT'), (A1bPos5, end, 'MDsD1')) ((start, A1aPos3, 'HH'), (A1aPos3, A1bPos3, 'MDsD1'), (A1bPos3, end, 'BRCT')) ((start, A1aPos7, 'BRCT'), (A1aPos7, A1bPos5, 'HH'), (A1bPos5, end, 'MDsD1')) ((start, A1aPos7, 'BRCT'), (A1aPos7, A1bPos5, 'RsLs'), (A1bPos5, end, 'MDsD1')) ((start, A1aPos7, 'BRCT'), (A1aPos7, A1bPos7, 'MDsD1'), (A1bPos7, end, 'HH')) ((start, A1aPos7, 'BRCT'), (A1aPos7, A1bPos7, 'MDsD1'), (A1bPos7, end, 'RsLs'))
D.show(edge_labels=True,layout='spring',iterations=20000)
D.show()