Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/GAP/pkg/genss/doc/   (Algebra von RWTH Aachen Version 4.15.1©)  Datei vom 29.6.2024 mit Größe 14 kB image not shown  

Quelle  chap4.html   Sprache: HTML

 
 products/sources/formale Sprachen/GAP/pkg/genss/doc/chap4.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>
<title>GAP (genss) - Chapter 4: Backtrack search methods</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="chap4"  onload="jscontent()">


<div class="chlinktop"><span class="chlink1">Goto Chapter: </span><a href="chap0.html">Top</a>  <a href="chap1.html">1</a>  <a href="chap2.html">2</a>  <a href="chap3.html">3</a>  <a href="chap4.html">4</a>  <a href="chap5.html">5</a>  <a href="chapBib.html">Bib</a>  <a href="chapInd.html">Ind</a>  </div>

<div class="chlinkprevnexttop"> <a href="chap0.html">[Top of Book]</a>   <a href="chap0.html#contents">[Contents]</a>    <a href="chap3.html">[Previous Chapter]</a>    <a href="chap5.html">[Next Chapter]</a>   </div>

<p id="mathjaxlink" class="pcenter"><a href="chap4_mj.html">[MathJax on]</a></p>
<p><a id="X7A4E22528475FE10" name="X7A4E22528475FE10"></a></p>
<div class="ChapSects"><a href="chap4.html#X7A4E22528475FE10">4 <span class="Heading">Backtrack search methods</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap4.html#X7D3782CF793C6AEE">4.1 <span class="Heading">Setwise stabilisers</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X82E47897844105A1">4.1-1 SetwiseStabilizer</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X80F3D70A80D2B4FD">4.1-2 SetwiseStabilizerPartitionBacktrack</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap4.html#X80EC4351864EAA8B">4.2 <span class="Heading">Generic backtrack search</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X8400084E83FD7EAF">4.2-1 BacktrackSearchStabilizerChainElement</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X7D31CCB08688F4E3">4.2-2 BacktrackSearchStabilizerChainSubgroup</a></span>
</div></div>
</div>

<h3>4 <span class="Heading">Backtrack search methods</span></h3>

<p>This chapter describes the methods for backtrack search in the <strong class="pkg">genss</strong> package. Note that the code in this area is not yet very stable and is almost certainly going to change in subsequent versions of this package. This might also concern the interfaces and calling conventions.</p>

<p><a id="X7D3782CF793C6AEE" name="X7D3782CF793C6AEE"></a></p>

<h4>4.1 <span class="Heading">Setwise stabilisers</span></h4>

<p><a id="X82E47897844105A1" name="X82E47897844105A1"></a></p>

<h5>4.1-1 SetwiseStabilizer</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SetwiseStabilizer</code>( <var class="Arg">G</var>, <var class="Arg">op</var>, <var class="Arg">M</var)</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: a record</p>

<p>This operation computes the setwise stabiliser of the set <var class="Arg">M</var>. So <var class="Arg">G</var> must be a group acting on some set <span class="SimpleMath">Ω</span>, this action is given by the action function <var class="Arg">op</var>. The set <var class="Arg">M</var> must consist of elements <span class="SimpleMath">Ω</span>. The result is a record with the components <code class="code">setstab</code> containing the setwise stabiliser and <code class="code">S</code> containing a stabiliser chain for it.</p>

<p>This operation uses backtrack search in a specially crafted stabiliser chain for <var class="Arg">G</var> doing not much intelligent pruning of the search tree, so expect possible long delays!</p>

<p><a id="X80F3D70A80D2B4FD" name="X80F3D70A80D2B4FD"></a></p>

<h5>4.1-2 SetwiseStabilizerPartitionBacktrack</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SetwiseStabilizerPartitionBacktrack</code>( <var class="Arg">G</var>, <var class="Arg">op</var>, <var class="Arg">M</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: a record</p>

<p>This operation computes the setwise stabiliser of the set <var class="Arg">M</var>. So <var class="Arg">G</var> must be a group acting on some set <span class="SimpleMath">Ω</span>, this action is given by the action function <var class="Arg">op</var>. The set <var class="Arg">M</var> must consist of elements <span class="SimpleMath">Ω</span>. The result is a record with the components <code class="code">setstab</code> containing the setwise stabiliser and <code class="code">S</code> containing a stabiliser chain for it.</p>

<p>This operation uses backtrack search in a specially crafted stabiliser chain for <var class="Arg">G</var>. It does some ideas coming from partition backtrack but does not (yet) implement a full featured partition backtrack, so expect possible longish delays!</p>

<p><a id="X80EC4351864EAA8B" name="X80EC4351864EAA8B"></a></p>

<h4>4.2 <span class="Heading">Generic backtrack search</span></h4>

<p><a id="X8400084E83FD7EAF" name="X8400084E83FD7EAF"></a></p>

<h5>4.2-1 BacktrackSearchStabilizerChainElement</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ BacktrackSearchStabilizerChainElement</code>( <var class="Arg">S</var>, <var class="Arg">P</var>, <var class="Arg">g</var>, <var class="Arg">pruner</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: <code class="keyw">fail</code> or a group element</p>

<p>Let <span class="SimpleMath">G</span> be the group described by the stabiliser chain <var class="Arg">S</var>. The group element <var class="Arg">g</var> must be some element in an overgroup <span class="SimpleMath">hat G</span>of <span class="SimpleMath">G</span> such that the function <var class="Arg">P</var> described below is defined on the whole of <span class="SimpleMath">hat G</span></p>

<p>This operation implements a generic backtrack search in the coset <span class="SimpleMath">G<var class="Arg">g</var></span> looking for an element <span class="SimpleMath">x in G</span> such that <var class="Arg">P</var><span class="SimpleMath">(x<var class="Arg">g</var>)</span> is <code class="keyw">true</code> where <var class="Arg">P</var> is a function on <span class="SimpleMath">hat G</span>taking values <code class="keyw">true</code> and <code class="keyw">false</code>. The operation returns the group element <span class="SimpleMath">x</span> if one is found or <code class="keyw">fail</code> if none was found.</p>

<p>The search tree is given by the stabiliser chain, each node corresponds to a right coset of one of the stabilisers in the chain. The leaves correspond to right cosets of the identity group, i.e. to group elements in <span class="SimpleMath">G<var class="Arg">g</var></span></p>

<p>To make this backtrack search efficient some pruning of the search tree has to be done. To this end there is the fourth argument <var class="Arg">pruner</var> which can either be <code class="keyw">false</code> (in which case no pruning at all happens) or a <strong class="pkg">GAP</strong> function taking 5 arguments and returning either <code class="keyw">true</code> or <code class="keyw">false</code>. The function <var class="Arg">pruner</var> is called for every node in the search tree before the backtrack search descents into the subtrees. If the <var class="Arg">pruner</var> function returns <code class="keyw">false</code>, the complete subtree starting at the current node is pruned and no further search is performed there. If the result is <code class="keyw">true</code> (or <var class="Arg">pruner</var> was equal to <code class="keyw">false</code> altogether) then the subtree starting at the current node is searched recursively. Obviously, the <var class="Arg">pruner</var> function needs to know the current position in the search tree, which it is told by its arguments.</p>

<p>Each node in the search tree corresponds to a coset of some stabiliser of the stabiliser chain in its previous one. To set up some notation, let <span class="Math"> G = S_0 > S_1 > S_2 > \cdots > S_m > S_{{m+1}} = \{1\} </span> be the stabiliser chain and let <span class="Math"> O_1, O_2, \ldots, O_m </span> be the basic orbits. Then for the node corresponding to the coset <span class="SimpleMath">S_i t<var class="Arg">g</var></span> for <span class="SimpleMath">i ≥ 1</span> and some transversal element <span class="SimpleMath">t</span> contained in <span class="SimpleMath">S_{i-1}</span> the arguments with which the <var class="Arg">pruner</var> function is called are the following: The first argument is the stabiliser chain object corresponding to <span class="SimpleMath">S_{i-1}</span>. The second argument is the index of the element in <span class="SimpleMath">O_i</span> corresponding to the transversal element <span class="SimpleMath">t</span>. The third argument is the group element <span class="SimpleMath">t<var class="Arg">g</var></span> and the fourth argument is equal to the actual transversal element <span class="SimpleMath">t</span>. The fifth argument is a word in the generators used to enumerate <span class="SimpleMath">O_i</span> expressing <span class="SimpleMath">t</span>, the word comes as a list of integers which are the generator numbers.</p>

<p><a id="X7D31CCB08688F4E3" name="X7D31CCB08688F4E3"></a></p>

<h5>4.2-2 BacktrackSearchStabilizerChainSubgroup</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ BacktrackSearchStabilizerChainSubgroup</code>( <var class="Arg">S</var>, <var class="Arg">P</var>, <var class="Arg">pruner</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: <code class="keyw">fail</code> or a stabiliser chain</p>

<p>Let <span class="SimpleMath">G</span> be the group described by the stabiliser chain <var class="Arg">S</var>. This operation implements a generic backtrack search in the stabiliser chain <var class="Arg">S</var> looking for the subgroup <span class="SimpleMath">H</span> of the group <span class="SimpleMath">G</span> described by <var class="Arg">S</var> of all elements <span class="SimpleMath">x</span> for which <var class="Arg">P</var><span class="SimpleMath">(x)</span> is <code class="keyw">true</code>, where <var class="Arg">P</var> is a function on <span class="SimpleMath">G</span> taking values <code class="keyw">true</code> or <code class="keyw">false</code>. Note that of course <var class="Arg">P</var> must be such that <span class="SimpleMath">H</span> is actually a subgroup! The operation returns a stabiliser chain describing the group <span class="SimpleMath">H</span>.</p>

<p>The search tree is given by the stabiliser chain, each node corresponds to a right coset of one of the stabilisers in the chain. The leaves correspond to right cosets of the identity group, i.e. to group elements in <span class="SimpleMath">G</span></p>

<p>To make this backtrack search efficient some pruning of the search tree has to be done. To this end there is the fourth argument <var class="Arg">pruner</var> which can either be <code class="keyw">false</code> (in which case no pruning at all happens) or a <strong class="pkg">GAP</strong> function taking 5 arguments and returning either <code class="keyw">true</code> or <code class="keyw">false</code>. The function <var class="Arg">pruner</var> is called for every node in the search tree before the backtrack search descents into the subtrees. If the <var class="Arg">pruner</var> function returns <code class="keyw">false</code>, the complete subtree starting at the current node is pruned and no further search is performed there. If the result is <code class="keyw">true</code> (or <var class="Arg">pruner</var> was equal to <code class="keyw">false</code> altogether) then the subtree starting at the current node is searched recursively. Obviously, the <var class="Arg">pruner</var> function needs to know the current position in the search tree, which it is told by its arguments.</p>

<p>Each node in the search tree corresponds to a coset of some stabiliser of the stabiliser chain in its previous one. To set up some notation, let <span class="Math"> G = S_0 > S_1 > S_2 > \cdots > S_m > S_{{m+1}} = \{1\} </span> be the stabiliser chain and let <span class="Math"> O_1, O_2, \ldots, O_m </span> be the basic orbits. Then for the node corresponding to the coset <span class="SimpleMath">S_i t<var class="Arg">g</var></span> for <span class="SimpleMath">i ≥ 1</span> and some transversal element <span class="SimpleMath">t</span> contained in <span class="SimpleMath">S_{i-1}</span> the arguments with which the <var class="Arg">pruner</var> function is called are the following: The first argument is the stabiliser chain object corresponding to <span class="SimpleMath">S_{i-1}</span>. The second argument is the index of the element in <span class="SimpleMath">O_i</span> corresponding to the transversal element <span class="SimpleMath">t</span>. The third and fourth arguments are the transversal element <span class="SimpleMath">t</span>. The fifth argument is a word in the generators used to enumerate <span class="SimpleMath">O_i</span> expressing <span class="SimpleMath">t</span>, the word comes as a list of integers which are the generator numbers.</p>


<div class="chlinkprevnextbot"> <a href="chap0.html">[Top of Book]</a>   <a href="chap0.html#contents">[Contents]</a>    <a href="chap3.html">[Previous Chapter]</a>    <a href="chap5.html">[Next Chapter]</a>   </div>


<div class="chlinkbot"><span class="chlink1">Goto Chapter: </span><a href="chap0.html">Top</a>  <a href="chap1.html">1</a>  <a href="chap2.html">2</a>  <a href="chap3.html">3</a>  <a href="chap4.html">4</a>  <a href="chap5.html">5</a>  <a href="chapBib.html">Bib</a>  <a href="chapInd.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>

Messung V0.5
C=96 H=100 G=97

¤ Dauer der Verarbeitung: 0.14 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.