சுழல்களும் நிலைத்த புள்ளிகளும்
[[File:Permutation matrix; P * column.svg|thumb|200px|''P'' * (1,2,3,4)&lt;sup&gt;T&lt;/sup&gt; = (4,1,3,2)&lt;sup&gt;T&lt;/sup&gt;&lt;br&gt;&lt;br&gt;நான்கு உறுப்புகளின் வரிசைமாற்றம்: &lt;big&gt;1&lt;/big&gt; நிலைத்த புள்ளி; &lt;big&gt;1&lt;/big&gt; 3-சுழல்]]
 கணிதத்தில் '''S''' என்ற முடிவுறு [[கணம் (கணிதம்)|கணத்தின்]] மீதான [[வரிசைமாற்றம்]] ''π'' எனில் அவ்வரிசைமாற்றத்தின் '''சுழல்கள்''' (''cycles'') என்பவை, ''S'' இன் மீது செயற்படும் [[வரிசைமாற்றம்]] ''π'' இன் செயற்பாட்டால் உருவாகும் உட்குலங்களின் சுற்றுப்பாதைகளுக்கு (orbit) இருவழியொத்தவையாக அமைவன ஆகும். இந்த சுற்றுப்பாதைகள் '''S''' இன் உட்கணங்களாக அமையும்.
 
 {&amp;nbsp;''c''&lt;sub&gt;1&lt;/sub&gt;,&amp;nbsp;...,&amp;nbsp;''c''&lt;sub&gt;''l''&lt;/sub&gt;&amp;nbsp;} ஒரு சுற்றுப்பாதை எனில்:
 
 :''π''(''c''&lt;sub&gt;''i''&lt;/sub&gt;) = ''c''&lt;sub&gt;''i'' + 1&lt;/sub&gt;, ''i'' = 1, ..., ''l''&amp;nbsp;&amp;minus;&amp;nbsp;1, மற்றும் ''π''(''c''&lt;sub&gt;''l''&lt;/sub&gt;) = ''c''&lt;sub&gt;1&lt;/sub&gt;.
 
 இந்த சுற்றுப்பாதைக்குரிய ''π'' இன் சுழல் ( ''c''&lt;sub&gt;1&lt;/sub&gt; ''c''&lt;sub&gt;2&lt;/sub&gt; ... ''c''&lt;sub&gt;''n''&lt;/sub&gt; ) என எழுதப்படுகிறது. ''c''&lt;sub&gt;1&lt;/sub&gt; ஆக சுற்றுப்பாதையின் எந்தவொரு உறுப்பும் எடுத்துக்கொள்ளப்படலாம் என்பதால், இம்முறையில் எழுதுவது தனித்தவொரு முறையாகா இருக்காது.
 
 ஒரு சுற்றுப்பாதையின் அளவு ''l'' எனில் அதுவே, அச்சுற்றுப்பாதையின் சுழலின் நீளம் ஆகும். ''l''&amp;nbsp;=&amp;nbsp;1 எனில் சுற்றுப்பாதையில் ஒரேயொரு உறுப்பு மட்டுமேயிருக்கும்; அந்த உறுப்பு வரிசைமாற்றத்தின் [[நிலைத்த புள்ளி]] எனப்படும்.
 
 ஏதாவது ஒரு வரிசைப்படி ஒரு வரிசைமாற்றத்தின் சுழல்களை அடுத்தடுத்து எழுதுவதன் மூலம் அவ்வரிசைமாற்றம் குறிக்கப்படுகிறது.
 
 எடுத்துக்காட்டு:
 :&lt;math&gt; \pi
 = \begin{pmatrix} 1 &amp; 6 &amp; 7 &amp; 2 &amp; 5 &amp; 4 &amp; 8 &amp; 3 \\ 2 &amp; 8 &amp; 7 &amp; 4 &amp; 5 &amp; 3 &amp; 6 &amp; 1 \end{pmatrix}
 = \begin{pmatrix} 1 &amp; 2 &amp; 4 &amp; 3 &amp; 5 &amp; 6 &amp; 7 &amp; 8 \\ 2 &amp; 4 &amp; 3 &amp; 1 &amp; 5 &amp; 8 &amp; 7 &amp; 6 \end{pmatrix}
 &lt;/math&gt;
 
 இதில் 1 ----&gt; 2, 2----&gt;4, 4----&gt;3, 3----&gt;1; 6 ----&gt; 8, 5----&gt;5, 7---&gt;7.  எனவே இவ்வரிசைமாற்றத்தைப்  பின்வரும் விதங்களில் எழுதலாம்.
 
 :''π'' = ( 1 2 4 3 ) ( 5 ) ( 6 8 ) (7) = (7) ( 1 2 4 3 ) ( 6 8 ) ( 5 ) = ( 4 3 1 2 ) ( 8 6 ) ( 5 ) (7) = ...
 
 இதில் ''π''(5)=5, ''π''(7)=7 என்பதால் 5, 7 இரண்டும் ''π'' இன் நிலைத்த புள்ளிகள். ஒரு வரிசைமாற்றத்தின் நிலைத்தபுள்ளிகளை அதாவது 1 நீளமுள்ள சுழலைக் குறிக்கவேண்டியது அவசியமில்லை&lt;ref&gt;{{harvnb|Gerstein|1987|loc=p. 240}}&lt;/ref&gt; என்பதால் வரிசைமாற்றத்தினை எழுதும் சரியானமுறை:
 
 : π = (1 2 4 3)(6 8)
 
 ==விளக்கம்==
 S = {a_1, a_2, ..., a_n} என்று கொள்வோம். இதனுடைய வரிசைமாற்றம் ஒவ்வொன்றும் &lt;math&gt;\sigma: S \mapsto S&lt;/math&gt; என்ற இருவழிக்கோப்பு. இதை சுழல்முறையில் குறிகாட்ட, ஏதாவது ஒரு உறுப்பிலிருந்து தொடங்கலாம். a_1 இலிருந்து தொடங்கினால் அது &lt;math&gt;\sigma(a_1)&lt;/math&gt; க்குப்போகிறது. இது &lt;math&gt;\sigma(\sigma(a_1))&lt;/math&gt; = &lt;math&gt;\sigma^2(a_1)&lt;/math&gt; க்குப்போகிறது. ஆக,
 
 :&lt;math&gt;a_1 \rightarrow \sigma(a_1) \rightarrow \sigma^2(a_1) \rightarrow ....\rightarrow \sigma^{k_1}(a_1)= a_1&lt;/math&gt;.
 
 இங்கு இந்தச்சுழலின் நீளம் k_1.
 
 &lt;math&gt;\sigma(a_1), \sigma^2(a_1), ..., \sigma^{k_1}(a_1)&lt;/math&gt; இவைகள் ''n'' உறுப்புகளையும் கொண்டுவிட்டால், இத்திரிபில் மொத்தமே ஒரு சுழல்தான். இல்லாவிட்டால், இவைகளில் இல்லாத ஒரு உறுப்பிலிருந்து தொடங்கி மேற்படி செயல்பாட்டைத் திரும்பச்செய்ய வேண்டும். எல்லாஉறுப்புகளும் சுழல்களுக்குள் வரும் வரையில் இதையே தொடர்ந்து செய்தால், கடைசியில் கீழுள்ளபடி ஒரு சுழற்பிரிவு கிடைக்கும்:
 
 :நீளம் 1 உள்ள &lt;math&gt;j_1&lt;/math&gt; சுழல்கள்,
 :நீளம் 2 உள்ள &lt;math&gt;j_2&lt;/math&gt; சுழல்கள்,
 :... ...
 :நீளம் k உள்ள &lt;math&gt;j_k&lt;/math&gt; சுழல்கள்.
 
 எனவே இந்த வரிசைமாற்றத்தின் சுழலமைப்புக் குறியீடு:
 :&lt;math&gt;\sigma&lt;/math&gt; = &lt;math&gt;1^{j_1}2^{j_2}...k^{j_k}&lt;/math&gt;
 :&lt;math&gt;1j_1 + 2j_2 + ... +kj_k  =  n.&lt;/math&gt; ஆக இருக்கும்.
 
 இந்த சுழலமைப்பிலுள்ள வரிசைமாற்றங்களின் எண்ணிக்கை (தேற்றத்தின்படி): 
 :&lt;math&gt;\frac{n!}{1^{j_1}2^{j_2}...k^{j_k}{j_1}!{j_2}!...{j_k}!}&lt;/math&gt;
 
 எடுத்துக்காட்டு:
 : &lt;math&gt;\sigma = \begin{pmatrix}1 &amp; 2 &amp; 3 &amp; 4 &amp; 5 &amp; 6 &amp; 7 &amp; 8 &amp; 9\\4 &amp; 9 &amp; 6 &amp; 5 &amp; 1 &amp; 3 &amp; 7 &amp; 8 &amp; 2\end{pmatrix}&lt;/math&gt;.
 
 இதன் 
 :சுழல்முறைக்குறியீடு: (1 4 5)(2 9)(3 6)(7)(8) =  (1 4 5)(2 9)(3 6)
 :சுழலமைப்பு: 32211 அல்லது &lt;math&gt;32^21^2&lt;/math&gt;
 
 இந்த சுழலமைப்பிலுள்ள எல்லா வரிசைமாற்றங்களின் எண்ணிக்கை = &lt;math&gt;\frac{9!}{1^2.2^2.3.1!.2!.2!} &lt;/math&gt; = 7,560.
 
 == சுழல்களின் எண்ணிக்கையைக் கொண்டு வரிசைமாற்றங்களின் எண்ணிக்கைக் காணல் ==
 சரியாக ''j'' சேரா சுழல்களைக்கொண்ட ''k'' உறுப்புகளின் வரிசைமாற்றங்களின் என்ணிக்கையை குறியிடப்படாத [[இசுடர்லிங் சுழல் எண்|முதல்வகை ஸ்டெர்லிங் எண்]] ''s''(''k'',&amp;nbsp;''j'') தருகிறது.&lt;ref&gt;{{harvnb|Cameron|1994|loc=p. 80}}&lt;/ref&gt;&lt;ref&gt;{{harvnb|Brualdi|2010|loc=p. 290}}&lt;/ref&gt;
 
 *அனைத்து ''k'' &gt; 0 மதிப்புகளுக்கும் ''s''(''k'',&amp;nbsp;''k'') = 1
 
 :''k'' உறுப்புகளை,  ''k'' சுழல்கள் கொண்டதாக  வரிசைமாற்றும் வழி ஒன்றே ஒன்றுதான். இந்த வரிசைமாற்றத்தில் ஒவ்வொரு சுழலின் நீளமும் 1 ஆக இருக்க வேண்டும். அதாவது ஒவ்வொரு உறுப்பும் நிலைத்த புள்ளியாக இருக்கவேண்டும்.
 
 * அனைத்து ''k'' &gt; 0 மதிப்புகளுக்கும் ''s''(''k'',&amp;nbsp;1) = (''k''&amp;nbsp;&amp;minus;&amp;nbsp;1)!.
 
 :''k'' உறுப்புகளின் வரிசைமாற்றத்தில் சுழல்களின் எண்ணிக்கை 1 எனில் அச்சுழல்களின் நீளம் ''k'' ஆக இருக்கும். அதாவது அச்சுழல்கள் ஒவ்வொன்றும் ''k'' உறுப்புகளைக் கொண்டிருக்கும். 1 முதல் ''k'' வரையிலான உறுப்புகளை ''k''! வழிகளில் வரிசைமாற்றலாம். அதேசமயம் ''k'' நீளமுள்ள ஒரு சுழலை வெவ்வேறுவிதமாக ''k'' வழிகளில் எழுதலாம். எடுத்துக்காட்டாக, 4 நீளமுள்ள சுழல் ( 1 2 4 3 ) = ( 2 4 3 1 ) = ( 4 3 1 2 ) = ( 3 1 2 4 ) என நான்கு விதங்களில் எழுதப்படுவதைக் காணலாம். எனவே
 
 :: ''s''(''k'', 1) = ''k''!/''k'' = (''k''&amp;nbsp;&amp;minus;&amp;nbsp;1)!.
 
 *அனைத்து ''k'' &gt; ''j'' &gt; 1 மதிப்புகளுக்கும், ''s''(''k'',&amp;nbsp;''j'') = ''s''(''k''&amp;nbsp;&amp;minus;&amp;nbsp;1,''j''&amp;nbsp;&amp;minus;&amp;nbsp;1)&amp;nbsp;+&amp;nbsp;''s''(''k''&amp;nbsp;&amp;minus;&amp;nbsp;1,&amp;nbsp;''j'')&amp;middot;(''k''&amp;nbsp;&amp;minus;&amp;nbsp;1)
 
 ''j'' சுழல்கள் கொண்டதாக ''k'' உறுப்புகளை இருவேறு வழிகளில் வரிசைமாற்றலாம்:
 
 :உறுப்பு ''k'' ஐ ஒரு நிலைத்த புள்ளியாக எடுத்துக்கொண்டால் ''j''&amp;nbsp;&amp;minus;&amp;nbsp;1 சுழல்கள் கொண்ட ''k''&amp;nbsp;&amp;minus;&amp;nbsp;1 உறுப்புகளின் ''s''(''k''&amp;nbsp;&amp;minus;&amp;nbsp;1,&amp;nbsp;''j''&amp;nbsp;&amp;minus;&amp;nbsp;1) வரிசைமாற்றங்களில் ஒன்றைத் தேர்ந்தெடுத்து ''k'' உறுப்பை 1 நீளமுடைய சுழலாக அதனுடன் சேர்த்துக்கொள்ளலாம். (''s''(''k''&amp;nbsp;&amp;minus;&amp;nbsp;1,''j''&amp;nbsp;&amp;minus;&amp;nbsp;1)&amp;nbsp;)
 
 :உறுப்பு ''k'' ஐ ஒரு நிலைத்த புள்ளியாக எடுத்துக்கொள்ளாவிட்டால் ''j'' சுழல்கள் கொண்ட ''k''&amp;nbsp;&amp;minus;&amp;nbsp;1 உறுப்புகளின் ''s''(''k''&amp;nbsp;&amp;minus;&amp;nbsp;1,&amp;nbsp;''j'' ) வரிசைமாற்றங்களில் ஒன்றைத் தேர்ந்தெடுத்து ''k'' உறுப்பை ஒவ்வொரு சுழலிலுமுள்ள ''k''&amp;nbsp;&amp;minus;&amp;nbsp;1 உறுப்புகளில் ஏதேனும் ஒன்றின்முன் சேர்த்துக்கொள்ளலாம் (&amp;nbsp;''s''(''k''&amp;nbsp;&amp;minus;&amp;nbsp;1,&amp;nbsp;''j'')&amp;middot;(''k''&amp;nbsp;&amp;minus;&amp;nbsp;1).
 
 எனவே,
 ::''s''(''k'',&amp;nbsp;''j'') = ''s''(''k''&amp;nbsp;&amp;minus;&amp;nbsp;1,''j''&amp;nbsp;&amp;minus;&amp;nbsp;1)&amp;nbsp;+&amp;nbsp;''s''(''k''&amp;nbsp;&amp;minus;&amp;nbsp;1,&amp;nbsp;''j'')&amp;middot;(''k''&amp;nbsp;&amp;minus;&amp;nbsp;1)
 
 === சில மதிப்புகள் ===
 {| class=&quot;wikitable&quot;
 |-
 ! rowspan=&quot;2&quot; valign=&quot;center&quot; | &amp;nbsp; k &amp;nbsp;
 ! colspan=&quot;9&quot; | j
 ! &amp;nbsp;
 |-
 ! 1
 ! 2
 ! 3
 ! 4
 ! 5
 ! 6
 ! 7
 ! 8
 ! 9
 ! sum
 |-
 ! 1
 | align=&quot;right&quot; | 1
 | colspan=&quot;8&quot; | &amp;nbsp;
 | align=&quot;right&quot; | 1
 |-
 ! 2
 | align=&quot;right&quot; | 1
 | align=&quot;right&quot; | 1
 | colspan=&quot;7&quot; | &amp;nbsp;
 | align=&quot;right&quot; | 2
 |-
 ! 3
 | align=&quot;right&quot; | 2
 | align=&quot;right&quot; | 3
 | align=&quot;right&quot; | 1
 | colspan=&quot;6&quot; | &amp;nbsp;
 | align=&quot;right&quot; | 6
 |-
 ! 4
 | align=&quot;right&quot; | 6
 | align=&quot;right&quot; | 11
 | align=&quot;right&quot; | 6
 | align=&quot;right&quot; | 1
 | colspan=&quot;5&quot; | &amp;nbsp;
 | align=&quot;right&quot; | 24
 |-
 ! 5
 | align=&quot;right&quot; | 24
 | align=&quot;right&quot; | 50
 | align=&quot;right&quot; | 35
 | align=&quot;right&quot; | 10
 | align=&quot;right&quot; | 1
 | colspan=&quot;4&quot; | &amp;nbsp;
 | align=&quot;right&quot; | 120
 |-
 ! 6
 | align=&quot;right&quot; | 120
 | align=&quot;right&quot; | 274
 | align=&quot;right&quot; | 225
 | align=&quot;right&quot; | 85
 | align=&quot;right&quot; | 15
 | align=&quot;right&quot; | 1
 | colspan=&quot;3&quot; | &amp;nbsp;
 | align=&quot;right&quot; | 720
 |-
 ! 7
 | align=&quot;right&quot; | 720
 | align=&quot;right&quot; | 1,764
 | align=&quot;right&quot; | 1,624
 | align=&quot;right&quot; | 735
 | align=&quot;right&quot; | 175
 | align=&quot;right&quot; | 21
 | align=&quot;right&quot; | 1
 | colspan=&quot;2&quot; | &amp;nbsp;
 | align=&quot;right&quot; | 5,040
 |-
 ! 8
 | align=&quot;right&quot; | 5,040
 | align=&quot;right&quot; | 13,068
 | align=&quot;right&quot; | 13,132
 | align=&quot;right&quot; | 6,769
 | align=&quot;right&quot; | 1,960
 | align=&quot;right&quot; | 322
 | align=&quot;right&quot; | 28
 | align=&quot;right&quot; | 1
 | colspan=&quot;1&quot; | &amp;nbsp;
 | align=&quot;right&quot; | 40,320
 |-
 ! 9
 | align=&quot;right&quot; | 40,320
 | align=&quot;right&quot; | 109,584
 | align=&quot;right&quot; | 118,124
 | align=&quot;right&quot; | 67,284
 | align=&quot;right&quot; | 22,449
 | align=&quot;right&quot; | 4,536
 | align=&quot;right&quot; | 546
 | align=&quot;right&quot; | 36
 | align=&quot;right&quot; | 1
 | align=&quot;right&quot; | 362,880
 |-
 ! &amp;nbsp;
 ! 1
 ! 2
 ! 3
 ! 4
 ! 5
 ! 6
 ! 7
 ! 8
 ! 9
 ! sum
 |}
 
 == நிலைத்தபுள்ளிகளின் எண்ணிக்கைகொண்டு வரிசைமாற்றங்களின் எண்ணிக்கை காணல் ==
 
 ''j'' நிலைப்புள்ளிகள் கொண்ட ''k'' உறுப்புகளை வரிசைமாற்றும் வழிகளின் எண்ணிக்கையை ''f''(''k'',&amp;nbsp;''j'') தருகிறது.
 
 *ஒவ்வொரு ''j'' &lt; 0 அல்லது ''j'' &gt; ''k'' மதிப்புகளுக்கு: 
 ::''f''(''k'',&amp;nbsp;''j'') = 0.
 
 *''f''(0, 0) = 1.
 *ஒவ்வொரு ''k'' &gt; 1 ; ''k'' &amp;ge; ''j'' &amp;ge; 0 மதிப்புகளுக்கு:
 :: ''f''(''k'',&amp;nbsp;''j'')  = ''f''(''k''&amp;nbsp;&amp;minus;&amp;nbsp;1,&amp;nbsp;''j''&amp;nbsp;&amp;minus;&amp;nbsp;1) + ''f''(''k''&amp;nbsp;&amp;minus;&amp;nbsp;1,&amp;nbsp;''j'')&amp;middot;(''k''&amp;nbsp;&amp;minus;&amp;nbsp;1 &amp;nbsp;&amp;minus;&amp;nbsp;''j'') + ''f''(''k''&amp;nbsp;&amp;minus;&amp;nbsp;1,&amp;nbsp;''j''&amp;nbsp;+&amp;nbsp;1)&amp;middot;(''j''&amp;nbsp;+&amp;nbsp;1)
 
 === சில மதிப்புகள் ===
 {| class=&quot;wikitable&quot;
 |-
 ! rowspan=&quot;2&quot; valign=&quot;center&quot; | &amp;nbsp; k &amp;nbsp;
 ! colspan=&quot;10&quot; | j
 ! &amp;nbsp;
 |-
 ! 0
 ! 1
 ! 2
 ! 3
 ! 4
 ! 5
 ! 6
 ! 7
 ! 8
 ! 9
 ! sum
 |-
 ! 1
 | align=&quot;right&quot; | 0
 | align=&quot;right&quot; | 1
 | colspan=&quot;8&quot; | &amp;nbsp;
 | align=&quot;right&quot; | 1
 |-
 ! 2
 | align=&quot;right&quot; | 1
 | align=&quot;right&quot; | 0
 | align=&quot;right&quot; | 1
 | colspan=&quot;7&quot; | &amp;nbsp;
 | align=&quot;right&quot; | 2
 |-
 ! 3
 | align=&quot;right&quot; | 2
 | align=&quot;right&quot; | 3
 | align=&quot;right&quot; | 0
 | align=&quot;right&quot; | 1
 | colspan=&quot;6&quot; | &amp;nbsp;
 | align=&quot;right&quot; | 6
 |-
 ! 4
 | align=&quot;right&quot; | 9
 | align=&quot;right&quot; | 8
 | align=&quot;right&quot; | 6
 | align=&quot;right&quot; | 0
 | align=&quot;right&quot; | 1
 | colspan=&quot;5&quot; | &amp;nbsp;
 | align=&quot;right&quot; | 24
 |-
 ! 5
 | align=&quot;right&quot; | 44
 | align=&quot;right&quot; | 45
 | align=&quot;right&quot; | 20
 | align=&quot;right&quot; | 10
 | align=&quot;right&quot; | 0
 | align=&quot;right&quot; | 1
 | colspan=&quot;4&quot; | &amp;nbsp;
 | align=&quot;right&quot; | 120
 |-
 ! 6
 | align=&quot;right&quot; | 265
 | align=&quot;right&quot; | 264
 | align=&quot;right&quot; | 135
 | align=&quot;right&quot; | 40
 | align=&quot;right&quot; | 15
 | align=&quot;right&quot; | 0
 | align=&quot;right&quot; | 1
 | colspan=&quot;3&quot; | &amp;nbsp;
 | align=&quot;right&quot; | 720
 |-
 ! 7
 | align=&quot;right&quot; | 1,854
 | align=&quot;right&quot; | 1,855
 | align=&quot;right&quot; | 924
 | align=&quot;right&quot; | 315
 | align=&quot;right&quot; | 70
 | align=&quot;right&quot; | 21
 | align=&quot;right&quot; | 0
 | align=&quot;right&quot; | 1
 | colspan=&quot;2&quot; | &amp;nbsp;
 | align=&quot;right&quot; | 5,040
 |-
 ! 8
 | align=&quot;right&quot; | 14,833
 | align=&quot;right&quot; | 14,832
 | align=&quot;right&quot; | 7,420
 | align=&quot;right&quot; | 2,464
 | align=&quot;right&quot; | 630
 | align=&quot;right&quot; | 112
 | align=&quot;right&quot; | 28
 | align=&quot;right&quot; | 0
 | align=&quot;right&quot; | 1
 | colspan=&quot;1&quot; | &amp;nbsp;
 | align=&quot;right&quot; | 40,320
 |-
 ! 9
 | align=&quot;right&quot; | 133,496
 | align=&quot;right&quot; | 133,497
 | align=&quot;right&quot; | 66,744
 | align=&quot;right&quot; | 22,260
 | align=&quot;right&quot; | 5,544
 | align=&quot;right&quot; | 1,134
 | align=&quot;right&quot; | 168
 | align=&quot;right&quot; | 36
 | align=&quot;right&quot; | 0
 | align=&quot;right&quot; | 1
 | align=&quot;right&quot; | 362,880
 |-
 ! &amp;nbsp;
 ! 0
 ! 1
 ! 2
 ! 3
 ! 4
 ! 5
 ! 6
 ! 7
 ! 8
 ! 9
 ! sum
 |}
 
 ==குறிப்புகள்==
 {{reflist|3}}
 
 ==மேற்கோள்கள்==
 * {{citation|first=Richard A.|last=Brualdi|title=Introductory Combinatorics|edition=5th|publisher=Prentice-Hall|year=2010|isbn=978-0-13-602040-0}}
 * {{citation|first=Peter J.|last=Cameron|title=Combinatorics: Topics, Techniques, Algorithms|year=1994|publisher=Cambridge University Press|isbn=0-521-45761-0}}
 * {{citation|first=Larry J.|last=Gerstein|title=Discrete Mathematics and Algebraic Structures|year=1987|publisher=W.H. Freeman and Co.|isbn=0-7167-1804-9}}