<?xml version='1.0'?>
<!DOCTYPE art SYSTEM 'http://www.biomedcentral.com/xml/article.dtd'>
<art><ui>1471-2105-13-S17-S10</ui><ji>1471-2105</ji><fm>
<dochead>Proceedings</dochead>
<bibl>
<title>
<p>A hybrid method for the exact planted (<it>l, d</it>) motif finding problem and its parallelization</p>
</title>
<aug>
<au ca="yes" id="A1"><snm>Abbas</snm><mi>M</mi><fnm>Mostafa</fnm><insr iid="I1"/><email>mabbas@su.edu.eg</email></au>
<au ca="yes" id="A2"><snm>Abouelhoda</snm><fnm>Mohamed</fnm><insr iid="I2"/><insr iid="I3"/><email>mabouelhoda@yahoo.com</email></au>
<au id="A3"><snm>Bahig</snm><mi>M</mi><fnm>Hazem</fnm><insr iid="I4"/><email>hazem_baheeg@sci.asu.edu.eg</email></au>
</aug>
<insg>
<ins id="I1"><p>Department of Basic Sciences, Faculty of Engineering, Sinai University, El-Arish, Egypt</p></ins>
<ins id="I2"><p>Systems and Biomedical Engineering Department, Faculty of Engineering, Cairo University, Giza, Egypt</p></ins>
<ins id="I3"><p>Center for Informatics Sciences, Nile University, Giza, Egypt</p></ins>
<ins id="I4"><p>Computer Science Division, Department of Mathematics, Faculty of Science, Ain ShamsUniversity, Cairo 11566, Egypt</p></ins>
</insg>
<source>BMC Bioinformatics</source>


<supplement><title><p>Eleventh International Conference on Bioinformatics (InCoB2012): Bioinformatics</p></title><editor>Shoba Ranganathan, Christian Sch&#246;nbach, Sissades Tongsima, Jonathan Chan and Tin Wee Tan</editor><sponsor><note>The articles in this supplement were supported by funding agencies as detailed in the Acknowledgement section of each article</note></sponsor><note>Proceedings</note></supplement><conference><title><p>Asia Pacific Bioinformatics Network (APBioNet) Eleventh International Conference on Bioinformatics (InCoB2012)</p></title><location>Bangkok, Thailand</location><date-range>3-5 October 2012</date-range><url>http://www.incob2012.org/</url></conference><issn>1471-2105</issn>
<pubdate>2012</pubdate>
<volume>13</volume>
<issue>Suppl 17</issue>
<fpage>S10</fpage>
<url>http://www.biomedcentral.com/1471-2105/13/S17/S10</url>
<xrefbib><pubidlist><pubid idtype="pmpid">23281969</pubid><pubid idtype="doi">10.1186/1471-2105-13-S17-S10</pubid></pubidlist></xrefbib>
</bibl>
<history><pub><date><day>13</day><month>12</month><year>2012</year></date></pub></history>
<cpyrt><year>2012</year><collab>Abbas et al.; licensee BioMed Central Ltd.</collab><note>This is an open access article distributed under the terms of the Creative Commons Attribution License (<url>http://creativecommons.org/licenses/by/2.0</url>), which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.</note></cpyrt>
<abs>
<sec>
<st>
<p>Abstract</p>
</st>
<sec>
<st>
<p>Background</p>
</st>
<p>Given a set of DNA sequences <it>s</it>
<sub>1</sub>, ..., <it>s<sub>t</sub>
</it>, the (<it>l, d</it>) motif problem is to find an <it>l</it>-length <it>motif </it>sequence <it>M </it>, not necessary existing in any of the input sequences, such that for each sequence <it>s<sub>i</sub>
</it>, 1 &#8804; <it>i </it>&#8804; <it>t</it>, there is at least one subsequence differing with at most <it>d </it>mismatches from <it>M</it>. Many exact algorithms have been developed to solve the motif finding problem in the last three decades. However, the problem is still challenging and its solution is limited to small values of <it>l </it>and <it>d</it>.</p>
</sec>
<sec>
<st>
<p>Results</p>
</st>
<p>In this paper we present a new efficient method to improve the performance of the exact algorithms for the motif finding problem. Our method is composed of two main steps: First, we process <it>q </it>&#8804; <it>t </it>sequences to find candidate motifs. Second, the candidate motifs are searched in the remaining sequences. For both steps, we use the best available algorithms. Our method is a hybrid one, because it integrates currently existing algorithms to achieve the best running time. In this paper, we show how the optimal value of <it>q </it>is determined to achieve the best running time. Our experimental results show that there is about 24% speed-up achieved by our method compared to the best existing algorithm. Furthermore, we also present a parallel version of our method running on shared memory architecture. Our experiments show that the performance of our algorithm scales linearly with the number of processors. Using the parallel version, we were able to solve the (21, 8) challenging instance using 8 processors in 20.42 hours instead of 6.68 days of the serial version.</p>
</sec>
<sec>
<st>
<p>Conclusions</p>
</st>
<p>Our method speeds up the solution of the exact motif problem. Our method is generic, because it can accommodate any new faster algorithm based on traditional methods. We expect that our method will help to discover longer motifs. The software we developed is available for free for academic research at <url>http://www.nubios.nileu.edu.eg/tools/hymotif</url>.</p>
</sec>
</sec>
</abs>
</fm><bdy>
<sec>
<st>
<p>Background</p>
</st>
<p>DNA motifs are short sequences in the genome that play important functional roles in gene regulation. Due to their short length, it is difficult to identify these regions using features intrinsic in their composition. Assuming that the motifs are conserved in closely related species due to the importance of their function, it is possible to discover them by comparing the respective DNA sequences to identify the sub-sequences that are very similar to each other.</p>
<p>There are two common combinatorial formulations that identify the motifs: The first is the consensus motif problem which made its first appearance in 1984 <abbrgrp>
<abbr bid="B1">1</abbr>
</abbrgrp>, while the second is the planted (<it>l, d</it>)-motif problem that was presented in 2000 <abbrgrp>
<abbr bid="B2">2</abbr>
</abbrgrp>. It is worth noting that the latter formulation is a special case of the former. The exact definitions are as follows:</p>
<p>Given a set of <it>t </it>sequences <it>s<sub>i </sub>
</it>where 1 &#8804; <it>i </it>&#8804; <it>t </it>defined over an alphabet &#8721;. The consensus motif problem is to find an <it>l</it>-length motif sequence <it>M </it>such that in each sequence <it>s<sub>i</sub>
</it>, 1 &#8804; <it>i </it>&#8804; <it>t</it>, there is at least one subsequence <it>p<sub>i </sub>
</it>differing with at most <it>d </it>mismatches from <it>M; i.e., d<sub>H</sub>(p<sub>i </sub>, M) </it>&#8804; <it>d</it>, where <it>d<sub>H </sub>
</it>is the hamming distance between <it>p<sub>i </sub>
</it>and <it>M</it>.</p>
<p>The planted (<it>l, d</it>) motif problem is a special case of the consensus problem in which we restrict that <it>p<sub>i </sub>
</it>occurs only once in <it>s</it>
<sub>
<it>i</it>
</sub>.</p>
<p>Due to its combinatorial nature, the consensus motif problem and its variant defined above is extremely challenging. Over a benchmark data of 20 sequences, each of length 600 characters, large instances of (15, 5), (17, 6), (19, 7) and (21, 8) have been addressed and many algorithms have been developed to solve them one after another. These algorithms can be classified into two major categories: approximation algorithms <abbrgrp>
<abbr bid="B2">2</abbr>
<abbr bid="B3">3</abbr>
<abbr bid="B4">4</abbr>
<abbr bid="B5">5</abbr>
<abbr bid="B6">6</abbr>
<abbr bid="B7">7</abbr>
<abbr bid="B8">8</abbr>
<abbr bid="B9">9</abbr>
<abbr bid="B10">10</abbr>
<abbr bid="B11">11</abbr>
<abbr bid="B12">12</abbr>
</abbrgrp> and exact algorithms <abbrgrp>
<abbr bid="B13">13</abbr>
<abbr bid="B14">14</abbr>
<abbr bid="B15">15</abbr>
<abbr bid="B16">16</abbr>
<abbr bid="B17">17</abbr>
<abbr bid="B18">18</abbr>
<abbr bid="B19">19</abbr>
<abbr bid="B20">20</abbr>
<abbr bid="B21">21</abbr>
<abbr bid="B22">22</abbr>
<abbr bid="B23">23</abbr>
<abbr bid="B24">24</abbr>
<abbr bid="B25">25</abbr>
<abbr bid="B26">26</abbr>
<abbr bid="B27">27</abbr>
<abbr bid="B28">28</abbr>
<abbr bid="B29">29</abbr>
<abbr bid="B30">30</abbr>
</abbrgrp>. Approximation algorithms are based on probabilistic local search techniques, such as Gibbs Sampling, Expectation Maximization, etc. Although these algorithms may solve the challenging instances in practice, there is no guarantee that the motif can be found even when <it>l </it>is short.</p>
<p>Exact algorithms are based on exhaustive search techniques. The brute force algorithm proceeds by testing all possible motifs of length <it>l </it>using pattern matching, leading to <it>O </it>(<it>l n t </it>4<it>
<sup>l</sup>
</it>) time complexity. This algorithm, however, is not suitable for discovering long motifs in practice, and many algorithms have been developed to provide faster solutions. Examples of these algorithms are CENSUS <abbrgrp>
<abbr bid="B23">23</abbr>
</abbrgrp>, PMS1 <abbrgrp>
<abbr bid="B26">26</abbr>
</abbrgrp>, PMSP <abbrgrp>
<abbr bid="B27">27</abbr>
</abbrgrp>, PMSprune <abbrgrp>
<abbr bid="B29">29</abbr>
</abbrgrp>, PMS5 <abbrgrp>
<abbr bid="B30">30</abbr>
</abbrgrp>, SMILE <abbrgrp>
<abbr bid="B19">19</abbr>
</abbrgrp>, RISO <abbrgrp>
<abbr bid="B24">24</abbr>
</abbrgrp>, RISOTTO <abbrgrp>
<abbr bid="B28">28</abbr>
</abbrgrp>, and Voting <abbrgrp>
<abbr bid="B25">25</abbr>
</abbrgrp>. In the following we briefly review the most efficient ones and the ones related to our work.</p>
<p>The algorithms SMILE <abbrgrp>
<abbr bid="B19">19</abbr>
</abbrgrp>, RISO <abbrgrp>
<abbr bid="B24">24</abbr>
</abbrgrp>, and RISOTTO <abbrgrp>
<abbr bid="B28">28</abbr>
</abbrgrp> are based on the use of suffix tree. The time complexity of these algorithms is the same and it is O(<it>t</it>
<sup>2</sup>
<it>Nv</it>(<it>l, d</it>)), where <inline-formula>
<m:math xmlns:m="http://www.w3.org/1998/Math/MathML" name="1471-2105-13-S17-S10-i1"><m:mrow>
   <m:mi>v</m:mi>
   <m:mo stretchy="false">(</m:mo>
   <m:mi>l</m:mi>
   <m:mo>,</m:mo>
   <m:mo>&#160;</m:mo>
   <m:mi>d</m:mi>
   <m:mo stretchy="false">)</m:mo>
   <m:mo>=</m:mo>
   <m:mstyle displaystyle="true">
      <m:munderover>
         <m:mo>&#8721;</m:mo>
         <m:mi>d</m:mi>
         <m:mrow>
            <m:mi>i</m:mi>
            <m:mo>=</m:mo>
            <m:mn>0</m:mn>
         </m:mrow>
      </m:munderover>
      <m:mrow>
         <m:msub>
            <m:mi>C</m:mi>
            <m:mi>i</m:mi>
         </m:msub>
         <m:msup>
            <m:mrow/>
            <m:mi>l</m:mi>
         </m:msup>
         <m:msup>
            <m:mn>3</m:mn>
            <m:mi>i</m:mi>
         </m:msup>
      </m:mrow>
   </m:mstyle>
</m:mrow>
</m:math>
</inline-formula> is the size of the <it>d</it>-mismatch neighbourhood of motifs of length <it>l </it>and <inline-formula>
<m:math xmlns:m="http://www.w3.org/1998/Math/MathML" name="1471-2105-13-S17-S10-i2"><m:mrow>
   <m:mi>N</m:mi>
   <m:mo>=</m:mo>
   <m:mstyle displaystyle="true">
      <m:munderover>
         <m:mo>&#8721;</m:mo>
         <m:mi>t</m:mi>
         <m:mrow>
            <m:mi>i</m:mi>
            <m:mo>=</m:mo>
            <m:mn>1</m:mn>
         </m:mrow>
      </m:munderover>
      <m:mrow>
         <m:msub>
            <m:mi>n</m:mi>
            <m:mi>i</m:mi>
         </m:msub>
      </m:mrow>
   </m:mstyle>
</m:mrow>
</m:math>
</inline-formula>, <it>n<sub>i </sub>
</it>is the length of sequence <it>i </it>from input sequences. RISOTTO improved the time complexity of SMILE and RISO in the average case and solved some challenging instances such as (15, 5) and (17, 6).</p>
<p>PMSP <abbrgrp>
<abbr bid="B27">27</abbr>
</abbrgrp> is based on exploring the neighbourhood of the <it>l</it>-mer of the first sequence and checking whether the elements of such neighbourhoods are (<it>l, d</it>) motifs. The time complexity is <inline-formula>
<m:math xmlns:m="http://www.w3.org/1998/Math/MathML" name="1471-2105-13-S17-S10-i3"><m:mrow>
   <m:mi>O</m:mi>
   <m:mrow>
      <m:mo class="MathClass-open">(</m:mo>
      <m:mrow>
         <m:mfrac>
            <m:mrow>
               <m:mn>1</m:mn>
            </m:mrow>
            <m:mrow>
               <m:mi>w</m:mi>
            </m:mrow>
         </m:mfrac>
         <m:mi>t</m:mi>
         <m:msup>
            <m:mrow>
               <m:mi>n</m:mi>
            </m:mrow>
            <m:mrow>
               <m:mn>2</m:mn>
            </m:mrow>
         </m:msup>
         <m:mi>v</m:mi>
         <m:mrow>
            <m:mo class="MathClass-open">(</m:mo>
            <m:mrow>
               <m:mi>l</m:mi>
               <m:mo class="MathClass-punc">,</m:mo>
               <m:mi>d</m:mi>
            </m:mrow>
            <m:mo class="MathClass-close">)</m:mo>
         </m:mrow>
      </m:mrow>
      <m:mo class="MathClass-close">)</m:mo>
   </m:mrow>
</m:mrow>
</m:math>
</inline-formula>. It is able to solve some challenging instances such as (15, 5) and (17, 6). PMSprune <abbrgrp>
<abbr bid="B29">29</abbr>
<abbr bid="B31">31</abbr>
</abbrgrp> is an improved version of the PMSP algorithm, based on the branch and bound strategy. Although it has the same worst-case time complexity as PMSP algorithm, it is more efficient in practice and it could tackle the (17, 6) and (19, 7) instances for the first time. PMS5 <abbrgrp>
<abbr bid="B30">30</abbr>
</abbrgrp> is based on computing the common <it>d</it>-neighbourhood of three <it>l</it>-mers using integer programming formulation. It combines this novel idea with the algorithms PMS1 and PMSPrune. PMS5 can tackle the large challenging instances (19, 7), (21, 8) and (23, 9). The only drawback of PMS5, it requires larger amount of internal memory to finish computation.</p>
<sec>
<st>
<p>Our contribution</p>
</st>
<p>In a previous work <abbrgrp>
<abbr bid="B32">32</abbr>
<abbr bid="B33">33</abbr>
</abbrgrp>, we have introduced an idea composed of two stages to speed up the exact algorithms: In the first stage, we generate a set of candidate motifs by applying one of the exact algorithms based on the neighbourhood method (like Voting <abbrgrp>
<abbr bid="B25">25</abbr>
</abbrgrp> or PMSP <abbrgrp>
<abbr bid="B27">27</abbr>
</abbrgrp> algorithms) using <it>q </it>&#8804; <it>t </it>sequences. In the second stage, for each candidate motif we check if it is a valid motif or not using pattern matching on the reminder (<it>t </it>- <it>q</it>) sequences. This dramatically reduces the search space and leads to significant speed up. The bottleneck in this approach, however, was the determination of the <it>q </it>value that yields the fastest running time. That is, the user has to guess the value of <it>q</it>, which might lead to non-optimal running time and even no speed up compared to the traditional methods. Also, the authors in <abbrgrp>
<abbr bid="B34">34</abbr>
</abbrgrp> have used the same idea on PMS1, RISOTTO, and PMSprune algorithms.</p>
<p>In this paper, we present a theoretical method which can be used to determine the appropriate value of <it>q</it>. Then we apply this strategy on PMSprune algorithm and solve some big challenging instances such as (21, 8). Furthermore, we propose a parallel version of our algorithm to present a practical solution to the challenging instances of the motif problem. Our parallel version further speeds up the solution of the (21, 8) instance.</p>
</sec>
<sec>
<st>
<p>Definitions and related work</p>
</st>
<p>In this section, we introduce some notations and definitions that will help us to describe our algorithm and related work in a concise manner.</p>
<p>
<b>Definition 1 adapted from [29]: </b>For any string <it>x</it>, with |<it>x</it>| = <it>l</it>, let <it>B<sub>d</sub>
</it>(<it>x</it>) = {<it>y</it>: |<it>y</it>| = <it>l, d<sub>H</sub>
</it>(<it>y, x</it>) &#8804; <it>d</it>}, where <it>d<sub>H </sub>
</it>denotes the Hamming distance and <it>B<sub>d</sub>
</it>(<it>x</it>) denotes the set of neighbourhoods of <it>x</it>. We also write <it>v</it>(<it>l, d</it>) to refer to |<it>B<sub>d</sub>
</it>(<it>x</it>)|.</p>
<p>
<b>Definition 2 adapted from [29]: </b>Let <it>s </it>denote a string of length <it>n </it>and let <it>x </it>denote another string of length <it>l, l </it>&lt;<it>n</it>. We define the minimum distance between <it>s </it>and <it>x </it>as <inline-formula>
<m:math xmlns:m="http://www.w3.org/1998/Math/MathML" name="1471-2105-13-S17-S10-i4"><m:mrow>
   <m:msub>
      <m:mrow>
         <m:mover accent="true">
            <m:mrow>
               <m:mi>d</m:mi>
            </m:mrow>
            <m:mo class="MathClass-op"> &#772;</m:mo>
         </m:mover>
      </m:mrow>
      <m:mrow>
         <m:mi>H</m:mi>
      </m:mrow>
   </m:msub>
   <m:mrow>
      <m:mo class="MathClass-open">(</m:mo>
      <m:mrow>
         <m:mi>x</m:mi>
         <m:mo class="MathClass-punc">,</m:mo>
         <m:mi>s</m:mi>
      </m:mrow>
      <m:mo class="MathClass-close">)</m:mo>
   </m:mrow>
   <m:mo class="MathClass-rel">=</m:mo>
   <m:munder class="msub">
      <m:mrow>
         <m:mstyle class="text">
            <m:mtext class="textsf" mathvariant="sans-serif">min</m:mtext>
         </m:mstyle>
      </m:mrow>
      <m:mrow>
         <m:msup>
            <m:mrow>
               <m:mi>x</m:mi>
            </m:mrow>
            <m:mrow>
               <m:mi>&#8242;</m:mi>
            </m:mrow>
         </m:msup>
         <m:msub>
            <m:mrow>
               <m:mo class="MathClass-bin">&#8882;</m:mo>
            </m:mrow>
            <m:mrow>
               <m:mi>l</m:mi>
            </m:mrow>
         </m:msub>
         <m:mi>s</m:mi>
      </m:mrow>
   </m:munder>
   <m:msub>
      <m:mrow>
         <m:mi>d</m:mi>
      </m:mrow>
      <m:mrow>
         <m:mi>H</m:mi>
      </m:mrow>
   </m:msub>
   <m:mrow>
      <m:mo class="MathClass-open">(</m:mo>
      <m:mrow>
         <m:mi>x</m:mi>
         <m:mo class="MathClass-punc">,</m:mo>
         <m:msup>
            <m:mrow>
               <m:mi>x</m:mi>
            </m:mrow>
            <m:mrow>
               <m:mi>&#8242;</m:mi>
            </m:mrow>
         </m:msup>
      </m:mrow>
      <m:mo class="MathClass-close">)</m:mo>
   </m:mrow>
</m:mrow>
</m:math>
</inline-formula>, where <it>x </it>&#8882;<it>
<sub>l </sub>s </it>denotes that <it>x </it>is a substring of <it>s </it>with length <it>l</it>.</p>
<p>
<b>Definition 3 adapted from [29]: </b>Given an <it>l</it>-length string <it>x </it>and a set of strings <it>S </it>= {<it>s</it>
<sub>1</sub>, ..., <it>s<sub>t</sub>
</it>} with |<it>s<sub>i</sub>
</it>| = <it>n </it>for <it>i = </it>1, ..., <it>t </it>and <it>l </it>&lt;<it>n</it>, we define the distance between <it>S </it>and <it>x </it>as <inline-formula>
<m:math xmlns:m="http://www.w3.org/1998/Math/MathML" name="1471-2105-13-S17-S10-i5"><m:mrow>
   <m:msub>
      <m:mrow>
         <m:mover accent="true">
            <m:mrow>
               <m:mi>d</m:mi>
            </m:mrow>
            <m:mo class="MathClass-op"> &#772;</m:mo>
         </m:mover>
      </m:mrow>
      <m:mrow>
         <m:mi>H</m:mi>
      </m:mrow>
   </m:msub>
   <m:mrow>
      <m:mo class="MathClass-open">(</m:mo>
      <m:mrow>
         <m:mi>x</m:mi>
         <m:mo class="MathClass-punc">,</m:mo>
         <m:mi>S</m:mi>
      </m:mrow>
      <m:mo class="MathClass-close">)</m:mo>
   </m:mrow>
   <m:mo class="MathClass-rel">=</m:mo>
   <m:munderover accent="false" accentunder="false">
      <m:mrow>
         <m:mstyle class="text">
            <m:mtext class="textsf" mathvariant="sans-serif">max</m:mtext>
         </m:mstyle>
      </m:mrow>
      <m:mrow>
         <m:mi>i</m:mi>
         <m:mo class="MathClass-rel">=</m:mo>
         <m:mn>1</m:mn>
      </m:mrow>
      <m:mrow>
         <m:mi>t</m:mi>
      </m:mrow>
   </m:munderover>
   <m:mrow>
      <m:mo class="MathClass-open">{</m:mo>
      <m:mrow>
         <m:msub>
            <m:mrow>
               <m:mover accent="true">
                  <m:mrow>
                     <m:mi>d</m:mi>
                  </m:mrow>
                  <m:mo class="MathClass-op"> &#772;</m:mo>
               </m:mover>
            </m:mrow>
            <m:mrow>
               <m:mi>H</m:mi>
            </m:mrow>
         </m:msub>
         <m:mrow>
            <m:mo class="MathClass-open">(</m:mo>
            <m:mrow>
               <m:mi>x</m:mi>
               <m:mo class="MathClass-punc">,</m:mo>
               <m:msub>
                  <m:mrow>
                     <m:mi>s</m:mi>
                  </m:mrow>
                  <m:mrow>
                     <m:mi>i</m:mi>
                  </m:mrow>
               </m:msub>
            </m:mrow>
            <m:mo class="MathClass-close">)</m:mo>
         </m:mrow>
      </m:mrow>
      <m:mo class="MathClass-close">}</m:mo>
   </m:mrow>
   <m:mo class="MathClass-rel">=</m:mo>
   <m:munderover accent="false" accentunder="false">
      <m:mrow>
         <m:mstyle class="text">
            <m:mtext class="textsf" mathvariant="sans-serif">max</m:mtext>
         </m:mstyle>
      </m:mrow>
      <m:mrow>
         <m:mi>i</m:mi>
         <m:mo class="MathClass-rel">=</m:mo>
         <m:mn>1</m:mn>
      </m:mrow>
      <m:mrow>
         <m:mi>t</m:mi>
      </m:mrow>
   </m:munderover>
   <m:mrow>
      <m:mo class="MathClass-open">{</m:mo>
      <m:mrow>
         <m:munder class="msub">
            <m:mrow>
               <m:mstyle class="text">
                  <m:mtext class="textsf" mathvariant="sans-serif">min</m:mtext>
               </m:mstyle>
            </m:mrow>
            <m:mrow>
               <m:mi>r</m:mi>
               <m:msub>
                  <m:mrow>
                     <m:mo class="MathClass-bin">&#8882;</m:mo>
                  </m:mrow>
                  <m:mrow>
                     <m:mi>l</m:mi>
                  </m:mrow>
               </m:msub>
               <m:msub>
                  <m:mrow>
                     <m:mi>s</m:mi>
                  </m:mrow>
                  <m:mrow>
                     <m:mi>i</m:mi>
                  </m:mrow>
               </m:msub>
            </m:mrow>
         </m:munder>
         <m:mrow>
            <m:mo class="MathClass-open">{</m:mo>
            <m:mrow>
               <m:msub>
                  <m:mrow>
                     <m:mi>d</m:mi>
                  </m:mrow>
                  <m:mrow>
                     <m:mi>H</m:mi>
                  </m:mrow>
               </m:msub>
               <m:mrow>
                  <m:mo class="MathClass-open">(</m:mo>
                  <m:mrow>
                     <m:mi>x</m:mi>
                     <m:mo class="MathClass-punc">,</m:mo>
                     <m:mi>r</m:mi>
                  </m:mrow>
                  <m:mo class="MathClass-close">)</m:mo>
               </m:mrow>
            </m:mrow>
            <m:mo class="MathClass-close">}</m:mo>
         </m:mrow>
      </m:mrow>
      <m:mo class="MathClass-close">}</m:mo>
   </m:mrow>
</m:mrow>
</m:math>
</inline-formula>
</p>
<p>
<b>Definition 4 adapted from [29]:</b>A string <it>x </it>is an (<it>l, d</it>) motif for a set of sequences <it>S </it>= {<it>s</it>
<sub>1</sub>, ..., <it>s<sub>t</sub>
</it>}, if:</p>
<p>1) <inline-formula>
<m:math xmlns:m="http://www.w3.org/1998/Math/MathML" name="1471-2105-13-S17-S10-i6"><m:mrow>
   <m:msub>
      <m:mrow>
         <m:mover accent="true">
            <m:mrow>
               <m:mi>d</m:mi>
            </m:mrow>
            <m:mo class="MathClass-op"> &#772;</m:mo>
         </m:mover>
      </m:mrow>
      <m:mrow>
         <m:mi>H</m:mi>
      </m:mrow>
   </m:msub>
   <m:mrow>
      <m:mo class="MathClass-open">(</m:mo>
      <m:mrow>
         <m:mi>x</m:mi>
         <m:mo class="MathClass-punc">,</m:mo>
         <m:mi>S</m:mi>
      </m:mrow>
      <m:mo class="MathClass-close">)</m:mo>
   </m:mrow>
   <m:mo class="MathClass-rel">&#8804;</m:mo>
   <m:mi>d</m:mi>
   <m:mi>.</m:mi>
</m:mrow>
</m:math>
</inline-formula>
</p>
<p>2) <inline-formula>
<m:math xmlns:m="http://www.w3.org/1998/Math/MathML" name="1471-2105-13-S17-S10-i7"><m:mrow>
   <m:mo class="MathClass-op">&#8707;</m:mo>
   <m:mi>y</m:mi>
   <m:msub>
      <m:mrow>
         <m:mo class="MathClass-bin">&#8882;</m:mo>
      </m:mrow>
      <m:mrow>
         <m:mi>l</m:mi>
      </m:mrow>
   </m:msub>
   <m:msub>
      <m:mrow>
         <m:mi>s</m:mi>
      </m:mrow>
      <m:mrow>
         <m:mn>1</m:mn>
      </m:mrow>
   </m:msub>
   <m:mo class="MathClass-rel">:</m:mo>
   <m:mi>x</m:mi>
   <m:mo class="MathClass-rel">&#8712;</m:mo>
   <m:msub>
      <m:mrow>
         <m:mi>B</m:mi>
      </m:mrow>
      <m:mrow>
         <m:mi>d</m:mi>
      </m:mrow>
   </m:msub>
   <m:mrow>
      <m:mo class="MathClass-open">(</m:mo>
      <m:mrow>
         <m:mi>y</m:mi>
      </m:mrow>
      <m:mo class="MathClass-close">)</m:mo>
   </m:mrow>
   <m:mo class="MathClass-bin">&#8743;</m:mo>
   <m:msub>
      <m:mrow>
         <m:mover accent="true">
            <m:mrow>
               <m:mi>d</m:mi>
            </m:mrow>
            <m:mo class="MathClass-op"> &#772;</m:mo>
         </m:mover>
      </m:mrow>
      <m:mrow>
         <m:mi>H</m:mi>
      </m:mrow>
   </m:msub>
   <m:mrow>
      <m:mo class="MathClass-open">(</m:mo>
      <m:mrow>
         <m:mi>x</m:mi>
         <m:mo class="MathClass-punc">,</m:mo>
         <m:mrow>
            <m:mo class="MathClass-open">{</m:mo>
            <m:mrow>
               <m:msub>
                  <m:mrow>
                     <m:mi>s</m:mi>
                  </m:mrow>
                  <m:mrow>
                     <m:mn>1</m:mn>
                  </m:mrow>
               </m:msub>
               <m:mo class="MathClass-punc">,</m:mo>
               <m:mi>.</m:mi>
               <m:mi>.</m:mi>
               <m:mi>.</m:mi>
               <m:mi>.</m:mi>
               <m:mo class="MathClass-punc">,</m:mo>
               <m:msub>
                  <m:mrow>
                     <m:mi>s</m:mi>
                  </m:mrow>
                  <m:mrow>
                     <m:mi>t</m:mi>
                  </m:mrow>
               </m:msub>
            </m:mrow>
            <m:mo class="MathClass-close">}</m:mo>
         </m:mrow>
      </m:mrow>
      <m:mo class="MathClass-close">)</m:mo>
   </m:mrow>
   <m:mo class="MathClass-rel">&#8804;</m:mo>
   <m:mi>d</m:mi>
   <m:mi>.</m:mi>
</m:mrow>
</m:math>
</inline-formula>
</p>
<p>
<b>Proposition 1 adapted from [10]: </b>Let <it>u </it>and <it>v </it>be two random strings of length <it>l </it>over an alphabet of 4 characters with equal probability of occurrence. The probability <it>p<sub>d </sub>
</it>that <it>d<sub>H</sub>
</it>(<it>u, v</it>) &#8804; <it>d </it>is <inline-formula>
<m:math xmlns:m="http://www.w3.org/1998/Math/MathML" name="1471-2105-13-S17-S10-i8"><m:mrow>
   <m:msub>
      <m:mrow>
         <m:mi>p</m:mi>
      </m:mrow>
      <m:mrow>
         <m:mi>d</m:mi>
      </m:mrow>
   </m:msub>
   <m:mo class="MathClass-rel">=</m:mo>
   <m:munderover accent="false" accentunder="false">
      <m:mrow>
         <m:mo mathsize="big"> &#8721;</m:mo>
      </m:mrow>
      <m:mrow>
         <m:mi>i</m:mi>
         <m:mo class="MathClass-rel">=</m:mo>
         <m:mn>0</m:mn>
      </m:mrow>
      <m:mrow>
         <m:mi>d</m:mi>
      </m:mrow>
   </m:munderover>
   <m:mfenced close=")" open="(" separators="">
      <m:mrow>
         <m:mtable class="array" columnlines="none none none none none none none none none none none none none none none none none none none" equalcolumns="false" equalrows="false">
            <m:mtr>
               <m:mtd class="array" columnalign="center">
                  <m:mi>l</m:mi>
               </m:mtd>
            </m:mtr>
            <m:mtr>
               <m:mtd class="array" columnalign="center">
                  <m:mi>i</m:mi>
               </m:mtd>
            </m:mtr>
            <m:mtr>
               <m:mtd class="array" columnalign="center"/>
            </m:mtr>
         </m:mtable>
      </m:mrow>
   </m:mfenced>
   <m:msup>
      <m:mrow>
         <m:mfenced close=")" open="(" separators="">
            <m:mrow>
               <m:mn>3</m:mn>
               <m:mo class="MathClass-bin">/</m:mo>
               <m:mn>4</m:mn>
            </m:mrow>
         </m:mfenced>
      </m:mrow>
      <m:mrow>
         <m:mi>i</m:mi>
      </m:mrow>
   </m:msup>
   <m:msup>
      <m:mrow>
         <m:mfenced close=")" open="(" separators="">
            <m:mrow>
               <m:mn>1</m:mn>
               <m:mo class="MathClass-bin">/</m:mo>
               <m:mn>4</m:mn>
            </m:mrow>
         </m:mfenced>
      </m:mrow>
      <m:mrow>
         <m:mi>l</m:mi>
         <m:mo class="MathClass-bin">-</m:mo>
         <m:mi>i</m:mi>
      </m:mrow>
   </m:msup>
</m:mrow>
</m:math>
</inline-formula>, and the probability that <inline-formula>
<m:math xmlns:m="http://www.w3.org/1998/Math/MathML" name="1471-2105-13-S17-S10-i9"><m:mrow>
   <m:msub>
      <m:mrow>
         <m:mover accent="true">
            <m:mrow>
               <m:mi>d</m:mi>
            </m:mrow>
            <m:mo class="MathClass-op"> &#772;</m:mo>
         </m:mover>
      </m:mrow>
      <m:mrow>
         <m:mi>H</m:mi>
      </m:mrow>
   </m:msub>
   <m:mrow>
      <m:mo class="MathClass-open">(</m:mo>
      <m:mrow>
         <m:mi>x</m:mi>
         <m:mo class="MathClass-punc">,</m:mo>
         <m:mi>S</m:mi>
      </m:mrow>
      <m:mo class="MathClass-close">)</m:mo>
   </m:mrow>
   <m:mo class="MathClass-rel">&#8805;</m:mo>
   <m:mi>d</m:mi>
</m:mrow>
</m:math>
</inline-formula>is (1-(1-<it>p<sub>d</sub>
</it>)<sup>
<it>n</it>-<it>l</it>+1</sup>)<it>
<sup>t</sup>
</it>. The expected number of <it>l</it>-length motifs that occur at least once in each of the <it>t </it>sequences with up to <it>d </it>substitutions is <it>E</it>(<it>l, d, t, n</it>) = 4<it>
<sup>l</sup>
</it>(1-(1-<it>p<sub>d</sub>
</it>)<sup>
<it>n</it>-<it>l</it>+1</sup>)<it>
<sup>t</sup>
</it>.</p>
</sec>
<sec>
<st>
<p>PMSprune Algorithm</p>
</st>
<p>Because the first stage of our method will depend on the PMSprune algorithm. We will review the basic steps of it in the notions presented above.</p>
<p>The main strategy of PMSprune is to generate <it>B<sub>d</sub>
</it>(<it>y</it>), for every <it>l</it>-mer <it>y </it>in <it>s</it>
<sub>1</sub>, using a branch and bound technique. An element <it>x</it>&#8712;<it>B<sub>d</sub>
</it>(<it>y</it>) is a motif only if <inline-formula>
<m:math xmlns:m="http://www.w3.org/1998/Math/MathML" name="1471-2105-13-S17-S10-i10"><m:msub>
   <m:mrow>
      <m:mover accent="false" class="mml-overline">
         <m:mrow>
            <m:mi>d</m:mi>
         </m:mrow>
         <m:mo accent="true">&#175;</m:mo>
      </m:mover>
   </m:mrow>
   <m:mrow>
      <m:mi>H</m:mi>
   </m:mrow>
</m:msub>
<m:mfenced close=")" open="(" separators="">
   <m:mrow>
      <m:mi>x</m:mi>
      <m:mo class="MathClass-punc">,</m:mo>
      <m:mi>S</m:mi>
   </m:mrow>
</m:mfenced>
<m:mo class="MathClass-rel">&#8804;</m:mo>
<m:mi>d</m:mi>
</m:math>
</inline-formula>. The step of verifying that <inline-formula>
<m:math xmlns:m="http://www.w3.org/1998/Math/MathML" name="1471-2105-13-S17-S10-i10">
<m:msub>
<m:mrow>
<m:mover accent="false" class="mml-overline">
<m:mrow>
<m:mi>d</m:mi>
</m:mrow>
<m:mo accent="true">&#175;</m:mo>
</m:mover>
</m:mrow>
<m:mrow>
<m:mi>H</m:mi>
</m:mrow>
</m:msub>
<m:mfenced close=")" open="(" separators="">
<m:mrow>
<m:mi>x</m:mi>
<m:mo class="MathClass-punc">,</m:mo>
<m:mi>S</m:mi>
</m:mrow>
</m:mfenced>
<m:mo class="MathClass-rel">&#8804;</m:mo>
<m:mi>d</m:mi>
</m:math>
</inline-formula> is achieved by scanning all substrings of <it>S</it>. For fixed values of <it>t, n</it>, and <it>l</it>, the expected time complexity of PMSprune is equal to</p>
<p>
<display-formula id="M1">
<m:math xmlns:m="http://www.w3.org/1998/Math/MathML" name="1471-2105-13-S17-S10-i11"><m:mrow>
   <m:msub>
      <m:mrow>
         <m:mi>T</m:mi>
      </m:mrow>
      <m:mrow>
         <m:mi>P</m:mi>
         <m:mi>M</m:mi>
         <m:mi>S</m:mi>
         <m:mi>p</m:mi>
         <m:mi>r</m:mi>
         <m:mi>u</m:mi>
         <m:mi>n</m:mi>
         <m:mi>e</m:mi>
      </m:mrow>
   </m:msub>
   <m:mo class="MathClass-rel">=</m:mo>
   <m:mi>O</m:mi>
   <m:mfenced close=")" open="(" separators="">
      <m:mrow>
         <m:mi>t</m:mi>
         <m:msup>
            <m:mrow>
               <m:mfenced close=")" open="(" separators="">
                  <m:mrow>
                     <m:mi>n</m:mi>
                     <m:mo class="MathClass-bin">-</m:mo>
                     <m:mi>l</m:mi>
                     <m:mo class="MathClass-bin">+</m:mo>
                     <m:mn>1</m:mn>
                  </m:mrow>
               </m:mfenced>
            </m:mrow>
            <m:mrow>
               <m:mn>2</m:mn>
            </m:mrow>
         </m:msup>
         <m:mfenced close=")" open="(" separators="">
            <m:mrow>
               <m:mi>l</m:mi>
               <m:mo class="MathClass-bin">+</m:mo>
               <m:msub>
                  <m:mrow>
                     <m:mi>p</m:mi>
                  </m:mrow>
                  <m:mrow>
                     <m:mn>2</m:mn>
                     <m:mi>d</m:mi>
                  </m:mrow>
               </m:msub>
               <m:munderover accent="false" accentunder="false">
                  <m:mrow>
                     <m:mo mathsize="big"> &#8721;</m:mo>
                  </m:mrow>
                  <m:mrow>
                     <m:mi>i</m:mi>
                     <m:mo class="MathClass-rel">=</m:mo>
                     <m:mn>1</m:mn>
                  </m:mrow>
                  <m:mrow>
                     <m:mn>2</m:mn>
                     <m:mi>d</m:mi>
                     <m:mo class="MathClass-bin">-</m:mo>
                     <m:msup>
                        <m:mrow>
                           <m:mi>d</m:mi>
                        </m:mrow>
                        <m:mrow>
                           <m:mi>&#8242;</m:mi>
                        </m:mrow>
                     </m:msup>
                     <m:mo class="MathClass-bin">+</m:mo>
                     <m:mn>1</m:mn>
                  </m:mrow>
               </m:munderover>
               <m:mfenced close=")" open="(" separators="">
                  <m:mrow>
                     <m:mtable class="array" columnlines="none none none none none none none none none none none none none none none none none none none" equalcolumns="false" equalrows="false">
                        <m:mtr>
                           <m:mtd class="array" columnalign="center">
                              <m:mi>l</m:mi>
                           </m:mtd>
                        </m:mtr>
                        <m:mtr>
                           <m:mtd class="array" columnalign="center">
                              <m:mi>i</m:mi>
                           </m:mtd>
                        </m:mtr>
                        <m:mtr>
                           <m:mtd class="array" columnalign="center"/>
                        </m:mtr>
                     </m:mtable>
                  </m:mrow>
               </m:mfenced>
               <m:msup>
                  <m:mrow>
                     <m:mn>3</m:mn>
                  </m:mrow>
                  <m:mrow>
                     <m:mi>i</m:mi>
                  </m:mrow>
               </m:msup>
            </m:mrow>
         </m:mfenced>
      </m:mrow>
   </m:mfenced>
</m:mrow>
</m:math>
</display-formula>
</p>
<p>where <it>p</it>
<sub>2<it>d </it>
</sub>is the probability that the hamming distance between two strings is at most 2<it>d</it>, and it is defined in Proposition 1. For fixed values of <it>t, n</it>, and <it>l</it>, value <it>d' </it>was estimated such that the probability of <inline-formula>
<m:math xmlns:m="http://www.w3.org/1998/Math/MathML" name="1471-2105-13-S17-S10-i12"><m:mrow>
   <m:msub>
      <m:mrow>
         <m:mover accent="true">
            <m:mrow>
               <m:mi>d</m:mi>
            </m:mrow>
            <m:mo class="MathClass-op"> &#772;</m:mo>
         </m:mover>
      </m:mrow>
      <m:mrow>
         <m:mi>H</m:mi>
      </m:mrow>
   </m:msub>
   <m:mrow>
      <m:mo class="MathClass-open">(</m:mo>
      <m:mrow>
         <m:mi>x</m:mi>
         <m:mo class="MathClass-punc">,</m:mo>
         <m:mi>S</m:mi>
      </m:mrow>
      <m:mo class="MathClass-close">)</m:mo>
   </m:mrow>
   <m:mo class="MathClass-rel">&#8805;</m:mo>
   <m:msup>
      <m:mrow>
         <m:mi>d</m:mi>
      </m:mrow>
      <m:mrow>
         <m:mi>&#8242;</m:mi>
      </m:mrow>
   </m:msup>
</m:mrow>
</m:math>
</inline-formula> is close to 1. (The probability of <inline-formula>
<m:math xmlns:m="http://www.w3.org/1998/Math/MathML" name="1471-2105-13-S17-S10-i12">
<m:mrow>
<m:msub>
<m:mrow>
<m:mover accent="true">
<m:mrow>
<m:mi>d</m:mi>
</m:mrow>
<m:mo class="MathClass-op"> &#772;</m:mo>
</m:mover>
</m:mrow>
<m:mrow>
<m:mi>H</m:mi>
</m:mrow>
</m:msub>
<m:mrow>
<m:mo class="MathClass-open">(</m:mo>
<m:mrow>
<m:mi>x</m:mi>
<m:mo class="MathClass-punc">,</m:mo>
<m:mi>S</m:mi>
</m:mrow>
<m:mo class="MathClass-close">)</m:mo>
</m:mrow>
<m:mo class="MathClass-rel">&#8805;</m:mo>
<m:msup>
<m:mrow>
<m:mi>d</m:mi>
</m:mrow>
<m:mrow>
<m:mi>&#8242;</m:mi>
</m:mrow>
</m:msup>
</m:mrow>
</m:math>
</inline-formula> is given in Proposition 1 and it is <inline-formula>
<m:math xmlns:m="http://www.w3.org/1998/Math/MathML" name="1471-2105-13-S17-S10-i13"><m:msup>
   <m:mrow>
      <m:mfenced close=")" open="(" separators="">
         <m:mrow>
            <m:mn>1</m:mn>
            <m:mo class="MathClass-bin">-</m:mo>
            <m:msup>
               <m:mrow>
                  <m:mfenced close=")" open="(" separators="">
                     <m:mrow>
                        <m:mn>1</m:mn>
                        <m:mo class="MathClass-bin">-</m:mo>
                        <m:msubsup>
                           <m:mrow>
                              <m:mi>p</m:mi>
                           </m:mrow>
                           <m:mrow>
                              <m:mi>d</m:mi>
                           </m:mrow>
                           <m:mrow>
                              <m:mi>&#8242;</m:mi>
                           </m:mrow>
                        </m:msubsup>
                     </m:mrow>
                  </m:mfenced>
               </m:mrow>
               <m:mrow>
                  <m:mi>n</m:mi>
                  <m:mo class="MathClass-bin">-</m:mo>
                  <m:mi>l</m:mi>
                  <m:mo class="MathClass-bin">+</m:mo>
                  <m:mn>1</m:mn>
               </m:mrow>
            </m:msup>
         </m:mrow>
      </m:mfenced>
   </m:mrow>
   <m:mrow>
      <m:mi>t</m:mi>
   </m:mrow>
</m:msup>
</m:math>
</inline-formula>).</p>
</sec>
<sec>
<st>
<p>Implementation</p>
</st>
<sec>
<st>
<p>Our proposed strategy</p>
</st>
<p>Our new strategy, referred to as <it>hybrid exact pattern motif search </it>(HEP), is composed of three steps: first, we determine the value <it>q</it>, corresponding to the size of a subset of input sequences, as explained below. Second, we apply an exact exhaustive algorithm &#163; (like, PMSprune) on the set of <it>q </it>sequences to find the set of <it>d</it>-neighbourhood <it>B<sub>d</sub>
</it>(<it>x</it>) (review definition 1 for exact definition of <it>d</it>-neighbourhood). We call this set the candidate motif set. Finally, we apply a pattern search algorithm over the remaining sequences to verify each motif. Note that our algorithm is generic in the sense that it takes the program &#163; also as input in addition to the input sequences and user parameters. A pseudo code for this strategy using the exact algorithm &#163; is as follows:</p>
<p>
<b>Algorithm 2: HEP </b>(&#163;, <it>s</it>
<sub>1</sub>,..., <it>s<sub>t</sub>, n, l, d</it>)</p>
<p>
<b>Begin</b>
</p>
<p indent="1">1) Determine the number of sequences <it>q </it>using the method given below.</p>
<p indent="1">2) Implement the exact algorithm &#163; on <it>q </it>input sequences. Let <it>C </it>be the set of candidate motifs found in the <it>q </it>sequences.</p>
<p indent="1">3) For each pattern <it>v </it>in <it>C</it>, check if <it>v </it>is a valid motif or not in the reminder (<it>t - q</it>) input sequences using pattern matching Algorithm.</p>
<p>
<b>End</b>.</p>
<p>
<b>Theorem 1: </b>Algorithm 2 correctly finds all (<it>l, d</it>) motifs in a given <it>t </it>input sequences.</p>
<p>
<b>Proof: </b>Step 2 of the algorithm is exhaustive and finds the whole set of <it>d</it>-neighborhood for the <it>q </it>sequences. Therefore, and by definition of the (<it>l, d</it>) motif problem, any (<it>l, d</it>) motif belongs to this set, even if <it>q </it>= 1. In Step 3, each candidate motif is verified by comparison to each substring in the remaining sequences. This step is conducted by an approximate pattern matching algorithm for each <it>l</it>-length substring in the candidate motif set and each <it>l</it>-length substring in the remaining sequences such that the hamming distance between these two substrings is &#8804; <it>d</it>. This guarantees that no motif is missing.</p>
<p>
<b>Theorem 2: </b>The running time of the HEP is equal to</p>
<p>
<display-formula id="M2">
<m:math xmlns:m="http://www.w3.org/1998/Math/MathML" name="1471-2105-13-S17-S10-i14"><m:mrow>
   <m:msub>
      <m:mrow>
         <m:mi>T</m:mi>
      </m:mrow>
      <m:mrow>
         <m:mi>H</m:mi>
         <m:mi>E</m:mi>
         <m:mi>P</m:mi>
      </m:mrow>
   </m:msub>
   <m:mo class="MathClass-rel">=</m:mo>
   <m:msub>
      <m:mrow>
         <m:mi>T</m:mi>
      </m:mrow>
      <m:mrow>
         <m:mstyle mathvariant="italic">
            <m:mi>&#163;</m:mi>
         </m:mstyle>
         <m:mrow>
            <m:mo class="MathClass-open">(</m:mo>
            <m:mrow>
               <m:mi>q</m:mi>
            </m:mrow>
            <m:mo class="MathClass-close">)</m:mo>
         </m:mrow>
      </m:mrow>
   </m:msub>
   <m:mo class="MathClass-bin">+</m:mo>
   <m:mi>l</m:mi>
   <m:mrow>
      <m:mo class="MathClass-open">(</m:mo>
      <m:mrow>
         <m:mi>t</m:mi>
         <m:mo class="MathClass-bin">-</m:mo>
         <m:mi>q</m:mi>
      </m:mrow>
      <m:mo class="MathClass-close">)</m:mo>
   </m:mrow>
   <m:mrow>
      <m:mo class="MathClass-open">(</m:mo>
      <m:mrow>
         <m:mi>n</m:mi>
         <m:mo class="MathClass-bin">-</m:mo>
         <m:mi>l</m:mi>
         <m:mo class="MathClass-bin">+</m:mo>
         <m:mn>1</m:mn>
      </m:mrow>
      <m:mo class="MathClass-close">)</m:mo>
   </m:mrow>
   <m:mi>E</m:mi>
   <m:mrow>
      <m:mo class="MathClass-open">(</m:mo>
      <m:mrow>
         <m:mi>l</m:mi>
         <m:mo class="MathClass-punc">,</m:mo>
         <m:mi>d</m:mi>
         <m:mo class="MathClass-punc">,</m:mo>
         <m:mi>q</m:mi>
         <m:mo class="MathClass-punc">,</m:mo>
         <m:mi>n</m:mi>
      </m:mrow>
      <m:mo class="MathClass-close">)</m:mo>
   </m:mrow>
</m:mrow>
</m:math>
</display-formula>
</p>
<p>where T<sub>
<it>&#163;</it>(<it>q</it>) </sub>is the running time of step 2 involving the use of an exact algorithm &#163; on the <it>q </it>input sequences and <it>l</it>(<it>t </it>- <it>q</it>) (<it>n </it>- <it>l </it>+ 1) <it>E</it>(<it>l, d, q, n</it>) is the running time of step 3 such that <it>E</it>(<it>l, d, q, n</it>) is the number of elements in the set <it>C</it>, which is estimated to be 4<it>l</it>(1- (1 - <it>p<sub>d</sub>
</it>)<sup>
<it>n </it>- <it>l </it>+ 1</sup>)<it>
<sup>q</sup>
</it>. Note that the complexity of step 1 takes constant time, as we will explain below. Note that the running time of the brute force algorithm is acquired if <it>q </it>= 0 in equation 2. The running time of the exact algorithm &#163; is acquired if <it>q </it>= <it>t </it>in equation 2.</p>
</sec>
</sec>
<sec>
<st>
<p>Determination of the best <it>q</it>
</p>
</st>
<p>The range of the number of sequences <it>q</it>, enhancing the performance of the exact motif finding problem is calculated by solving the following inequality for the parameter <it>q</it>:</p>
<p>
<display-formula id="M3">
<m:math xmlns:m="http://www.w3.org/1998/Math/MathML" name="1471-2105-13-S17-S10-i15"><m:mrow>
   <m:msub>
      <m:mrow>
         <m:mi>T</m:mi>
      </m:mrow>
      <m:mrow>
         <m:mi>H</m:mi>
         <m:mi>E</m:mi>
         <m:mi>P</m:mi>
      </m:mrow>
   </m:msub>
   <m:mo class="MathClass-rel">&#8804;</m:mo>
   <m:msub>
      <m:mrow>
         <m:mi>T</m:mi>
      </m:mrow>
      <m:mrow>
         <m:mstyle mathvariant="italic">
            <m:mi>&#163;</m:mi>
         </m:mstyle>
      </m:mrow>
   </m:msub>
</m:mrow>
</m:math>
</display-formula>
</p>
<p>
<b>Definition 5: </b>We define <it>mns </it>as the minimum number of sequences <it>q </it>that yields better running time; i.e., the first value of <it>q </it>that verifies the inequality. We also define <it>ons </it>as the optimal number of sequences <it>q </it>that yields the best running time; i.e., the value of <it>q </it>such that <it>T<sub>HEP </sub>
</it>is minimum over 1 &#8804; <it>q </it>&#8804; <it>t</it>.</p>
</sec>
<sec>
<st>
<p>Implementing HEP based on PMSprune</p>
</st>
<p>We decided to use PMSprune for implementing the first step in our method, because of its superiority compared to other algorithms as discussed in <abbrgrp>
<abbr bid="B31">31</abbr>
</abbrgrp>. However, we stress that our approach is generic and can be used with any better algorithm that appears in future. In the following, we will refer to our method based on PMSprune as <it>HEP_PMSprune</it>. If <it>q </it>= <it>mns </it>we will denote it with <it>HEP_PMSprune</it>(<it>mns</it>), and if <it>q = ons </it>we will denote it with <it>HEP_PMSprune</it>(<it>ons</it>).</p>
</sec>
<sec>
<st>
<p>Determining <it>mns </it>for PMSprune</p>
</st>
<p>Replacing <it>T</it>
<sub>
<it>&#163;</it>(<it>q</it>) </sub>by the time of PMSprune on <it>q </it>sequences, Equations (1) and (2) can be rewritten as follows:</p>
<p>
<display-formula>
<m:math xmlns:m="http://www.w3.org/1998/Math/MathML" name="1471-2105-13-S17-S10-i16"><m:mrow>
   <m:mtable class="aligned">
      <m:mtr>
         <m:mtd columnalign="right">
            <m:msub>
               <m:mrow>
                  <m:mi>T</m:mi>
               </m:mrow>
               <m:mrow>
                  <m:mi>P</m:mi>
                  <m:mi>M</m:mi>
                  <m:mi>S</m:mi>
                  <m:mi>p</m:mi>
                  <m:mi>r</m:mi>
                  <m:mi>u</m:mi>
                  <m:mi>n</m:mi>
                  <m:mi>e</m:mi>
               </m:mrow>
            </m:msub>
         </m:mtd>
         <m:mtd columnalign="left">
            <m:mo class="MathClass-rel">=</m:mo>
            <m:mi>q</m:mi>
            <m:msup>
               <m:mrow>
                  <m:mrow>
                     <m:mo class="MathClass-open">(</m:mo>
                     <m:mrow>
                        <m:mi>n</m:mi>
                        <m:mo class="MathClass-bin">-</m:mo>
                        <m:mi>l</m:mi>
                        <m:mo class="MathClass-bin">+</m:mo>
                        <m:mn>1</m:mn>
                     </m:mrow>
                     <m:mo class="MathClass-close">)</m:mo>
                  </m:mrow>
               </m:mrow>
               <m:mrow>
                  <m:mn>2</m:mn>
               </m:mrow>
            </m:msup>
            <m:mrow>
               <m:mo class="MathClass-open">(</m:mo>
               <m:mrow>
                  <m:mi>l</m:mi>
                  <m:mo class="MathClass-bin">+</m:mo>
                  <m:msub>
                     <m:mrow>
                        <m:mi>p</m:mi>
                     </m:mrow>
                     <m:mrow>
                        <m:mn>2</m:mn>
                        <m:mi>d</m:mi>
                     </m:mrow>
                  </m:msub>
                  <m:munderover accent="false" accentunder="false">
                     <m:mrow>
                        <m:mo mathsize="big"> &#8721;</m:mo>
                     </m:mrow>
                     <m:mrow>
                        <m:mi>i</m:mi>
                        <m:mo class="MathClass-rel">=</m:mo>
                        <m:mn>1</m:mn>
                     </m:mrow>
                     <m:mrow>
                        <m:mn>2</m:mn>
                        <m:mi>d</m:mi>
                        <m:mo class="MathClass-bin">-</m:mo>
                        <m:msup>
                           <m:mrow>
                              <m:mi>d</m:mi>
                           </m:mrow>
                           <m:mrow>
                              <m:mi>&#8242;</m:mi>
                           </m:mrow>
                        </m:msup>
                        <m:mo class="MathClass-bin">+</m:mo>
                        <m:mn>1</m:mn>
                     </m:mrow>
                  </m:munderover>
                  <m:mfenced close=")" open="(" separators="">
                     <m:mrow>
                        <m:mtable class="array" columnlines="none" equalcolumns="false" equalrows="false">
                           <m:mtr>
                              <m:mtd class="array" columnalign="center">
                                 <m:mi>l</m:mi>
                              </m:mtd>
                           </m:mtr>
                           <m:mtr>
                              <m:mtd class="array" columnalign="center">
                                 <m:mi>i</m:mi>
                              </m:mtd>
                           </m:mtr>
                           <m:mtr>
                              <m:mtd class="array" columnalign="center"/>
                           </m:mtr>
                        </m:mtable>
                     </m:mrow>
                  </m:mfenced>
                  <m:msup>
                     <m:mrow>
                        <m:mn>3</m:mn>
                     </m:mrow>
                     <m:mrow>
                        <m:mi>i</m:mi>
                     </m:mrow>
                  </m:msup>
               </m:mrow>
               <m:mo class="MathClass-close">)</m:mo>
            </m:mrow>
            <m:mstyle class="text">
               <m:mtext class="textsf" mathvariant="sans-serif">&#160;</m:mtext>
            </m:mstyle>
            <m:mo class="MathClass-bin">+</m:mo>
            <m:mrow>
               <m:mo class="MathClass-open">(</m:mo>
               <m:mrow>
                  <m:mi>t</m:mi>
                  <m:mo class="MathClass-bin">-</m:mo>
                  <m:mi>q</m:mi>
               </m:mrow>
               <m:mo class="MathClass-close">)</m:mo>
            </m:mrow>
            <m:msup>
               <m:mrow>
                  <m:mrow>
                     <m:mo class="MathClass-open">(</m:mo>
                     <m:mrow>
                        <m:mi>n</m:mi>
                        <m:mo class="MathClass-bin">-</m:mo>
                        <m:mi>l</m:mi>
                        <m:mo class="MathClass-bin">+</m:mo>
                        <m:mn>1</m:mn>
                     </m:mrow>
                     <m:mo class="MathClass-close">)</m:mo>
                  </m:mrow>
               </m:mrow>
               <m:mrow>
                  <m:mn>2</m:mn>
               </m:mrow>
            </m:msup>
         </m:mtd>
         <m:mtd columnalign="right"/>
      </m:mtr>
      <m:mtr>
         <m:mtd columnalign="right"/>
         <m:mtd columnalign="left">
            <m:mrow>
               <m:mo class="MathClass-open">(</m:mo>
               <m:mrow>
                  <m:mi>l</m:mi>
                  <m:mo class="MathClass-bin">+</m:mo>
                  <m:msub>
                     <m:mrow>
                        <m:mi>p</m:mi>
                     </m:mrow>
                     <m:mrow>
                        <m:mn>2</m:mn>
                        <m:mi>d</m:mi>
                     </m:mrow>
                  </m:msub>
                  <m:munderover accent="false" accentunder="false">
                     <m:mrow>
                        <m:mo mathsize="big"> &#8721;</m:mo>
                     </m:mrow>
                     <m:mrow>
                        <m:mi>i</m:mi>
                        <m:mo class="MathClass-rel">=</m:mo>
                        <m:mn>1</m:mn>
                     </m:mrow>
                     <m:mrow>
                        <m:mn>2</m:mn>
                        <m:mi>d</m:mi>
                        <m:mo class="MathClass-bin">-</m:mo>
                        <m:msup>
                           <m:mrow>
                              <m:mi>d</m:mi>
                           </m:mrow>
                           <m:mrow>
                              <m:mi>&#8242;</m:mi>
                           </m:mrow>
                        </m:msup>
                        <m:mo class="MathClass-bin">+</m:mo>
                        <m:mn>1</m:mn>
                     </m:mrow>
                  </m:munderover>
                  <m:mstyle class="text">
                     <m:mtext class="textsf" mathvariant="sans-serif">&#160;</m:mtext>
                  </m:mstyle>
                  <m:mfenced close=")" open="(" separators="">
                     <m:mrow>
                        <m:mtable class="array" columnlines="none none none none none none none none none none none none none none none none none none none" equalcolumns="false" equalrows="false">
                           <m:mtr>
                              <m:mtd class="array" columnalign="center">
                                 <m:mi>l</m:mi>
                              </m:mtd>
                           </m:mtr>
                           <m:mtr>
                              <m:mtd class="array" columnalign="center">
                                 <m:mi>i</m:mi>
                              </m:mtd>
                           </m:mtr>
                           <m:mtr>
                              <m:mtd class="array" columnalign="center"/>
                           </m:mtr>
                        </m:mtable>
                     </m:mrow>
                  </m:mfenced>
                  <m:msup>
                     <m:mrow>
                        <m:mn>3</m:mn>
                     </m:mrow>
                     <m:mrow>
                        <m:mi>i</m:mi>
                     </m:mrow>
                  </m:msup>
               </m:mrow>
               <m:mo class="MathClass-close">)</m:mo>
            </m:mrow>
         </m:mtd>
      </m:mtr>
      <m:mtr>
         <m:mtd columnalign="right"/>
      </m:mtr>
   </m:mtable>
</m:mrow>
</m:math>
</display-formula>
</p>
<p>
<display-formula>
<m:math xmlns:m="http://www.w3.org/1998/Math/MathML" name="1471-2105-13-S17-S10-i17"><m:mrow>
   <m:mtable class="gathered">
      <m:mtr>
         <m:mtd>
            <m:msub>
               <m:mrow>
                  <m:mi>T</m:mi>
               </m:mrow>
               <m:mrow>
                  <m:mi>H</m:mi>
                  <m:mi>E</m:mi>
                  <m:mi>P</m:mi>
                  <m:mstyle class="text">
                     <m:mtext>_</m:mtext>
                  </m:mstyle>
                  <m:mi>P</m:mi>
                  <m:mi>M</m:mi>
                  <m:mi>S</m:mi>
                  <m:mi>p</m:mi>
                  <m:mi>r</m:mi>
                  <m:mi>u</m:mi>
                  <m:mi>n</m:mi>
                  <m:mi>e</m:mi>
               </m:mrow>
            </m:msub>
            <m:mo class="MathClass-rel">=</m:mo>
            <m:mi>q</m:mi>
            <m:msup>
               <m:mrow>
                  <m:mrow>
                     <m:mo class="MathClass-open">(</m:mo>
                     <m:mrow>
                        <m:mi>n</m:mi>
                        <m:mo class="MathClass-bin">-</m:mo>
                        <m:mi>l</m:mi>
                        <m:mo class="MathClass-bin">+</m:mo>
                        <m:mn>1</m:mn>
                     </m:mrow>
                     <m:mo class="MathClass-close">)</m:mo>
                  </m:mrow>
               </m:mrow>
               <m:mrow>
                  <m:mn>2</m:mn>
               </m:mrow>
            </m:msup>
            <m:mrow>
               <m:mo class="MathClass-open">(</m:mo>
               <m:mrow>
                  <m:mi>l</m:mi>
                  <m:mo class="MathClass-bin">+</m:mo>
                  <m:msub>
                     <m:mrow>
                        <m:mi>p</m:mi>
                     </m:mrow>
                     <m:mrow>
                        <m:mn>2</m:mn>
                        <m:mi>d</m:mi>
                     </m:mrow>
                  </m:msub>
                  <m:munderover accent="false" accentunder="false">
                     <m:mrow>
                        <m:mo mathsize="big"> &#8721;</m:mo>
                     </m:mrow>
                     <m:mrow>
                        <m:mi>i</m:mi>
                        <m:mo class="MathClass-rel">=</m:mo>
                        <m:mn>1</m:mn>
                     </m:mrow>
                     <m:mrow>
                        <m:mn>2</m:mn>
                        <m:mi>d</m:mi>
                        <m:mo class="MathClass-bin">-</m:mo>
                        <m:msup>
                           <m:mrow>
                              <m:mi>d</m:mi>
                           </m:mrow>
                           <m:mrow>
                              <m:mi>&#8242;</m:mi>
                           </m:mrow>
                        </m:msup>
                        <m:mo class="MathClass-bin">+</m:mo>
                        <m:mn>1</m:mn>
                     </m:mrow>
                  </m:munderover>
                  <m:mfenced close=")" open="(" separators="">
                     <m:mrow>
                        <m:mtable class="array" columnlines="none" equalcolumns="false" equalrows="false">
                           <m:mtr>
                              <m:mtd class="array" columnalign="center">
                                 <m:mi>l</m:mi>
                              </m:mtd>
                           </m:mtr>
                           <m:mtr>
                              <m:mtd class="array" columnalign="center">
                                 <m:mi>i</m:mi>
                              </m:mtd>
                           </m:mtr>
                           <m:mtr>
                              <m:mtd class="array" columnalign="center"/>
                           </m:mtr>
                        </m:mtable>
                     </m:mrow>
                  </m:mfenced>
               </m:mrow>
               <m:msup>
                  <m:mrow>
                     <m:mn>3</m:mn>
                  </m:mrow>
                  <m:mrow>
                     <m:mi>i</m:mi>
                  </m:mrow>
               </m:msup>
               <m:mo class="MathClass-close">)</m:mo>
            </m:mrow>
            <m:mo class="MathClass-bin">+</m:mo>
            <m:mi>l</m:mi>
            <m:mrow>
               <m:mo class="MathClass-open">(</m:mo>
               <m:mrow>
                  <m:mi>t</m:mi>
                  <m:mo class="MathClass-bin">-</m:mo>
                  <m:mi>q</m:mi>
               </m:mrow>
               <m:mo class="MathClass-close">)</m:mo>
            </m:mrow>
         </m:mtd>
      </m:mtr>
      <m:mtr>
         <m:mtd>
            <m:mstyle class="text">
               <m:mtext class="textsf" mathvariant="sans-serif">&#160;</m:mtext>
            </m:mstyle>
            <m:mrow>
               <m:mo class="MathClass-open">(</m:mo>
               <m:mrow>
                  <m:mi>n</m:mi>
                  <m:mo class="MathClass-bin">-</m:mo>
                  <m:mi>l</m:mi>
                  <m:mo class="MathClass-bin">+</m:mo>
                  <m:mn>1</m:mn>
               </m:mrow>
               <m:mo class="MathClass-close">)</m:mo>
            </m:mrow>
            <m:mi>E</m:mi>
            <m:mrow>
               <m:mo class="MathClass-open">(</m:mo>
               <m:mrow>
                  <m:mi>l</m:mi>
                  <m:mo class="MathClass-punc">,</m:mo>
                  <m:mi>d</m:mi>
                  <m:mo class="MathClass-punc">,</m:mo>
                  <m:mi>q</m:mi>
                  <m:mo class="MathClass-punc">,</m:mo>
                  <m:mi>n</m:mi>
               </m:mrow>
               <m:mo class="MathClass-close">)</m:mo>
            </m:mrow>
         </m:mtd>
      </m:mtr>
      <m:mtr>
         <m:mtd/>
      </m:mtr>
   </m:mtable>
</m:mrow>
</m:math>
</display-formula>
</p>
<p>Replacing <it>T<sub>HEP </sub>
</it>with <it>T<sub>HEP_PMSprune </sub>
</it>and T<sub>&#163; </sub>with <it>T<sub>PMSprune </sub>
</it>in the inequality (3)results in the following variation:</p>
<p>
<display-formula>
<m:math xmlns:m="http://www.w3.org/1998/Math/MathML" name="1471-2105-13-S17-S10-i18"><m:mrow>
   <m:mi>l</m:mi>
   <m:mrow>
      <m:mo class="MathClass-open">(</m:mo>
      <m:mrow>
         <m:mi>t</m:mi>
         <m:mo class="MathClass-bin">-</m:mo>
         <m:mi>q</m:mi>
      </m:mrow>
      <m:mo class="MathClass-close">)</m:mo>
   </m:mrow>
   <m:mrow>
      <m:mo class="MathClass-open">(</m:mo>
      <m:mrow>
         <m:mi>n</m:mi>
         <m:mo class="MathClass-bin">-</m:mo>
         <m:mi>l</m:mi>
         <m:mo class="MathClass-bin">+</m:mo>
         <m:mn>1</m:mn>
      </m:mrow>
      <m:mo class="MathClass-close">)</m:mo>
   </m:mrow>
   <m:mi>E</m:mi>
   <m:mrow>
      <m:mo class="MathClass-open">(</m:mo>
      <m:mrow>
         <m:mi>l</m:mi>
         <m:mo class="MathClass-punc">,</m:mo>
         <m:mi>d</m:mi>
         <m:mo class="MathClass-punc">,</m:mo>
         <m:mi>q</m:mi>
         <m:mo class="MathClass-punc">,</m:mo>
         <m:mi>n</m:mi>
      </m:mrow>
      <m:mo class="MathClass-close">)</m:mo>
   </m:mrow>
   <m:mstyle class="text">
      <m:mtext class="textsf" mathvariant="sans-serif">&#160;</m:mtext>
   </m:mstyle>
   <m:mo class="MathClass-rel">&lt;</m:mo>
   <m:mstyle class="text">
      <m:mtext class="textsf" mathvariant="sans-serif">&#160;</m:mtext>
   </m:mstyle>
   <m:mrow>
      <m:mo class="MathClass-open">(</m:mo>
      <m:mrow>
         <m:mi>t</m:mi>
         <m:mo class="MathClass-bin">-</m:mo>
         <m:mi>q</m:mi>
      </m:mrow>
      <m:mo class="MathClass-close">)</m:mo>
   </m:mrow>
   <m:msup>
      <m:mrow>
         <m:mrow>
            <m:mo class="MathClass-open">(</m:mo>
            <m:mrow>
               <m:mi>n</m:mi>
               <m:mo class="MathClass-bin">-</m:mo>
               <m:mi>l</m:mi>
               <m:mo class="MathClass-bin">+</m:mo>
               <m:mn>1</m:mn>
            </m:mrow>
            <m:mo class="MathClass-close">)</m:mo>
         </m:mrow>
      </m:mrow>
      <m:mrow>
         <m:mn>2</m:mn>
      </m:mrow>
   </m:msup>
   <m:mrow>
      <m:mo class="MathClass-open">(</m:mo>
      <m:mrow>
         <m:mi>l</m:mi>
         <m:mo class="MathClass-bin">+</m:mo>
         <m:msub>
            <m:mrow>
               <m:mi>p</m:mi>
            </m:mrow>
            <m:mrow>
               <m:mn>2</m:mn>
               <m:mi>d</m:mi>
            </m:mrow>
         </m:msub>
         <m:munderover accent="false" accentunder="false">
            <m:mrow>
               <m:mo mathsize="big"> &#8721;</m:mo>
            </m:mrow>
            <m:mrow>
               <m:mi>i</m:mi>
               <m:mo class="MathClass-rel">=</m:mo>
               <m:mn>1</m:mn>
            </m:mrow>
            <m:mrow>
               <m:mn>2</m:mn>
               <m:mi>d</m:mi>
               <m:mo class="MathClass-bin">-</m:mo>
               <m:msup>
                  <m:mrow>
                     <m:mi>d</m:mi>
                  </m:mrow>
                  <m:mrow>
                     <m:mi>&#8242;</m:mi>
                  </m:mrow>
               </m:msup>
               <m:mo class="MathClass-bin">+</m:mo>
               <m:mn>1</m:mn>
            </m:mrow>
         </m:munderover>
         <m:mfenced close=")" open="(" separators="">
            <m:mrow>
               <m:mtable class="array" columnlines="none" equalcolumns="false" equalrows="false">
                  <m:mtr>
                     <m:mtd class="array" columnalign="center">
                        <m:mi>l</m:mi>
                     </m:mtd>
                  </m:mtr>
                  <m:mtr>
                     <m:mtd class="array" columnalign="center">
                        <m:mi>i</m:mi>
                     </m:mtd>
                  </m:mtr>
                  <m:mtr>
                     <m:mtd class="array" columnalign="center"/>
                  </m:mtr>
               </m:mtable>
            </m:mrow>
         </m:mfenced>
      </m:mrow>
      <m:msup>
         <m:mrow>
            <m:mn>3</m:mn>
         </m:mrow>
         <m:mrow>
            <m:mi>i</m:mi>
         </m:mrow>
      </m:msup>
   </m:mrow>
   <m:mo class="MathClass-close">)</m:mo>
</m:mrow>
</m:math>
</display-formula>
</p>
<p>Substituting the value of <it>E</it>(<it>l, d, q, n</it>) with the value given in Proposition 1 in the left hand side yields</p>
<p>
<display-formula>
<m:math xmlns:m="http://www.w3.org/1998/Math/MathML" name="1471-2105-13-S17-S10-i19"><m:mrow>
   <m:mstyle class="text">
      <m:mtext class="textsf" mathvariant="sans-serif">&#160;</m:mtext>
   </m:mstyle>
   <m:msup>
      <m:mrow>
         <m:mn>4</m:mn>
      </m:mrow>
      <m:mrow>
         <m:mi>l</m:mi>
      </m:mrow>
   </m:msup>
   <m:mstyle class="text">
      <m:mtext class="textsf" mathvariant="sans-serif">&#160;</m:mtext>
   </m:mstyle>
   <m:msup>
      <m:mrow>
         <m:mrow>
            <m:mo class="MathClass-open">(</m:mo>
            <m:mrow>
               <m:mn>1</m:mn>
               <m:mo class="MathClass-bin">-</m:mo>
               <m:msup>
                  <m:mrow>
                     <m:mrow>
                        <m:mo class="MathClass-open">(</m:mo>
                        <m:mrow>
                           <m:mn>1</m:mn>
                           <m:mo class="MathClass-bin">-</m:mo>
                           <m:msub>
                              <m:mrow>
                                 <m:mi>p</m:mi>
                              </m:mrow>
                              <m:mrow>
                                 <m:mi>d</m:mi>
                              </m:mrow>
                           </m:msub>
                        </m:mrow>
                        <m:mo class="MathClass-close">)</m:mo>
                     </m:mrow>
                  </m:mrow>
                  <m:mrow>
                     <m:mi>n</m:mi>
                     <m:mo class="MathClass-bin">-</m:mo>
                     <m:mi>l</m:mi>
                     <m:mo class="MathClass-bin">+</m:mo>
                     <m:mn>1</m:mn>
                  </m:mrow>
               </m:msup>
            </m:mrow>
            <m:mo class="MathClass-close">)</m:mo>
         </m:mrow>
      </m:mrow>
      <m:mrow>
         <m:mi>q</m:mi>
      </m:mrow>
   </m:msup>
   <m:mo class="MathClass-rel">&lt;</m:mo>
   <m:mfrac>
      <m:mrow>
         <m:mrow>
            <m:mo class="MathClass-open">(</m:mo>
            <m:mrow>
               <m:mi>n</m:mi>
               <m:mo class="MathClass-bin">-</m:mo>
               <m:mi>l</m:mi>
               <m:mo class="MathClass-bin">+</m:mo>
               <m:mn>1</m:mn>
            </m:mrow>
            <m:mo class="MathClass-close">)</m:mo>
         </m:mrow>
         <m:mrow>
            <m:mo class="MathClass-open">(</m:mo>
            <m:mrow>
               <m:mi>l</m:mi>
               <m:mo class="MathClass-bin">+</m:mo>
               <m:msub>
                  <m:mrow>
                     <m:mi>p</m:mi>
                  </m:mrow>
                  <m:mrow>
                     <m:mn>2</m:mn>
                     <m:mi>d</m:mi>
                  </m:mrow>
               </m:msub>
               <m:munderover accent="false" accentunder="false">
                  <m:mrow>
                     <m:mo mathsize="big"> &#8721;</m:mo>
                  </m:mrow>
                  <m:mrow>
                     <m:mi>i</m:mi>
                     <m:mo class="MathClass-rel">=</m:mo>
                     <m:mn>1</m:mn>
                  </m:mrow>
                  <m:mrow>
                     <m:mn>2</m:mn>
                     <m:mi>d</m:mi>
                     <m:mo class="MathClass-bin">-</m:mo>
                     <m:msup>
                        <m:mrow>
                           <m:mi>d</m:mi>
                        </m:mrow>
                        <m:mrow>
                           <m:mi>&#8242;</m:mi>
                        </m:mrow>
                     </m:msup>
                     <m:mo class="MathClass-bin">+</m:mo>
                     <m:mn>1</m:mn>
                  </m:mrow>
               </m:munderover>
               <m:mfenced close=")" open="(" separators="">
                  <m:mrow>
                     <m:mtable class="array" columnlines="none" equalcolumns="false" equalrows="false">
                        <m:mtr>
                           <m:mtd class="array" columnalign="center">
                              <m:mi>l</m:mi>
                           </m:mtd>
                        </m:mtr>
                        <m:mtr>
                           <m:mtd class="array" columnalign="center">
                              <m:mi>i</m:mi>
                           </m:mtd>
                        </m:mtr>
                        <m:mtr>
                           <m:mtd class="array" columnalign="center"/>
                        </m:mtr>
                     </m:mtable>
                  </m:mrow>
               </m:mfenced>
            </m:mrow>
            <m:msup>
               <m:mrow>
                  <m:mn>3</m:mn>
               </m:mrow>
               <m:mrow>
                  <m:mi>i</m:mi>
               </m:mrow>
            </m:msup>
         </m:mrow>
         <m:mo class="MathClass-close">)</m:mo>
      </m:mrow>
      <m:mrow>
         <m:mi>l</m:mi>
      </m:mrow>
   </m:mfrac>
</m:mrow>
</m:math>
</display-formula>
</p>
<p>Dividing both sides by 4<it>
<sup>l </sup>
</it>and taking the logarithm,</p>
<p>
<display-formula id="M4">
<m:math xmlns:m="http://www.w3.org/1998/Math/MathML" name="1471-2105-13-S17-S10-i20"><m:mrow>
   <m:mstyle class="text">
      <m:mtext class="textsf" mathvariant="sans-serif">&#160;</m:mtext>
   </m:mstyle>
   <m:mi>q</m:mi>
   <m:mo class="MathClass-rel">&gt;</m:mo>
   <m:mfrac>
      <m:mrow>
         <m:mstyle class="text">
            <m:mtext class="textsf" mathvariant="sans-serif">log</m:mtext>
         </m:mstyle>
         <m:mfenced close="}" open="{" separators="">
            <m:mrow>
               <m:mrow>
                  <m:mo class="MathClass-open">(</m:mo>
                  <m:mrow>
                     <m:mi>n</m:mi>
                     <m:mo class="MathClass-bin">-</m:mo>
                     <m:mi>l</m:mi>
                     <m:mo class="MathClass-bin">+</m:mo>
                     <m:mn>1</m:mn>
                  </m:mrow>
                  <m:mo class="MathClass-close">)</m:mo>
               </m:mrow>
               <m:mrow>
                  <m:mo class="MathClass-open">(</m:mo>
                  <m:mrow>
                     <m:mi>l</m:mi>
                     <m:mo class="MathClass-bin">+</m:mo>
                     <m:msub>
                        <m:mrow>
                           <m:mi>p</m:mi>
                        </m:mrow>
                        <m:mrow>
                           <m:mn>2</m:mn>
                           <m:mi>d</m:mi>
                        </m:mrow>
                     </m:msub>
                     <m:munderover accent="false" accentunder="false">
                        <m:mrow>
                           <m:mo mathsize="big"> &#8721;</m:mo>
                        </m:mrow>
                        <m:mrow>
                           <m:mi>i</m:mi>
                           <m:mo class="MathClass-rel">=</m:mo>
                           <m:mn>1</m:mn>
                        </m:mrow>
                        <m:mrow>
                           <m:mn>2</m:mn>
                           <m:mi>d</m:mi>
                           <m:mo class="MathClass-bin">-</m:mo>
                           <m:msup>
                              <m:mrow>
                                 <m:mi>d</m:mi>
                              </m:mrow>
                              <m:mrow>
                                 <m:mi>&#8242;</m:mi>
                              </m:mrow>
                           </m:msup>
                           <m:mo class="MathClass-bin">+</m:mo>
                           <m:mn>1</m:mn>
                        </m:mrow>
                     </m:munderover>
                     <m:mfenced close=")" open="(" separators="">
                        <m:mrow>
                           <m:mtable class="array" columnlines="none" equalcolumns="false" equalrows="false">
                              <m:mtr>
                                 <m:mtd class="array" columnalign="center">
                                    <m:mi>l</m:mi>
                                 </m:mtd>
                              </m:mtr>
                              <m:mtr>
                                 <m:mtd class="array" columnalign="center">
                                    <m:mi>i</m:mi>
                                 </m:mtd>
                              </m:mtr>
                              <m:mtr>
                                 <m:mtd class="array" columnalign="center"/>
                              </m:mtr>
                           </m:mtable>
                        </m:mrow>
                     </m:mfenced>
                  </m:mrow>
                  <m:msup>
                     <m:mrow>
                        <m:mn>3</m:mn>
                     </m:mrow>
                     <m:mrow>
                        <m:mi>i</m:mi>
                     </m:mrow>
                  </m:msup>
               </m:mrow>
               <m:mo class="MathClass-close">)</m:mo>
            </m:mrow>
         </m:mfenced>
         <m:mo class="MathClass-bin">-</m:mo>
         <m:mstyle class="text">
            <m:mtext class="textsf" mathvariant="sans-serif">log</m:mtext>
         </m:mstyle>
         <m:mrow>
            <m:mo class="MathClass-open">(</m:mo>
            <m:mrow>
               <m:mi>l</m:mi>
               <m:msup>
                  <m:mrow>
                     <m:mn>4</m:mn>
                  </m:mrow>
                  <m:mrow>
                     <m:mi>l</m:mi>
                  </m:mrow>
               </m:msup>
            </m:mrow>
            <m:mo class="MathClass-close">)</m:mo>
         </m:mrow>
      </m:mrow>
      <m:mrow>
         <m:mstyle class="text">
            <m:mtext class="textsf" mathvariant="sans-serif">&#160;</m:mtext>
         </m:mstyle>
         <m:mstyle class="text">
            <m:mtext class="textsf" mathvariant="sans-serif">log</m:mtext>
         </m:mstyle>
         <m:mrow>
            <m:mo class="MathClass-open">(</m:mo>
            <m:mrow>
               <m:mn>1</m:mn>
               <m:mo class="MathClass-bin">-</m:mo>
               <m:msup>
                  <m:mrow>
                     <m:mrow>
                        <m:mo class="MathClass-open">(</m:mo>
                        <m:mrow>
                           <m:mn>1</m:mn>
                           <m:mo class="MathClass-bin">-</m:mo>
                           <m:msub>
                              <m:mrow>
                                 <m:mi>p</m:mi>
                              </m:mrow>
                              <m:mrow>
                                 <m:mi>d</m:mi>
                              </m:mrow>
                           </m:msub>
                        </m:mrow>
                        <m:mo class="MathClass-close">)</m:mo>
                     </m:mrow>
                  </m:mrow>
                  <m:mrow>
                     <m:mi>n</m:mi>
                     <m:mo class="MathClass-bin">-</m:mo>
                     <m:mi>l</m:mi>
                     <m:mo class="MathClass-bin">+</m:mo>
                     <m:mn>1</m:mn>
                  </m:mrow>
               </m:msup>
            </m:mrow>
            <m:mo class="MathClass-close">)</m:mo>
         </m:mrow>
      </m:mrow>
   </m:mfrac>
</m:mrow>
</m:math>
</display-formula>
</p>
<p>The inequality (4) provides the range of the values of <it>q </it>that makes the running time of HEP using PMSprune less than the running time of the original PMSprune over the all set of sequences. The minimum value of <it>q </it>in the range of the inequality is called <it>mns </it>and it is equal to:</p>
<p>
<display-formula>
<m:math xmlns:m="http://www.w3.org/1998/Math/MathML" name="1471-2105-13-S17-S10-i21"><m:mrow>
   <m:mfenced close="&#8969;" open="&#8968;" separators="">
      <m:mrow>
         <m:mfrac>
            <m:mrow>
               <m:mstyle class="text">
                  <m:mtext class="textsf" mathvariant="sans-serif">log</m:mtext>
               </m:mstyle>
               <m:mfenced close="}" open="{" separators="">
                  <m:mrow>
                     <m:mrow>
                        <m:mo class="MathClass-open">(</m:mo>
                        <m:mrow>
                           <m:mi>n</m:mi>
                           <m:mo class="MathClass-bin">-</m:mo>
                           <m:mi>l</m:mi>
                           <m:mo class="MathClass-bin">+</m:mo>
                           <m:mn>1</m:mn>
                        </m:mrow>
                        <m:mo class="MathClass-close">)</m:mo>
                     </m:mrow>
                     <m:mrow>
                        <m:mo class="MathClass-open">(</m:mo>
                        <m:mrow>
                           <m:mi>l</m:mi>
                           <m:mo class="MathClass-bin">+</m:mo>
                           <m:msub>
                              <m:mrow>
                                 <m:mi>p</m:mi>
                              </m:mrow>
                              <m:mrow>
                                 <m:mn>2</m:mn>
                                 <m:mi>d</m:mi>
                              </m:mrow>
                           </m:msub>
                           <m:munderover accent="false" accentunder="false">
                              <m:mrow>
                                 <m:mo mathsize="big"> &#8721;</m:mo>
                              </m:mrow>
                              <m:mrow>
                                 <m:mi>i</m:mi>
                                 <m:mo class="MathClass-rel">=</m:mo>
                                 <m:mn>1</m:mn>
                              </m:mrow>
                              <m:mrow>
                                 <m:mn>2</m:mn>
                                 <m:mi>d</m:mi>
                                 <m:mo class="MathClass-bin">-</m:mo>
                                 <m:msup>
                                    <m:mrow>
                                       <m:mi>d</m:mi>
                                    </m:mrow>
                                    <m:mrow>
                                       <m:mi>&#8242;</m:mi>
                                    </m:mrow>
                                 </m:msup>
                                 <m:mo class="MathClass-bin">+</m:mo>
                                 <m:mn>1</m:mn>
                              </m:mrow>
                           </m:munderover>
                           <m:mfenced close=")" open="(" separators="">
                              <m:mrow>
                                 <m:mtable class="array" columnlines="none" equalcolumns="false" equalrows="false">
                                    <m:mtr>
                                       <m:mtd class="array" columnalign="center">
                                          <m:mi>l</m:mi>
                                       </m:mtd>
                                    </m:mtr>
                                    <m:mtr>
                                       <m:mtd class="array" columnalign="center">
                                          <m:mi>i</m:mi>
                                       </m:mtd>
                                    </m:mtr>
                                    <m:mtr>
                                       <m:mtd class="array" columnalign="center"/>
                                    </m:mtr>
                                 </m:mtable>
                              </m:mrow>
                           </m:mfenced>
                        </m:mrow>
                        <m:msup>
                           <m:mrow>
                              <m:mn>3</m:mn>
                           </m:mrow>
                           <m:mrow>
                              <m:mi>i</m:mi>
                           </m:mrow>
                        </m:msup>
                     </m:mrow>
                     <m:mo class="MathClass-close">)</m:mo>
                  </m:mrow>
               </m:mfenced>
               <m:mo class="MathClass-bin">-</m:mo>
               <m:mstyle class="text">
                  <m:mtext class="textsf" mathvariant="sans-serif">log</m:mtext>
               </m:mstyle>
               <m:mrow>
                  <m:mo class="MathClass-open">(</m:mo>
                  <m:mrow>
                     <m:mi>l</m:mi>
                     <m:msup>
                        <m:mrow>
                           <m:mn>4</m:mn>
                        </m:mrow>
                        <m:mrow>
                           <m:mi>l</m:mi>
                        </m:mrow>
                     </m:msup>
                  </m:mrow>
                  <m:mo class="MathClass-close">)</m:mo>
               </m:mrow>
            </m:mrow>
            <m:mrow>
               <m:mstyle class="text">
                  <m:mtext class="textsf" mathvariant="sans-serif">&#160;</m:mtext>
               </m:mstyle>
               <m:mstyle class="text">
                  <m:mtext class="textsf" mathvariant="sans-serif">log</m:mtext>
               </m:mstyle>
               <m:mrow>
                  <m:mo class="MathClass-open">(</m:mo>
                  <m:mrow>
                     <m:mn>1</m:mn>
                     <m:mo class="MathClass-bin">-</m:mo>
                     <m:msup>
                        <m:mrow>
                           <m:mrow>
                              <m:mo class="MathClass-open">(</m:mo>
                              <m:mrow>
                                 <m:mn>1</m:mn>
                                 <m:mo class="MathClass-bin">-</m:mo>
                                 <m:msub>
                                    <m:mrow>
                                       <m:mi>p</m:mi>
                                    </m:mrow>
                                    <m:mrow>
                                       <m:mi>d</m:mi>
                                    </m:mrow>
                                 </m:msub>
                              </m:mrow>
                              <m:mo class="MathClass-close">)</m:mo>
                           </m:mrow>
                        </m:mrow>
                        <m:mrow>
                           <m:mi>n</m:mi>
                           <m:mo class="MathClass-bin">-</m:mo>
                           <m:mi>l</m:mi>
                           <m:mo class="MathClass-bin">+</m:mo>
                           <m:mn>1</m:mn>
                        </m:mrow>
                     </m:msup>
                  </m:mrow>
                  <m:mo class="MathClass-close">)</m:mo>
               </m:mrow>
            </m:mrow>
         </m:mfrac>
      </m:mrow>
   </m:mfenced>
   <m:mo class="MathClass-bin">+</m:mo>
   <m:mn>1</m:mn>
</m:mrow>
</m:math>
</display-formula>
</p>
</sec>
<sec>
<st>
<p>Determining <it>ons </it>for PMSprune</p>
</st>
<p>For fixed values of <it>t, n, l </it>and <it>d, ons </it>can be calculated for PMSprune by selecting the value of <it>q </it>that minimizes the total number of operations <it>T</it>
<sub>
<it>HEP</it>_<it>PMSprune </it>
</sub>for 1 &#8804; <it>q </it>&#8804; <it>t</it>. The following algorithm computes the value of <it>ons </it>for each instance (<it>l, d</it>).</p>
<p>
<b>Algorithm 3: Find <it>ons</it>
</b>
</p>
<p>
<b>Begin</b>
</p>
<p>1) <it>q </it>= <it>ons </it>= 1</p>
<p>2) <inline-formula>
<m:math xmlns:m="http://www.w3.org/1998/Math/MathML" name="1471-2105-13-S17-S10-i22"><m:mrow>
   <m:mi>E</m:mi>
   <m:mrow>
      <m:mo class="MathClass-open">(</m:mo>
      <m:mrow>
         <m:mi>l</m:mi>
         <m:mo class="MathClass-punc">,</m:mo>
         <m:mi>d</m:mi>
         <m:mo class="MathClass-punc">,</m:mo>
         <m:mi>q</m:mi>
         <m:mo class="MathClass-punc">,</m:mo>
         <m:mi>n</m:mi>
      </m:mrow>
      <m:mo class="MathClass-close">)</m:mo>
   </m:mrow>
   <m:mo class="MathClass-rel">=</m:mo>
   <m:msup>
      <m:mrow>
         <m:mn>4</m:mn>
      </m:mrow>
      <m:mrow>
         <m:mi>l</m:mi>
      </m:mrow>
   </m:msup>
   <m:mstyle class="text">
      <m:mtext class="textsf" mathvariant="sans-serif">&#160;</m:mtext>
   </m:mstyle>
   <m:msup>
      <m:mrow>
         <m:mrow>
            <m:mo class="MathClass-open">(</m:mo>
            <m:mrow>
               <m:mn>1</m:mn>
               <m:mo class="MathClass-bin">-</m:mo>
               <m:msup>
                  <m:mrow>
                     <m:mrow>
                        <m:mo class="MathClass-open">(</m:mo>
                        <m:mrow>
                           <m:mn>1</m:mn>
                           <m:mo class="MathClass-bin">-</m:mo>
                           <m:mrow>
                              <m:mo class="MathClass-open">(</m:mo>
                              <m:mrow>
                                 <m:munderover accent="false" accentunder="false">
                                    <m:mrow>
                                       <m:mo mathsize="big">&#8721;</m:mo>
                                    </m:mrow>
                                    <m:mrow>
                                       <m:mi>i</m:mi>
                                       <m:mo class="MathClass-rel">=</m:mo>
                                       <m:mn>0</m:mn>
                                    </m:mrow>
                                    <m:mrow>
                                       <m:mi>d</m:mi>
                                    </m:mrow>
                                 </m:munderover>
                                 <m:mfenced close=")" open="(" separators="">
                                    <m:mrow>
                                       <m:mtable class="array" columnlines="none" equalcolumns="false" equalrows="false">
                                          <m:mtr>
                                             <m:mtd class="array" columnalign="center">
                                                <m:mi>l</m:mi>
                                             </m:mtd>
                                          </m:mtr>
                                          <m:mtr>
                                             <m:mtd class="array" columnalign="center">
                                                <m:mi>i</m:mi>
                                             </m:mtd>
                                          </m:mtr>
                                          <m:mtr>
                                             <m:mtd class="array" columnalign="center"/>
                                          </m:mtr>
                                       </m:mtable>
                                    </m:mrow>
                                 </m:mfenced>
                              </m:mrow>
                              <m:msup>
                                 <m:mrow>
                                    <m:mrow>
                                       <m:mo class="MathClass-open">(</m:mo>
                                       <m:mrow>
                                          <m:mn>3</m:mn>
                                          <m:mo class="MathClass-bin">/</m:mo>
                                          <m:mn>4</m:mn>
                                       </m:mrow>
                                       <m:mo class="MathClass-close">)</m:mo>
                                    </m:mrow>
                                 </m:mrow>
                                 <m:mrow>
                                    <m:mi>i</m:mi>
                                 </m:mrow>
                              </m:msup>
                              <m:msup>
                                 <m:mrow>
                                    <m:mrow>
                                       <m:mo class="MathClass-open">(</m:mo>
                                       <m:mrow>
                                          <m:mn>1</m:mn>
                                          <m:mo class="MathClass-bin">/</m:mo>
                                          <m:mn>4</m:mn>
                                       </m:mrow>
                                       <m:mo class="MathClass-close">)</m:mo>
                                    </m:mrow>
                                 </m:mrow>
                                 <m:mrow>
                                    <m:mi>l</m:mi>
                                    <m:mo class="MathClass-bin">-</m:mo>
                                    <m:mi>i</m:mi>
                                 </m:mrow>
                              </m:msup>
                           </m:mrow>
                           <m:mo class="MathClass-close">)</m:mo>
                        </m:mrow>
                     </m:mrow>
                     <m:mo class="MathClass-close">)</m:mo>
                  </m:mrow>
                  <m:mrow>
                     <m:mi>n</m:mi>
                     <m:mo class="MathClass-bin">-</m:mo>
                     <m:mi>l</m:mi>
                     <m:mo class="MathClass-bin">+</m:mo>
                     <m:mn>1</m:mn>
                  </m:mrow>
               </m:msup>
            </m:mrow>
            <m:mo class="MathClass-close">)</m:mo>
         </m:mrow>
      </m:mrow>
      <m:mrow>
         <m:mi>q</m:mi>
      </m:mrow>
   </m:msup>
</m:mrow>
</m:math>
</inline-formula>
</p>
<p>3) <inline-formula>
<m:math xmlns:m="http://www.w3.org/1998/Math/MathML" name="1471-2105-13-S17-S10-i23"><m:mrow>
   <m:msub>
      <m:mrow>
         <m:mi>T</m:mi>
      </m:mrow>
      <m:mrow>
         <m:mstyle class="text">
            <m:mtext class="textsf" mathvariant="sans-serif">min</m:mtext>
         </m:mstyle>
      </m:mrow>
   </m:msub>
   <m:mo class="MathClass-rel">=</m:mo>
   <m:mi>q</m:mi>
   <m:msup>
      <m:mrow>
         <m:mrow>
            <m:mo class="MathClass-open">(</m:mo>
            <m:mrow>
               <m:mi>n</m:mi>
               <m:mo class="MathClass-bin">-</m:mo>
               <m:mi>l</m:mi>
               <m:mo class="MathClass-bin">+</m:mo>
               <m:mn>1</m:mn>
            </m:mrow>
            <m:mo class="MathClass-close">)</m:mo>
         </m:mrow>
      </m:mrow>
      <m:mrow>
         <m:mn>2</m:mn>
      </m:mrow>
   </m:msup>
   <m:mrow>
      <m:mo class="MathClass-open">(</m:mo>
      <m:mrow>
         <m:mi>l</m:mi>
         <m:mo class="MathClass-bin">+</m:mo>
         <m:msub>
            <m:mrow>
               <m:mi>p</m:mi>
            </m:mrow>
            <m:mrow>
               <m:mn>2</m:mn>
               <m:mi>d</m:mi>
            </m:mrow>
         </m:msub>
         <m:munderover accent="false" accentunder="false">
            <m:mrow>
               <m:mo mathsize="big"> &#8721;</m:mo>
            </m:mrow>
            <m:mrow>
               <m:mi>i</m:mi>
               <m:mo class="MathClass-rel">=</m:mo>
               <m:mn>1</m:mn>
            </m:mrow>
            <m:mrow>
               <m:mn>2</m:mn>
               <m:mi>d</m:mi>
               <m:mo class="MathClass-bin">-</m:mo>
               <m:msup>
                  <m:mrow>
                     <m:mi>d</m:mi>
                  </m:mrow>
                  <m:mrow>
                     <m:mi>&#8242;</m:mi>
                  </m:mrow>
               </m:msup>
               <m:mo class="MathClass-bin">+</m:mo>
               <m:mn>1</m:mn>
            </m:mrow>
         </m:munderover>
         <m:mfenced close=")" open="(" separators="">
            <m:mrow>
               <m:mtable class="array" columnlines="none" equalcolumns="false" equalrows="false">
                  <m:mtr>
                     <m:mtd class="array" columnalign="center">
                        <m:mi>l</m:mi>
                     </m:mtd>
                  </m:mtr>
                  <m:mtr>
                     <m:mtd class="array" columnalign="center">
                        <m:mi>i</m:mi>
                     </m:mtd>
                  </m:mtr>
                  <m:mtr>
                     <m:mtd class="array" columnalign="center"/>
                  </m:mtr>
               </m:mtable>
            </m:mrow>
         </m:mfenced>
      </m:mrow>
      <m:msup>
         <m:mrow>
            <m:mn>3</m:mn>
         </m:mrow>
         <m:mrow>
            <m:mi>i</m:mi>
         </m:mrow>
      </m:msup>
   </m:mrow>
   <m:mo class="MathClass-close">)</m:mo>
</m:mrow>
<m:mo class="MathClass-bin">+</m:mo>
<m:mi>l</m:mi>
<m:mrow>
   <m:mo class="MathClass-open">(</m:mo>
   <m:mrow>
      <m:mi>t</m:mi>
      <m:mo class="MathClass-bin">-</m:mo>
      <m:mi>q</m:mi>
   </m:mrow>
   <m:mo class="MathClass-close">)</m:mo>
</m:mrow>
<m:mrow>
   <m:mo class="MathClass-open">(</m:mo>
   <m:mrow>
      <m:mi>n</m:mi>
      <m:mo class="MathClass-bin">-</m:mo>
      <m:mi>l</m:mi>
      <m:mo class="MathClass-bin">+</m:mo>
      <m:mn>1</m:mn>
   </m:mrow>
   <m:mo class="MathClass-close">)</m:mo>
</m:mrow>
<m:mi>E</m:mi>
<m:mrow>
   <m:mo class="MathClass-open">(</m:mo>
   <m:mrow>
      <m:mi>l</m:mi>
      <m:mo class="MathClass-punc">,</m:mo>
      <m:mi>d</m:mi>
      <m:mo class="MathClass-punc">,</m:mo>
      <m:mi>q</m:mi>
      <m:mo class="MathClass-punc">,</m:mo>
      <m:mi>n</m:mi>
   </m:mrow>
   <m:mo class="MathClass-close">)</m:mo>
</m:mrow>
</m:math>
</inline-formula>
</p>
<p>4) <b>for </b>
<it>q </it>= <it>mns </it>to <it>t </it>
<b>do</b>
</p>
<p>
<display-formula>
<m:math xmlns:m="http://www.w3.org/1998/Math/MathML" name="1471-2105-13-S17-S10-i24"><m:mrow>
   <m:mi>E</m:mi>
   <m:mrow>
      <m:mo class="MathClass-open">(</m:mo>
      <m:mrow>
         <m:mi>l</m:mi>
         <m:mo class="MathClass-punc">,</m:mo>
         <m:mi>d</m:mi>
         <m:mo class="MathClass-punc">,</m:mo>
         <m:mi>q</m:mi>
         <m:mo class="MathClass-punc">,</m:mo>
         <m:mi>n</m:mi>
      </m:mrow>
      <m:mo class="MathClass-close">)</m:mo>
   </m:mrow>
   <m:mo class="MathClass-rel">=</m:mo>
   <m:msup>
      <m:mrow>
         <m:mn>4</m:mn>
      </m:mrow>
      <m:mrow>
         <m:mi>l</m:mi>
      </m:mrow>
   </m:msup>
   <m:mstyle class="text">
      <m:mtext class="textsf" mathvariant="sans-serif">&#160;</m:mtext>
   </m:mstyle>
   <m:msup>
      <m:mrow>
         <m:mrow>
            <m:mo class="MathClass-open">(</m:mo>
            <m:mrow>
               <m:mn>1</m:mn>
               <m:mo class="MathClass-bin">-</m:mo>
               <m:msup>
                  <m:mrow>
                     <m:mrow>
                        <m:mo class="MathClass-open">(</m:mo>
                        <m:mrow>
                           <m:mn>1</m:mn>
                           <m:mo class="MathClass-bin">-</m:mo>
                           <m:mrow>
                              <m:mo class="MathClass-open">(</m:mo>
                              <m:mrow>
                                 <m:munderover accent="false" accentunder="false">
                                    <m:mrow>
                                       <m:mo mathsize="big">&#8721;</m:mo>
                                    </m:mrow>
                                    <m:mrow>
                                       <m:mi>i</m:mi>
                                       <m:mo class="MathClass-rel">=</m:mo>
                                       <m:mn>0</m:mn>
                                    </m:mrow>
                                    <m:mrow>
                                       <m:mi>d</m:mi>
                                    </m:mrow>
                                 </m:munderover>
                                 <m:mfenced close=")" open="(" separators="">
                                    <m:mrow>
                                       <m:mtable class="array" columnlines="none" equalcolumns="false" equalrows="false">
                                          <m:mtr>
                                             <m:mtd class="array" columnalign="center">
                                                <m:mi>l</m:mi>
                                             </m:mtd>
                                          </m:mtr>
                                          <m:mtr>
                                             <m:mtd class="array" columnalign="center">
                                                <m:mi>i</m:mi>
                                             </m:mtd>
                                          </m:mtr>
                                          <m:mtr>
                                             <m:mtd class="array" columnalign="center"/>
                                          </m:mtr>
                                       </m:mtable>
                                    </m:mrow>
                                 </m:mfenced>
                              </m:mrow>
                              <m:msup>
                                 <m:mrow>
                                    <m:mrow>
                                       <m:mo class="MathClass-open">(</m:mo>
                                       <m:mrow>
                                          <m:mn>3</m:mn>
                                          <m:mo class="MathClass-bin">/</m:mo>
                                          <m:mn>4</m:mn>
                                       </m:mrow>
                                       <m:mo class="MathClass-close">)</m:mo>
                                    </m:mrow>
                                 </m:mrow>
                                 <m:mrow>
                                    <m:mi>i</m:mi>
                                 </m:mrow>
                              </m:msup>
                              <m:msup>
                                 <m:mrow>
                                    <m:mrow>
                                       <m:mo class="MathClass-open">(</m:mo>
                                       <m:mrow>
                                          <m:mn>1</m:mn>
                                          <m:mo class="MathClass-bin">/</m:mo>
                                          <m:mn>4</m:mn>
                                       </m:mrow>
                                       <m:mo class="MathClass-close">)</m:mo>
                                    </m:mrow>
                                 </m:mrow>
                                 <m:mrow>
                                    <m:mi>l</m:mi>
                                    <m:mo class="MathClass-bin">-</m:mo>
                                    <m:mi>i</m:mi>
                                 </m:mrow>
                              </m:msup>
                           </m:mrow>
                           <m:mo class="MathClass-close">)</m:mo>
                        </m:mrow>
                     </m:mrow>
                     <m:mo class="MathClass-close">)</m:mo>
                  </m:mrow>
                  <m:mrow>
                     <m:mi>n</m:mi>
                     <m:mo class="MathClass-bin">-</m:mo>
                     <m:mi>l</m:mi>
                     <m:mo class="MathClass-bin">+</m:mo>
                     <m:mn>1</m:mn>
                  </m:mrow>
               </m:msup>
            </m:mrow>
            <m:mo class="MathClass-close">)</m:mo>
         </m:mrow>
      </m:mrow>
      <m:mrow>
         <m:mi>q</m:mi>
      </m:mrow>
   </m:msup>
</m:mrow>
</m:math>
</display-formula>
</p>
<p>
<display-formula>
<m:math xmlns:m="http://www.w3.org/1998/Math/MathML" name="1471-2105-13-S17-S10-i25"><m:mrow>
   <m:mi>T</m:mi>
   <m:mo class="MathClass-rel">=</m:mo>
   <m:mi>q</m:mi>
   <m:msup>
      <m:mrow>
         <m:mrow>
            <m:mo class="MathClass-open">(</m:mo>
            <m:mrow>
               <m:mi>n</m:mi>
               <m:mo class="MathClass-bin">-</m:mo>
               <m:mi>l</m:mi>
               <m:mo class="MathClass-bin">+</m:mo>
               <m:mn>1</m:mn>
            </m:mrow>
            <m:mo class="MathClass-close">)</m:mo>
         </m:mrow>
      </m:mrow>
      <m:mrow>
         <m:mn>2</m:mn>
      </m:mrow>
   </m:msup>
   <m:mrow>
      <m:mo class="MathClass-open">(</m:mo>
      <m:mrow>
         <m:mi>l</m:mi>
         <m:mo class="MathClass-bin">+</m:mo>
         <m:msub>
            <m:mrow>
               <m:mi>p</m:mi>
            </m:mrow>
            <m:mrow>
               <m:mn>2</m:mn>
               <m:mi>d</m:mi>
            </m:mrow>
         </m:msub>
         <m:munderover accent="false" accentunder="false">
            <m:mrow>
               <m:mo mathsize="big"> &#8721;</m:mo>
            </m:mrow>
            <m:mrow>
               <m:mi>i</m:mi>
               <m:mo class="MathClass-rel">=</m:mo>
               <m:mn>1</m:mn>
            </m:mrow>
            <m:mrow>
               <m:mn>2</m:mn>
               <m:mi>d</m:mi>
               <m:mo class="MathClass-bin">-</m:mo>
               <m:msup>
                  <m:mrow>
                     <m:mi>d</m:mi>
                  </m:mrow>
                  <m:mrow>
                     <m:mi>&#8242;</m:mi>
                  </m:mrow>
               </m:msup>
               <m:mo class="MathClass-bin">+</m:mo>
               <m:mn>1</m:mn>
            </m:mrow>
         </m:munderover>
         <m:mfenced close=")" open="(" separators="">
            <m:mrow>
               <m:mtable class="array" columnlines="none" equalcolumns="false" equalrows="false">
                  <m:mtr>
                     <m:mtd class="array" columnalign="center">
                        <m:mi>l</m:mi>
                     </m:mtd>
                  </m:mtr>
                  <m:mtr>
                     <m:mtd class="array" columnalign="center">
                        <m:mi>i</m:mi>
                     </m:mtd>
                  </m:mtr>
                  <m:mtr>
                     <m:mtd class="array" columnalign="center"/>
                  </m:mtr>
               </m:mtable>
            </m:mrow>
         </m:mfenced>
      </m:mrow>
      <m:msup>
         <m:mrow>
            <m:mn>3</m:mn>
         </m:mrow>
         <m:mrow>
            <m:mi>i</m:mi>
         </m:mrow>
      </m:msup>
   </m:mrow>
   <m:mo class="MathClass-close">)</m:mo>
</m:mrow>
<m:mo class="MathClass-bin">+</m:mo>
<m:mi>l</m:mi>
<m:mrow>
   <m:mo class="MathClass-open">(</m:mo>
   <m:mrow>
      <m:mi>t</m:mi>
      <m:mo class="MathClass-bin">-</m:mo>
      <m:mi>q</m:mi>
   </m:mrow>
   <m:mo class="MathClass-close">)</m:mo>
</m:mrow>
<m:mrow>
   <m:mo class="MathClass-open">(</m:mo>
   <m:mrow>
      <m:mi>n</m:mi>
      <m:mo class="MathClass-bin">-</m:mo>
      <m:mi>l</m:mi>
      <m:mo class="MathClass-bin">+</m:mo>
      <m:mn>1</m:mn>
   </m:mrow>
   <m:mo class="MathClass-close">)</m:mo>
</m:mrow>
<m:mi>E</m:mi>
<m:mrow>
   <m:mo class="MathClass-open">(</m:mo>
   <m:mrow>
      <m:mi>l</m:mi>
      <m:mo class="MathClass-punc">,</m:mo>
      <m:mi>d</m:mi>
      <m:mo class="MathClass-punc">,</m:mo>
      <m:mi>q</m:mi>
      <m:mo class="MathClass-punc">,</m:mo>
      <m:mi>n</m:mi>
   </m:mrow>
   <m:mo class="MathClass-close">)</m:mo>
</m:mrow>
</m:math>
</display-formula>
</p>
<p>
<b>if </b>
<it>T </it>&lt;<it>T</it>
<sub>min </sub>
<b>then</b>
</p>
<p>
<it>T</it>
<sub>min </sub>= <it>T</it>
</p>
<p>
<it>ons = q</it>
</p>
<p>5) <b>return </b>
<it>ons</it>
</p>
<p>
<b>End</b>
</p>
<p>The above algorithm computes <it>q </it>in <it>O</it>(<it>t</it>) time. In practice, the time for computing <it>q </it>takes negligible time with respect to the rest of motif finding steps; it took maximum one second for all experiments included in this paper with simulated and real datasets. To save some time, our implementation includes a look-up table containing pre-computed values of <it>q </it>for different values of <it>l, n</it>, and <it>d</it>, where <it>l </it>&lt; 20, <it>d </it>&lt; 3, and selected values of <it>n </it>with n = 300, n = 350, 400, ..., <it>n </it>= 700. For other values of <it>l, n</it>, and <it>d</it>, we compute the best <it>q </it>using the above algorithm.</p>
</sec>
<sec>
<st>
<p>Parallel version of HEP_PMSprune(<it>ons</it>)</p>
</st>
<p>We propose a parallel version for HEP_PMSprune(<it>ons</it>) called PHEP_PMSprune(<it>ons</it>). The two main steps of HEP_PMSprune(<it>ons</it>) can be parallelized as follows:</p>
<p>We parallelize the PMSprune algorithm by assigning a set of <it>l</it>-mers from <it>s</it>
<sub>1 </sub>to each processor for establishing the set of neighboring motifs. The resulting sets are stored in candidate motif lists <it>C<sub>i</sub>, i </it>&#8712; {1, 2, ..., <it>p</it>}, where <it>p </it>is the number of processors. After each processor finishes computation, the <it>C<sub>i </sub>
</it>lists are merged together in a larger set <it>C</it>, such that each motif is represented once in this list; i.e., all repetitions are removed. Creating the <it>C </it>list is done in linear time with respect to the number of candidate motifs and it is achieved as follows:</p>
<p>We incrementally construct the partial list <it>C<sub>j </sub>
</it>that contains the <it>L<sub>j </sub>
</it>lists, 1 &#8804; <it>j </it>&#8804; p, by appending the list <it>L<sub>j </sub>
</it>at the end of the list <it>C</it>
<sub>
<it>j-</it>1 </sub>such that all elements in <it>L<sub>j </sub>
</it>existing in <it>C</it>
<sub>
<it>j</it>-1 </sub>are discarded. This continues until <it>j </it>= <it>p</it>; i.e., <it>C<sub>p </sub>
</it>is <it>C</it>. Discarding a repeated element is done efficiently as follows: For small values of <it>l</it>, we create a look-up table with size &#931;<it>
<sup>l</sup>
</it>, where &#931; is the alphabet size. Each possible <it>l</it>-length string can be mapped to a number in the range between zero and &#931;<it>
<sup>l </sup>
</it>in <it>O</it>(<it>l</it>) time. The <it>i</it>
<sup>th </sup>entry in this table contains one if a string in <it>C</it>
<sub>
<it>j-</it>1 </sub>is mapped to <it>i</it>. Otherwise, it contains zero. The strings in <it>C<sub>j </sub>
</it>are queried against this look-up table to discard repetitions and set entries they are mapped to with value one. For longer values of <it>l</it>, we use the Aho-Corasick automaton to index all <it>l</it>-length motifs in <it>C</it>
<sub>
<it>j-</it>1</sub>, and check if a strings in <it>C<sub>j </sub>
</it>exists in the automaton or not and add the new strings of <it>C<sub>j </sub>
</it>to the automaton. For these string matching algorithms, we refer the reader to <abbrgrp>
<abbr bid="B35">35</abbr>
</abbrgrp>.</p>
<p>In the second step, we validate each candidate motif independently in parallel over the available processors. The running time of this algorithm is <it>O</it>(<it>T</it>
<sub>s</sub>
<it>/p +|C|</it>), where <it>T<sub>s </sub>
</it>is the sequential running time and |<it>C</it>| is the size of set <it>C</it>.</p>
<p>The first step in the parallel algorithm does not lead to loss of any motifs. This is because the set <it>C </it>includes the <it>d</it>-neighborhood set of the <it>q</it>-sequences. The reason is that we run PMSprune in parallel against the strings (<it>x, s</it>
<sub>2</sub>, s<sub>3</sub>, ..., s<it>
<sub>q</sub>
</it>), where <it>x </it>is a substring of <it>s</it>
<sub>1</sub>. That is, each substring is not processed. The second step in the parallel algorithm is also correct, because the elements in <it>C </it>are independent of each other and checking the validity of each candidate motif can be safely run in parallel. Our experimental results confirm the correctness of our parallelization procedure.</p>
</sec>
</sec>
<sec>
<st>
<p>Results and discussion</p>
</st>
<sec>
<st>
<p>Experiments on simulated datasets</p>
</st>
<p>We used the simulated data sets that are used in many articles <abbrgrp>
<abbr bid="B25">25</abbr>
<abbr bid="B26">26</abbr>
<abbr bid="B27">27</abbr>
<abbr bid="B28">28</abbr>
<abbr bid="B29">29</abbr>
<abbr bid="B30">30</abbr>
<abbr bid="B32">32</abbr>
<abbr bid="B33">33</abbr>
<abbr bid="B34">34</abbr>
</abbrgrp> with <it>t </it>= 20 sequences and <it>n </it>= 600 characters, where the alphabet size is 4. Each (<it>l, d</it>) input instance dataset is generated as follows: We generate random strings with length (<it>n-l</it>) each, where the characters appear randomly with equal probability. Then we generate randomly an <it>l</it>-length string <it>M </it>and plant a copy of it in each sequence at random position after mutating it with at most <it>d </it>random mutations. We tested the algorithms for varying <it>n, l</it>, and <it>d </it>values and for the following challenging instances: (11, 3), (13, 4), (15, 5), (17, 6), (19, 7), and (21, 8).</p>
</sec>
<sec>
<st>
<p>Experiments overview</p>
</st>
<p>Our experiments address three major issues: The first is the performance of our method compared to the use of PMSprune only. The second, we show that our method for selecting <it>q</it>, already achieves the best running time. The third is the performance of the parallel version and its scalability. The algorithms are implemented on a 2 Quad-core processors (2.5 GHz each) machine. The programs are coded in C language. In the parallel version, we use openMP directives for parallelizing the code.</p>
</sec>
<sec>
<st>
<p>Performance of HEP on PMSprune</p>
</st>
<p>Tables <tblr tid="T1">1</tblr> and <tblr tid="T2">2</tblr> show the performance of the algorithms HEP_PMSprune(<it>mns</it>) and HEP_PMSprune(<it>ons</it>) with respect to PMSprune algorithm respectively. The last column in Tables <tblr tid="T1">1</tblr> and <tblr tid="T2">2</tblr> displays the improvement in PMSprune which equals to <inline-formula>
<m:math xmlns:m="http://www.w3.org/1998/Math/MathML" name="1471-2105-13-S17-S10-i26"><m:mrow>
   <m:mstyle class="text">
      <m:mtext class="textsf" mathvariant="sans-serif">&#160;</m:mtext>
   </m:mstyle>
   <m:mfrac>
      <m:mrow>
         <m:msub>
            <m:mrow>
               <m:mi>T</m:mi>
            </m:mrow>
            <m:mrow>
               <m:mi>P</m:mi>
               <m:mi>M</m:mi>
               <m:mi>S</m:mi>
               <m:mi>p</m:mi>
               <m:mi>r</m:mi>
               <m:mi>u</m:mi>
               <m:mi>n</m:mi>
               <m:mi>e</m:mi>
            </m:mrow>
         </m:msub>
         <m:mo class="MathClass-bin">-</m:mo>
         <m:msub>
            <m:mrow>
               <m:mi>T</m:mi>
            </m:mrow>
            <m:mrow>
               <m:mi>H</m:mi>
               <m:mi>E</m:mi>
               <m:mi>P</m:mi>
               <m:mstyle class="text">
                  <m:mtext>_</m:mtext>
               </m:mstyle>
               <m:mi>P</m:mi>
               <m:mi>M</m:mi>
               <m:mi>S</m:mi>
               <m:mi>p</m:mi>
               <m:mi>r</m:mi>
               <m:mi>u</m:mi>
               <m:mi>n</m:mi>
               <m:mi>e</m:mi>
               <m:mrow>
                  <m:mo class="MathClass-open">(</m:mo>
                  <m:mrow>
                     <m:mi>m</m:mi>
                     <m:mi>n</m:mi>
                     <m:mi>s</m:mi>
                  </m:mrow>
                  <m:mo class="MathClass-close">)</m:mo>
               </m:mrow>
            </m:mrow>
         </m:msub>
      </m:mrow>
      <m:mrow>
         <m:msub>
            <m:mrow>
               <m:mi>T</m:mi>
            </m:mrow>
            <m:mrow>
               <m:mi>P</m:mi>
               <m:mi>M</m:mi>
               <m:mi>S</m:mi>
               <m:mi>p</m:mi>
               <m:mi>r</m:mi>
               <m:mi>u</m:mi>
               <m:mi>n</m:mi>
               <m:mi>e</m:mi>
            </m:mrow>
         </m:msub>
      </m:mrow>
   </m:mfrac>
</m:mrow>
</m:math>
</inline-formula> and <inline-formula>
<m:math xmlns:m="http://www.w3.org/1998/Math/MathML" name="1471-2105-13-S17-S10-i27"><m:mrow>
   <m:mstyle class="text">
      <m:mtext class="textsf" mathvariant="sans-serif">&#160;</m:mtext>
   </m:mstyle>
   <m:mfrac>
      <m:mrow>
         <m:msub>
            <m:mrow>
               <m:mi>T</m:mi>
            </m:mrow>
            <m:mrow>
               <m:mi>P</m:mi>
               <m:mi>M</m:mi>
               <m:mi>S</m:mi>
               <m:mi>p</m:mi>
               <m:mi>r</m:mi>
               <m:mi>u</m:mi>
               <m:mi>n</m:mi>
               <m:mi>e</m:mi>
            </m:mrow>
         </m:msub>
         <m:mo class="MathClass-bin">-</m:mo>
         <m:msub>
            <m:mrow>
               <m:mi>T</m:mi>
            </m:mrow>
            <m:mrow>
               <m:mi>H</m:mi>
               <m:mi>E</m:mi>
               <m:mi>P</m:mi>
               <m:mstyle class="text">
                  <m:mtext>_</m:mtext>
               </m:mstyle>
               <m:mi>P</m:mi>
               <m:mi>M</m:mi>
               <m:mi>S</m:mi>
               <m:mi>p</m:mi>
               <m:mi>r</m:mi>
               <m:mi>u</m:mi>
               <m:mi>n</m:mi>
               <m:mi>e</m:mi>
               <m:mrow>
                  <m:mo class="MathClass-open">(</m:mo>
                  <m:mrow>
                     <m:mi>o</m:mi>
                     <m:mi>n</m:mi>
                     <m:mi>s</m:mi>
                  </m:mrow>
                  <m:mo class="MathClass-close">)</m:mo>
               </m:mrow>
            </m:mrow>
         </m:msub>
      </m:mrow>
      <m:mrow>
         <m:msub>
            <m:mrow>
               <m:mi>T</m:mi>
            </m:mrow>
            <m:mrow>
               <m:mi>P</m:mi>
               <m:mi>M</m:mi>
               <m:mi>S</m:mi>
               <m:mi>p</m:mi>
               <m:mi>r</m:mi>
               <m:mi>u</m:mi>
               <m:mi>n</m:mi>
               <m:mi>e</m:mi>
            </m:mrow>
         </m:msub>
      </m:mrow>
   </m:mfrac>
</m:mrow>
</m:math>
</inline-formula> respectively. We used the notations 's', 'm', 'h', and 'dy' in computing the time for seconds, minutes, hours, and days, respectively. The results confirm that, the algorithms HEP_PMSprune(<it>mns</it>) and HEP_PMSprune(<it>ons</it>) significantly reduced the running time compared to the standard PMSprune algorithm in all challenging instances.</p>
<tbl id="T1"><title><p>Table 1</p></title><caption><p>Time Comparison of PMSPrune and HEP_PMSprune(<it>mns</it>) with the Challenging Instances</p></caption><tblbdy cols="6">
      <r>
         <c ca="center">
            <p>
               <b>
                  <it>l</it>
               </b>
            </p>
         </c>
         <c ca="center">
            <p>
               <b>
                  <it>d</it>
               </b>
            </p>
         </c>
         <c ca="center">
            <p>
               <b>
                  <it>T<sub>PMSprune</sub></it>
               </b>
            </p>
         </c>
         <c ca="center">
            <p>
               <b>
                  <it>mns</it>
               </b>
            </p>
         </c>
         <c ca="center">
            <p><b><it>T<sub>HEP_PMSprune</sub></it></b>(<b><it><sub>mns</sub></it></b>)</p>
         </c>
         <c ca="center">
            <p>
               <b>
                  <it>Improvement</it>
               </b>
            </p>
         </c>
      </r>
      <r>
         <c cspan="6">
            <hr/>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>11</p>
         </c>
         <c ca="center">
            <p>3</p>
         </c>
         <c ca="center">
            <p>1.92 s</p>
         </c>
         <c ca="center">
            <p>9</p>
         </c>
         <c ca="center">
            <p>1.4 s</p>
         </c>
         <c ca="center">
            <p>27.1 %</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>13</p>
         </c>
         <c ca="center">
            <p>4</p>
         </c>
         <c ca="center">
            <p>33.95 s</p>
         </c>
         <c ca="center">
            <p>7</p>
         </c>
         <c ca="center">
            <p>26.05 s</p>
         </c>
         <c ca="center">
            <p>23.27 %</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>15</p>
         </c>
         <c ca="center">
            <p>5</p>
         </c>
         <c ca="center">
            <p>7.7 m</p>
         </c>
         <c ca="center">
            <p>6</p>
         </c>
         <c ca="center">
            <p>6.4 m</p>
         </c>
         <c ca="center">
            <p>16.8 %</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>17</p>
         </c>
         <c ca="center">
            <p>6</p>
         </c>
         <c ca="center">
            <p>1.55 h</p>
         </c>
         <c ca="center">
            <p>7</p>
         </c>
         <c ca="center">
            <p>1.26 h</p>
         </c>
         <c ca="center">
            <p>18.5 %</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>19</p>
         </c>
         <c ca="center">
            <p>7</p>
         </c>
         <c ca="center">
            <p>18.62 h</p>
         </c>
         <c ca="center">
            <p>6</p>
         </c>
         <c ca="center">
            <p>14.93 h</p>
         </c>
         <c ca="center">
            <p>19.8 %</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>21</p>
         </c>
         <c ca="center">
            <p>8</p>
         </c>
         <c ca="center">
            <p>8.59 dy</p>
         </c>
         <c ca="center">
            <p>6</p>
         </c>
         <c ca="center">
            <p>6.68 dy</p>
         </c>
         <c ca="center">
            <p>22.23 %</p>
         </c>
      </r>
   </tblbdy></tbl>
<tbl id="T2"><title><p>Table 2</p></title><caption><p>Time Comparison of PMSPrune and HEP_PMSprune(<it>ons</it>) with the Challenging Instances</p></caption><tblbdy cols="6">
      <r>
         <c ca="center">
            <p>
               <b>
                  <it>l</it>
               </b>
            </p>
         </c>
         <c ca="center">
            <p>
               <b>
                  <it>D</it>
               </b>
            </p>
         </c>
         <c ca="center">
            <p>
               <b>
                  <it>T<sub>PMSprune</sub></it>
               </b>
            </p>
         </c>
         <c ca="center">
            <p>
               <b>
                  <it>ons</it>
               </b>
            </p>
         </c>
         <c ca="center">
            <p><b><it>T<sub>HEP_PMSprune</sub></it></b>(<b><it><sub>ons</sub></it></b>)</p>
         </c>
         <c ca="center">
            <p>
               <b>
                  <it>Improvement</it>
               </b>
            </p>
         </c>
      </r>
      <r>
         <c cspan="6">
            <hr/>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>11</p>
         </c>
         <c ca="center">
            <p>3</p>
         </c>
         <c ca="center">
            <p>1.92 s</p>
         </c>
         <c ca="center">
            <p>10</p>
         </c>
         <c ca="center">
            <p>1.34 s</p>
         </c>
         <c ca="center">
            <p>30 %</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>13</p>
         </c>
         <c ca="center">
            <p>4</p>
         </c>
         <c ca="center">
            <p>33.95 s</p>
         </c>
         <c ca="center">
            <p>9</p>
         </c>
         <c ca="center">
            <p>24.55 s</p>
         </c>
         <c ca="center">
            <p>27.69 %</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>15</p>
         </c>
         <c ca="center">
            <p>5</p>
         </c>
         <c ca="center">
            <p>7.7 m</p>
         </c>
         <c ca="center">
            <p>7</p>
         </c>
         <c ca="center">
            <p>6.02 m</p>
         </c>
         <c ca="center">
            <p>21.8 %</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>17</p>
         </c>
         <c ca="center">
            <p>6</p>
         </c>
         <c ca="center">
            <p>1.55 h</p>
         </c>
         <c ca="center">
            <p>8</p>
         </c>
         <c ca="center">
            <p>1.26 h</p>
         </c>
         <c ca="center">
            <p>18.65 %</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>19</p>
         </c>
         <c ca="center">
            <p>7</p>
         </c>
         <c ca="center">
            <p>18.62 h</p>
         </c>
         <c ca="center">
            <p>7</p>
         </c>
         <c ca="center">
            <p>14.39 h</p>
         </c>
         <c ca="center">
            <p>22.74 %</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>21</p>
         </c>
         <c ca="center">
            <p>8</p>
         </c>
         <c ca="center">
            <p>8.59 dy</p>
         </c>
         <c ca="center">
            <p>6</p>
         </c>
         <c ca="center">
            <p>6.68 dy</p>
         </c>
         <c ca="center">
            <p>22.23 %</p>
         </c>
      </r>
   </tblbdy></tbl>
</sec>
<sec>
<st>
<p>Evaluating the choice of <it>q</it>
</p>
</st>
<p>In this section, we experimentally evaluate our algorithm for determining the best <it>q </it>that minimizes the running time of the HEP_PMSprune(<it>q</it>) algorithm. To achieve this, we will follow the following steps:</p>
<p>1. We run HEP_PMSprune(<it>q</it>), <it>mns </it>&#8804; <it>q </it>&#8804; <it>t </it>for the problem instances (11, 3), (13, 4), (15, 5), (17, 6), (19, 7), and (21, 8) and determine the value of <it>q </it>that minimizes the running time; we will refer to this value with <it>ons</it>
<sub>exp</sub>.</p>
<p>2. Compare the <it>ons</it>
<sub>exp </sub>against our <it>ons </it>computed theoretically.</p>
<p>Figure <figr fid="F1">1</figr>, which plots the running time against different <it>q </it>values, shows the results of applying these steps. We observe the value of <it>ons </it>is equal or very close to the value of <it>ons</it>
<sub>exp</sub>.</p>
<fig id="F1"><title><p>Figure 1</p></title><caption><p>Performance of our method for different challenging instances</p></caption><text>
   <p><b>Performance of our method for different challenging instances</b>. Behavior of HEP_PMSprune(<it>q</it>) for different (<it>l, d</it>) instances such that <it>q </it>&#8712;{<it>mns,..., t</it>}. (a): (11, 3), (b): (13, 4), (c): (15, 5), (d): (17, 6), (e): (19, 7). We used the following remarks in the figures: 1) Black-triangle-down to indicate the runing time of HEP_PMSprune(<it>mns</it>). 2) Black-star to indicate the running time of PMSprune or HEP_PMSprune(<it>t</it>). 3) White-box to indicate the running time of HEP_PMSprune(<it>ons</it>); i.e., using theoretically estimated <it>q</it>.</p>
</text><graphic file="1471-2105-13-S17-S10-1"/></fig>
<p>We also conducted another experiment, where the problem instances were generated with different <it>n </it>and <it>l </it>and <it>d</it>. Table <tblr tid="T3">3</tblr> shows the results for many of these instances, where the number of sequences <it>t </it>= 20. We can observe that our algorithm finds the optimal <it>q </it>in all these instances. We also observe improvement of the running time with respect to the PMSprune algorithm in most of the cases. The cases with no improvement in the running time are attributed to the fact that the expected number of motifs is very low and the original algorithm runs already fast in these cases.</p>
<tbl id="T3"><title><p>Table 3</p></title><caption><p>The performance of the HEP_PMSprune(<it>ons</it>) for different values of <it>n </it>and <it>l</it></p></caption><tblbdy cols="8">
      <r>
         <c ca="center">
            <p>
               <b>
                  <it>n</it>
               </b>
            </p>
         </c>
         <c ca="center">
            <p>
               <b>
                  <it>d </it>
               </b>
            </p>
         </c>
         <c ca="center">
            <p>
               <b>
                  <it>l</it>
               </b>
            </p>
         </c>
         <c ca="center">
            <p>
               <b>
                  <it>ons</it>
               </b>
            </p>
         </c>
         <c ca="center">
            <p>
               <b>
                  <it>T_ons</it>
               </b>
            </p>
         </c>
         <c ca="center">
            <p>
               <b>
                  <it>ons_exp</it>
               </b>
            </p>
         </c>
         <c ca="center">
            <p>
               <b>
                  <it>T_onsexp</it>
               </b>
            </p>
         </c>
         <c ca="center">
            <p>
               <b>
                  <it>T_pms</it>
               </b>
            </p>
         </c>
      </r>
      <r>
         <c cspan="8">
            <hr/>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>300</p>
         </c>
         <c ca="center">
            <p>3</p>
         </c>
         <c ca="center">
            <p>11</p>
         </c>
         <c ca="center">
            <p>9</p>
         </c>
         <c ca="center">
            <p>0.0001</p>
         </c>
         <c ca="center">
            <p>3-20</p>
         </c>
         <c ca="center">
            <p>0.0001</p>
         </c>
         <c ca="center">
            <p>0.0001</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>600</p>
         </c>
         <c ca="center">
            <p>3</p>
         </c>
         <c ca="center">
            <p>11</p>
         </c>
         <c ca="center">
            <p>10</p>
         </c>
         <c ca="center">
            <p>1.34</p>
         </c>
         <c ca="center">
            <p>10</p>
         </c>
         <c ca="center">
            <p>1.34</p>
         </c>
         <c ca="center">
            <p>1.92</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>900</p>
         </c>
         <c ca="center">
            <p>3</p>
         </c>
         <c ca="center">
            <p>11</p>
         </c>
         <c ca="center">
            <p>14</p>
         </c>
         <c ca="center">
            <p>4</p>
         </c>
         <c ca="center">
            <p>11-16</p>
         </c>
         <c ca="center">
            <p>4</p>
         </c>
         <c ca="center">
            <p>5</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>1200</p>
         </c>
         <c ca="center">
            <p>3</p>
         </c>
         <c ca="center">
            <p>11</p>
         </c>
         <c ca="center">
            <p>17</p>
         </c>
         <c ca="center">
            <p>7</p>
         </c>
         <c ca="center">
            <p>17</p>
         </c>
         <c ca="center">
            <p>7</p>
         </c>
         <c ca="center">
            <p>8</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>1500</p>
         </c>
         <c ca="center">
            <p>3</p>
         </c>
         <c ca="center">
            <p>11</p>
         </c>
         <c ca="center">
            <p>20</p>
         </c>
         <c ca="center">
            <p>16</p>
         </c>
         <c ca="center">
            <p>20</p>
         </c>
         <c ca="center">
            <p>16</p>
         </c>
         <c ca="center">
            <p>16</p>
         </c>
      </r>
      <r>
         <c cspan="8">
            <hr/>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>300</p>
         </c>
         <c ca="center">
            <p>3</p>
         </c>
         <c ca="center">
            <p>12</p>
         </c>
         <c ca="center">
            <p>6</p>
         </c>
         <c ca="center">
            <p>0.05</p>
         </c>
         <c ca="center">
            <p>4-20</p>
         </c>
         <c ca="center">
            <p>0.05</p>
         </c>
         <c ca="center">
            <p>0.05</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>600</p>
         </c>
         <c ca="center">
            <p>3</p>
         </c>
         <c ca="center">
            <p>12</p>
         </c>
         <c ca="center">
            <p>8</p>
         </c>
         <c ca="center">
            <p>0.83</p>
         </c>
         <c ca="center">
            <p>4-20</p>
         </c>
         <c ca="center">
            <p>0.83</p>
         </c>
         <c ca="center">
            <p>0.83</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>900</p>
         </c>
         <c ca="center">
            <p>3</p>
         </c>
         <c ca="center">
            <p>12</p>
         </c>
         <c ca="center">
            <p>8</p>
         </c>
         <c ca="center">
            <p>1.5</p>
         </c>
         <c ca="center">
            <p>6-20</p>
         </c>
         <c ca="center">
            <p>1.5</p>
         </c>
         <c ca="center">
            <p>1.5</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>1200</p>
         </c>
         <c ca="center">
            <p>3</p>
         </c>
         <c ca="center">
            <p>12</p>
         </c>
         <c ca="center">
            <p>9</p>
         </c>
         <c ca="center">
            <p>3</p>
         </c>
         <c ca="center">
            <p>6-15</p>
         </c>
         <c ca="center">
            <p>3</p>
         </c>
         <c ca="center">
            <p>4</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>1500</p>
         </c>
         <c ca="center">
            <p>3</p>
         </c>
         <c ca="center">
            <p>12</p>
         </c>
         <c ca="center">
            <p>10</p>
         </c>
         <c ca="center">
            <p>5</p>
         </c>
         <c ca="center">
            <p>8-12</p>
         </c>
         <c ca="center">
            <p>5</p>
         </c>
         <c ca="center">
            <p>7</p>
         </c>
      </r>
      <r>
         <c cspan="8">
            <hr/>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>300</p>
         </c>
         <c ca="center">
            <p>4</p>
         </c>
         <c ca="center">
            <p>13</p>
         </c>
         <c ca="center">
            <p>7</p>
         </c>
         <c ca="center">
            <p>3</p>
         </c>
         <c ca="center">
            <p>5-20</p>
         </c>
         <c ca="center">
            <p>3</p>
         </c>
         <c ca="center">
            <p>3</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>600</p>
         </c>
         <c ca="center">
            <p>4</p>
         </c>
         <c ca="center">
            <p>13</p>
         </c>
         <c ca="center">
            <p>9</p>
         </c>
         <c ca="center">
            <p>24.55</p>
         </c>
         <c ca="center">
            <p>9</p>
         </c>
         <c ca="center">
            <p>24.55</p>
         </c>
         <c ca="center">
            <p>33.95</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>900</p>
         </c>
         <c ca="center">
            <p>4</p>
         </c>
         <c ca="center">
            <p>13</p>
         </c>
         <c ca="center">
            <p>11</p>
         </c>
         <c ca="center">
            <p>81</p>
         </c>
         <c ca="center">
            <p>11</p>
         </c>
         <c ca="center">
            <p>81</p>
         </c>
         <c ca="center">
            <p>109</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>1200</p>
         </c>
         <c ca="center">
            <p>4</p>
         </c>
         <c ca="center">
            <p>13</p>
         </c>
         <c ca="center">
            <p>14</p>
         </c>
         <c ca="center">
            <p>190</p>
         </c>
         <c ca="center">
            <p>14</p>
         </c>
         <c ca="center">
            <p>190</p>
         </c>
         <c ca="center">
            <p>217</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>1500</p>
         </c>
         <c ca="center">
            <p>4</p>
         </c>
         <c ca="center">
            <p>13</p>
         </c>
         <c ca="center">
            <p>17</p>
         </c>
         <c ca="center">
            <p>353</p>
         </c>
         <c ca="center">
            <p>17-19</p>
         </c>
         <c ca="center">
            <p>356</p>
         </c>
         <c ca="center">
            <p>360</p>
         </c>
      </r>
      <r>
         <c cspan="8">
            <hr/>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>300</p>
         </c>
         <c ca="center">
            <p>4</p>
         </c>
         <c ca="center">
            <p>14</p>
         </c>
         <c ca="center">
            <p>6</p>
         </c>
         <c ca="center">
            <p>1</p>
         </c>
         <c ca="center">
            <p>4-20</p>
         </c>
         <c ca="center">
            <p>1</p>
         </c>
         <c ca="center">
            <p>1</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>600</p>
         </c>
         <c ca="center">
            <p>4</p>
         </c>
         <c ca="center">
            <p>14</p>
         </c>
         <c ca="center">
            <p>7</p>
         </c>
         <c ca="center">
            <p>6.5</p>
         </c>
         <c ca="center">
            <p>7-18</p>
         </c>
         <c ca="center">
            <p>6.5</p>
         </c>
         <c ca="center">
            <p>7</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>900</p>
         </c>
         <c ca="center">
            <p>4</p>
         </c>
         <c ca="center">
            <p>14</p>
         </c>
         <c ca="center">
            <p>8</p>
         </c>
         <c ca="center">
            <p>21.5</p>
         </c>
         <c ca="center">
            <p>8-9</p>
         </c>
         <c ca="center">
            <p>21.5</p>
         </c>
         <c ca="center">
            <p>24</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>1200</p>
         </c>
         <c ca="center">
            <p>4</p>
         </c>
         <c ca="center">
            <p>14</p>
         </c>
         <c ca="center">
            <p>8</p>
         </c>
         <c ca="center">
            <p>54</p>
         </c>
         <c ca="center">
            <p>8</p>
         </c>
         <c ca="center">
            <p>54</p>
         </c>
         <c ca="center">
            <p>67</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>1500</p>
         </c>
         <c ca="center">
            <p>4</p>
         </c>
         <c ca="center">
            <p>14</p>
         </c>
         <c ca="center">
            <p>9</p>
         </c>
         <c ca="center">
            <p>107</p>
         </c>
         <c ca="center">
            <p>9</p>
         </c>
         <c ca="center">
            <p>107</p>
         </c>
         <c ca="center">
            <p>146</p>
         </c>
      </r>
      <r>
         <c cspan="8">
            <hr/>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>300</p>
         </c>
         <c ca="center">
            <p>4</p>
         </c>
         <c ca="center">
            <p>15</p>
         </c>
         <c ca="center">
            <p>5</p>
         </c>
         <c ca="center">
            <p>0.25</p>
         </c>
         <c ca="center">
            <p>4--20</p>
         </c>
         <c ca="center">
            <p>0.25</p>
         </c>
         <c ca="center">
            <p>0.25</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>600</p>
         </c>
         <c ca="center">
            <p>4</p>
         </c>
         <c ca="center">
            <p>15</p>
         </c>
         <c ca="center">
            <p>5</p>
         </c>
         <c ca="center">
            <p>1.25</p>
         </c>
         <c ca="center">
            <p>4-20</p>
         </c>
         <c ca="center">
            <p>1.25</p>
         </c>
         <c ca="center">
            <p>1.25</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>900</p>
         </c>
         <c ca="center">
            <p>4</p>
         </c>
         <c ca="center">
            <p>15</p>
         </c>
         <c ca="center">
            <p>6</p>
         </c>
         <c ca="center">
            <p>5</p>
         </c>
         <c ca="center">
            <p>5-20</p>
         </c>
         <c ca="center">
            <p>5</p>
         </c>
         <c ca="center">
            <p>5</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>1200</p>
         </c>
         <c ca="center">
            <p>4</p>
         </c>
         <c ca="center">
            <p>15</p>
         </c>
         <c ca="center">
            <p>6</p>
         </c>
         <c ca="center">
            <p>12</p>
         </c>
         <c ca="center">
            <p>8</p>
         </c>
         <c ca="center">
            <p>10</p>
         </c>
         <c ca="center">
            <p>13</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>1500</p>
         </c>
         <c ca="center">
            <p>4</p>
         </c>
         <c ca="center">
            <p>15</p>
         </c>
         <c ca="center">
            <p>7</p>
         </c>
         <c ca="center">
            <p>16.5</p>
         </c>
         <c ca="center">
            <p>7-13</p>
         </c>
         <c ca="center">
            <p>16.5</p>
         </c>
         <c ca="center">
            <p>20</p>
         </c>
      </r>
      <r>
         <c cspan="8">
            <hr/>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>300</p>
         </c>
         <c ca="center">
            <p>4</p>
         </c>
         <c ca="center">
            <p>16+</p>
         </c>
         <c ca="center">
            <p>5</p>
         </c>
         <c ca="center">
            <p>0.002</p>
         </c>
         <c ca="center">
            <p>3-20</p>
         </c>
         <c ca="center">
            <p>0.002</p>
         </c>
         <c ca="center">
            <p>0.002</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>600</p>
         </c>
         <c ca="center">
            <p>4</p>
         </c>
         <c ca="center">
            <p>16+</p>
         </c>
         <c ca="center">
            <p>5</p>
         </c>
         <c ca="center">
            <p>0.25</p>
         </c>
         <c ca="center">
            <p>4-20</p>
         </c>
         <c ca="center">
            <p>0.25</p>
         </c>
         <c ca="center">
            <p>0.25</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>900</p>
         </c>
         <c ca="center">
            <p>4</p>
         </c>
         <c ca="center">
            <p>16+</p>
         </c>
         <c ca="center">
            <p>5</p>
         </c>
         <c ca="center">
            <p>1</p>
         </c>
         <c ca="center">
            <p>4-20</p>
         </c>
         <c ca="center">
            <p>1</p>
         </c>
         <c ca="center">
            <p>1</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>1200</p>
         </c>
         <c ca="center">
            <p>4</p>
         </c>
         <c ca="center">
            <p>16+</p>
         </c>
         <c ca="center">
            <p>6</p>
         </c>
         <c ca="center">
            <p>2.34</p>
         </c>
         <c ca="center">
            <p>5-20</p>
         </c>
         <c ca="center">
            <p>2.34</p>
         </c>
         <c ca="center">
            <p>2.34</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>1500</p>
         </c>
         <c ca="center">
            <p>4</p>
         </c>
         <c ca="center">
            <p>16+</p>
         </c>
         <c ca="center">
            <p>6-8</p>
         </c>
         <c ca="center">
            <p>4.89</p>
         </c>
         <c ca="center">
            <p>5-20</p>
         </c>
         <c ca="center">
            <p>4.89</p>
         </c>
         <c ca="center">
            <p>4.89</p>
         </c>
      </r>
      <r>
         <c cspan="8">
            <hr/>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>300</p>
         </c>
         <c ca="center">
            <p>5</p>
         </c>
         <c ca="center">
            <p>15</p>
         </c>
         <c ca="center">
            <p>7</p>
         </c>
         <c ca="center">
            <p>38</p>
         </c>
         <c ca="center">
            <p>6-10</p>
         </c>
         <c ca="center">
            <p>38</p>
         </c>
         <c ca="center">
            <p>46</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>600</p>
         </c>
         <c ca="center">
            <p>5</p>
         </c>
         <c ca="center">
            <p>15</p>
         </c>
         <c ca="center">
            <p>8</p>
         </c>
         <c ca="center">
            <p>361.2</p>
         </c>
         <c ca="center">
            <p>8</p>
         </c>
         <c ca="center">
            <p>360</p>
         </c>
         <c ca="center">
            <p>462</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>900</p>
         </c>
         <c ca="center">
            <p>5</p>
         </c>
         <c ca="center">
            <p>15</p>
         </c>
         <c ca="center">
            <p>9</p>
         </c>
         <c ca="center">
            <p>1250</p>
         </c>
         <c ca="center">
            <p>9</p>
         </c>
         <c ca="center">
            <p>1250</p>
         </c>
         <c ca="center">
            <p>1847</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>1200</p>
         </c>
         <c ca="center">
            <p>5</p>
         </c>
         <c ca="center">
            <p>15</p>
         </c>
         <c ca="center">
            <p>11</p>
         </c>
         <c ca="center">
            <p>2976</p>
         </c>
         <c ca="center">
            <p>11</p>
         </c>
         <c ca="center">
            <p>2976</p>
         </c>
         <c ca="center">
            <p>4060</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>1500</p>
         </c>
         <c ca="center">
            <p>5</p>
         </c>
         <c ca="center">
            <p>15</p>
         </c>
         <c ca="center">
            <p>13</p>
         </c>
         <c ca="center">
            <p>5829</p>
         </c>
         <c ca="center">
            <p>13</p>
         </c>
         <c ca="center">
            <p>5829</p>
         </c>
         <c ca="center">
            <p>6969</p>
         </c>
      </r>
      <r>
         <c cspan="8">
            <hr/>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>300</p>
         </c>
         <c ca="center">
            <p>5</p>
         </c>
         <c ca="center">
            <p>17</p>
         </c>
         <c ca="center">
            <p>5</p>
         </c>
         <c ca="center">
            <p>2</p>
         </c>
         <c ca="center">
            <p>5-20</p>
         </c>
         <c ca="center">
            <p>2</p>
         </c>
         <c ca="center">
            <p>2</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>600</p>
         </c>
         <c ca="center">
            <p>5</p>
         </c>
         <c ca="center">
            <p>17</p>
         </c>
         <c ca="center">
            <p>6</p>
         </c>
         <c ca="center">
            <p>27</p>
         </c>
         <c ca="center">
            <p>13-20</p>
         </c>
         <c ca="center">
            <p>19</p>
         </c>
         <c ca="center">
            <p>19</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>900</p>
         </c>
         <c ca="center">
            <p>5</p>
         </c>
         <c ca="center">
            <p>17</p>
         </c>
         <c ca="center">
            <p>5</p>
         </c>
         <c ca="center">
            <p>103</p>
         </c>
         <c ca="center">
            <p>7-20</p>
         </c>
         <c ca="center">
            <p>92</p>
         </c>
         <c ca="center">
            <p>92</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>1200</p>
         </c>
         <c ca="center">
            <p>5</p>
         </c>
         <c ca="center">
            <p>17</p>
         </c>
         <c ca="center">
            <p>6</p>
         </c>
         <c ca="center">
            <p>231</p>
         </c>
         <c ca="center">
            <p>6-8</p>
         </c>
         <c ca="center">
            <p>224</p>
         </c>
         <c ca="center">
            <p>264</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>1500</p>
         </c>
         <c ca="center">
            <p>5</p>
         </c>
         <c ca="center">
            <p>17</p>
         </c>
         <c ca="center">
            <p>6</p>
         </c>
         <c ca="center">
            <p>439</p>
         </c>
         <c ca="center">
            <p>6-8</p>
         </c>
         <c ca="center">
            <p>439</p>
         </c>
         <c ca="center">
            <p>552</p>
         </c>
      </r>
      <r>
         <c cspan="8">
            <hr/>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>300</p>
         </c>
         <c ca="center">
            <p>5</p>
         </c>
         <c ca="center">
            <p>18+</p>
         </c>
         <c ca="center">
            <p>5</p>
         </c>
         <c ca="center">
            <p>1</p>
         </c>
         <c ca="center">
            <p>5-20</p>
         </c>
         <c ca="center">
            <p>1</p>
         </c>
         <c ca="center">
            <p>1</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>600</p>
         </c>
         <c ca="center">
            <p>5</p>
         </c>
         <c ca="center">
            <p>18+</p>
         </c>
         <c ca="center">
            <p>6</p>
         </c>
         <c ca="center">
            <p>5</p>
         </c>
         <c ca="center">
            <p>6-20</p>
         </c>
         <c ca="center">
            <p>4</p>
         </c>
         <c ca="center">
            <p>4</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>900</p>
         </c>
         <c ca="center">
            <p>5</p>
         </c>
         <c ca="center">
            <p>18+</p>
         </c>
         <c ca="center">
            <p>6-7</p>
         </c>
         <c ca="center">
            <p>14</p>
         </c>
         <c ca="center">
            <p>6-20</p>
         </c>
         <c ca="center">
            <p>14</p>
         </c>
         <c ca="center">
            <p>14</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>1200</p>
         </c>
         <c ca="center">
            <p>5</p>
         </c>
         <c ca="center">
            <p>18+</p>
         </c>
         <c ca="center">
            <p>6-7</p>
         </c>
         <c ca="center">
            <p>33</p>
         </c>
         <c ca="center">
            <p>6-20</p>
         </c>
         <c ca="center">
            <p>33</p>
         </c>
         <c ca="center">
            <p>33</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>1500</p>
         </c>
         <c ca="center">
            <p>5</p>
         </c>
         <c ca="center">
            <p>18+</p>
         </c>
         <c ca="center">
            <p>6-8</p>
         </c>
         <c ca="center">
            <p>74</p>
         </c>
         <c ca="center">
            <p>6-20</p>
         </c>
         <c ca="center">
            <p>74</p>
         </c>
         <c ca="center">
            <p>74</p>
         </c>
      </r>
   </tblbdy><tblfn>
      <p>The first column includes the sequence length <it>n</it>, the second includes the hamming distance <it>d</it>, and the third includes the motif length <it>l</it>. The entries <it>l</it>+, means greater than <it>l </it>leads to no improvement. '<it>ons' </it>stands for the theoretically computed <it>q</it>, while "<it>ons_exp</it>" stands for the experimentally found one. We report range of <it>ons_exp </it>that yielded best time. There also range of <it>ons </it>for <it>l</it>+. "<it>T_ons" </it>and <it>"T_ons<sub>exp</sub>" </it>stand for the times (in seconds) with <it>ons </it>and <it>ons_exp</it>, respectively. <it>"T_pms" </it>stands for the time with the original PMSprune algorithm only<it/>.</p>
   </tblfn></tbl>
<p>Note that it was not feasible to list the results for all possible values <it>n, l</it>, and <it>d </it>in Table <tblr tid="T3">3</tblr>. But in other instances with different values of <it>n, l</it>, and <it>d</it>, we found that <it>ons </it>and its time were consistent with <it>ons</it>
<sub>exp </sub>and its time published in this table.</p>
</sec>
<sec>
<st>
<p>Performance of PHEP_PMSprune(<it>ons</it>)algorithm</p>
</st>
<p>In Table <tblr tid="T4">4</tblr>, we show the results of applying the parallel version of our algorithm PHEP_PMSprune(<it>ons</it>) using different number of processors and for different problem instances. The running time of the difficult instance (21, 8) has been decreased from 6.68 days to about 20.42 hours using 8 processors. Figure <figr fid="F2">2</figr> shows the scalability results for the algorithm where <inline-formula>
<m:math xmlns:m="http://www.w3.org/1998/Math/MathML" name="1471-2105-13-S17-S10-i28"><m:mrow>
   <m:mstyle class="text">
      <m:mtext class="textsf" mathvariant="sans-serif">speedup</m:mtext>
   </m:mstyle>
   <m:mo class="MathClass-rel">=</m:mo>
   <m:mfrac>
      <m:mrow>
         <m:msub>
            <m:mrow>
               <m:mi>T</m:mi>
            </m:mrow>
            <m:mrow>
               <m:mi>H</m:mi>
               <m:mi>E</m:mi>
               <m:msub>
                  <m:mrow>
                     <m:mi>P</m:mi>
                  </m:mrow>
                  <m:mrow>
                     <m:mi>P</m:mi>
                     <m:mi>M</m:mi>
                     <m:mi>S</m:mi>
                     <m:mi>p</m:mi>
                     <m:mi>r</m:mi>
                     <m:mi>u</m:mi>
                     <m:mi>n</m:mi>
                     <m:mi>e</m:mi>
                     <m:mrow>
                        <m:mo class="MathClass-open">(</m:mo>
                        <m:mrow>
                           <m:mi>o</m:mi>
                           <m:mi>n</m:mi>
                           <m:mi>s</m:mi>
                        </m:mrow>
                        <m:mo class="MathClass-close">)</m:mo>
                     </m:mrow>
                  </m:mrow>
               </m:msub>
            </m:mrow>
         </m:msub>
      </m:mrow>
      <m:mrow>
         <m:msub>
            <m:mrow>
               <m:mi>T</m:mi>
            </m:mrow>
            <m:mrow>
               <m:mi>H</m:mi>
               <m:mi>E</m:mi>
               <m:msub>
                  <m:mrow>
                     <m:mi>P</m:mi>
                  </m:mrow>
                  <m:mrow>
                     <m:mi>P</m:mi>
                     <m:mi>M</m:mi>
                     <m:mi>S</m:mi>
                     <m:mi>p</m:mi>
                     <m:mi>r</m:mi>
                     <m:mi>u</m:mi>
                     <m:mi>n</m:mi>
                     <m:mi>e</m:mi>
                     <m:mrow>
                        <m:mo class="MathClass-open">(</m:mo>
                        <m:mrow>
                           <m:mi>o</m:mi>
                           <m:mi>n</m:mi>
                           <m:mi>s</m:mi>
                        </m:mrow>
                        <m:mo class="MathClass-close">)</m:mo>
                     </m:mrow>
                  </m:mrow>
               </m:msub>
            </m:mrow>
         </m:msub>
      </m:mrow>
   </m:mfrac>
</m:mrow>
</m:math>
</inline-formula>. From Table <tblr tid="T4">4</tblr> and Figure <figr fid="F2">2</figr> we note that PHEP_PMSprune(<it>ons</it>) reduce the time of HEP_PMSprune(<it>ons</it>) and the speedup achieved scales well with the increasing number of processors.</p>
<tbl id="T4"><title><p>Table 4</p></title><caption><p>Running time of PHEP_PMSprune(<it>ons</it>) using different number of processors <it>p </it>for some challenging instances</p></caption><tblbdy cols="10">
      <r>
         <c ca="center">
            <p>
               <b>
                  <it>l</it>
               </b>
            </p>
         </c>
         <c ca="center">
            <p>
               <b>
                  <it>d</it>
               </b>
            </p>
         </c>
         <c ca="center" cspan="8">
            <p>
               <b>
                  <it>Time</it>
               </b>
            </p>
         </c>
      </r>
      <r>
         <c>
            <p/>
         </c>
         <c>
            <p/>
         </c>
         <c>
            <p/>
         </c>
         <c ca="center">
            <p>
               <b><it>P </it>= 2</b>
            </p>
         </c>
         <c ca="center">
            <p>
               <b><it>P </it>= 3</b>
            </p>
         </c>
         <c ca="center">
            <p>
               <b><it>P </it>=4</b>
            </p>
         </c>
         <c ca="center">
            <p>
               <b><it>P </it>= 5</b>
            </p>
         </c>
         <c ca="center">
            <p>
               <b><it>P </it>= 6</b>
            </p>
         </c>
         <c ca="center">
            <p>
               <b><it>P </it>= 7</b>
            </p>
         </c>
         <c ca="center">
            <p>
               <b><it>P </it>= 8</b>
            </p>
         </c>
      </r>
      <r>
         <c cspan="10">
            <hr/>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>13</p>
         </c>
         <c ca="center">
            <p>4</p>
         </c>
         <c ca="center">
            <p>24.86 s</p>
         </c>
         <c ca="center">
            <p>12.4 s</p>
         </c>
         <c ca="center">
            <p>8.35 s</p>
         </c>
         <c ca="center">
            <p>6.1 s</p>
         </c>
         <c ca="center">
            <p>4.95 s</p>
         </c>
         <c ca="center">
            <p>4.35 s</p>
         </c>
         <c ca="center">
            <p>3.6 s</p>
         </c>
         <c ca="center">
            <p>3.2 s</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>15</p>
         </c>
         <c ca="center">
            <p>5</p>
         </c>
         <c ca="center">
            <p>6.34 m</p>
         </c>
         <c ca="center">
            <p>3.19 m</p>
         </c>
         <c ca="center">
            <p>2.13 m</p>
         </c>
         <c ca="center">
            <p>1.61 m</p>
         </c>
         <c ca="center">
            <p>1.28 m</p>
         </c>
         <c ca="center">
            <p>1.07 m</p>
         </c>
         <c ca="center">
            <p>55.2 s</p>
         </c>
         <c ca="center">
            <p>48.5 s</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>17</p>
         </c>
         <c ca="center">
            <p>6</p>
         </c>
         <c ca="center">
            <p>1.28 h</p>
         </c>
         <c ca="center">
            <p>38.28 m</p>
         </c>
         <c ca="center">
            <p>25.58 m</p>
         </c>
         <c ca="center">
            <p>19.16 m</p>
         </c>
         <c ca="center">
            <p>15.34 m</p>
         </c>
         <c ca="center">
            <p>12.81 m</p>
         </c>
         <c ca="center">
            <p>10.98 m</p>
         </c>
         <c ca="center">
            <p>9.61 m</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>19</p>
         </c>
         <c ca="center">
            <p>7</p>
         </c>
         <c ca="center">
            <p>14.56 h</p>
         </c>
         <c ca="center">
            <p>7.24 h</p>
         </c>
         <c ca="center">
            <p>4.81 h</p>
         </c>
         <c ca="center">
            <p>3.61 h</p>
         </c>
         <c ca="center">
            <p>2.98 h</p>
         </c>
         <c ca="center">
            <p>2.42 h</p>
         </c>
         <c ca="center">
            <p>2.07 h</p>
         </c>
         <c ca="center">
            <p>1.82 h</p>
         </c>
      </r>
      <r>
         <c ca="center">
            <p>21</p>
         </c>
         <c ca="center">
            <p>8</p>
         </c>
         <c ca="center">
            <p>6.68 dy</p>
         </c>
         <c ca="center">
            <p>3.33 dy</p>
         </c>
         <c ca="center">
            <p>2.23 dy</p>
         </c>
         <c ca="center">
            <p>1.67 dy</p>
         </c>
         <c ca="center">
            <p>1.34 dy</p>
         </c>
         <c ca="center">
            <p>1.12 dy</p>
         </c>
         <c ca="center">
            <p>23.18 h</p>
         </c>
         <c ca="center">
            <p>20.42 h</p>
         </c>
      </r>
   </tblbdy></tbl>
<fig id="F2"><title><p>Figure 2</p></title><caption><p>Scalability plot of the parallel version</p></caption><text>
   <p><b>Scalability plot of the parallel version</b>. The plots show speed-up for different number of processors and problem instances.</p>
</text><graphic file="1471-2105-13-S17-S10-2"/></fig>
</sec>
<sec>
<st>
<p>Experiments on real datasets</p>
</st>
<p>We used two collections of real datasets used in previous research papers <abbrgrp>
<abbr bid="B10">10</abbr>
<abbr bid="B26">26</abbr>
<abbr bid="B29">29</abbr>
<abbr bid="B36">36</abbr>
</abbrgrp>. The first collection is a dataset including a number of the upstream regions of yeast genes <abbrgrp>
<abbr bid="B37">37</abbr>
</abbrgrp> affected by certain transcription factors. The transcription factors are from the SCPD <abbrgrp>
<abbr bid="B38">38</abbr>
</abbrgrp> database and the paper <abbrgrp>
<abbr bid="B39">39</abbr>
</abbrgrp>. The upstream DNA sequences were extracted using the Saccharomyces Genome Database <abbrgrp>
<abbr bid="B37">37</abbr>
</abbrgrp>. The second collection includes the dataset of Blanchette <abbrgrp>
<abbr bid="B36">36</abbr>
</abbrgrp> which includes the upstream DNA regions of many genes from different species. This dataset is available at <url>http://bio.cs.washington.edu/supplements/FootPrinter</url> and a copy of it is available with our software tool for testing.</p>
<p>Tables <tblr tid="T5">5</tblr> and <tblr tid="T6">6</tblr> show the motifs found by our method compared to the published ones for both collections. In each table, we give a reference to the published motif. Our program could detect all published motifs. It is also interesting to note that our program could detect extra novel motifs in the case of the Interleukin-3 problem instance in Table <tblr tid="T6">6</tblr>. These motifs look interesting, because they are 20 bp long with hamming distance zero; an observation that calls for further biological investigation.</p>
<tbl id="T5"><title><p>Table 5</p></title><caption><p>Application of the PHEP_PMSprune(<it>ons</it>) on the real yeast dataset</p></caption><tblbdy cols="5">
      <r>
         <c ca="left">
            <p>
               <b>Transcription Factor</b>
            </p>
         </c>
         <c ca="left">
            <p>
               <b>Genes</b>
            </p>
         </c>
         <c ca="left">
            <p>
               <b>Detected motif (s) &amp; parameters</b>
            </p>
         </c>
         <c ca="left">
            <p>
               <b>Published Motif (s) &amp; reference(s)</b>
            </p>
         </c>
         <c ca="left">
            <p>
               <b>Time</b>
            </p>
         </c>
      </r>
      <r>
         <c cspan="5">
            <hr/>
         </c>
      </r>
      <r>
         <c ca="left">
            <p>PHO4 (600 bp)</p>
         </c>
         <c ca="left">
            <p>PHO5, PHO8, PHO81, PHO84,</p>
         </c>
         <c ca="left">
            <p>CACGTG (6,0)</p>
         </c>
         <c ca="left">
            <p>CACGT[G|T] <abbrgrp><abbr bid="B38">38</abbr></abbrgrp></p>
         </c>
         <c ca="left">
            <p>38 (5%)</p>
         </c>
      </r>
      <r>
         <c cspan="5">
            <hr/>
         </c>
      </r>
      <r>
         <c ca="left">
            <p>HSE_HSTF</p>
            <p>(600 bp)</p>
         </c>
         <c ca="left">
            <p>SSA1, HSP26, SSA4, HSC82, SIS1, CUP1-1</p>
         </c>
         <c ca="left">
            <p>TTCAGTGAA</p>
            <p>(9,2)</p>
         </c>
         <c ca="left">
            <p>TTCNNGAA <abbrgrp><abbr bid="B38">38</abbr></abbrgrp></p>
            <p>TTCNNNGAA <abbrgrp><abbr bid="B38">38</abbr></abbrgrp></p>
         </c>
         <c ca="left">
            <p>37 (35%)</p>
         </c>
      </r>
      <r>
         <c cspan="5">
            <hr/>
         </c>
      </r>
      <r>
         <c ca="left">
            <p>PDR</p>
            <p>(600 bp)</p>
         </c>
         <c ca="left">
            <p>PDR3, SNQ2,</p>
            <p>PDR15, HXT9, HXT11, PDR5,</p>
            <p>YOR1</p>
         </c>
         <c ca="left">
            <p>TCCGTGGA</p>
            <p>(8,1)</p>
            <p>TCCGCGGA</p>
            <p>(8,1)</p>
         </c>
         <c ca="left">
            <p>TCCG[C|T]GGA <abbrgrp><abbr bid="B38">38</abbr></abbrgrp></p>
         </c>
         <c ca="left">
            <p>27(13%)</p>
         </c>
      </r>
      <r>
         <c cspan="5">
            <hr/>
         </c>
      </r>
      <r>
         <c ca="left">
            <p>MCB</p>
            <p>(600 bp)</p>
         </c>
         <c ca="left">
            <p>CDC2, CDC9,</p>
            <p>CDC6, CLN1,</p>
            <p>POL1, CDC21</p>
         </c>
         <c ca="left">
            <p>ACGCGT</p>
            <p>(6,0)</p>
         </c>
         <c ca="left">
            <p>[A|T]CGCG[A|T] <abbrgrp><abbr bid="B38">38</abbr></abbrgrp></p>
         </c>
         <c ca="left">
            <p>31(20%)</p>
         </c>
      </r>
      <r>
         <c cspan="5">
            <hr/>
         </c>
      </r>
      <r>
         <c ca="left">
            <p>ECB</p>
            <p>(600 bp)</p>
         </c>
         <c ca="left">
            <p>SWI4, MCM5</p>
            <p>MCM7, CDC6</p>
            <p>CLN3</p>
         </c>
         <c ca="left">
            <p>TTTCCCATTAAGGAAA (16,3)</p>
         </c>
         <c ca="left">
            <p>TTtCCcnntnaGGAAA <abbrgrp><abbr bid="B10">10</abbr><abbr bid="B39">39</abbr></abbrgrp></p>
         </c>
         <c ca="left">
            <p>41(49%)</p>
         </c>
      </r>
   </tblbdy><tblfn>
      <p>The first column includes the transcriptional factors (regulatory elements) and the length of upstream sequences. The second column includes the regulated genes. The first three factors and their related genes are available at the SCPD <abbrgrp><abbr bid="B38">38</abbr></abbrgrp>. The ECB is the <it>early-cell-cycle-box </it>promoter region described in <abbrgrp><abbr bid="B39">39</abbr></abbrgrp> and we extracted its related genes from the Yeast Genome Database <abbrgrp><abbr bid="B37">37</abbr></abbrgrp>. The third column includes the motif detected by our tool and the respective parameters (<it>l, d</it>). The fourth column includes the published motifs and their references. The final column includes the running time in seconds needed to run our program in the parameter range from (6, 0) until (21, 3), i.e., there are 64 invocation of our program. The percentages in brackets refer to percentage improvements in rum time compared to PMSprune method.</p>
   </tblfn></tbl>
<tbl id="T6"><title><p>Table 6</p></title><caption><p>Application of the PHEP_PMSprune(<it>ons</it>) on the Blanchette real dataset</p></caption><tblbdy cols="5">
      <r>
         <c ca="left">
            <p>
               <b>DNA region</b>
            </p>
         </c>
         <c ca="center">
            <p><b>Seq</b>.</p>
            <p><b>no</b>.</p>
         </c>
         <c ca="left">
            <p>
               <b> Detected motif</b>
            </p>
         </c>
         <c ca="left">
            <p>
               <b>Published Motif</b>
            </p>
         </c>
         <c ca="center">
            <p>
               <b>Time</b>
            </p>
         </c>
      </r>
      <r>
         <c cspan="5">
            <hr/>
         </c>
      </r>
      <r>
         <c ca="left">
            <p>Insulin family</p>
            <p>5' promoter</p>
            <p>(500 bp)</p>
         </c>
         <c ca="center">
            <p>8</p>
         </c>
         <c ca="left">
            <p>CCTCAGCCCC (10, 1)</p>
         </c>
         <c ca="left">
            <p>CCTCAGCCCC <abbrgrp><abbr bid="B10">10</abbr><abbr bid="B40">40</abbr></abbrgrp></p>
         </c>
         <c ca="center">
            <p>87(10%)</p>
         </c>
      </r>
      <r>
         <c>
            <p/>
         </c>
         <c cspan="4">
            <hr/>
         </c>
      </r>
      <r>
         <c>
            <p/>
         </c>
         <c>
            <p/>
         </c>
         <c ca="left">
            <p>AAGACTCTAA (10,2)</p>
         </c>
         <c ca="left">
            <p>AAGACTCTAA <abbrgrp><abbr bid="B36">36</abbr><abbr bid="B40">40</abbr></abbrgrp></p>
         </c>
         <c>
            <p/>
         </c>
      </r>
      <r>
         <c>
            <p/>
         </c>
         <c cspan="4">
            <hr/>
         </c>
      </r>
      <r>
         <c>
            <p/>
         </c>
         <c>
            <p/>
         </c>
         <c ca="left">
            <p>GCCATCTGCC (10,1)</p>
         </c>
         <c ca="left">
            <p>GCCATCTGCC <abbrgrp><abbr bid="B36">36</abbr><abbr bid="B40">40</abbr></abbrgrp></p>
         </c>
         <c>
            <p/>
         </c>
      </r>
      <r>
         <c>
            <p/>
         </c>
         <c cspan="4">
            <hr/>
         </c>
      </r>
      <r>
         <c>
            <p/>
         </c>
         <c>
            <p/>
         </c>
         <c ca="left">
            <p>CTATAAAG (8,0)</p>
         </c>
         <c ca="left">
            <p>CTATAAAG [36, GB]</p>
         </c>
         <c>
            <p/>
         </c>
      </r>
      <r>
         <c>
            <p/>
         </c>
         <c cspan="4">
            <hr/>
         </c>
      </r>
      <r>
         <c>
            <p/>
         </c>
         <c>
            <p/>
         </c>
         <c ca="left">
            <p>GGGAAATG (8,1)</p>
         </c>
         <c ca="left">
            <p>GGGAAATG <abbrgrp><abbr bid="B36">36</abbr><abbr bid="B40">40</abbr></abbrgrp></p>
         </c>
         <c>
            <p/>
         </c>
      </r>
      <r>
         <c cspan="5">
            <hr/>
         </c>
      </r>
      <r>
         <c ca="left">
            <p>Metallothionein</p>
            <p>5'UTR+Promoter</p>
            <p>(590 bp)</p>
         </c>
         <c ca="center">
            <p>26</p>
         </c>
         <c ca="left">
            <p>TTTGCACACGC (11,3)</p>
         </c>
         <c ca="left">
            <p>TTTGCACACG <abbrgrp><abbr bid="B36">36</abbr><abbr bid="B40">40</abbr></abbrgrp></p>
         </c>
         <c ca="center">
            <p>7.87(1%)</p>
         </c>
      </r>
      <r>
         <c>
            <p/>
         </c>
         <c cspan="4">
            <hr/>
         </c>
      </r>
      <r>
         <c>
            <p/>
         </c>
         <c>
            <p/>
         </c>
         <c ca="left">
            <p>TGCACAC (7,1)</p>
         </c>
         <c ca="left">
            <p>TGCACACGG <abbrgrp><abbr bid="B36">36</abbr><abbr bid="B40">40</abbr></abbrgrp></p>
         </c>
         <c>
            <p/>
         </c>
      </r>
      <r>
         <c cspan="5">
            <hr/>
         </c>
      </r>
      <r>
         <c ca="left">
            <p>Interleukin-3 5'UTR+Promoter</p>
            <p>490 bp</p>
         </c>
         <c ca="center">
            <p>6</p>
         </c>
         <c ca="left">
            <p>TTGAGTACT (9,2)</p>
         </c>
         <c ca="left">
            <p>TTGAGTACT <abbrgrp><abbr bid="B36">36</abbr><abbr bid="B40">40</abbr></abbrgrp></p>
         </c>
         <c>
            <p/>
         </c>
      </r>
      <r>
         <c>
            <p/>
         </c>
         <c>
            <p/>
         </c>
         <c ca="left">
            <p>GATGAATAAT (10,1)</p>
         </c>
         <c ca="left">
            <p>GATGAATAAT <abbrgrp><abbr bid="B36">36</abbr><abbr bid="B40">40</abbr></abbrgrp></p>
         </c>
         <c>
            <p/>
         </c>
      </r>
      <r>
         <c>
            <p/>
         </c>
         <c>
            <p/>
         </c>
         <c ca="left">
            <p>TCTTCAGAG, (9,2)</p>
         </c>
         <c ca="left">
            <p>TCTTCAGAG <abbrgrp><abbr bid="B36">36</abbr><abbr bid="B40">40</abbr></abbrgrp></p>
         </c>
         <c>
            <p/>
         </c>
      </r>
      <r>
         <c>
            <p/>
         </c>
         <c>
            <p/>
         </c>
         <c ca="left">
            <p>AGGACCAG, (8,1)</p>
         </c>
         <c ca="left">
            <p>AGGACCAG <abbrgrp><abbr bid="B36">36</abbr><abbr bid="B40">40</abbr></abbrgrp></p>
         </c>
         <c ca="center">
            <p>466(10%)</p>
         </c>
      </r>
      <r>
         <c>
            <p/>
         </c>
         <c>
            <p/>
         </c>
         <c ca="left">
            <p>AGGTTCCATGTCAGATAAAG,</p>
            <p>ATGGAGGTTCCATGTCAGAT,</p>
            <p>CTATGGAGGTTCCATGTCAG,</p>
            <p>GAGGTTCCATGTCAGATAAA,</p>
            <p>GGAGGTTCCATGTCAGATAA,</p>
            <p>TATGGAGGTTCCATGTCAGA,</p>
            <p>TGGAGGTTCCATGTCAGATA,</p>
            <p>all these motifs found with (20,0)</p>
         </c>
         <c ca="left">
            <p> Novel</p>
         </c>
         <c>
            <p/>
         </c>
      </r>
      <r>
         <c cspan="5">
            <hr/>
         </c>
      </r>
      <r>
         <c ca="left">
            <p>Growth-hormone</p>
            <p>5<sup>'</sup>UTR+promoter</p>
            <p>(380 bp)</p>
         </c>
         <c ca="center">
            <p>16</p>
         </c>
         <c ca="left">
            <p>AACTTATCCAT (11,3)</p>
         </c>
         <c ca="left">
            <p>ATTATCCAT <abbrgrp><abbr bid="B36">36</abbr><abbr bid="B40">40</abbr></abbrgrp></p>
         </c>
         <c ca="center">
            <p>3.43(0%)</p>
         </c>
      </r>
      <r>
         <c>
            <p/>
         </c>
         <c cspan="4">
            <hr/>
         </c>
      </r>
      <r>
         <c>
            <p/>
         </c>
         <c>
            <p/>
         </c>
         <c ca="left">
            <p>ATAAATGTAAA (11,3)</p>
         </c>
         <c ca="left">
            <p>ATAAATGTA <abbrgrp><abbr bid="B36">36</abbr><abbr bid="B40">40</abbr></abbrgrp></p>
         </c>
         <c>
            <p/>
         </c>
      </r>
      <r>
         <c>
            <p/>
         </c>
         <c cspan="4">
            <hr/>
         </c>
      </r>
      <r>
         <c>
            <p/>
         </c>
         <c>
            <p/>
         </c>
         <c ca="left">
            <p>TATAAAAAG (9,2)</p>
         </c>
         <c ca="left">
            <p>TATAAAAAG <abbrgrp><abbr bid="B36">36</abbr><abbr bid="B40">40</abbr></abbrgrp></p>
         </c>
         <c>
            <p/>
         </c>
      </r>
      <r>
         <c cspan="5">
            <hr/>
         </c>
      </r>
      <r>
         <c ca="left">
            <p>c-fos</p>
            <p>5<sup>' </sup>UTR+promoter</p>
            <p>(800bp)</p>
         </c>
         <c ca="center">
            <p>6</p>
         </c>
         <c ca="left">
            <p>CCATATTAGGAC (12,3)</p>
         </c>
         <c ca="left">
            <p>CCATATTAGGACATCT <abbrgrp><abbr bid="B10">10</abbr><abbr bid="B41">41</abbr></abbrgrp></p>
         </c>
         <c ca="center">
            <p>350(15%)</p>
         </c>
      </r>
      <r>
         <c>
            <p/>
         </c>
         <c cspan="4">
            <hr/>
         </c>
      </r>
      <r>
         <c>
            <p/>
         </c>
         <c>
            <p/>
         </c>
         <c ca="left">
            <p>GAGTTGGCTGC (11,3)</p>
         </c>
         <c ca="left">
            <p>GAGTTGGCTG <abbrgrp><abbr bid="B36">36</abbr></abbrgrp></p>
         </c>
         <c>
            <p/>
         </c>
      </r>
      <r>
         <c>
            <p/>
         </c>
         <c cspan="4">
            <hr/>
         </c>
      </r>
      <r>
         <c>
            <p/>
         </c>
         <c>
            <p/>
         </c>
         <c ca="left">
            <p>CACAGGATGT (10,2)</p>
         </c>
         <c ca="left">
            <p>CACAGGATGT <abbrgrp><abbr bid="B36">36</abbr><abbr bid="B40">40</abbr></abbrgrp></p>
         </c>
         <c>
            <p/>
         </c>
      </r>
      <r>
         <c>
            <p/>
         </c>
         <c cspan="4">
            <hr/>
         </c>
      </r>
      <r>
         <c>
            <p/>
         </c>
         <c>
            <p/>
         </c>
         <c ca="left">
            <p>AGGACATCTGCT (12,3)</p>
         </c>
         <c ca="left">
            <p>AGGACATCTG <abbrgrp><abbr bid="B36">36</abbr><abbr bid="B40">40</abbr></abbrgrp></p>
         </c>
         <c>
            <p/>
         </c>
      </r>
      <r>
         <c cspan="5">
            <hr/>
         </c>
      </r>
      <r>
         <c ca="left">
            <p>c-myc</p>
            <p>5'+promoter</p>
            <p>(100bp)</p>
         </c>
         <c ca="center">
            <p>7</p>
         </c>
         <c ca="left">
            <p>GTTTATTC (8,1)</p>
         </c>
         <c ca="left">
            <p>GTTTATTC <abbrgrp><abbr bid="B36">36</abbr></abbrgrp></p>
         </c>
         <c ca="center">
            <p>83.5(42%)</p>
         </c>
      </r>
      <r>
         <c>
            <p/>
         </c>
         <c cspan="4">
            <hr/>
         </c>
      </r>
      <r>
         <c>
            <p/>
         </c>
         <c>
            <p/>
         </c>
         <c ca="left">
            <p>CTTGCTGGG (9,2)</p>
         </c>
         <c ca="left">
            <p>TTGCTGGG <abbrgrp><abbr bid="B36">36</abbr></abbrgrp></p>
         </c>
         <c>
            <p/>
         </c>
      </r>
      <r>
         <c>
            <p/>
         </c>
         <c cspan="4">
            <hr/>
         </c>
      </r>
      <r>
         <c>
            <p/>
         </c>
         <c>
            <p/>
         </c>
         <c ca="left">
            <p>TGTTTACATC (10,2)</p>
         </c>
         <c ca="left">
            <p>TGTTTACATC <abbrgrp><abbr bid="B36">36</abbr><abbr bid="B40">40</abbr></abbrgrp></p>
         </c>
         <c>
            <p/>
         </c>
      </r>
      <r>
         <c>
            <p/>
         </c>
         <c cspan="4">
            <hr/>
         </c>
      </r>
      <r>
         <c>
            <p/>
         </c>
         <c>
            <p/>
         </c>
         <c ca="left">
            <p>CCCTCCCC (8,1)</p>
         </c>
         <c ca="left">
            <p>CCCTCCCC <abbrgrp><abbr bid="B36">36</abbr><abbr bid="B40">40</abbr></abbrgrp></p>
         </c>
         <c>
            <p/>
         </c>
      </r>
      <r>
         <c cspan="5">
            <hr/>
         </c>
      </r>
      <r>
         <c ca="left">
            <p>Histone H1</p>
            <p>5<sup>'</sup>UTR+Promoter</p>
            <p>650 bp</p>
         </c>
         <c ca="center">
            <p>
               <b>4</b>
            </p>
         </c>
         <c ca="left">
            <p>CAATCACCAC, (10,2)</p>
         </c>
         <c ca="left">
            <p>CAATCACCAC, [36, GB]</p>
         </c>
         <c ca="center">
            <p>47.6(9%)</p>
         </c>
      </r>
      <r>
         <c>
            <p/>
         </c>
         <c cspan="4">
            <hr/>
         </c>
      </r>
      <r>
         <c>
            <p/>
         </c>
         <c>
            <p/>
         </c>
         <c ca="left">
            <p>AAACAAAAGT (10,1)</p>
         </c>
         <c ca="left">
            <p>AAACAAAAGT, [36, GB]</p>
         </c>
         <c>
            <p/>
         </c>
      </r>
   </tblbdy><tblfn>
      <p>The first column includes the gene family and the length of upstream sequences. The second column includes the number of sequences. The third column includes the motif detected by our tool and the respective parameters (<it>l, d</it>). The fourth column includes the published motifs and their references; "GB" stands for Genebank annotation. The final column includes the running time in seconds needed to run our program in the parameter range from (6,0) until (21,3), i.e., there are 64 invocation of our program. The percentages in brackets refer percentage improvements in rum time compared to PMSprune method.</p>
   </tblfn></tbl>
<p>Tables <tblr tid="T5">5</tblr> and <tblr tid="T6">6</tblr> also include the running times (in seconds) of running our method for the listed problem instances and the improvement in time compared to the PMSprune method. The running time for one problem instance is the time needed to run our program in the (<it>l, d</it>) parameters range from (6, 0) until (21, 3), i.e., there are 64 invocations of our program. The results show that our program is superior to the PMSprune for large instances.</p>
</sec>
</sec>
<sec>
<st>
<p>Conclusions</p>
</st>
<p>In this paper, we introduced an efficient method that can enhance the performance of exact algorithms for the motif finding problem. Our method depends on dividing the sequence space into two sets. Over the first set, we generate a set of candidate motifs. Then, we use the remaining set of sequences to verify if each candidate motif is a real one. The experimental results show that our method is superior to the best methods available so far and could tackle large problems like (21, 8). Finally, we introduced a scalable and efficient parallel version for the proposed method. Our tool is available for free for academic research at <url>http://www.nubios.nileu.edu.eg/tools/hymotif</url>.</p>
</sec>
<sec>
<st>
<p>Availability and requirements</p>
</st>
<p>
<b>Project name: </b>hymotif.</p>
<p>
<b>Project home page: </b>
<url>http://www.nubios.nileu.edu.eg/tools/hymotif</url>
</p>
<p>
<b>Operating system(s): </b>Linux.</p>
<p>
<b>Programming language: </b>C.</p>
<p>
<b>Other requirements: </b>C/C++ libraries.</p>
<p>
<b>License: </b>GPL.</p>
<p>
<b>Any restrictions to use by non-academics: </b>No restrictions.</p>
</sec>
<sec>
<st>
<p>Competing interests</p>
</st>
<p>The authors declare that they have no competing interests.</p>
</sec>
<sec>
<st>
<p>Authors' contributions</p>
</st>
<p>All authors contributed to theoretical and practical developments which form the basis of HEP method. All authors wrote and approved the manuscript.</p>
</sec>
</bdy><bm>
<ack>
<sec>
<st>
<p>Acknowledgements</p>
</st>
<p>The authors are grateful to M.M. Mohie Eldin for useful discussion. The authors also thank Sanguthevar Rajasekaran for providing us with the source code of PMSprune and real datasets.</p>
<p>This article has been published as part of <it>BMC Bioinformatics </it>Volume 13 Supplement 17, 2012: Eleventh International Conference on Bioinformatics (InCoB2012): Bioinformatics. The full contents of the supplement are available online at <url>http://www.biomedcentral.com/bmcbioinformatics/supplements/13/S17</url>.</p>
</sec>
</ack>
<refgrp><bibl id="B1"><title><p>Pattern recognition in several sequences: consensus and alignment</p></title><aug><au><snm>Waterman</snm><fnm>MS</fnm></au><au><snm>Aratia</snm><fnm>R</fnm></au><au><snm>Galas</snm><fnm>DJ</fnm></au></aug><source>Bulletin of Mathematical Biology</source><pubdate>1984</pubdate><volume>46</volume><issue>4</issue><fpage>515</fpage><lpage>527</lpage><xrefbib><pubid idtype="pmpid">6509229</pubid></xrefbib></bibl><bibl id="B2"><title><p>Combinatorial approaches to finding subtle signals in DNA sequences</p></title><aug><au><snm>Pevzner</snm><fnm>P</fnm></au><au><snm>Sze</snm><fnm>SH</fnm></au></aug><source>Proceedings of Eighth International Conference on Intelligent Systems for Molecular Biology</source><pubdate>2000</pubdate><fpage>269</fpage><lpage>278</lpage></bibl><bibl id="B3"><title><p>An expectation maximization (EM) algorithm for the identification and characterization of common sites in unaligned biopolymer sequences</p></title><aug><au><snm>Lawrence</snm><fnm>C</fnm></au><au><snm>Reilly</snm><fnm>A</fnm></au></aug><source>Proteins: Structure, Function and Genetics</source><pubdate>1990</pubdate><volume>7</volume><fpage>41</fpage><lpage>51</lpage><xrefbib><pubid idtype="doi">10.1002/prot.340070105</pubid></xrefbib></bibl><bibl id="B4"><title><p>Detecting subtle sequence signals: A Gibbs Sampling strategy for multiple alignment</p></title><aug><au><snm>Lawrence</snm><fnm>C</fnm></au><au><snm>Altschul</snm><fnm>S</fnm></au><au><snm>Boguski</snm><fnm>M</fnm></au><au><snm>Liu</snm><fnm>J</fnm></au><au><snm>Neuwald</snm><fnm>A</fnm></au><au><snm>Wootton</snm><fnm>J</fnm></au></aug><source>Science</source><pubdate>1993</pubdate><volume>262</volume><fpage>208</fpage><lpage>214</lpage><xrefbib><pubidlist><pubid idtype="doi">10.1126/science.8211139</pubid><pubid idtype="pmpid" link="fulltext">8211139</pubid></pubidlist></xrefbib></bibl><bibl id="B5"><title><p>Unsupervised learning of multiple motifs in biopolymers using Expectation Maximization</p></title><aug><au><snm>Bailey</snm><fnm>T</fnm></au><au><snm>Elkan</snm><fnm>C</fnm></au></aug><source>Machine Learning</source><pubdate>1995</pubdate><volume>21</volume><fpage>51</fpage><lpage>80</lpage></bibl><bibl id="B6"><title><p>Identification of common motifs in unaligned DNA sequences: application to Escherichia coli Lrp regulon</p></title><aug><au><snm>Fraenkel</snm><fnm>Y</fnm></au><au><snm>Mandel</snm><fnm>Y</fnm></au><au><snm>Friedberg</snm><fnm>D</fnm></au><au><snm>Margalit</snm><fnm>H</fnm></au></aug><source>Bioinformatics</source><pubdate>1995</pubdate><volume>11</volume><fpage>379</fpage><lpage>387</lpage><xrefbib><pubid idtype="doi">10.1093/bioinformatics/11.4.379</pubid></xrefbib></bibl><bibl id="B7"><title><p>Combinatorial pattern discovery in biological sequences: the TEIRESIAS algorithm</p></title><aug><au><snm>Rigoutsos</snm><fnm>I</fnm></au><au><snm>Floratos</snm><fnm>A</fnm></au></aug><source>Bioinformatics</source><pubdate>1998</pubdate><volume>14</volume><fpage>55</fpage><lpage>67</lpage><xrefbib><pubidlist><pubid idtype="doi">10.1093/bioinformatics/14.1.55</pubid><pubid idtype="pmpid" link="fulltext">9520502</pubid></pubidlist></xrefbib></bibl><bibl id="B8"><title><p>Identifying DNA and protein patterns with statistically significant alignments of multiple sequences</p></title><aug><au><snm>Hertz</snm><fnm>GZ</fnm></au><au><snm>Stormo</snm><fnm>GD</fnm></au></aug><source>Bioinformatics</source><pubdate>1999</pubdate><volume>15</volume><fpage>563</fpage><lpage>577</lpage><xrefbib><pubidlist><pubid idtype="doi">10.1093/bioinformatics/15.7.563</pubid><pubid idtype="pmpid" link="fulltext">10487864</pubid></pubidlist></xrefbib></bibl><bibl id="B9"><title><p>Prediction of transcription regulatory sites in archaea by a comparative genomic approach</p></title><aug><au><snm>Gelfand</snm><fnm>M</fnm></au><au><snm>Koonin</snm><fnm>E</fnm></au><au><snm>Mironov</snm><fnm>A</fnm></au></aug><source>Nucleic Acid Res</source><pubdate>2000</pubdate><volume>28</volume><fpage>695</fpage><lpage>705</lpage><xrefbib><pubidlist><pubid idtype="doi">10.1093/nar/28.3.695</pubid><pubid idtype="pmcid">102549</pubid><pubid idtype="pmpid" link="fulltext">10637320</pubid></pubidlist></xrefbib></bibl><bibl id="B10"><title><p>Finding motifs using random projections</p></title><aug><au><snm>Buhler</snm><fnm>J</fnm></au><au><snm>Tompa</snm><fnm>M</fnm></au></aug><source>Journal of Computational Biology</source><pubdate>2002</pubdate><volume>9</volume><issue>2</issue><fpage>225</fpage><lpage>242</lpage><xrefbib><pubidlist><pubid idtype="doi">10.1089/10665270252935430</pubid><pubid idtype="pmpid" link="fulltext">12015879</pubid></pubidlist></xrefbib></bibl><bibl id="B11"><title><p>Finding subtle motifs by branching from sample strings</p></title><aug><au><snm>Price</snm><fnm>A</fnm></au><au><snm>Ramabhadran</snm><fnm>S</fnm></au><au><snm>Pevzner</snm><fnm>PA</fnm></au></aug><source>Bioinformatics</source><pubdate>2003</pubdate><volume>19</volume><issue>2</issue><fpage>ii149</fpage><lpage>ii155</lpage><xrefbib><pubidlist><pubid idtype="doi">10.1093/bioinformatics/btg1072</pubid><pubid idtype="pmpid" link="fulltext">14534184</pubid></pubidlist></xrefbib></bibl><bibl id="B12"><title><p>An improved heuristic algorithm for finding motif signals in DNA sequences</p></title><aug><au><snm>Huang</snm><fnm>C</fnm></au><au><snm>Lee</snm><fnm>W</fnm></au><au><snm>Hsieh</snm><fnm>S</fnm></au></aug><source>IEEE/ACM Transactions on Computational Biology and Bioinformatics</source><pubdate>2011</pubdate><volume>8</volume><issue>4</issue><fpage>959</fpage><lpage>975</lpage><xrefbib><pubid idtype="pmpid" link="fulltext">20855921</pubid></xrefbib></bibl><bibl id="B13"><title><p>Rigorous pattern-recognition methods for DNA sequences: analysis of promoter sequences from Escherichia coli</p></title><aug><au><snm>Galas</snm><fnm>DJ</fnm></au><au><snm>Eggert</snm><fnm>M</fnm></au><au><snm>Waterman</snm><fnm>MS</fnm></au></aug><source>Journal of Molecular Biology</source><pubdate>1985</pubdate><volume>186</volume><issue>1</issue><fpage>117</fpage><lpage>128</lpage><xrefbib><pubidlist><pubid idtype="doi">10.1016/0022-2836(85)90262-1</pubid><pubid idtype="pmpid" link="fulltext">3908689</pubid></pubidlist></xrefbib></bibl><bibl id="B14"><title><p>Methods for discovering novel motifs in nucleic acid sequences</p></title><aug><au><snm>Staden</snm><fnm>R</fnm></au></aug><source>Computer Applications in the Biosciences</source><pubdate>1989</pubdate><volume>5</volume><issue>4</issue><fpage>293</fpage><lpage>298</lpage><xrefbib><pubid idtype="pmpid">2684350</pubid></xrefbib></bibl><bibl id="B15"><title><p>Predicting gene regulatory elements in silico on a genomic scale</p></title><aug><au><snm>Brazma</snm><fnm>A</fnm></au><au><snm>Jonassen</snm><fnm>I</fnm></au><au><snm>Vilo</snm><fnm>J</fnm></au><au><snm>Ukkonen</snm><fnm>E</fnm></au></aug><source>Genome Research</source><pubdate>1998</pubdate><volume>15</volume><fpage>1202</fpage><lpage>1215</lpage></bibl><bibl id="B16"><title><p>Spelling approximate repeated or common motifs using a suffix tree</p></title><aug><au><snm>Sagot</snm><fnm>MF</fnm></au></aug><source>Latin'98: Theoretical informatics, LNCS</source><editor>Lucchesi CL, Moura AV</editor><pubdate>1998</pubdate><volume>1380</volume><fpage>111</fpage><lpage>127</lpage><xrefbib><pubid idtype="pmpid" link="fulltext">23125354</pubid></xrefbib></bibl><bibl id="B17"><title><p>Extracting regulatory sites from the upstream region of yeast genes by computational analysis of oligonucleotide frequencies</p></title><aug><au><snm>Van Helden</snm><fnm>J</fnm></au><au><snm>Andre</snm><fnm>B</fnm></au><au><snm>Collado-Vides</snm><fnm>J</fnm></au></aug><source>Journal of Molecular Biology</source><pubdate>1998</pubdate><volume>281</volume><issue>5</issue><fpage>827</fpage><lpage>842</lpage><xrefbib><pubidlist><pubid idtype="doi">10.1006/jmbi.1998.1947</pubid><pubid idtype="pmpid" link="fulltext">9719638</pubid></pubidlist></xrefbib></bibl><bibl id="B18"><title><p>An exact method for finding short motifs in sequences with application to the ribosome binding site problem</p></title><aug><au><snm>Tompa</snm><fnm>M</fnm></au></aug><source>Proceedings of seventh International Conference on Intelligent Systems for Molecular Biology</source><pubdate>1999</pubdate><fpage>262</fpage><lpage>271</lpage></bibl><bibl id="B19"><title><p>Algorithms for extracting structured motifs using a suffix tree with an application to promoter and regulatory site consensus identification</p></title><aug><au><snm>Marsan</snm><fnm>L</fnm></au><au><snm>Sagot</snm><fnm>MF</fnm></au></aug><source>Journal of Computational Biology</source><pubdate>2000</pubdate><volume>7</volume><issue>3-4</issue><fpage>345</fpage><lpage>362</lpage><xrefbib><pubidlist><pubid idtype="doi">10.1089/106652700750050826</pubid><pubid idtype="pmpid" link="fulltext">11108467</pubid></pubidlist></xrefbib></bibl><bibl id="B20"><title><p>A statistical method for finding transcription factor binding sites</p></title><aug><au><snm>Sinha</snm><fnm>S</fnm></au><au><snm>Tompa</snm><fnm>M</fnm></au></aug><source>Proceedings of Eighth International Conference on Intelligent Systems for Molecular Biology</source><pubdate>2000</pubdate><fpage>344</fpage><lpage>354</lpage></bibl><bibl id="B21"><title><p>Algorithms for phylogenetic footprinting</p></title><aug><au><snm>Blanchette</snm><fnm>M</fnm></au></aug><source>Proceedings of Fifth International Conference Computational Biology (RECOMB 2001)</source><pubdate>2001</pubdate></bibl><bibl id="B22"><title><p>Finding composite regulatory patterns in DNA sequences</p></title><aug><au><snm>Eskin</snm><fnm>E</fnm></au><au><snm>Pevzner</snm><fnm>PA</fnm></au></aug><source>Bioinformatics</source><pubdate>2002</pubdate><volume>18</volume><issue>1</issue><fpage>354</fpage><lpage>363</lpage><xrefbib><pubid idtype="doi">10.1093/bioinformatics/18.suppl_1.S354</pubid></xrefbib></bibl><bibl id="B23"><title><p>Toward optimal motif enumeration</p></title><aug><au><snm>Evans</snm><fnm>PA</fnm></au><au><snm>Smith</snm><fnm>A</fnm></au></aug><source>Proceedings of Eighth International Workshop Algorithms and Data Structures (WADS03)</source><pubdate>2003</pubdate><fpage>47</fpage><lpage>58</lpage></bibl><bibl id="B24"><title><p>A highly scalable algorithm for the extraction of CIS-Regulatory regions</p></title><aug><au><snm>Carvalho</snm><fnm>AM</fnm></au><au><snm>Freitas</snm><fnm>AT</fnm></au><au><snm>Oliveira</snm><fnm>AL</fnm></au><au><snm>Sagot</snm><fnm>MF</fnm></au></aug><source>Proceedings of Third Asia Pacific Bioinformatics Conference</source><pubdate>2005</pubdate><fpage>273</fpage><lpage>282</lpage></bibl><bibl id="B25"><title><p>Voting algorithms for discovering long motifs</p></title><aug><au><snm>Chin</snm><fnm>FYL</fnm></au><au><snm>Leung</snm><fnm>HCM</fnm></au></aug><source>Proceedings of Third Asia Pacific Bioinformatics Conference</source><pubdate>2005</pubdate><fpage>261</fpage><lpage>271</lpage></bibl><bibl id="B26"><title><p>Exact algorithms for planted motif problems</p></title><aug><au><snm>Rajasekaran</snm><fnm>S</fnm></au><au><snm>Balla</snm><fnm>S</fnm></au><au><snm>Huang</snm><fnm>C-H</fnm></au></aug><source>Journal of Computational Biology</source><pubdate>2005</pubdate><volume>12</volume><issue>8</issue><fpage>1117</fpage><lpage>1128</lpage><xrefbib><pubidlist><pubid idtype="doi">10.1089/cmb.2005.12.1117</pubid><pubid idtype="pmpid" link="fulltext">16241901</pubid></pubidlist></xrefbib></bibl><bibl id="B27"><title><p>Space and time efficient algorithms for planted motif search</p></title><aug><au><snm>Davila</snm><fnm>J</fnm></au><au><snm>Balla</snm><fnm>S</fnm></au><au><snm>Rajasekaran</snm><fnm>S</fnm></au></aug><source>Proceedings of Second International Workshop on Bioinformatics Research and Applications (LNCS 3992)</source><pubdate>2006</pubdate><fpage>822</fpage><lpage>829</lpage></bibl><bibl id="B28"><title><p>RISOTTO: fast extraction of motifs with mismatches</p></title><aug><au><snm>Pisanti</snm><fnm>N</fnm></au><au><snm>Carvalho</snm><fnm>A</fnm></au><au><snm>Marsan</snm><fnm>L</fnm></au><au><snm>Sagot</snm><fnm>MF</fnm></au></aug><source>Proceedings of Seventh Latin American Theoretical Informatics Symposium</source><pubdate>2006</pubdate><fpage>757</fpage><lpage>768</lpage></bibl><bibl id="B29"><title><p>Fastand practical algorithms for planted (<it>l, d</it>) motif search</p></title><aug><au><snm>Davila</snm><fnm>J</fnm></au><au><snm>Balla</snm><fnm>S</fnm></au><au><snm>Rajasekaran</snm><fnm>S</fnm></au></aug><source>IEEE/ACM Transactions on Computational Biology and Bioinformatics</source><pubdate>2007</pubdate><fpage>544</fpage><lpage>552</lpage></bibl><bibl id="B30"><title><p>PMS5: an efficient exact algorithm for the (<it>l, d</it>)-motif finding problem</p></title><aug><au><snm>Dinh</snm><fnm>H</fnm></au><au><snm>Rajasekaran</snm><fnm>S</fnm></au><au><snm>Kundeti</snm><fnm>V</fnm></au></aug><source>BMC Bioinformatics</source><pubdate>2011</pubdate><volume>12</volume><fpage>410</fpage><lpage>420</lpage><xrefbib><pubidlist><pubid idtype="doi">10.1186/1471-2105-12-410</pubid><pubid idtype="pmcid">3269969</pubid><pubid idtype="pmpid" link="fulltext">22024209</pubid></pubidlist></xrefbib></bibl><bibl id="B31"><title><p>An experimental comparison of PMSprune and other algorithms for motif search</p></title><aug><au><snm>Sharma</snm><fnm>D</fnm></au><au><snm>Rajasekaran</snm><fnm>S</fnm></au><au><snm>Dinh</snm><fnm>H</fnm></au></aug><source>CoRR abs</source><pubdate>2011</pubdate><fpage>1108.5217</fpage></bibl><bibl id="B32"><title><p>Performance and analysis of modified voting algorithm for planted motif search</p></title><aug><au><snm>Abbas</snm><fnm>MM</fnm></au><au><snm>Bahig</snm><fnm>HM</fnm></au></aug><source>Proceedings of Seventh ACS/IEEE International Conference on Computer Systems and Applications</source><pubdate>2009</pubdate><fpage>725</fpage><lpage>731</lpage></bibl><bibl id="B33"><title><p>Experimental study of modified voting algorithm for planted (<it>l, d</it>)-motif problem</p></title><aug><au><snm>Bahig</snm><fnm>HM</fnm></au><au><snm>Abbas</snm><fnm>MM</fnm></au><au><snm>Bhery</snm><fnm>A</fnm></au></aug><source>Experimental Medicine and Biology, special issue Advanced in Computational Biology, Springer</source><pubdate>2010</pubdate><fpage>65</fpage><lpage>73</lpage></bibl><bibl id="B34"><title><p>A speedup technique for (<it>l, d</it>)-motif finding algorithms</p></title><aug><au><snm>Rajasekaran</snm><fnm>S</fnm></au><au><snm>Dinh</snm><fnm>H</fnm></au></aug><source>BMC Research Notes</source><pubdate>2011</pubdate><issue>4</issue><fpage>54</fpage><lpage>61</lpage></bibl><bibl id="B35"><title><p>Algorithms on strings, trees, and sequences: computer science and computational biology</p></title><aug><au><snm>Gusfield</snm><fnm>D</fnm></au></aug><source>Cambridge university Press, New York</source><pubdate>1977</pubdate></bibl><bibl id="B36"><title><p>Discovery of regulatory elements by a computational method for phylogenetic footprinting</p></title><aug><au><snm>Blanchette</snm><fnm>J</fnm></au><au><snm>Tompa</snm><fnm>M</fnm></au></aug><source>Genome Research</source><pubdate>2002</pubdate><volume>12</volume><issue>5</issue><fpage>739</fpage><lpage>748</lpage><xrefbib><pubidlist><pubid idtype="doi">10.1101/gr.6902</pubid><pubid idtype="pmcid">186562</pubid><pubid idtype="pmpid" link="fulltext">11997340</pubid></pubidlist></xrefbib></bibl><bibl id="B37"><title><p>SGD: Saccharomyces Genome Database</p></title><aug><au><snm>Cherry</snm><fnm>JM</fnm></au><au><snm>Adler</snm><fnm>C</fnm></au><au><snm>Ball</snm><fnm>C</fnm></au><au><snm>Chervitz</snm><fnm>SA</fnm></au><au><snm>Dwight</snm><fnm>SS</fnm></au><au><snm>Hester</snm><fnm>ET</fnm></au><au><snm>Jia</snm><fnm>Y</fnm></au><au><snm>Juvik</snm><fnm>G</fnm></au><au><snm>Roe</snm><fnm>T</fnm></au><au><snm>Schroeder</snm><fnm>M</fnm></au><au><snm>Weng</snm><fnm>S</fnm></au><au><snm>Botstein</snm><fnm>D</fnm></au></aug><source>Nucleic Acid Res</source><pubdate>1998</pubdate><volume>26</volume><fpage>73</fpage><lpage>79</lpage><url>http://www.yeastgenome.org/</url><xrefbib><pubidlist><pubid idtype="doi">10.1093/nar/26.1.73</pubid><pubid idtype="pmcid">147204</pubid><pubid idtype="pmpid" link="fulltext">9399804</pubid></pubidlist></xrefbib></bibl><bibl id="B38"><title><p>SCPD: A Promoter Database of the Yeast Saccha-Romyces Cerevisiae</p></title><aug><au><snm>Zhu</snm><fnm>J</fnm></au><au><snm>Zhang</snm><fnm>M</fnm></au></aug><source>Bioinformatics</source><pubdate>1999</pubdate><volume>15</volume><issue>7-8</issue><fpage>607</fpage><lpage>611</lpage><url>http://cgsigma.cshl.org/jian/</url><xrefbib><pubid idtype="pmpid" link="fulltext">10487868</pubid></xrefbib></bibl><bibl id="B39"><title><p>A novel Mcm1-dependent element in the SWI4, CLN3, CDC6, and CDC47 promoters activates M/G1-specific transcription</p></title><aug><au><snm>McInerny</snm><fnm>CJ</fnm></au><au><snm>Partridge</snm><fnm>JF</fnm></au><au><snm>Mikesell</snm><fnm>GE</fnm></au><au><snm>Creemer</snm><fnm>DP</fnm></au><au><snm>Breeden</snm><fnm>LL</fnm></au></aug><source>Genes Dev</source><pubdate>1997</pubdate><volume>11</volume><issue>10</issue><fpage>1277</fpage><lpage>1288</lpage><xrefbib><pubidlist><pubid idtype="doi">10.1101/gad.11.10.1277</pubid><pubid idtype="pmpid" link="fulltext">9171372</pubid></pubidlist></xrefbib></bibl><bibl id="B40"><title><p>TRANSFAC: a database on transcription factors and their DNA binding sites</p></title><aug><au><snm>Wingender</snm><fnm>E</fnm></au><au><snm>Dietze</snm><fnm>P</fnm></au><au><snm>Karas</snm><fnm>H</fnm></au><au><snm>Knuppel</snm><fnm>R</fnm></au></aug><source>Nucleic Acids Research</source><pubdate>1996</pubdate><volume>24</volume><issue>1</issue><fpage>238</fpage><lpage>241</lpage><url>http://transfac.gbf-braunschweig.de/TRANSFAC/</url><xrefbib><pubidlist><pubid idtype="doi">10.1093/nar/24.1.238</pubid><pubid idtype="pmcid">145586</pubid><pubid idtype="pmpid" link="fulltext">8594589</pubid></pubidlist></xrefbib></bibl><bibl id="B41"><title><p>YY1 facilitates the association of serum response factor with the c-fos serum response element</p></title><aug><au><snm>Natesan</snm><fnm>S</fnm></au><au><snm>Gilman</snm><fnm>M</fnm></au></aug><source>Mol Cell Biol</source><pubdate>1995</pubdate><volume>15</volume><issue>11</issue><fpage>5975</fpage><lpage>5982</lpage><xrefbib><pubidlist><pubid idtype="pmcid">230849</pubid><pubid idtype="pmpid" link="fulltext">7565750</pubid></pubidlist></xrefbib></bibl></refgrp>
</bm></art>