products/sources/formale Sprachen/GAP/pkg/datastructures/doc/chap10_mj.html
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd " >
<html xmlns="http://www.w3.org/1999/xhtml " xml:lang="en" >
<head >
<script type="text/javascript"
src="https://cdn.jsdelivr.net/npm/mathjax@2/MathJax.js?config=TeX-AMS-MML_HTMLorMML " >
</script >
<title >GAP (datastructures) - Chapter 10: Ordered Set Datastructures</title >
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta name="generator" content="GAPDoc2HTML" />
<link rel="stylesheet" type="text/css" href="manual.css" />
<script src="manual.js" type="text/javascript" ></script >
<script type="text/javascript" >overwriteStyle();</script >
</head >
<body class="chap10" onload="jscontent()" >
<div class="chlinktop" ><span class="chlink1" >Goto Chapter: </span ><a href="chap0_mj.html" >Top</a> <a href="chap1_mj.html" >1</a> <a href="chap2_mj.html" >2</a> <a href="chap3_mj.html" >3</a> <a href="chap4_mj.html" >4</a> <a href="chap5_mj.html" >5</a> <a href="chap6_mj.html" >6</a> <a href="chap7_mj.html" >7</a> <a href="chap8_mj.html" >8</a> <a href="chap9_mj.html" >9</a> <a href="chap10_mj.html" >10</a> <a href="chap11_mj.html" >11</a> <a href="chap12_mj.html" >12</a> <a href="chapBib_mj.html" >Bib</a> <a href="chapInd_mj.html" >Ind</a> </div >
<div class="chlinkprevnexttop" > <a href="chap0_mj.html" >[Top of Book]</a> <a href="chap0_mj.html#contents" >[Contents]</a> <a href="chap9_mj.html" >[Previous Chapter]</a> <a href="chap11_mj.html" >[Next Chapter]</a> </div >
<p id="mathjaxlink" class="pcenter" ><a href="chap10.html" >[MathJax off]</a></p>
<p><a id="X8134174379D8CD1E" name="X8134174379D8CD1E" ></a></p>
<div class="ChapSects" ><a href="chap10_mj.html#X8134174379D8CD1E" >10 <span class="Heading" >Ordered Set Datastructures</span ></a>
<div class="ContSect" ><span class="tocline" ><span class="nocss" > </span ><a href="chap10_mj.html#X86A9B6F87E619FFF" >10.1 <span class="Heading" >Usage</span ></a>
</span >
</div >
<div class="ContSect" ><span class="tocline" ><span class="nocss" > </span ><a href="chap10_mj.html#X7C5F33687C53BEF0" >10.2 <span class="Heading" >API</span ></a>
</span >
<div class="ContSSBlock" >
<span class="ContSS" ><br /><span class="nocss" > </span ><a href="chap10_mj.html#X829BF6468120FCF4" >10.2-1 IsOrderedSetDS</a></span >
<span class="ContSS" ><br /><span class="nocss" > </span ><a href="chap10_mj.html#X83DF983D824ADA52" >10.2-2 IsStandardOrderedSetDS</a></span >
<span class="ContSS" ><br /><span class="nocss" > </span ><a href="chap10_mj.html#X7C0A0ACD833B09E8" >10.2-3 OrderedSetDS</a></span >
<span class="ContSS" ><br /><span class="nocss" > </span ><a href="chap10_mj.html#X784F06667B9CAE61" >10.2-4 OrderedSetDS</a></span >
<span class="ContSS" ><br /><span class="nocss" > </span ><a href="chap10_mj.html#X82EBF9967A1BC1F4" >10.2-5 OrderedSetDS</a></span >
<span class="ContSS" ><br /><span class="nocss" > </span ><a href="chap10_mj.html#X7B3E75657C8758DA" >10.2-6 OrderedSetDS</a></span >
<span class="ContSS" ><br /><span class="nocss" > </span ><a href="chap10_mj.html#X7EE9AD66864EFD95" >10.2-7 OrderedSetDS</a></span >
<span class="ContSS" ><br /><span class="nocss" > </span ><a href="chap10_mj.html#X84341B117B22B200" >10.2-8 OrderedSetDS</a></span >
<span class="ContSS" ><br /><span class="nocss" > </span ><a href="chap10_mj.html#X87CC3ADD8273BDDC" >10.2-9 OrderedSetDS</a></span >
<span class="ContSS" ><br /><span class="nocss" > </span ><a href="chap10_mj.html#X785F29D484E84A9B" >10.2-10 AddSet</a></span >
<span class="ContSS" ><br /><span class="nocss" > </span ><a href="chap10_mj.html#X79CA0BD27822C1FB" >10.2-11 RemoveSet</a></span >
<span class="ContSS" ><br /><span class="nocss" > </span ><a href="chap10_mj.html#X7DD7225D7A6F92C6" ><code >10.2-12 \in</code ></a></span >
<span class="ContSS" ><br /><span class="nocss" > </span ><a href="chap10_mj.html#X85F4EDA0841AADFD" >10.2-13 LessFunction</a></span >
<span class="ContSS" ><br /><span class="nocss" > </span ><a href="chap10_mj.html#X7B2E5BB28435AE50" >10.2-14 Size</a></span >
<span class="ContSS" ><br /><span class="nocss" > </span ><a href="chap10_mj.html#X83A682A08318DBA0" >10.2-15 IteratorSorted</a></span >
</div ></div >
<div class="ContSect" ><span class="tocline" ><span class="nocss" > </span ><a href="chap10_mj.html#X8373B442852AB64B" >10.3 <span class="Heading" >Default methods</span ></a>
</span >
<div class="ContSSBlock" >
<span class="ContSS" ><br /><span class="nocss" > </span ><a href="chap10_mj.html#X805D48307D3FBC57" >10.3-1 Iterator</a></span >
<span class="ContSS" ><br /><span class="nocss" > </span ><a href="chap10_mj.html#X7BA094DE791ADBC1" >10.3-2 AsSSortedList</a></span >
<span class="ContSS" ><br /><span class="nocss" > </span ><a href="chap10_mj.html#X7CEA1C9283A69F26" >10.3-3 AsSortedList</a></span >
<span class="ContSS" ><br /><span class="nocss" > </span ><a href="chap10_mj.html#X84A6178D7F4FEF35" >10.3-4 AsList</a></span >
<span class="ContSS" ><br /><span class="nocss" > </span ><a href="chap10_mj.html#X7B0571977A8480EA" >10.3-5 EnumeratorSorted</a></span >
<span class="ContSS" ><br /><span class="nocss" > </span ><a href="chap10_mj.html#X786CD5B57A439204" >10.3-6 Enumerator</a></span >
<span class="ContSS" ><br /><span class="nocss" > </span ><a href="chap10_mj.html#X7DD174FE79F86562" >10.3-7 IsEmpty</a></span >
<span class="ContSS" ><br /><span class="nocss" > </span ><a href="chap10_mj.html#X78B39A307B3B8879" >10.3-8 Length</a></span >
<span class="ContSS" ><br /><span class="nocss" > </span ><a href="chap10_mj.html#X81CAD5FC819FD0AA" >10.3-9 Position</a></span >
<span class="ContSS" ><br /><span class="nocss" > </span ><a href="chap10_mj.html#X7B74B4107A33E68A" >10.3-10 PositionSortedOp</a></span >
<span class="ContSS" ><br /><span class="nocss" > </span ><a href="chap10_mj.html#X7FDCE67179997482" >10.3-11 PositionSortedOp</a></span >
</div ></div >
</div >
<h3>10 <span class="Heading" >Ordered Set Datastructures</span ></h3>
<p>In this chapter we deal with datastructures designed to represent sets of objects which have an intrinsic ordering. Such datastructures should support fast (possibly amortised) <span class="SimpleMath" >\(O(\log n)\)</span > addition, deletion and membership test operations and allow efficient iteration through all the objects in the datastructure in the order determined by the given comparison function. Since they represent a set, adding an object equal to one already present has no effect.</p>
<p>We refer to these as ordered set <em >datastructure</em > because the differ from the <strong class="pkg" >GAP</strong > notion of a set in a number of ways:</p>
<ul >
<li ><p>They all lie in a common family <code class="code" >OrderedSetDSFamily</code > and pay no attention to the families of the objects stored in them.</p>
</li >
<li ><p>Equality of these structures is by identity, not equality of the represented set</p>
</li >
<li ><p>The ordering of the objects in the set does not have to be default <strong class="pkg" >GAP</strong > ordering "less than" , but is determined by the attribute <code class="func" >LessFunction</code > (<a href="chap10_mj.html#X85F4EDA0841AADFD" ><span class="RefLink" >10.2-13</span ></a>)</p>
</li >
</ul >
<p>Three implementations of ordered set data structures are currently included: skiplists, binary search trees and (as a specialisation of binary search trees) AVL trees. AVL trees seem to be the fastest in general, and memory usage is similar. More details to come</p>
<p><a id="X86A9B6F87E619FFF" name="X86A9B6F87E619FFF" ></a></p>
<h4>10.1 <span class="Heading" >Usage</span ></h4>
<div class="example" ><pre >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >s := OrderedSetDS(IsSkipListRep, {x,y} -> String(x) < String(y));</span >
<skiplist 0 entries>
<span class="GAPprompt" >gap></span > <span class="GAPinput" >Addset(s, 1);</span >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >AddSet(s, 2);</span >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >AddSet(s, 10);</span >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >AddSet(s, (1,2,3));</span >
<span class="GAPprompt" >gap></span > <span class="GAPinput" >RemoveSet(s, (1,2,3));</span >
1
<span class="GAPprompt" >gap></span > <span class="GAPinput" >AsListSorted(s);</span >
[ 1, 10, 2 ]
<span class="GAPprompt" >gap></span > <span class="GAPinput" >b := OrderedSetDS(IsBinarySearchTreeRep, Primes);</span >
<bst size 168>
<span class="GAPprompt" >gap></span > <span class="GAPinput" >91 in b;</span >
false
<span class="GAPprompt" >gap></span > <span class="GAPinput" >97 in b;</span >
true
</pre ></div >
<p><a id="X7C5F33687C53BEF0" name="X7C5F33687C53BEF0" ></a></p>
<h4>10.2 <span class="Heading" >API</span ></h4>
<p>Every implementation of an ordered set datastructure must follow the API set out below</p>
<p><a id="X829BF6468120FCF4" name="X829BF6468120FCF4" ></a></p>
<h5>10.2-1 IsOrderedSetDS</h5>
<div class="func" ><table class="func" width="100%" ><tr ><td class="tdleft" ><code class="func" >‣ IsOrderedSetDS</code >( <var class="Arg" >arg</var > )</td ><td class="tdright" >( filter )</td ></tr ></table ></div >
<p>Returns: <code class="keyw" >true</code > or <code class="keyw" >false</code ></p>
<p>Category of ordered set.</p>
<p><a id="X83DF983D824ADA52" name="X83DF983D824ADA52" ></a></p>
<h5>10.2-2 IsStandardOrderedSetDS</h5>
<div class="func" ><table class="func" width="100%" ><tr ><td class="tdleft" ><code class="func" >‣ IsStandardOrderedSetDS</code >( <var class="Arg" >arg</var > )</td ><td class="tdright" >( filter )</td ></tr ></table ></div >
<p>Returns: <code class="keyw" >true</code > or <code class="keyw" >false</code ></p>
<p>Subcategory of ordered sets where the ordering is <strong class="pkg" >GAP</strong >'s default <
<p><a id="X7C0A0ACD833B09E8" name="X7C0A0ACD833B09E8" ></a></p>
<h5>10.2-3 OrderedSetDS</h5>
<div class="func" ><table class="func" width="100%" ><tr ><td class="tdleft" ><code class="func" >‣ OrderedSetDS</code >( <var class="Arg" >filter</var >[, <var class="Arg" >lessThan</var >[, <var class="Arg" >initialEntries</var >[, <var class="Arg" >randomSource</var >]]] )</td ><td class="tdright" >( constructor )</td ></tr ></table ></div >
<p>Returns: an ordered set datastructure</p>
<p>The family that contains all ordered set datastructures. Constructors for ordered sets</p>
<p>The argument <var class="Arg" >filter</var > is a filter that the resulting ordered set object will have.</p>
<p>The optional argument <var class="Arg" >lessThan</var > must be a binary function that returns <code class="keyw" >true</code > if its first argument is less than its second argument, and <code class="keyw" >false</code > otherwise. The default <var class="Arg" >lessThan</var > is <strong class="pkg" >GAP</strong >'s built in <.
<p>The optional argument <var class="Arg" > initialEntries</var > gives a collection of elements that the ordered set is initialised with, and defaults to the empty set.</p>
<p>The optional argument <var class="Arg" >randomSource</var > is useful in a number of possible implementations that use randomised methods to achieve good amortised complexity with high probability and simple data structures. It defaults to the global Mersenne twister.</p>
<p><a id="X784F06667B9CAE61" name="X784F06667B9CAE61" ></a></p>
<h5>10.2-4 OrderedSetDS</h5>
<div class="func" ><table class="func" width="100%" ><tr ><td class="tdleft" ><code class="func" >‣ OrderedSetDS</code >( <var class="Arg" >arg1</var >, <var class="Arg" >arg2</var >, <var class="Arg" >arg3</var > )</td ><td class="tdright" >( constructor )</td ></tr ></table ></div >
<p><a id="X82EBF9967A1BC1F4" name="X82EBF9967A1BC1F4" ></a></p>
<h5>10.2-5 OrderedSetDS</h5>
<div class="func" ><table class="func" width="100%" ><tr ><td class="tdleft" ><code class="func" >‣ OrderedSetDS</code >( <var class="Arg" >arg1</var >, <var class="Arg" >arg2</var >, <var class="Arg" >arg3</var > )</td ><td class="tdright" >( constructor )</td ></tr ></table ></div >
<p><a id="X7B3E75657C8758DA" name="X7B3E75657C8758DA" ></a></p>
<h5>10.2-6 OrderedSetDS</h5>
<div class="func" ><table class="func" width="100%" ><tr ><td class="tdleft" ><code class="func" >‣ OrderedSetDS</code >( <var class="Arg" >arg1</var >, <var class="Arg" >arg2</var >, <var class="Arg" >arg3</var > )</td ><td class="tdright" >( constructor )</td ></tr ></table ></div >
<p><a id="X7EE9AD66864EFD95" name="X7EE9AD66864EFD95" ></a></p>
<h5>10.2-7 OrderedSetDS</h5>
<div class="func" ><table class="func" width="100%" ><tr ><td class="tdleft" ><code class="func" >‣ OrderedSetDS</code >( <var class="Arg" >arg1</var >, <var class="Arg" >arg2</var > )</td ><td class="tdright" >( constructor )</td ></tr ></table ></div >
<p><a id="X84341B117B22B200" name="X84341B117B22B200" ></a></p>
<h5>10.2-8 OrderedSetDS</h5>
<div class="func" ><table class="func" width="100%" ><tr ><td class="tdleft" ><code class="func" >‣ OrderedSetDS</code >( <var class="Arg" >arg1</var >, <var class="Arg" >arg2</var > )</td ><td class="tdright" >( constructor )</td ></tr ></table ></div >
<p><a id="X87CC3ADD8273BDDC" name="X87CC3ADD8273BDDC" ></a></p>
<h5>10.2-9 OrderedSetDS</h5>
<div class="func" ><table class="func" width="100%" ><tr ><td class="tdleft" ><code class="func" >‣ OrderedSetDS</code >( <var class="Arg" >arg</var > )</td ><td class="tdright" >( constructor )</td ></tr ></table ></div >
<p><a id="X785F29D484E84A9B" name="X785F29D484E84A9B" ></a></p>
<h5>10.2-10 AddSet</h5>
<div class="func" ><table class="func" width="100%" ><tr ><td class="tdleft" ><code class="func" >‣ AddSet</code >( <var class="Arg" >set</var >, <var class="Arg" >object </var > )</td ><td class="tdright" >( operation )</td ></tr ></table ></div >
<p>Other constructors cover making an ordered set from another ordered set, from an iterator, from a function and an iterator, or from a function, an iterator and a random source .</p>
<p>Adds <var class="Arg" >object </var > to <var class="Arg" >set</var >. Does nothing if <var class="Arg" >object </var ><code class="code" >in</code ><var class="Arg" >set</var >set.</p>
<p><a id="X79CA0BD27822C1FB" name="X79CA0BD27822C1FB" ></a></p>
<h5>10.2-11 RemoveSet</h5>
<div class="func" ><table class="func" width="100%" ><tr ><td class="tdleft" ><code class="func" >‣ RemoveSet</code >( <var class="Arg" >set</var >, <var class="Arg" >object </var > )</td ><td class="tdright" >( operation )</td ></tr ></table ></div >
<p>Returns: <code class="keyw" >0</code > or <code class="keyw" >1</code ></p>
<p>Removes <var class="Arg" >object </var > from <var class="Arg" >set</var > if present, and returns the number of copies of <var class="Arg" >object </var > that were in <var class="Arg" >set</var >, that is <code class="keyw" >0</code > or <code class="keyw" >1</code >. This for consistency with multisets.</p>
<p><a id="X7DD7225D7A6F92C6" name="X7DD7225D7A6F92C6" ></a></p>
<h5><code >10.2-12 \in</code ></h5>
<div class="func" ><table class="func" width="100%" ><tr ><td class="tdleft" ><code class="func" >‣ \in</code >( <var class="Arg" >object </var >, <var class="Arg" >set</var > )</td ><td class="tdright" >( operation )</td ></tr ></table ></div >
<p>All objects in IsOrderedSetDS must implement \in, which returns <var class="Arg" >true</var > if <var class="Arg" >object </var > is present in <var class="Arg" >set</var > and <code class="keyw" >false</code > otherwise.</p>
<p><a id="X85F4EDA0841AADFD" name="X85F4EDA0841AADFD" ></a></p>
<h5>10.2-13 LessFunction</h5>
<div class="func" ><table class="func" width="100%" ><tr ><td class="tdleft" ><code class="func" >‣ LessFunction</code >( <var class="Arg" >set</var > )</td ><td class="tdright" >( attribute )</td ></tr ></table ></div >
<p>The binary function to perform the comparison for elements of the set.</p>
<p><a id="X7B2E5BB28435AE50" name="X7B2E5BB28435AE50" ></a></p>
<h5>10.2-14 Size</h5>
<div class="func" ><table class="func" width="100%" ><tr ><td class="tdleft" ><code class="func" >‣ Size</code >( <var class="Arg" >set</var > )</td ><td class="tdright" >( attribute )</td ></tr ></table ></div >
<p>The number of objects in the set</p>
<p><a id="X83A682A08318DBA0" name="X83A682A08318DBA0" ></a></p>
<h5>10.2-15 IteratorSorted</h5>
<div class="func" ><table class="func" width="100%" ><tr ><td class="tdleft" ><code class="func" >‣ IteratorSorted</code >( <var class="Arg" >set</var > )</td ><td class="tdright" >( operation )</td ></tr ></table ></div >
<p>Returns: iterator</p>
<p>Returns an iterator of <var class="Arg" >set</var > that can be used to iterate through the elements of <var class="Arg" >set</var > in the order imposed by <code class="func" >LessFunction</code > (<a href="chap10_mj.html#X85F4EDA0841AADFD" ><span class="RefLink" >10.2-13</span ></a>).</p>
<p><a id="X8373B442852AB64B" name="X8373B442852AB64B" ></a></p>
<h4>10.3 <span class="Heading" >Default methods</span ></h4>
<p>Default methods based on <code class="func" >IteratorSorted</code > (<a href="/home/runner/gap/doc/ref/chap30_mj.html#X8688C20B828FC129" ><span class="RefLink" >Reference: IteratorSorted</span ></a>) are installed for the following operations and attributes, but can be overridden for data structures that support better algorithms.</p>
<p><a id="X805D48307D3FBC57" name="X805D48307D3FBC57" ></a></p>
<h5>10.3-1 Iterator</h5>
<div class="func" ><table class="func" width="100%" ><tr ><td class="tdleft" ><code class="func" >‣ Iterator</code >( <var class="Arg" >arg</var > )</td ><td class="tdright" >( operation )</td ></tr ></table ></div >
<p><a id="X7BA094DE791ADBC1" name="X7BA094DE791ADBC1" ></a></p>
<h5>10.3-2 AsSSortedList</h5>
<div class="func" ><table class="func" width="100%" ><tr ><td class="tdleft" ><code class="func" >‣ AsSSortedList</code >( <var class="Arg" >arg</var > )</td ><td class="tdright" >( attribute )</td ></tr ></table ></div >
<p><a id="X7CEA1C9283A69F26" name="X7CEA1C9283A69F26" ></a></p>
<h5>10.3-3 AsSortedList</h5>
<div class="func" ><table class="func" width="100%" ><tr ><td class="tdleft" ><code class="func" >‣ AsSortedList</code >( <var class="Arg" >arg</var > )</td ><td class="tdright" >( attribute )</td ></tr ></table ></div >
<p><a id="X84A6178D7F4FEF35" name="X84A6178D7F4FEF35" ></a></p>
<h5>10.3-4 AsList</h5>
<div class="func" ><table class="func" width="100%" ><tr ><td class="tdleft" ><code class="func" >‣ AsList</code >( <var class="Arg" >arg</var > )</td ><td class="tdright" >( attribute )</td ></tr ></table ></div >
<p><a id="X7B0571977A8480EA" name="X7B0571977A8480EA" ></a></p>
<h5>10.3-5 EnumeratorSorted</h5>
<div class="func" ><table class="func" width="100%" ><tr ><td class="tdleft" ><code class="func" >‣ EnumeratorSorted</code >( <var class="Arg" >arg</var > )</td ><td class="tdright" >( attribute )</td ></tr ></table ></div >
<p><a id="X786CD5B57A439204" name="X786CD5B57A439204" ></a></p>
<h5>10.3-6 Enumerator</h5>
<div class="func" ><table class="func" width="100%" ><tr ><td class="tdleft" ><code class="func" >‣ Enumerator</code >( <var class="Arg" >arg</var > )</td ><td class="tdright" >( attribute )</td ></tr ></table ></div >
<p><a id="X7DD174FE79F86562" name="X7DD174FE79F86562" ></a></p>
<h5>10.3-7 IsEmpty</h5>
<div class="func" ><table class="func" width="100%" ><tr ><td class="tdleft" ><code class="func" >‣ IsEmpty</code >( <var class="Arg" >arg</var > )</td ><td class="tdright" >( property )</td ></tr ></table ></div >
<p>Returns: <code class="keyw" >true</code > or <code class="keyw" >false</code ></p>
<p><a id="X78B39A307B3B8879" name="X78B39A307B3B8879" ></a></p>
<h5>10.3-8 Length</h5>
<div class="func" ><table class="func" width="100%" ><tr ><td class="tdleft" ><code class="func" >‣ Length</code >( <var class="Arg" >arg</var > )</td ><td class="tdright" >( attribute )</td ></tr ></table ></div >
<p><a id="X81CAD5FC819FD0AA" name="X81CAD5FC819FD0AA" ></a></p>
<h5>10.3-9 Position</h5>
<div class="func" ><table class="func" width="100%" ><tr ><td class="tdleft" ><code class="func" >‣ Position</code >( <var class="Arg" >arg1</var >, <var class="Arg" >arg2</var >, <var class="Arg" >arg3</var > )</td ><td class="tdright" >( operation )</td ></tr ></table ></div >
<p><a id="X7B74B4107A33E68A" name="X7B74B4107A33E68A" ></a></p>
<h5>10.3-10 PositionSortedOp</h5>
<div class="func" ><table class="func" width="100%" ><tr ><td class="tdleft" ><code class="func" >‣ PositionSortedOp</code >( <var class="Arg" >arg1</var >, <var class="Arg" >arg2</var > )</td ><td class="tdright" >( operation )</td ></tr ></table ></div >
<p><a id="X7FDCE67179997482" name="X7FDCE67179997482" ></a></p>
<h5>10.3-11 PositionSortedOp</h5>
<div class="func" ><table class="func" width="100%" ><tr ><td class="tdleft" ><code class="func" >‣ PositionSortedOp</code >( <var class="Arg" >arg1</var >, <var class="Arg" >arg2</var >, <var class="Arg" >arg3</var > )</td ><td class="tdright" >( operation )</td ></tr ></table ></div >
<div class="chlinkprevnextbot" > <a href="chap0_mj.html" >[Top of Book]</a> <a href="chap0_mj.html#contents" >[Contents]</a> <a href="chap9_mj.html" >[Previous Chapter]</a> <a href="chap11_mj.html" >[Next Chapter]</a> </div >
<div class="chlinkbot" ><span class="chlink1" >Goto Chapter: </span ><a href="chap0_mj.html" >Top</a> <a href="chap1_mj.html" >1</a> <a href="chap2_mj.html" >2</a> <a href="chap3_mj.html" >3</a> <a href="chap4_mj.html" >4</a> <a href="chap5_mj.html" >5</a> <a href="chap6_mj.html" >6</a> <a href="chap7_mj.html" >7</a> <a href="chap8_mj.html" >8</a> <a href="chap9_mj.html" >9</a> <a href="chap10_mj.html" >10</a> <a href="chap11_mj.html" >11</a> <a href="chap12_mj.html" >12</a> <a href="chapBib_mj.html" >Bib</a> <a href="chapInd_mj.html" >Ind</a> </div >
<hr />
<p class="foot" >generated by <a href="https://www.math.rwth-aachen.de/~Frank.Luebeck/GAPDoc " >GAPDoc2HTML</a></p>
</body >
</html >
quality 94%
¤ Dauer der Verarbeitung: 0.14 Sekunden
(vorverarbeitet)
¤
*© Formatika GbR, Deutschland