Single Rules + Single Arities on Each Side {{n1,a1}}{{n2,a2}}
Single Rules + Single Arities on Each Side {{n1,a1}}{{n2,a2}}
Arity assumed the same on both sides; n2 > n1 for growth
In[]:=
allsigs=Flatten[Table[{{n1,a}}{{n2,a}},{n1,3},{n2,n1+1,6},{a,3}]]
Out[]=
Maximum number of symbols:
In[]:=
(Times@@First[#1]+Times@@First[#2])&@@@allsigs
Out[]=
{3,6,9,4,8,12,5,10,15,6,12,18,7,14,21,5,10,15,6,12,18,7,14,21,8,16,24,7,14,21,8,16,24,9,18,27}
In[]:=
SortBy[allsigs,((Times@@First[#1]+Times@@First[#2])&@@#)&]
Out[]=
In[]:=
SortBy[{#,((Times@@First[#1]+Times@@First[#2])&@@#)}&/@allsigs,Last]
Out[]=
1,1 -> 2,1
1,1 -> 2,1
In[]:=
EnumerateWolframModelRules[{{1,1}}{{2,1}},2]
Out[]=
{{{1}}{{1},{1}},{{1}}{{1},{2}},{{1}}{{2},{2}},{{1}}{{2},{3}}}
In[]:=
Select[%,BiConnectedRuleQ]
Out[]=
{{{1}}{{1},{1}},{{1}}{{2},{2}}}
In[]:=
WolframModelTest[#,Automatic]&/@%154
Out[]=
In[]:=
MakePictures[%]
Out[]=
In[]:=
EnumerateWolframModelRules[{{1,1}}{{2,1}},3]
Out[]=
{{{1}}{{1},{1}},{{1}}{{1},{2}},{{1}}{{2},{2}},{{1}}{{2},{3}}}
1,1 -> 3,1
1,1 -> 3,1
In[]:=
EchoFunction[Length]@Select[EnumerateWolframModelRules[{{1,1}}{{3,1}},4],BiConnectedRuleQ];
»
2
In[]:=
WolframModelTest[#,Automatic]&/@%;
In[]:=
Length/@GroupBy[%,#FinalState&]//Values
Out[]=
{10,1,1,15,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
In[]:=
MakePictures[First/@Values[GroupBy[%,#FinalState&]]]
Out[]=
1,1 -> 4,1
1,1 -> 4,1
In[]:=
EchoFunction[Length]@Select[EnumerateWolframModelRules[{{1,1}}{{4,1}},5],BiConnectedRuleQ];
»
2
In[]:=
WolframModelTest[#,Automatic]&/@%;
In[]:=
Length/@GroupBy[%,#FinalState&]//Values
Out[]=
{1,1}
In[]:=
MakePictures[First/@Values[GroupBy[%%,#FinalState&]]]
Out[]=
2,1 -> 3,1
2,1 -> 3,1
In[]:=
EchoFunction[Length]@Select[EnumerateWolframModelRules[{{2,1}}{{3,1}},5],BiConnectedRuleQ];
»
2
In[]:=
WolframModelTest[#,Automatic]&/@%;
In[]:=
Length/@GroupBy[%,#FinalState&]//Values
Out[]=
{1,1}
In[]:=
MakePictures[First/@Values[GroupBy[%%,#FinalState&]]]
Out[]=
1,1 -> 5,1
1,1 -> 5,1
1,2 -> 2,2
1,2 -> 2,2
In[]:=
EnumerateWolframModelRules[{{1,2}}{{2,2}},2]
s 4 etc.
s 4 etc.
{{{1,2}}{{3,2}},8}
{{{1,2}}{{3,2}},8}
Note: only going up to 4 symbols, not 8: