Index: docs/html/class_t_s_p_solver_1_1_c_t_s_p_solver.html
===================================================================
--- docs/html/class_t_s_p_solver_1_1_c_t_s_p_solver.html	(revision f2ff738751206235dccf39660e064eb773012930)
+++ docs/html/class_t_s_p_solver_1_1_c_t_s_p_solver.html	(revision f2ff738751206235dccf39660e064eb773012930)
@@ -0,0 +1,478 @@
+<!-- This comment will put IE 6, 7 and 8 in quirks mode -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>TSPSG: TSP Solver and Generator: TSPSolver::CTSPSolver Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javaScript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body onload='searchBox.OnSelectItem(0);'>
+<!-- Generated by Doxygen 1.6.1 -->
+<script type="text/javascript"><!--
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+--></script>
+<script type="text/javascript">
+<!--
+function changeDisplayState (e){
+  var num=this.id.replace(/[^[0-9]/g,'');
+  var button=this.firstChild;
+  var sectionDiv=document.getElementById('dynsection'+num);
+  if (sectionDiv.style.display=='none'||sectionDiv.style.display==''){
+    sectionDiv.style.display='block';
+    button.src='open.gif';
+  }else{
+    sectionDiv.style.display='none';
+    button.src='closed.gif';
+  }
+}
+function initDynSections(){
+  var divs=document.getElementsByTagName('div');
+  var sectionCounter=1;
+  for(var i=0;i<divs.length-1;i++){
+    if(divs[i].className=='dynheader'&&divs[i+1].className=='dynsection'){
+      var header=divs[i];
+      var section=divs[i+1];
+      var button=header.firstChild;
+      if (button!='IMG'){
+        divs[i].insertBefore(document.createTextNode(' '),divs[i].firstChild);
+        button=document.createElement('img');
+        divs[i].insertBefore(button,divs[i].firstChild);
+      }
+      header.style.cursor='pointer';
+      header.onclick=changeDisplayState;
+      header.id='dynheader'+sectionCounter;
+      button.src='closed.gif';
+      section.id='dynsection'+sectionCounter;
+      section.style.display='none';
+      section.style.marginLeft='14px';
+      sectionCounter++;
+    }
+  }
+}
+window.onload = initDynSections;
+-->
+</script>
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <img id="MSearchSelect" src="search/search.png"
+             onmouseover="return searchBox.OnSearchSelectShow()"
+             onmouseout="return searchBox.OnSearchSelectHide()"
+             alt=""/>
+        <input type="text" id="MSearchField" value="Search" accesskey="S"
+             onfocus="searchBox.OnSearchFieldFocus(true)" 
+             onblur="searchBox.OnSearchFieldFocus(false)" 
+             onkeyup="searchBox.OnSearchFieldChange(event)"/>
+        <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+    </ul>
+  </div>
+  <div class="navpath"><a class="el" href="namespace_t_s_p_solver.html">TSPSolver</a>::<a class="el" href="class_t_s_p_solver_1_1_c_t_s_p_solver.html">CTSPSolver</a>
+  </div>
+</div>
+<div class="contents">
+<h1>TSPSolver::CTSPSolver Class Reference</h1><!-- doxytag: class="TSPSolver::CTSPSolver" --><!-- doxytag: inherits="QObject" -->
+<p>This class solves Travelling Salesman Problem task.  
+<a href="#_details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="tspsolver_8h_source.html">tspsolver.h</a>&gt;</code></p>
+<div class="dynheader">
+Inheritance diagram for TSPSolver::CTSPSolver:</div>
+<div class="dynsection">
+<div class="center"><img src="class_t_s_p_solver_1_1_c_t_s_p_solver__inherit__graph.png" border="0" usemap="#_t_s_p_solver_1_1_c_t_s_p_solver_inherit__map" alt="Inheritance graph"/></div>
+<map name="_t_s_p_solver_1_1_c_t_s_p_solver_inherit__map" id="_t_s_p_solver_1_1_c_t_s_p_solver_inherit__map">
+<area shape="rect" id="node2" doxygen="qt-4.6.tag:http://doc.trolltech.com/4.6/" href="http://doc.trolltech.com/4.6/qobject.html" title="QObject" alt="" coords="49,6,119,34"/>
+</map>
+<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
+<div class="dynheader">
+Collaboration diagram for TSPSolver::CTSPSolver:</div>
+<div class="dynsection">
+<div class="center"><img src="class_t_s_p_solver_1_1_c_t_s_p_solver__coll__graph.png" border="0" usemap="#_t_s_p_solver_1_1_c_t_s_p_solver_coll__map" alt="Collaboration graph"/></div>
+<map name="_t_s_p_solver_1_1_c_t_s_p_solver_coll__map" id="_t_s_p_solver_1_1_c_t_s_p_solver_coll__map">
+<area shape="rect" id="node2" doxygen="qt-4.6.tag:http://doc.trolltech.com/4.6/" href="http://doc.trolltech.com/4.6/qobject.html" title="QObject" alt="" coords="5,109,75,137"/>
+<area shape="rect" id="node4" doxygen="qt-4.6.tag:http://doc.trolltech.com/4.6/" href="http://doc.trolltech.com/4.6/qhash.html" title="QHash\&lt; int, int \&gt;" alt="" coords="99,109,219,137"/>
+<area shape="rect" id="node6" doxygen="qt-4.6.tag:http://doc.trolltech.com/4.6/" href="http://doc.trolltech.com/4.6/qmutex.html" title="QMutex" alt="" coords="243,109,309,137"/>
+<area shape="rect" id="node8" href="struct_t_s_p_solver_1_1_s_step.html" title="This structure represents one step of solving." alt="" coords="333,109,459,137"/>
+<area shape="rect" id="node10" doxygen="qt-4.6.tag:http://doc.trolltech.com/4.6/" href="http://doc.trolltech.com/4.6/qlist.html" title="QList\&lt; QList\&lt; double \&gt; \&gt;" alt="" coords="132,6,300,34"/>
+<area shape="rect" id="node12" doxygen="qt-4.6.tag:http://doc.trolltech.com/4.6/" href="http://doc.trolltech.com/4.6/qlist.html" title="QList\&lt; SCandidate \&gt;" alt="" coords="324,6,468,34"/>
+<area shape="rect" id="node14" href="struct_t_s_p_solver_1_1_s_step_1_1_s_candidate.html" title="A structure that represents a candidate for branching." alt="" coords="492,6,692,34"/>
+</map>
+<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
+
+<p><a href="class_t_s_p_solver_1_1_c_t_s_p_solver-members.html">List of all members.</a></p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Public Slots</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a46a3da58d4bb9431bea2c915ceaf1eea"></a><!-- doxytag: member="TSPSolver::CTSPSolver::cancel" ref="a46a3da58d4bb9431bea2c915ceaf1eea" args="()" -->
+void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_s_p_solver_1_1_c_t_s_p_solver.html#a46a3da58d4bb9431bea2c915ceaf1eea">cancel</a> ()</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Cancels the solution process. <br/></td></tr>
+<tr><td colspan="2"><h2>Signals</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_s_p_solver_1_1_c_t_s_p_solver.html#a5e02867f053089a3e096f6baa70499a2">routePartFound</a> (int n)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This signal is emitted once every time a part of the route is found.  <a href="#a5e02867f053089a3e096f6baa70499a2"></a><br/></td></tr>
+<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_s_p_solver_1_1_c_t_s_p_solver.html#a71bebe073ed5149a4558a779410a2e6b">CTSPSolver</a> (<a class="elRef" doxygen="qt-4.6.tag:http://doc.trolltech.com/4.6/" href="http://doc.trolltech.com/4.6/qobject.html">QObject</a> *<a class="elRef" doxygen="qt-4.6.tag:http://doc.trolltech.com/4.6/" href="http://doc.trolltech.com/4.6/qobject.html#parent">parent</a>=NULL)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Constructs <a class="el" href="class_t_s_p_solver_1_1_c_t_s_p_solver.html" title="This class solves Travelling Salesman Problem task.">CTSPSolver</a> object.  <a href="#a71bebe073ed5149a4558a779410a2e6b"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_s_p_solver_1_1_c_t_s_p_solver.html#a3ef198959f1b4c32b84fbd5222f8b796">cleanup</a> (bool processEvents=false)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Cleans up the object and frees up memory used by the solution tree.  <a href="#a3ef198959f1b4c32b84fbd5222f8b796"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="elRef" doxygen="qt-4.6.tag:http://doc.trolltech.com/4.6/" href="http://doc.trolltech.com/4.6/qstring.html">QString</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_s_p_solver_1_1_c_t_s_p_solver.html#a8897c0737ef2451ae606c38113477521">getSortedPath</a> (const <a class="elRef" doxygen="qt-4.6.tag:http://doc.trolltech.com/4.6/" href="http://doc.trolltech.com/4.6/qstring.html">QString</a> &amp;city, const <a class="elRef" doxygen="qt-4.6.tag:http://doc.trolltech.com/4.6/" href="http://doc.trolltech.com/4.6/qstring.html">QString</a> &amp;separator=&quot; -&gt; &quot;) const </td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the sorted optimal path, starting from City 1.  <a href="#a8897c0737ef2451ae606c38113477521"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_s_p_solver_1_1_c_t_s_p_solver.html#a721973cc992b62750aae6fd3ab65773d">getTotalSteps</a> () const </td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns a total number of steps in the current solution.  <a href="#a721973cc992b62750aae6fd3ab65773d"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_s_p_solver_1_1_c_t_s_p_solver.html#a2b82ac68b981c47a3261f4e4e9ecd2bd">isOptimal</a> () const </td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Indicates whether or not the solution is definitely optimal.  <a href="#a2b82ac68b981c47a3261f4e4e9ecd2bd"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct_t_s_p_solver_1_1_s_step.html">SStep</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_s_p_solver_1_1_c_t_s_p_solver.html#ab8a5a387deebffd898577dba31a95099">solve</a> (int numCities, const <a class="elRef" doxygen="qt-4.6.tag:http://doc.trolltech.com/4.6/" href="http://doc.trolltech.com/4.6/qlist.html">TMatrix</a> &amp;task)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Solves the given task.  <a href="#ab8a5a387deebffd898577dba31a95099"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_s_p_solver_1_1_c_t_s_p_solver.html#a6cce9079d60735f92037c98d6d361a82">wasCanceled</a> () const </td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Indicates whether or not the solution process was canceled.  <a href="#a6cce9079d60735f92037c98d6d361a82"></a><br/></td></tr>
+<tr><td colspan="2"><h2>Static Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="elRef" doxygen="qt-4.6.tag:http://doc.trolltech.com/4.6/" href="http://doc.trolltech.com/4.6/qstring.html">QString</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_s_p_solver_1_1_c_t_s_p_solver.html#a71d04cbead3508cdff606a5ccc79e59e">getVersionId</a> ()</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns CTSPSolver's version ID.  <a href="#a71d04cbead3508cdff606a5ccc79e59e"></a><br/></td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>This class solves Travelling Salesman Problem task. </p>
+<dl class="author"><dt><b>Author:</b></dt><dd>Copyright &copy; 2007-2010 Lёppa &lt;contacts[at]oleksii[dot]name&gt; </dd></dl>
+<hr/><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="a71bebe073ed5149a4558a779410a2e6b"></a><!-- doxytag: member="TSPSolver::CTSPSolver::CTSPSolver" ref="a71bebe073ed5149a4558a779410a2e6b" args="(QObject *parent=NULL)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">TSPSolver::CTSPSolver::CTSPSolver </td>
+          <td>(</td>
+          <td class="paramtype"><a class="elRef" doxygen="qt-4.6.tag:http://doc.trolltech.com/4.6/" href="http://doc.trolltech.com/4.6/qobject.html">QObject</a> *&nbsp;</td>
+          <td class="paramname"> <em>parent</em> = <code>NULL</code></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Constructs <a class="el" href="class_t_s_p_solver_1_1_c_t_s_p_solver.html" title="This class solves Travelling Salesman Problem task.">CTSPSolver</a> object. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>parent</em>&nbsp;</td><td>A parent object. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="a3ef198959f1b4c32b84fbd5222f8b796"></a><!-- doxytag: member="TSPSolver::CTSPSolver::cleanup" ref="a3ef198959f1b4c32b84fbd5222f8b796" args="(bool processEvents=false)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void TSPSolver::CTSPSolver::cleanup </td>
+          <td>(</td>
+          <td class="paramtype">bool&nbsp;</td>
+          <td class="paramname"> <em>processEvents</em> = <code>false</code></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Cleans up the object and frees up memory used by the solution tree. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>processEvents</em>&nbsp;</td><td>If set to <code>true</code> then <a class="elRef" doxygen="qt-4.6.tag:http://doc.trolltech.com/4.6/" href="http://doc.trolltech.com/4.6/qcoreapplication.html#processEvents">QCoreApplication::processEvents(QEventLoop::ExcludeUserInputEvents)</a> will be called from time to time while cleaning up. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="warning"><dt><b>Warning:</b></dt><dd>After call to this function a solution tree returned by the <a class="el" href="class_t_s_p_solver_1_1_c_t_s_p_solver.html#ab8a5a387deebffd898577dba31a95099" title="Solves the given task.">solve()</a> function is no longer valid. </dd></dl>
+<dl class="note"><dt><b>Note:</b></dt><dd>It is not required to call this function manually. This function is always called by <a class="el" href="class_t_s_p_solver_1_1_c_t_s_p_solver.html#ab8a5a387deebffd898577dba31a95099" title="Solves the given task.">solve()</a> at the beginning of the solution process.</dd></dl>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="class_t_s_p_solver_1_1_c_t_s_p_solver.html#ab8a5a387deebffd898577dba31a95099" title="Solves the given task.">solve()</a> </dd></dl>
+
+<p><div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<div class="center"><img src="class_t_s_p_solver_1_1_c_t_s_p_solver_a3ef198959f1b4c32b84fbd5222f8b796_cgraph.png" border="0" usemap="#class_t_s_p_solver_1_1_c_t_s_p_solver_a3ef198959f1b4c32b84fbd5222f8b796_cgraph_map" alt=""></div>
+<map name="class_t_s_p_solver_1_1_c_t_s_p_solver_a3ef198959f1b4c32b84fbd5222f8b796_cgraph_map" id="class_t_s_p_solver_1_1_c_t_s_p_solver_a3ef198959f1b4c32b84fbd5222f8b796_cgraph">
+<area shape="rect" id="node3" doxygen="qt-4.6.tag:http://doc.trolltech.com/4.6/" href="http://doc.trolltech.com/4.6/qhash.html#clear" title="QHash::clear" alt="" coords="333,5,429,33"/>
+<area shape="rect" id="node5" doxygen="qt-4.6.tag:http://doc.trolltech.com/4.6/" href="http://doc.trolltech.com/4.6/qapplication.html#restoreOverrideCursor" title="QApplication::restoreOverrideCursor" alt="" coords="268,55,495,83"/>
+<area shape="rect" id="node7" doxygen="qt-4.6.tag:http://doc.trolltech.com/4.6/" href="http://doc.trolltech.com/4.6/qapplication.html#setOverrideCursor" title="QApplication::setOverrideCursor" alt="" coords="279,106,484,134"/>
+</map>
+</div>
+</p>
+
+<p><div class="dynheader">
+Here is the caller graph for this function:</div>
+<div class="dynsection">
+<div class="center"><img src="class_t_s_p_solver_1_1_c_t_s_p_solver_a3ef198959f1b4c32b84fbd5222f8b796_icgraph.png" border="0" usemap="#class_t_s_p_solver_1_1_c_t_s_p_solver_a3ef198959f1b4c32b84fbd5222f8b796_icgraph_map" alt=""></div>
+<map name="class_t_s_p_solver_1_1_c_t_s_p_solver_a3ef198959f1b4c32b84fbd5222f8b796_icgraph_map" id="class_t_s_p_solver_1_1_c_t_s_p_solver_a3ef198959f1b4c32b84fbd5222f8b796_icgraph">
+<area shape="rect" id="node3" href="class_t_s_p_solver_1_1_c_t_s_p_solver.html#ab8a5a387deebffd898577dba31a95099" title="Solves the given task." alt="" coords="268,5,463,33"/>
+</map>
+</div>
+</p>
+
+</div>
+</div>
+<a class="anchor" id="a8897c0737ef2451ae606c38113477521"></a><!-- doxytag: member="TSPSolver::CTSPSolver::getSortedPath" ref="a8897c0737ef2451ae606c38113477521" args="(const QString &amp;city, const QString &amp;separator=&quot; &#45;&gt; &quot;) const " -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="elRef" doxygen="qt-4.6.tag:http://doc.trolltech.com/4.6/" href="http://doc.trolltech.com/4.6/qstring.html">QString</a> TSPSolver::CTSPSolver::getSortedPath </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="elRef" doxygen="qt-4.6.tag:http://doc.trolltech.com/4.6/" href="http://doc.trolltech.com/4.6/qstring.html">QString</a> &amp;&nbsp;</td>
+          <td class="paramname"> <em>city</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="elRef" doxygen="qt-4.6.tag:http://doc.trolltech.com/4.6/" href="http://doc.trolltech.com/4.6/qstring.html">QString</a> &amp;&nbsp;</td>
+          <td class="paramname"> <em>separator</em> = <code>&quot;&nbsp;-&gt;&nbsp;&quot;</code></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td> const</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Returns the sorted optimal path, starting from City 1. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>city</em>&nbsp;</td><td>A string that represents city elements in the path. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>separator</em>&nbsp;</td><td>A string that represents separators between cities in the path. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>A string, containing sorted optimal path.</dd></dl>
+<p>The resulting path will be in the form <em>city+<em>separator+<em>city+</em>.</em>.</em>.+<em>separator+<em>city</em>.</em> <code>%1</code> in <em>city</em> will be replaced by the city number. </p>
+
+<p><div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<div class="center"><img src="class_t_s_p_solver_1_1_c_t_s_p_solver_a8897c0737ef2451ae606c38113477521_cgraph.png" border="0" usemap="#class_t_s_p_solver_1_1_c_t_s_p_solver_a8897c0737ef2451ae606c38113477521_cgraph_map" alt=""></div>
+<map name="class_t_s_p_solver_1_1_c_t_s_p_solver_a8897c0737ef2451ae606c38113477521_cgraph_map" id="class_t_s_p_solver_1_1_c_t_s_p_solver_a8897c0737ef2451ae606c38113477521_cgraph">
+<area shape="rect" id="node3" doxygen="qt-4.6.tag:http://doc.trolltech.com/4.6/" href="http://doc.trolltech.com/4.6/qstring.html#arg" title="QString::arg" alt="" coords="317,5,408,33"/>
+<area shape="rect" id="node5" doxygen="qt-4.6.tag:http://doc.trolltech.com/4.6/" href="http://doc.trolltech.com/4.6/qhash.html#isEmpty" title="QHash::isEmpty" alt="" coords="304,55,421,83"/>
+<area shape="rect" id="node7" doxygen="qt-4.6.tag:http://doc.trolltech.com/4.6/" href="http://doc.trolltech.com/4.6/qstringlist.html#join" title="QStringList::join" alt="" coords="305,106,420,134"/>
+<area shape="rect" id="node9" doxygen="qt-4.6.tag:http://doc.trolltech.com/4.6/" href="http://doc.trolltech.com/4.6/qhash.html#size" title="QHash::size" alt="" coords="316,157,409,185"/>
+</map>
+</div>
+</p>
+
+</div>
+</div>
+<a class="anchor" id="a721973cc992b62750aae6fd3ab65773d"></a><!-- doxytag: member="TSPSolver::CTSPSolver::getTotalSteps" ref="a721973cc992b62750aae6fd3ab65773d" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int TSPSolver::CTSPSolver::getTotalSteps </td>
+          <td>(</td>
+          <td class="paramname"></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Returns a total number of steps in the current solution. </p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>A total number of steps or <code>0</code> if no solution. </dd></dl>
+<dl class="note"><dt><b>Note:</b></dt><dd>This is not always the same as the number of cities. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a71d04cbead3508cdff606a5ccc79e59e"></a><!-- doxytag: member="TSPSolver::CTSPSolver::getVersionId" ref="a71d04cbead3508cdff606a5ccc79e59e" args="()" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="elRef" doxygen="qt-4.6.tag:http://doc.trolltech.com/4.6/" href="http://doc.trolltech.com/4.6/qstring.html">QString</a> TSPSolver::CTSPSolver::getVersionId </td>
+          <td>(</td>
+          <td class="paramname"></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Returns CTSPSolver's version ID. </p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>A string: <b>$Id: tspsolver.cpp 110 2010-04-27 23:38:10Z laleppa $</b>. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a2b82ac68b981c47a3261f4e4e9ecd2bd"></a><!-- doxytag: member="TSPSolver::CTSPSolver::isOptimal" ref="a2b82ac68b981c47a3261f4e4e9ecd2bd" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool TSPSolver::CTSPSolver::isOptimal </td>
+          <td>(</td>
+          <td class="paramname"></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Indicates whether or not the solution is definitely optimal. </p>
+<dl class="return"><dt><b>Returns:</b></dt><dd><code>true</code> if the solution is definitely optimal, otherwise <code>false</code>.</dd></dl>
+<p>The solution may need some further iterations to determine whether or not it is optimal. In such cases this function returns <code>false</code>. </p>
+
+</div>
+</div>
+<a class="anchor" id="a5e02867f053089a3e096f6baa70499a2"></a><!-- doxytag: member="TSPSolver::CTSPSolver::routePartFound" ref="a5e02867f053089a3e096f6baa70499a2" args="(int n)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void TSPSolver::CTSPSolver::routePartFound </td>
+          <td>(</td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>n</em></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td><code> [signal]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>This signal is emitted once every time a part of the route is found. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>n</em>&nbsp;</td><td>Indicates the number of the route parts found. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p><div class="dynheader">
+Here is the caller graph for this function:</div>
+<div class="dynsection">
+<div class="center"><img src="class_t_s_p_solver_1_1_c_t_s_p_solver_a5e02867f053089a3e096f6baa70499a2_icgraph.png" border="0" usemap="#class_t_s_p_solver_1_1_c_t_s_p_solver_a5e02867f053089a3e096f6baa70499a2_icgraph_map" alt=""></div>
+<map name="class_t_s_p_solver_1_1_c_t_s_p_solver_a5e02867f053089a3e096f6baa70499a2_icgraph_map" id="class_t_s_p_solver_1_1_c_t_s_p_solver_a5e02867f053089a3e096f6baa70499a2_icgraph">
+<area shape="rect" id="node3" href="class_t_s_p_solver_1_1_c_t_s_p_solver.html#ab8a5a387deebffd898577dba31a95099" title="Solves the given task." alt="" coords="311,5,505,33"/>
+</map>
+</div>
+</p>
+
+</div>
+</div>
+<a class="anchor" id="ab8a5a387deebffd898577dba31a95099"></a><!-- doxytag: member="TSPSolver::CTSPSolver::solve" ref="ab8a5a387deebffd898577dba31a95099" args="(int numCities, const TMatrix &amp;task)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="struct_t_s_p_solver_1_1_s_step.html">SStep</a> * TSPSolver::CTSPSolver::solve </td>
+          <td>(</td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>numCities</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="elRef" doxygen="qt-4.6.tag:http://doc.trolltech.com/4.6/" href="http://doc.trolltech.com/4.6/qlist.html">TMatrix</a> &amp;&nbsp;</td>
+          <td class="paramname"> <em>task</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Solves the given task. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>numCities</em>&nbsp;</td><td>Number of cities in the task. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>task</em>&nbsp;</td><td>The matrix of city-to-city travel costs. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>Pointer to the root of the solution tree.</dd></dl>
+<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000001">Todo:</a></b></dt><dd>TODO: Comment the algorithm. </dd></dl>
+
+<p><div class="dynheader">
+Here is the call graph for this function:</div>
+<div class="dynsection">
+<div class="center"><img src="class_t_s_p_solver_1_1_c_t_s_p_solver_ab8a5a387deebffd898577dba31a95099_cgraph.png" border="0" usemap="#class_t_s_p_solver_1_1_c_t_s_p_solver_ab8a5a387deebffd898577dba31a95099_cgraph_map" alt=""></div>
+<map name="class_t_s_p_solver_1_1_c_t_s_p_solver_ab8a5a387deebffd898577dba31a95099_cgraph_map" id="class_t_s_p_solver_1_1_c_t_s_p_solver_ab8a5a387deebffd898577dba31a95099_cgraph">
+<area shape="rect" id="node3" href="class_t_s_p_solver_1_1_c_t_s_p_solver.html#a3ef198959f1b4c32b84fbd5222f8b796" title="Cleans up the object and frees up memory used by the solution tree." alt="" coords="273,55,484,83"/>
+<area shape="rect" id="node11" doxygen="qt-4.6.tag:http://doc.trolltech.com/4.6/" href="http://doc.trolltech.com/4.6/qcoreapplication.html#processEvents" title="QCoreApplication::processEvents" alt="" coords="271,106,487,134"/>
+<area shape="rect" id="node13" doxygen="qt-4.6.tag:http://doc.trolltech.com/4.6/" href="http://doc.trolltech.com/4.6/qmutexlocker.html#relock" title="QMutexLocker::relock" alt="" coords="304,157,453,185"/>
+<area shape="rect" id="node15" href="class_t_s_p_solver_1_1_c_t_s_p_solver.html#a5e02867f053089a3e096f6baa70499a2" title="This signal is emitted once every time a part of the route is found." alt="" coords="251,207,507,235"/>
+<area shape="rect" id="node17" doxygen="qt-4.6.tag:http://doc.trolltech.com/4.6/" href="http://doc.trolltech.com/4.6/qhash.html#size" title="QHash::size" alt="" coords="332,258,425,286"/>
+<area shape="rect" id="node19" doxygen="qt-4.6.tag:http://doc.trolltech.com/4.6/" href="http://doc.trolltech.com/4.6/qmutexlocker.html#unlock" title="QMutexLocker::unlock" alt="" coords="303,309,455,337"/>
+<area shape="rect" id="node5" doxygen="qt-4.6.tag:http://doc.trolltech.com/4.6/" href="http://doc.trolltech.com/4.6/qhash.html#clear" title="QHash::clear" alt="" coords="621,5,717,33"/>
+<area shape="rect" id="node7" doxygen="qt-4.6.tag:http://doc.trolltech.com/4.6/" href="http://doc.trolltech.com/4.6/qapplication.html#restoreOverrideCursor" title="QApplication::restoreOverrideCursor" alt="" coords="556,55,783,83"/>
+<area shape="rect" id="node9" doxygen="qt-4.6.tag:http://doc.trolltech.com/4.6/" href="http://doc.trolltech.com/4.6/qapplication.html#setOverrideCursor" title="QApplication::setOverrideCursor" alt="" coords="567,106,772,134"/>
+</map>
+</div>
+</p>
+
+</div>
+</div>
+<a class="anchor" id="a6cce9079d60735f92037c98d6d361a82"></a><!-- doxytag: member="TSPSolver::CTSPSolver::wasCanceled" ref="a6cce9079d60735f92037c98d6d361a82" args="() const " -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool TSPSolver::CTSPSolver::wasCanceled </td>
+          <td>(</td>
+          <td class="paramname"></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td> const</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Indicates whether or not the solution process was canceled. </p>
+<dl class="return"><dt><b>Returns:</b></dt><dd><code>true</code> if the solution process was canceled, otherwise <code>false</code>. </dd></dl>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following files:<ul>
+<li>src/<a class="el" href="tspsolver_8h_source.html">tspsolver.h</a></li>
+<li>src/tspsolver.cpp</li>
+</ul>
+</div>
+<!--- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&nbsp;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&nbsp;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&nbsp;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&nbsp;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&nbsp;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&nbsp;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&nbsp;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&nbsp;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&nbsp;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&nbsp;</span>Defines</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<hr size="1"/><address style="text-align: right;"><small>Generated on Wed Apr 28 02:47:21 2010 for TSPSG: TSP Solver and Generator by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
