Help:=proc(): print(`LT(n) , ST(n,G), Cycle(n), Wheel(n)`,NuST(n,G)) print(`DrawWheelGraph(n,G)`): end: with(linalg): with(combinat): #LT(n): LT:=proc(n) local A,a,i,j,paul: #[[-a[{1,2}]-a[{1,3}]- .... -a[{1,n}], a[{1,2}],a[{1,3}], ..., a[{1,n}] #[a[{1,2}], -a[{2,1}-a[{2,3}]- .... -a[{2,n}, a[{2,3}, a[{2,4}], ..., a[{2,n}] ] #... #... #... #[a[{1,n}], a[{2,n}], ...., a[{n-1,n}], -a[{1,n}]- ... - a[{n-1,n}] A:= [seq([ seq(-a[{i,j}],j=2..i-1), add(a[{i,j}],j=1..n)-a[{i}], seq(-a[{i,j}],j=i+1..n)], i=2..n)]: paul:=det(A); {seq({seq(op(1,op(j,op(i,paul))),j=1..nops(op(i,paul)))},i=1..nops(paul))}; end: #ST(n,G):The set of spanning trees on n vertices labeled #1, ...,n of a a graph G, (given as a set of edges) ST:=proc(n,G) local A,a,i,j,paul,NonEdges: #[[-a[{1,2}]-a[{1,3}]- .... -a[{1,n}], a[{1,2}],a[{1,3}], ..., a[{1,n}] #[a[{1,2}], -a[{2,1}-a[{2,3}]- .... -a[{2,n}, a[{2,3}, a[{2,4}], ..., a[{2,n}] ] #... #... #... #[a[{1,n}], a[{2,n}], ...., a[{n-1,n}], -a[{1,n}]- ... - a[{n-1,n}] A:= [seq([ seq(-a[{i,j}],j=2..i-1), add(a[{i,j}],j=1..n)-a[{i}], seq(-a[{i,j}],j=i+1..n)], i=2..n)]: NonEdges:={seq(seq({i,j},j=i+1..n),i=1..n)} minus G: A:=expand(subs( { seq( a[edge]=0, edge in NonEdges) }, A)): paul:=det(A); {seq({seq(op(1,op(j,op(i,paul))),j=1..nops(op(i,paul)))},i=1..nops(paul))}; end: Cycle:=proc(n) local i: {seq({i,i+1},i=1..n-1),{1,n}}: end: Wheel:=proc(n) local i: Cycle(n) union {seq({i,n+1},i=1..n)}: end: #NuST(n,G):The set of spanning trees on n vertices labeled #1, ...,n of a a graph G, (given as a set of edges) NuST:=proc(n,G) local A,a,i,j,NonEdges,edge: #[[-a[{1,2}]-a[{1,3}]- .... -a[{1,n}], a[{1,2}],a[{1,3}], ..., a[{1,n}] #[a[{1,2}], -a[{2,1}-a[{2,3}]- .... -a[{2,n}, a[{2,3}, a[{2,4}], ..., a[{2,n}] ] #... #... #... #[a[{1,n}], a[{2,n}], ...., a[{n-1,n}], -a[{1,n}]- ... - a[{n-1,n}] A:= [seq([ seq(-a[{i,j}],j=2..i-1), add(a[{i,j}],j=1..n)-a[{i}], seq(-a[{i,j}],j=i+1..n)], i=2..n)]: NonEdges:={seq(seq({i,j},j=i+1..n),i=1..n)} minus G: A:=expand(subs( { seq( a[edge]=0, edge in NonEdges) }, A)): A:=expand(subs( { seq( a[edge]=1, edge in G) }, A)): det(A); end: