<?xml version='1.0'?>
<!DOCTYPE art SYSTEM 'http://www.biomedcentral.com/xml/article.dtd'>
<art>
   <ui>1471-2105-9-224</ui>
   <ji>1471-2105</ji>
   <fm>
      <dochead>Methodology article</dochead>
      <bibl>
         <title>
            <p>Implementing EM and Viterbi algorithms for Hidden Markov Model in linear memory</p>
         </title>
         <aug>
            <au id="A1" ca="yes">
               <snm>Churbanov</snm>
               <fnm>Alexander</fnm>
               <insr iid="I1"/>
               <email>achurbanov@yahoo.com</email>
            </au>
            <au id="A2">
               <snm>Winters-Hilt</snm>
               <fnm>Stephen</fnm>
               <insr iid="I1"/>
               <insr iid="I2"/>
               <email>winters@cs.uno.edu</email>
            </au>
         </aug>
         <insg>
            <ins id="I1">
               <p>The Research Institute for Children, 200 Henry Clay Ave., New Orleans, LA 70118, USA</p>
            </ins>
            <ins id="I2">
               <p>Department of Computer Science, University of New Orleans, New Orleans, LA, 70148, USA</p>
            </ins>
         </insg>
         <source>BMC Bioinformatics</source>
         <issn>1471-2105</issn>
         <pubdate>2008</pubdate>
         <volume>9</volume>
         <issue>1</issue>
         <fpage>224</fpage>
         <url>http://www.biomedcentral.com/1471-2105/9/224</url>
         <xrefbib>
            <pubidlist>
               <pubid idtype="pmpid">18447951</pubid>
               <pubid idtype="doi">10.1186/1471-2105-9-224</pubid>
            </pubidlist>
         </xrefbib>
      </bibl>
      <history>
         <rec>
            <date>
               <day>25</day>
               <month>8</month>
               <year>2007</year>
            </date>
         </rec>
         <acc>
            <date>
               <day>30</day>
               <month>4</month>
               <year>2008</year>
            </date>
         </acc>
         <pub>
            <date>
               <day>30</day>
               <month>4</month>
               <year>2008</year>
            </date>
         </pub>
      </history>
      <cpyrt>
         <year>2008</year>
         <collab>Churbanov and Winters-Hilt; 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>The Baum-Welch learning procedure for Hidden Markov Models (HMMs) provides a powerful tool for tailoring HMM topologies to data for use in knowledge discovery and clustering. A linear memory procedure recently proposed by <it>Mikl&#243;s, I. and Meyer, I.M. </it>describes a memory sparse version of the Baum-Welch algorithm with modifications to the original probabilistic table topologies to make memory use independent of sequence length (and linearly dependent on state number). The original description of the technique has some errors that we amend. We then compare the corrected implementation on a variety of data sets with conventional and checkpointing implementations.</p>
            </sec>
            <sec>
               <st>
                  <p>Results</p>
               </st>
               <p>We provide a correct recurrence relation for the emission parameter estimate and extend it to parameter estimates of the Normal distribution. To accelerate estimation of the prior state probabilities, and decrease memory use, we reverse the originally proposed forward sweep. We describe different scaling strategies necessary in all real implementations of the algorithm to prevent underflow. In this paper we also describe our approach to a linear memory implementation of the Viterbi decoding algorithm (with linearity in the sequence length, while memory use is approximately independent of state number). We demonstrate the use of the linear memory implementation on an extended Duration Hidden Markov Model (DHMM) and on an HMM with a spike detection topology. Comparing the various implementations of the Baum-Welch procedure we find that the checkpointing algorithm produces the best overall tradeoff between memory use and speed. In cases where sequence length is very large (for Baum-Welch), or state number is very large (for Viterbi), the linear memory methods outlined may offer some utility.</p>
            </sec>
            <sec>
               <st>
                  <p>Conclusion</p>
               </st>
               <p>Our performance-optimized Java implementations of Baum-Welch algorithm are available at <url>http://logos.cs.uno.edu/~achurban</url>. The described method and implementations will aid sequence alignment, gene structure prediction, HMM profile training, nanopore ionic flow blockades analysis and many other domains that require efficient HMM training with EM.</p>
            </sec>
         </sec>
      </abs>
   </fm>
   <bdy>
      <sec>
         <st>
            <p>Background</p>
         </st>
         <p>Hidden Markov Models (HMMs) are a widely accepted modeling tool <abbrgrp><abbr bid="B1">1</abbr></abbrgrp> used in various domains, such as speech recognition <abbrgrp><abbr bid="B2">2</abbr></abbrgrp> and bioinformatics <abbrgrp><abbr bid="B3">3</abbr></abbrgrp>. An HMM can be described as a stochastic finite state machine where each transition between hidden states ends with a symbol emission. The HMM can be represented as a directed graph with <it>N </it>states where each state can emit either a discrete character or a continuous value drawn from a Probability Density Function (PDF).</p>
         <p>We are interested in a distributed HMM analysis of the channel current blockade signal caused by a single DNA hairpin molecule held in a nanopore detector <abbrgrp><abbr bid="B4">4</abbr><abbr bid="B5">5</abbr></abbrgrp>. The molecules examined frequently produce toggles with stationary statistical profiles for thousands of milliseconds. With a sampling rate of 20 <it>&#956;</it>s, processing even a modest blockade signal of 200 ms duration (10,000 sample points) becomes problematic, mostly because of the size of the dynamic programming tables required in the conventional implementations of the HMM's Baum-Welch and Viterbi decoding algorithms. Since we are also trying to model durations <abbrgrp><abbr bid="B6">6</abbr></abbrgrp> and spike phenomena <abbrgrp><abbr bid="B7">7</abbr></abbrgrp>, by increasing the number of HMM states, conventional HMM implementations are found to be prohibitively expensive in terms of memory use.</p>
         <p>The Baum-Welch algorithm is an Expectation Maximization (EM) algorithm invented by Leonard E. Baum and Lloyd R. Welch, and first appears in <abbrgrp><abbr bid="B8">8</abbr></abbrgrp>. A later refinement, Hirschberg's algorithm for an HMM <abbrgrp><abbr bid="B9">9</abbr></abbrgrp>, reduces the memory footprint by recursively halving the <it>pairwise alignment </it>dynamic programming table for sequences of comparable size. In our application domain, the length of the observed emission sequence (in the case of nanopore ionic flow blockade analysis or gene structure prediction) is prohibitively long compared to the number of HMM states. Further, Baum-Welch requires multiple paths, instead of the most likely one, making this strategy less than optimal.</p>
         <p>The checkpointing algorithm <abbrgrp><abbr bid="B10">10</abbr><abbr bid="B11">11</abbr><abbr bid="B12">12</abbr></abbrgrp> implements the Baum-Welch algorithm in <inline-formula><m:math name="1471-2105-9-224-i1" xmlns:m="http://www.w3.org/1998/Math/MathML"><m:semantics><m:mrow><m:mi>O</m:mi><m:mo stretchy="false">(</m:mo><m:msqrt><m:mi>T</m:mi></m:msqrt><m:mi>N</m:mi><m:mo stretchy="false">)</m:mo></m:mrow><m:annotation encoding="MathType-MTEF">
 MathType@MTEF@5@5@+=feaafiart1ev1aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGaem4ta8KaeiikaGYaaOaaaeaacqWGubavaSqabaGccqWGobGtcqGGPaqkaaa@3129@</m:annotation></m:semantics></m:math></inline-formula> memory and in <it>O</it>(<it>TNQ</it><sub><it>max </it></sub>+ <it>T</it>(<it>Q </it>+ <it>E</it>)) processor time, where <it>T </it>is the length of the observed sequence, <it>Q</it><sub><it>max </it></sub>is the maximum HMM node out-degree, <it>E </it>is the number of free emission parameters and <it>Q </it>is the number of free transition parameters. It divides the input sequence into <inline-formula><m:math name="1471-2105-9-224-i2" xmlns:m="http://www.w3.org/1998/Math/MathML"><m:semantics><m:mrow><m:msqrt><m:mi>T</m:mi></m:msqrt></m:mrow><m:annotation encoding="MathType-MTEF">

 MathType@MTEF@5@5@+=feaafiart1ev1aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaWaaOaaaeaacqWGubavaSqabaaaaa@2D21@</m:annotation></m:semantics></m:math></inline-formula> blocks of <inline-formula><m:math name="1471-2105-9-224-i2" xmlns:m="http://www.w3.org/1998/Math/MathML"><m:semantics><m:mrow><m:msqrt><m:mi>T</m:mi></m:msqrt></m:mrow><m:annotation encoding="MathType-MTEF">
 MathType@MTEF@5@5@+=feaafiart1ev1aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaWaaOaaaeaacqWGubavaSqabaaaaa@2D21@</m:annotation></m:semantics></m:math></inline-formula> symbols each, and, during the forward pass, retains the first column of the forward probability table for each block. When the reverse sweep starts, the forward values for each block are sequentially re-evaluated, beginning with their corresponding checkpoints, to update the parameter estimates.</p>
         <p>Further refinement to the algorithm, as described in <abbrgrp><abbr bid="B13">13</abbr></abbrgrp> and amended here, has rendered the memory demands independent of the observed sequence length, with <it>O</it>(<it>N</it>(<it>Q </it>+ <it>ED</it>)) memory usage and <it>O</it>(<it>TNQ</it><sub><it>max</it></sub>(<it>Q </it>+ <it>ED</it>)) running time, where <it>D </it>is the dimensionality of a vector that stores statistics on the emission PDF parameter estimates. Performance of the various algorithms is summarized in Table <tblr tid="T1">1</tblr>. In this work, we also present a modification of one of the key HMM algorithms, the Viterbi algorithm, improving the memory profile without affecting the execution time.</p>
         <tbl id="T1">
            <title>
               <p>Table 1</p>
            </title>
            <caption>
               <p>The computational expense of different algorithm implementations running on HMM.</p>
            </caption>
            <tblbdy cols="7">
               <r>
                  <c ca="left">
                     <p>Algorith</p>
                  </c>
                  <c cspan="2" ca="center">
                     <p>Canonical</p>
                  </c>
                  <c cspan="2" ca="center">
                     <p>Checkpointing</p>
                  </c>
                  <c cspan="2" ca="center">
                     <p>Linear</p>
                  </c>
               </r>
               <r>
                  <c>
                     <hr/>
                  </c>
                  <c cspan="2">
                     <hr/>
                  </c>
                  <c cspan="2">
                     <hr/>
                  </c>
                  <c cspan="2">
                     <hr/>
                  </c>
               </r>
               <r>
                  <c ca="left">
                     <p>Viterbi</p>
                  </c>
                  <c ca="center">
                     <p>Time</p>
                  </c>
                  <c ca="left">
                     <p><it>O</it>(<it>TNQ</it><sub><it>max</it></sub>)</p>
                  </c>
                  <c ca="center">
                     <p>Time</p>
                  </c>
                  <c ca="left">
                     <p><it>O</it>(<it>TNQ</it><sub><it>max</it></sub>)</p>
                  </c>
                  <c ca="center">
                     <p>Time</p>
                  </c>
                  <c ca="left">
                     <p><it>O</it>(<it>TNQ</it><sub><it>max</it></sub>)</p>
                  </c>
               </r>
               <r>
                  <c>
                     <p/>
                  </c>
                  <c ca="center">
                     <p>Space</p>
                  </c>
                  <c ca="left">
                     <p><it>O</it>(<it>TN</it>)</p>
                  </c>
                  <c ca="center">
                     <p>Space</p>
                  </c>
                  <c ca="left">
                     <p>
                        <inline-formula>
                           <m:math name="1471-2105-9-224-i3" xmlns:m="http://www.w3.org/1998/Math/MathML">
                              <m:semantics>
                                 <m:mrow>
                                    <m:mi>O</m:mi>
                                    <m:mo stretchy="false">(</m:mo>
                                    <m:msqrt>
                                       <m:mi>T</m:mi>
                                    </m:msqrt>
                                    <m:mi>N</m:mi>
                                    <m:mo>+</m:mo>
                                    <m:mi>T</m:mi>
                                    <m:mo stretchy="false">)</m:mo>
                                 </m:mrow>
                                 <m:annotation encoding="MathType-MTEF">
 MathType@MTEF@5@5@+=feaafiart1ev1aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGaem4ta8KaeiikaGYaaOaaaeaacqWGubavaSqabaGccqWGobGtcqGHRaWkcqWGubavcqGGPaqkaaa@333C@</m:annotation>
                              </m:semantics>
                           </m:math>
                        </inline-formula>
                     </p>
                  </c>
                  <c ca="center">
                     <p>Space</p>
                  </c>
                  <c ca="left">
                     <p><it>O</it>(<it>T</it>)</p>
                  </c>
               </r>
               <r>
                  <c ca="left">
                     <p>Baum-Welch</p>
                  </c>
                  <c ca="center">
                     <p>Time</p>
                  </c>
                  <c ca="left">
                     <p><it>O</it>(<it>TNQ</it><sub><it>max </it></sub>+ <it>T </it>(<it>Q </it>+ <it>E</it>))</p>
                  </c>
                  <c ca="center">
                     <p>Time</p>
                  </c>
                  <c ca="left">
                     <p><it>O</it>(<it>TNQ</it><sub><it>max </it></sub>+ <it>T </it>(<it>Q </it>+ <it>E</it>))</p>
                  </c>
                  <c ca="center">
                     <p>Time</p>
                  </c>
                  <c ca="left">
                     <p><it>O</it>(<it>TNQ</it><sub><it>max</it></sub>(<it>Q </it>+ <it>ED</it>))</p>
                  </c>
               </r>
               <r>
                  <c>
                     <p/>
                  </c>
                  <c ca="center">
                     <p>Space</p>
                  </c>
                  <c ca="left">
                     <p><it>O</it>(<it>TN</it>)</p>
                  </c>
                  <c ca="center">
                     <p>Space</p>
                  </c>
                  <c ca="left">
                     <p>
                        <inline-formula>
                           <m:math name="1471-2105-9-224-i1" xmlns:m="http://www.w3.org/1998/Math/MathML">
                              <m:semantics>
                                 <m:mrow>
                                    <m:mi>O</m:mi>
                                    <m:mo stretchy="false">(</m:mo>
                                    <m:msqrt>
                                       <m:mi>T</m:mi>
                                    </m:msqrt>
                                    <m:mi>N</m:mi>
                                    <m:mo stretchy="false">)</m:mo>
                                 </m:mrow>
                                 <m:annotation encoding="MathType-MTEF">
 MathType@MTEF@5@5@+=feaafiart1ev1aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGaem4ta8KaeiikaGYaaOaaaeaacqWGubavaSqabaGccqWGobGtcqGGPaqkaaa@3129@</m:annotation>
                              </m:semantics>
                           </m:math>
                        </inline-formula>
                     </p>
                  </c>
                  <c ca="center">
                     <p>Space</p>
                  </c>
                  <c ca="left">
                     <p><it>O</it>(<it>N</it>(<it>Q </it>+ <it>ED</it>))</p>
                  </c>
               </r>
            </tblbdy>
         </tbl>
      </sec>
      <sec>
         <st>
            <p>Methods and Results</p>
         </st>
         <sec>
            <st>
               <p>HMM definition, EM learning and Viterbi decoding</p>
            </st>
            <p>The following parameters describe the conventional HMM implementation according to <abbrgrp><abbr bid="B14">14</abbr></abbrgrp>:</p>
            <p>&#8226; A set of states <it>S </it>= {<it>S</it><sub>1</sub>,..., <it>S</it><sub><it>N</it></sub>} with <it>q</it><sub><it>t </it></sub>being the state visited at time <it>t</it>,</p>
            <p>&#8226; A set of PDFs <it>B </it>= {<it>b</it><sub>1</sub>(<it>o</it>),..., <it>b</it><sub><it>N</it></sub>(<it>o</it>)}, describing the emission probabilities <it>b</it><sub><it>j</it></sub>(<it>o</it><sub><it>t</it></sub>) = <it>p</it>(<it>o</it><sub><it>t</it></sub>|<it>q</it><sub><it>t </it></sub>= <it>S</it><sub><it>j</it></sub>) for 1 &#8804; <it>j </it>&#8804; <it>N</it>, where <it>o</it><sub><it>t </it></sub>is the observation at time-point <it>t </it>from the sequence of observations <it>O </it>= {<it>o</it><sub>1</sub>,..., <it>o</it><sub><it>T</it></sub>},</p>
            <p>&#8226; The state-transition probability matrix <it>A </it>= {<it>a</it><sub><it>i</it>, <it>j</it></sub>} for 1 &#8804; <it>i</it>, <it>j </it>&#8804; <it>N</it>, where <it>a</it><sub><it>i</it>, <it>j </it></sub>= <it>p</it>(<it>q</it><sub><it>t </it>+ 1 </sub>= <it>S</it><sub><it>j</it></sub>|<it>q</it><sub><it>t </it></sub>= <it>S</it><sub><it>i</it></sub>),</p>
            <p>&#8226; The initial state distribution vector <it>&#928; </it>= {<it>&#960;</it><sub>1</sub>,..., <it>&#960;</it><sub><it>N</it></sub>}.</p>
            <p>A set of parameters <it>&#955; </it>= (<it>&#928;</it>, <it>A</it>, <it>B</it>) completely specifies an HMM. Here we describe the HMM parameter update rules for the EM learning algorithm rigorously derived in <abbrgrp><abbr bid="B15">15</abbr></abbrgrp>. The Viterbi algorithm, as shown in Table <tblr tid="T2">2</tblr>, is a dynamic programming algorithm that runs an HMM to find the most likely sequence of hidden states, called the Viterbi path, that result in an observed sequence. When training the HMM using the Baum-Welch algorithm (an Expectation Maximization procedure), first we need to find the expected probabilities of being at a certain state at a certain time-point using the forward-backward procedure as shown in Table <tblr tid="T2">2</tblr>. The forward, backward, and Viterbi algorithms take <it>O</it>(<it>TNQ</it><sub><it>max</it></sub>) time to execute.</p>
            <tbl id="T2">
               <title>
                  <p>Table 2</p>
               </title>
               <caption>
                  <p>The Viterbi decoding, forward and backward procedures.</p>
               </caption>
               <tblbdy cols="3">
                  <r>
                     <c ca="left">
                        <p>Forward procedure</p>
                     </c>
                     <c ca="left">
                        <p>Backward procedure</p>
                     </c>
                     <c ca="left">
                        <p>Viterbi algorithm</p>
                     </c>
                  </r>
                  <r>
                     <c cspan="3">
                        <hr/>
                     </c>
                  </r>
                  <r>
                     <c ca="left">
                        <p><it>&#945;</it><sub><it>t</it></sub>(<it>i</it>) &#8801; <it>p </it>(<it>o</it><sub>1</sub>,..., <it>o</it><sub><it>t</it></sub>|<it>q</it><sub><it>t </it></sub>= <it>S</it><sub><it>i</it></sub>, <it>&#955;</it>)</p>
                     </c>
                     <c ca="left">
                        <p><it>&#946;</it><sub><it>t</it></sub>(<it>i</it>) &#8801; <it>p </it>(<it>o</it><sub><it>t </it>+ 1</sub>,..., <it>o</it><sub><it>T</it></sub>|<it>q</it><sub><it>t </it></sub>= <it>S</it><sub><it>i</it></sub>, <it>&#955;)</it></p>
                     </c>
                     <c ca="left">
                        <p>&#8226; Initially <it>&#948;</it><sub>1</sub>(<it>i</it>) = <it>&#960;</it><sub><it>i</it></sub><it>b</it><sub><it>i</it></sub>(<it>o</it><sub>1</sub>), <it>&#968;</it><sub>1</sub>(<it>i</it>) = 0 for 1 &#8804; <it>i </it>&#8804; <it>N</it>,</p>
                     </c>
                  </r>
                  <r>
                     <c ca="left">
                        <p>&#8226; Initially <it>&#945;</it><sub>1</sub>(<it>i</it>) = <it>&#960;</it><sub><it>i</it></sub><it>b</it><sub><it>i</it></sub>(<it>o</it><sub>1</sub>) for 1 &#8804; <it>i </it>&#8804; <it>N</it>,</p>
                     </c>
                     <c ca="left">
                        <p>&#8226; Initially <it>&#946;</it><sub><it>T</it></sub>(<it>i</it>) = 1 for 1 &#8804; <it>i </it>&#8804; <it>N</it>,</p>
                     </c>
                     <c ca="left">
                        <p>&#8226; <inline-formula><m:math name="1471-2105-9-224-i4" xmlns:m="http://www.w3.org/1998/Math/MathML"><m:semantics><m:mrow><m:mtable columnalign="left"><m:mtr columnalign="left"><m:mtd columnalign="left"><m:mrow><m:msub><m:mi>&#948;</m:mi><m:mi>t</m:mi></m:msub><m:mo stretchy="false">(</m:mo><m:mi>j</m:mi><m:mo stretchy="false">)</m:mo><m:mo>=</m:mo><m:munder><m:mrow><m:mi>max</m:mi><m:mo>&#8289;</m:mo></m:mrow><m:mrow><m:mn>1</m:mn><m:mo>&#8804;</m:mo><m:mi>i</m:mi><m:mo>&#8804;</m:mo><m:mi>N</m:mi></m:mrow></m:munder><m:mo stretchy="false">[</m:mo><m:msub><m:mi>&#948;</m:mi><m:mrow><m:mi>t</m:mi><m:mo>&#8722;</m:mo><m:mn>1</m:mn></m:mrow></m:msub><m:mo stretchy="false">(</m:mo><m:mi>i</m:mi><m:mo stretchy="false">)</m:mo><m:msub><m:mi>a</m:mi><m:mrow><m:mi>i</m:mi><m:mo>,</m:mo><m:mi>j</m:mi></m:mrow></m:msub><m:mo stretchy="false">]</m:mo><m:msub><m:mi>b</m:mi><m:mi>j</m:mi></m:msub><m:mo stretchy="false">(</m:mo><m:msub><m:mi>o</m:mi><m:mi>t</m:mi></m:msub><m:mo stretchy="false">)</m:mo><m:mo>,</m:mo></m:mrow></m:mtd></m:mtr><m:mtr columnalign="left"><m:mtd columnalign="left"><m:mrow><m:msub><m:mi>&#968;</m:mi><m:mi>t</m:mi></m:msub><m:mo stretchy="false">(</m:mo><m:mi>j</m:mi><m:mo stretchy="false">)</m:mo><m:mo>=</m:mo><m:munder><m:mrow><m:mi>arg</m:mi><m:mo>&#8289;</m:mo><m:mi>max</m:mi><m:mo>&#8289;</m:mo></m:mrow><m:mrow><m:mn>1</m:mn><m:mo>&#8804;</m:mo><m:mi>i</m:mi><m:mo>&#8804;</m:mo><m:mi>N</m:mi></m:mrow></m:munder><m:mo stretchy="false">[</m:mo><m:msub><m:mi>&#948;</m:mi><m:mrow><m:mi>t</m:mi><m:mo>&#8722;</m:mo><m:mn>1</m:mn></m:mrow></m:msub><m:mo stretchy="false">(</m:mo><m:mi>i</m:mi><m:mo stretchy="false">)</m:mo><m:msub><m:mi>a</m:mi><m:mrow><m:mi>i</m:mi><m:mo>,</m:mo><m:mi>j</m:mi></m:mrow></m:msub><m:mo stretchy="false">]</m:mo></m:mrow></m:mtd></m:mtr></m:mtable></m:mrow><m:annotation encoding="MathType-MTEF">

 MathType@MTEF@5@5@+=feaafiart1ev1aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaqbaeaabiqaaaqaaiabes7aKnaaBaaaleaacqWG0baDaeqaaOGaeiikaGIaemOAaOMaeiykaKIaeyypa0ZaaCbeaeaacyGGTbqBcqGGHbqycqGG4baEaSqaaiabigdaXiabgsMiJkabdMgaPjabgsMiJkabd6eaobqabaGccqGGBbWwcqaH0oazdaWgaaWcbaGaemiDaqNaeyOeI0IaeGymaedabeaakiabcIcaOiabdMgaPjabcMcaPiabdggaHnaaBaaaleaacqWGPbqAcqGGSaalcqWGQbGAaeqaaOGaeiyxa0LaemOyai2aaSbaaSqaaiabdQgaQbqabaGccqGGOaakcqWGVbWBdaWgaaWcbaGaemiDaqhabeaakiabcMcaPiabcYcaSaqaaiabeI8a5naaBaaaleaacqWG0baDaeqaaOGaeiikaGIaemOAaOMaeiykaKIaeyypa0ZaaCbeaeaacyGGHbqycqGGYbGCcqGGNbWzcyGGTbqBcqGGHbqycqGG4baEaSqaaiabigdaXiabgsMiJkabdMgaPjabgsMiJkabd6eaobqabaGccqGGBbWwcqaH0oazdaWgaaWcbaGaemiDaqNaeyOeI0IaeGymaedabeaakiabcIcaOiabdMgaPjabcMcaPiabdggaHnaaBaaaleaacqWGPbqAcqGGSaalcqWGQbGAaeqaaOGaeiyxa0faaaaa@7D7E@</m:annotation></m:semantics></m:math></inline-formula> for <it>t </it>= 2,..., <it>T </it>and 1 &#8804; <it>j </it>&#8804; <it>N</it>,</p>
                     </c>
                  </r>
                  <r>
                     <c ca="left">
                        <p>&#8226; <inline-formula><m:math name="1471-2105-9-224-i5" xmlns:m="http://www.w3.org/1998/Math/MathML"><m:semantics><m:mrow><m:msub><m:mi>&#945;</m:mi><m:mi>t</m:mi></m:msub><m:mo stretchy="false">(</m:mo><m:mi>j</m:mi><m:mo stretchy="false">)</m:mo><m:mo>=</m:mo><m:mrow><m:mo>[</m:mo><m:mrow><m:mstyle displaystyle="true"><m:msubsup><m:mo>&#8721;</m:mo><m:mrow><m:mi>i</m:mi><m:mo>=</m:mo><m:mn>1</m:mn></m:mrow><m:mi>N</m:mi></m:msubsup><m:mrow><m:msub><m:mi>&#945;</m:mi><m:mrow><m:mi>t</m:mi><m:mo>&#8722;</m:mo><m:mn>1</m:mn></m:mrow></m:msub><m:mo stretchy="false">(</m:mo><m:mi>i</m:mi><m:mo stretchy="false">)</m:mo></m:mrow></m:mstyle><m:msub><m:mi>a</m:mi><m:mrow><m:mi>i</m:mi><m:mo>,</m:mo><m:mi>j</m:mi></m:mrow></m:msub></m:mrow><m:mo>]</m:mo></m:mrow><m:msub><m:mi>b</m:mi><m:mi>j</m:mi></m:msub><m:mo stretchy="false">(</m:mo><m:msub><m:mi>o</m:mi><m:mi>t</m:mi></m:msub><m:mo stretchy="false">)</m:mo></m:mrow><m:annotation encoding="MathType-MTEF">

 MathType@MTEF@5@5@+=feaafiart1ev1aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGaeqySde2aaSbaaSqaaiabdsha0bqabaGccqGGOaakcqWGQbGAcqGGPaqkcqGH9aqpdaWadaqaamaaqadabaGaeqySde2aaSbaaSqaaiabdsha0jabgkHiTiabigdaXaqabaGccqGGOaakcqWGPbqAcqGGPaqkaSqaaiabdMgaPjabg2da9iabigdaXaqaaiabd6eaobqdcqGHris5aOGaemyyae2aaSbaaSqaaiabdMgaPjabcYcaSiabdQgaQbqabaaakiaawUfacaGLDbaacqWGIbGydaWgaaWcbaGaemOAaOgabeaakiabcIcaOiabd+gaVnaaBaaaleaacqWG0baDaeqaaOGaeiykaKcaaa@508D@</m:annotation></m:semantics></m:math></inline-formula> for <it>t </it>= 2, 3,..., <it>T </it>and 1 &#8804; <it>j </it>&#8804; <it>N</it>,</p>
                     </c>
                     <c ca="left">
                        <p>&#8226; <inline-formula><m:math name="1471-2105-9-224-i6" xmlns:m="http://www.w3.org/1998/Math/MathML"><m:semantics><m:mrow><m:msub><m:mi>&#946;</m:mi><m:mi>t</m:mi></m:msub><m:mo stretchy="false">(</m:mo><m:mi>i</m:mi><m:mo stretchy="false">)</m:mo><m:mo>=</m:mo><m:mstyle displaystyle="true"><m:msubsup><m:mo>&#8721;</m:mo><m:mrow><m:mi>j</m:mi><m:mo>=</m:mo><m:mn>1</m:mn></m:mrow><m:mi>N</m:mi></m:msubsup><m:mrow><m:msub><m:mi>a</m:mi><m:mrow><m:mi>i</m:mi><m:mo>,</m:mo><m:mi>j</m:mi></m:mrow></m:msub><m:msub><m:mi>b</m:mi><m:mi>j</m:mi></m:msub><m:mo stretchy="false">(</m:mo><m:msub><m:mi>o</m:mi><m:mrow><m:mi>t</m:mi><m:mo>+</m:mo><m:mn>1</m:mn></m:mrow></m:msub><m:mo stretchy="false">)</m:mo></m:mrow></m:mstyle><m:msub><m:mi>&#946;</m:mi><m:mrow><m:mi>t</m:mi><m:mo>+</m:mo><m:mn>1</m:mn></m:mrow></m:msub><m:mo stretchy="false">(</m:mo><m:mi>j</m:mi><m:mo stretchy="false">)</m:mo></m:mrow><m:annotation encoding="MathType-MTEF">

 MathType@MTEF@5@5@+=feaafiart1ev1aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGaeqOSdi2aaSbaaSqaaiabdsha0bqabaGccqGGOaakcqWGPbqAcqGGPaqkcqGH9aqpdaaeWaqaaiabdggaHnaaBaaaleaacqWGPbqAcqGGSaalcqWGQbGAaeqaaOGaemOyai2aaSbaaSqaaiabdQgaQbqabaGccqGGOaakcqWGVbWBdaWgaaWcbaGaemiDaqNaey4kaSIaeGymaedabeaakiabcMcaPaWcbaGaemOAaOMaeyypa0JaeGymaedabaGaemOta4eaniabggHiLdGccqaHYoGydaWgaaWcbaGaemiDaqNaey4kaSIaeGymaedabeaakiabcIcaOiabdQgaQjabcMcaPaaa@5068@</m:annotation></m:semantics></m:math></inline-formula> for <it>t </it>= <it>T </it>- 1,..., 1 and 1 &#8804; <it>i </it>&#8804; <it>N</it>,</p>
                     </c>
                     <c ca="left">
                        <p>&#8226; Finally <inline-formula><m:math name="1471-2105-9-224-i7" xmlns:m="http://www.w3.org/1998/Math/MathML"><m:semantics><m:mrow><m:msubsup><m:mi>q</m:mi><m:mi>T</m:mi><m:mo>&#8727;</m:mo></m:msubsup><m:mo>=</m:mo><m:munder><m:mrow><m:mi>arg</m:mi><m:mo>&#8289;</m:mo><m:mi>max</m:mi><m:mo>&#8289;</m:mo></m:mrow><m:mrow><m:mn>1</m:mn><m:mo>&#8804;</m:mo><m:mi>i</m:mi><m:mo>&#8804;</m:mo><m:mi>N</m:mi></m:mrow></m:munder><m:mo stretchy="false">[</m:mo><m:msub><m:mi>&#948;</m:mi><m:mi>T</m:mi></m:msub><m:mo stretchy="false">(</m:mo><m:mi>i</m:mi><m:mo stretchy="false">)</m:mo><m:mo stretchy="false">]</m:mo><m:mo>,</m:mo><m:msubsup><m:mi>q</m:mi><m:mi>t</m:mi><m:mo>&#8727;</m:mo></m:msubsup><m:mo>=</m:mo><m:msub><m:mi>&#968;</m:mi><m:mrow><m:mi>t</m:mi><m:mo>+</m:mo><m:mn>1</m:mn></m:mrow></m:msub><m:mo stretchy="false">(</m:mo><m:msubsup><m:mi>q</m:mi><m:mrow><m:mi>t</m:mi><m:mo>+</m:mo><m:mn>1</m:mn></m:mrow><m:mo>&#8727;</m:mo></m:msubsup><m:mo stretchy="false">)</m:mo></m:mrow><m:annotation encoding="MathType-MTEF">

 MathType@MTEF@5@5@+=feaafiart1ev1aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGaemyCae3aa0baaSqaaiabdsfaubqaaiabgEHiQaaakiabg2da9maaxababaGagiyyaeMaeiOCaiNaei4zaCMagiyBa0MaeiyyaeMaeiiEaGhaleaacqaIXaqmcqGHKjYOcqWGPbqAcqGHKjYOcqWGobGtaeqaaOGaei4waSLaeqiTdq2aaSbaaSqaaiabdsfaubqabaGccqGGOaakcqWGPbqAcqGGPaqkcqGGDbqxcqGGSaalcqWGXbqCdaqhaaWcbaGaemiDaqhabaGaey4fIOcaaOGaeyypa0JaeqiYdK3aaSbaaSqaaiabdsha0jabgUcaRiabigdaXaqabaGccqGGOaakcqWGXbqCdaqhaaWcbaGaemiDaqNaey4kaSIaeGymaedabaGaey4fIOcaaOGaeiykaKcaaa@5B3C@</m:annotation></m:semantics></m:math></inline-formula> for <it>t </it>= <it>T </it>- 1,..., 1 with optimal path <inline-formula><m:math name="1471-2105-9-224-i8" xmlns:m="http://www.w3.org/1998/Math/MathML"><m:semantics><m:mrow><m:msup><m:mi>Q</m:mi><m:mo>&#8727;</m:mo></m:msup><m:mo>=</m:mo><m:mo>{</m:mo><m:msubsup><m:mi>q</m:mi><m:mn>1</m:mn><m:mo>&#8727;</m:mo></m:msubsup><m:mo>,</m:mo><m:mn>...</m:mn><m:mo>,</m:mo><m:msubsup><m:mi>q</m:mi><m:mi>T</m:mi><m:mo>&#8727;</m:mo></m:msubsup><m:mo>}</m:mo></m:mrow><m:annotation encoding="MathType-MTEF">

 MathType@MTEF@5@5@+=feaafiart1ev1aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGaemyuae1aaWbaaSqabeaacqGHxiIkaaGccqGH9aqpcqGG7bWEcqWGXbqCdaqhaaWcbaGaeGymaedabaGaey4fIOcaaOGaeiilaWIaeiOla4IaeiOla4IaeiOla4IaeiilaWIaemyCae3aa0baaSqaaiabdsfaubqaaiabgEHiQaaakiabc2ha9baa@3DDB@</m:annotation></m:semantics></m:math></inline-formula>.</p>
                     </c>
                  </r>
                  <r>
                     <c ca="left">
                        <p>&#8226; Finally <inline-formula><m:math name="1471-2105-9-224-i9" xmlns:m="http://www.w3.org/1998/Math/MathML"><m:semantics><m:mrow><m:mi>p</m:mi><m:mo stretchy="false">(</m:mo><m:mi>O</m:mi><m:mo>|</m:mo><m:mi>&#955;</m:mi><m:mo stretchy="false">)</m:mo><m:mo>=</m:mo><m:mstyle displaystyle="true"><m:msubsup><m:mo>&#8721;</m:mo><m:mrow><m:mi>i</m:mi><m:mo>=</m:mo><m:mn>1</m:mn></m:mrow><m:mi>N</m:mi></m:msubsup><m:mrow><m:msub><m:mi>&#945;</m:mi><m:mi>T</m:mi></m:msub><m:mo stretchy="false">(</m:mo><m:mi>i</m:mi><m:mo stretchy="false">)</m:mo></m:mrow></m:mstyle></m:mrow><m:annotation encoding="MathType-MTEF">

 MathType@MTEF@5@5@+=feaafiart1ev1aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGaemiCaaNaeiikaGIaem4ta8KaeiiFaWNaeq4UdWMaeiykaKIaeyypa0ZaaabmaeaacqaHXoqydaWgaaWcbaGaemivaqfabeaakiabcIcaOiabdMgaPjabcMcaPaWcbaGaemyAaKMaeyypa0JaeGymaedabaGaemOta4eaniabggHiLdaaaa@40DC@</m:annotation></m:semantics></m:math></inline-formula> is the sequence <it>likelihood</it></p>
                     </c>
                     <c ca="left">
                        <p>&#8226; Finally <inline-formula><m:math name="1471-2105-9-224-i10" xmlns:m="http://www.w3.org/1998/Math/MathML"><m:semantics><m:mrow><m:mi>p</m:mi><m:mo stretchy="false">(</m:mo><m:mi>O</m:mi><m:mo>|</m:mo><m:mi>&#955;</m:mi><m:mo stretchy="false">)</m:mo><m:mo>=</m:mo><m:mstyle displaystyle="true"><m:msubsup><m:mo>&#8721;</m:mo><m:mrow><m:mi>i</m:mi><m:mo>=</m:mo><m:mn>1</m:mn></m:mrow><m:mi>N</m:mi></m:msubsup><m:mrow><m:msub><m:mi>&#960;</m:mi><m:mi>i</m:mi></m:msub><m:msub><m:mi>b</m:mi><m:mi>i</m:mi></m:msub><m:mo stretchy="false">(</m:mo><m:msub><m:mi>o</m:mi><m:mn>1</m:mn></m:msub><m:mo stretchy="false">)</m:mo><m:msub><m:mi>&#946;</m:mi><m:mn>1</m:mn></m:msub><m:mo stretchy="false">(</m:mo><m:mi>i</m:mi><m:mo stretchy="false">)</m:mo></m:mrow></m:mstyle></m:mrow><m:annotation encoding="MathType-MTEF">

 MathType@MTEF@5@5@+=feaafiart1ev1aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGaemiCaaNaeiikaGIaem4ta8KaeiiFaWNaeq4UdWMaeiykaKIaeyypa0ZaaabmaeaacqaHapaCdaWgaaWcbaGaemyAaKgabeaakiabdkgaInaaBaaaleaacqWGPbqAaeqaaOGaeiikaGIaem4Ba82aaSbaaSqaaiabigdaXaqabaGccqGGPaqkcqaHYoGydaWgaaWcbaGaeGymaedabeaakiabcIcaOiabdMgaPjabcMcaPaWcbaGaemyAaKMaeyypa0JaeGymaedabaGaemOta4eaniabggHiLdaaaa@4B08@</m:annotation></m:semantics></m:math></inline-formula>.</p>
                     </c>
                     <c>
                        <p/>
                     </c>
                  </r>
               </tblbdy>
            </tbl>
            <p>Let us define <it>&#958;</it><sub><it>t</it></sub>(<it>i</it>, <it>j</it>) as the probability of being in state <it>i </it>at time <it>t</it>, and state <it>j </it>at time <it>t </it>+ 1, given the model and the observation sequence</p>
            <p>
               <display-formula id="M1">
                  <m:math name="1471-2105-9-224-i11" xmlns:m="http://www.w3.org/1998/Math/MathML">
                     <m:semantics>
                        <m:mrow>
                           <m:msub>
                              <m:mi>&#958;</m:mi>
                              <m:mi>t</m:mi>
                           </m:msub>
                           <m:mo stretchy="false">(</m:mo>
                           <m:mi>i</m:mi>
                           <m:mo>,</m:mo>
                           <m:mi>j</m:mi>
                           <m:mo stretchy="false">)</m:mo>
                           <m:mo>=</m:mo>
                           <m:mi>p</m:mi>
                           <m:mo stretchy="false">(</m:mo>
                           <m:msub>
                              <m:mi>q</m:mi>
                              <m:mi>t</m:mi>
                           </m:msub>
                           <m:mo>=</m:mo>
                           <m:msub>
                              <m:mi>S</m:mi>
                              <m:mi>i</m:mi>
                           </m:msub>
                           <m:mo>,</m:mo>
                           <m:msub>
                              <m:mi>q</m:mi>
                              <m:mrow>
                                 <m:mi>t</m:mi>
                                 <m:mo>+</m:mo>
                                 <m:mn>1</m:mn>
                              </m:mrow>
                           </m:msub>
                           <m:mo>=</m:mo>
                           <m:msub>
                              <m:mi>S</m:mi>
                              <m:mi>j</m:mi>
                           </m:msub>
                           <m:mo>|</m:mo>
                           <m:mi>O</m:mi>
                           <m:mo>,</m:mo>
                           <m:mi>&#955;</m:mi>
                           <m:mo stretchy="false">)</m:mo>
                           <m:mo>=</m:mo>
                           <m:mfrac>
                              <m:mrow>
                                 <m:msub>
                                    <m:mi>&#945;</m:mi>
                                    <m:mi>t</m:mi>
                                 </m:msub>
                                 <m:mo stretchy="false">(</m:mo>
                                 <m:mi>i</m:mi>
                                 <m:mo stretchy="false">)</m:mo>
                                 <m:msub>
                                    <m:mi>a</m:mi>
                                    <m:mrow>
                                       <m:mi>i</m:mi>
                                       <m:mo>,</m:mo>
                                       <m:mi>j</m:mi>
                                    </m:mrow>
                                 </m:msub>
                                 <m:msub>
                                    <m:mi>b</m:mi>
                                    <m:mi>j</m:mi>
                                 </m:msub>
                                 <m:mo stretchy="false">(</m:mo>
                                 <m:msub>
                                    <m:mi>o</m:mi>
                                    <m:mrow>
                                       <m:mi>t</m:mi>
                                       <m:mo>+</m:mo>
                                       <m:mn>1</m:mn>
                                    </m:mrow>
                                 </m:msub>
                                 <m:mo stretchy="false">)</m:mo>
                                 <m:msub>
                                    <m:mi>&#946;</m:mi>
                                    <m:mrow>
                                       <m:mi>t</m:mi>
                                       <m:mo>+</m:mo>
                                       <m:mn>1</m:mn>
                                    </m:mrow>
                                 </m:msub>
                                 <m:mo stretchy="false">(</m:mo>
                                 <m:mi>j</m:mi>
                                 <m:mo stretchy="false">)</m:mo>
                              </m:mrow>
                              <m:mrow>
                                 <m:mi>p</m:mi>
                                 <m:mo stretchy="false">(</m:mo>
                                 <m:mi>O</m:mi>
                                 <m:mo>|</m:mo>
                                 <m:mi>&#955;</m:mi>
                                 <m:mo stretchy="false">)</m:mo>
                              </m:mrow>
                           </m:mfrac>
                           <m:mo>,</m:mo>
                        </m:mrow>
                        <m:annotation encoding="MathType-MTEF">
 MathType@MTEF@5@5@+=feaafiart1ev1aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xI8qiVKYPFjYdHaVhbbf9v8qqaqFr0xc9vqFj0dXdbba91qpepeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGaeqOVdG3aaSbaaSqaaiabdsha0bqabaGccqGGOaakcqWGPbqAcqGGSaalcqWGQbGAcqGGPaqkcqGH9aqpcqWGWbaCcqGGOaakcqWGXbqCdaWgaaWcbaGaemiDaqhabeaakiabg2da9iabdofatnaaBaaaleaacqWGPbqAaeqaaOGaeiilaWIaemyCae3aaSbaaSqaaiabdsha0jabgUcaRiabigdaXaqabaGccqGH9aqpcqWGtbWudaWgaaWcbaGaemOAaOgabeaakiabcYha8jabd+eapjabcYcaSiabeU7aSjabcMcaPiabg2da9KqbaoaalaaabaGaeqySde2aaSbaaeaacqWG0baDaeqaaiabcIcaOiabdMgaPjabcMcaPiabdggaHnaaBaaabaGaemyAaKMaeiilaWIaemOAaOgabeaacqWGIbGydaWgaaqaaiabdQgaQbqabaGaeiikaGIaem4Ba82aaSbaaeaacqWG0baDcqGHRaWkcqaIXaqmaeqaaiabcMcaPiabek7aInaaBaaabaGaemiDaqNaey4kaSIaeGymaedabeaacqGGOaakcqWGQbGAcqGGPaqkaeaacqWGWbaCcqGGOaakcqWGpbWtcqGG8baFcqaH7oaBcqGGPaqkaaGccqGGSaalaaa@7539@</m:annotation>
                     </m:semantics>
                  </m:math>
               </display-formula>
            </p>
            <p>and <it>&#947;</it><sub><it>t</it></sub>(<it>i</it>) as the probability of being in state <it>i </it>at time <it>t</it>, given the observation sequence and the model</p>
            <p>
               <display-formula id="M2">
                  <m:math name="1471-2105-9-224-i12" xmlns:m="http://www.w3.org/1998/Math/MathML">
                     <m:semantics>
                        <m:mrow>
                           <m:msub>
                              <m:mi>&#947;</m:mi>
                              <m:mi>t</m:mi>
                           </m:msub>
                           <m:mo stretchy="false">(</m:mo>
                           <m:mi>i</m:mi>
                           <m:mo stretchy="false">)</m:mo>
                           <m:mo>=</m:mo>
                           <m:mi>p</m:mi>
                           <m:mo stretchy="false">(</m:mo>
                           <m:msub>
                              <m:mi>q</m:mi>
                              <m:mi>t</m:mi>
                           </m:msub>
                           <m:mo>=</m:mo>
                           <m:msub>
                              <m:mi>S</m:mi>
                              <m:mi>i</m:mi>
                           </m:msub>
                           <m:mo>|</m:mo>
                           <m:mi>O</m:mi>
                           <m:mo>,</m:mo>
                           <m:mi>&#955;</m:mi>
                           <m:mo stretchy="false">)</m:mo>
                           <m:mo>=</m:mo>
                           <m:mfrac>
                              <m:mrow>
                                 <m:msub>
                                    <m:mi>&#945;</m:mi>
                                    <m:mi>t</m:mi>
                                 </m:msub>
                                 <m:mo stretchy="false">(</m:mo>
                                 <m:mi>i</m:mi>
                                 <m:mo stretchy="false">)</m:mo>
                                 <m:msub>
                                    <m:mi>&#946;</m:mi>
                                    <m:mi>t</m:mi>
                                 </m:msub>
                                 <m:mo stretchy="false">(</m:mo>
                                 <m:mi>i</m:mi>
                                 <m:mo stretchy="false">)</m:mo>
                              </m:mrow>
                              <m:mrow>
                                 <m:mstyle displaystyle="true">
                                    <m:msubsup>
                                       <m:mo>&#8721;</m:mo>
                                       <m:mrow>
                                          <m:mi>i</m:mi>
                                          <m:mo>=</m:mo>
                                          <m:mn>1</m:mn>
                                       </m:mrow>
                                       <m:mi>N</m:mi>
                                    </m:msubsup>
                                    <m:mrow>
                                       <m:msub>
                                          <m:mi>&#945;</m:mi>
                                          <m:mi>t</m:mi>
                                       </m:msub>
                                       <m:mo stretchy="false">(</m:mo>
                                       <m:mi>i</m:mi>
                                       <m:mo stretchy="false">)</m:mo>
                                       <m:msub>
                                          <m:mi>&#946;</m:mi>
                                          <m:mi>t</m:mi>
                                       </m:msub>
                                       <m:mo stretchy="false">(</m:mo>
                                       <m:mi>i</m:mi>
                                       <m:mo stretchy="false">)</m:mo>
                                    </m:mrow>
                                 </m:mstyle>
                              </m:mrow>
                           </m:mfrac>
                           <m:mo>=</m:mo>
                           <m:mstyle displaystyle="true">
                              <m:munderover>
                                 <m:mo>&#8721;</m:mo>
                                 <m:mrow>
                                    <m:mi>j</m:mi>
                                    <m:mo>=</m:mo>
                                    <m:mn>1</m:mn>
                                 </m:mrow>
                                 <m:mi>N</m:mi>
                              </m:munderover>
                              <m:mrow>
                                 <m:msub>
                                    <m:mi>&#958;</m:mi>
                                    <m:mi>t</m:mi>
                                 </m:msub>
                                 <m:mo stretchy="false">(</m:mo>
                                 <m:mi>i</m:mi>
                                 <m:mo>,</m:mo>
                                 <m:mi>j</m:mi>
                                 <m:mo stretchy="false">)</m:mo>
                              </m:mrow>
                           </m:mstyle>
                           <m:mo>.</m:mo>
                        </m:mrow>
                        <m:annotation encoding="MathType-MTEF">
 MathType@MTEF@5@5@+=feaafiart1ev1aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xI8qiVKYPFjYdHaVhbbf9v8qqaqFr0xc9vqFj0dXdbba91qpepeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGaeq4SdC2aaSbaaSqaaiabdsha0bqabaGccqGGOaakcqWGPbqAcqGGPaqkcqGH9aqpcqWGWbaCcqGGOaakcqWGXbqCdaWgaaWcbaGaemiDaqhabeaakiabg2da9iabdofatnaaBaaaleaacqWGPbqAaeqaaOGaeiiFaWNaem4ta8KaeiilaWIaeq4UdWMaeiykaKIaeyypa0tcfa4aaSaaaeaacqaHXoqydaWgaaqaaiabdsha0bqabaGaeiikaGIaemyAaKMaeiykaKIaeqOSdi2aaSbaaeaacqWG0baDaeqaaiabcIcaOiabdMgaPjabcMcaPaqaamaaqadabaGaeqySde2aaSbaaeaacqWG0baDaeqaaiabcIcaOiabdMgaPjabcMcaPiabek7aInaaBaaabaGaemiDaqhabeaacqGGOaakcqWGPbqAcqGGPaqkaeaacqWGPbqAcqGH9aqpcqaIXaqmaeaacqWGobGtaiabggHiLdaaaOGaeyypa0ZaaabCaeaacqaH+oaEdaWgaaWcbaGaemiDaqhabeaakiabcIcaOiabdMgaPjabcYcaSiabdQgaQjabcMcaPaWcbaGaemOAaOMaeyypa0JaeGymaedabaGaemOta4eaniabggHiLdGccqGGUaGlaaa@751E@</m:annotation>
                     </m:semantics>
                  </m:math>
               </display-formula>
            </p>
            <p>The HMM maximization step using these probabilities is shown in Table <tblr tid="T3">3</tblr>. The conventional EM procedure for HMM <abbrgrp><abbr bid="B14">14</abbr></abbrgrp> takes <it>O</it>(<it>TN</it>) memory and <it>O</it>(<it>TNQ</it><sub><it>max </it></sub>+ <it>T </it>(<it>Q </it>+ <it>E</it>)) processor time. An HMM containing empty internal states (see for example <abbrgrp><abbr bid="B3">3</abbr></abbrgrp>) and Hierarchical HMM (HHMM) could be converted into canonical HMM form through stack transformation as discussed in <abbrgrp><abbr bid="B16">16</abbr></abbrgrp>.</p>
            <tbl id="T3">
               <title>
                  <p>Table 3</p>
               </title>
               <caption>
                  <p>The maximization step in HMM learning. states.</p>
               </caption>
               <tblbdy cols="3">
                  <r>
                     <c ca="left">
                        <p>Initial probability estimate</p>
                     </c>
                     <c ca="left">
                        <p>Transition probability estimate</p>
                     </c>
                     <c ca="left">
                        <p>Emission parameters estimate</p>
                     </c>
                  </r>
                  <r>
                     <c cspan="3">
                        <hr/>
                     </c>
                  </r>
                  <r>
                     <c ca="left">
                        <p><inline-formula><m:math name="1471-2105-9-224-i13" xmlns:m="http://www.w3.org/1998/Math/MathML"><m:semantics><m:mrow><m:msub><m:mover accent="true"><m:mi>&#960;</m:mi><m:mo>&#708;</m:mo></m:mover><m:mi>i</m:mi></m:msub></m:mrow><m:annotation encoding="MathType-MTEF">
 MathType@MTEF@5@5@+=feaafiart1ev1aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGafqiWdaNbaKaadaWgaaWcbaGaemyAaKgabeaaaaa@2F29@</m:annotation></m:semantics></m:math></inline-formula> = <it>&#947;</it><sub>1</sub>(<it>i</it>), for 1 &#8804; <it>i </it>&#8804; <it>N</it>.</p>
                     </c>
                     <c ca="left">
                        <p>&#8226; Gaussian emission <inline-formula><m:math name="1471-2105-9-224-i14" xmlns:m="http://www.w3.org/1998/Math/MathML"><m:semantics><m:mrow><m:msub><m:mover accent="true"><m:mi>a</m:mi><m:mo>^</m:mo></m:mover><m:mrow><m:mi>i</m:mi><m:mo>,</m:mo><m:mi>j</m:mi></m:mrow></m:msub><m:mo>=</m:mo><m:mfrac><m:mrow><m:mstyle displaystyle="true"><m:msubsup><m:mo>&#8721;</m:mo><m:mrow><m:mi>t</m:mi><m:mo>=</m:mo><m:mn>1</m:mn></m:mrow><m:mrow><m:mi>T</m:mi><m:mo>&#8722;</m:mo><m:mn>1</m:mn></m:mrow></m:msubsup><m:mrow><m:msub><m:mi>&#958;</m:mi><m:mi>t</m:mi></m:msub><m:mo stretchy="false">(</m:mo><m:mi>i</m:mi><m:mo>,</m:mo><m:mi>j</m:mi><m:mo stretchy="false">)</m:mo></m:mrow></m:mstyle></m:mrow><m:mrow><m:mstyle displaystyle="true"><m:msubsup><m:mo>&#8721;</m:mo><m:mrow><m:mi>t</m:mi><m:mo>=</m:mo><m:mn>1</m:mn></m:mrow><m:mrow><m:mi>T</m:mi><m:mo>&#8722;</m:mo><m:mn>1</m:mn></m:mrow></m:msubsup><m:mrow><m:msub><m:mi>&#947;</m:mi><m:mi>t</m:mi></m:msub><m:mo stretchy="false">(</m:mo><m:mi>i</m:mi><m:mo stretchy="false">)</m:mo></m:mrow></m:mstyle></m:mrow></m:mfrac></m:mrow><m:annotation encoding="MathType-MTEF">

 MathType@MTEF@5@5@+=feaafiart1ev1aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGafmyyaeMbaKaadaWgaaWcbaGaemyAaKMaeiilaWIaemOAaOgabeaakiabg2da9KqbaoaalaaabaWaaabmaeaacqaH+oaEdaWgaaqaaiabdsha0bqabaGaeiikaGIaemyAaKMaeiilaWIaemOAaOMaeiykaKcabaGaemiDaqNaeyypa0JaeGymaedabaGaemivaqLaeyOeI0IaeGymaedacqGHris5aaqaamaaqadabaGaeq4SdC2aaSbaaeaacqWG0baDaeqaaiabcIcaOiabdMgaPjabcMcaPaqaaiabdsha0jabg2da9iabigdaXaqaaiabdsfaujabgkHiTiabigdaXaGaeyyeIuoaaaaaaa@5245@</m:annotation></m:semantics></m:math></inline-formula>, for 1 &#8804; <it>i, j </it>&#8804; <it>N</it>.</p>
                     </c>
                     <c ca="left">
                        <p><inline-formula><m:math name="1471-2105-9-224-i15" xmlns:m="http://www.w3.org/1998/Math/MathML"><m:semantics><m:mrow><m:mtable columnalign="left"><m:mtr columnalign="left"><m:mtd columnalign="left"><m:mrow><m:msub><m:mover accent="true"><m:mi>b</m:mi><m:mo>^</m:mo></m:mover><m:mi>j</m:mi></m:msub><m:mo stretchy="false">(</m:mo><m:mi>o</m:mi><m:mo stretchy="false">)</m:mo><m:mo>&#8594;</m:mo><m:mi>&#956;</m:mi><m:mo>=</m:mo><m:mfrac><m:mrow><m:mstyle displaystyle="true"><m:msubsup><m:mo>&#8721;</m:mo><m:mrow><m:mi>t</m:mi><m:mo>=</m:mo><m:mn>1</m:mn></m:mrow><m:mi>T</m:mi></m:msubsup><m:mrow><m:msub><m:mi>o</m:mi><m:mi>t</m:mi></m:msub><m:msub><m:mi>&#947;</m:mi><m:mi>t</m:mi></m:msub><m:mo stretchy="false">(</m:mo><m:mi>j</m:mi><m:mo stretchy="false">)</m:mo></m:mrow></m:mstyle></m:mrow><m:mrow><m:mstyle displaystyle="true"><m:msubsup><m:mo>&#8721;</m:mo><m:mrow><m:mi>t</m:mi><m:mo>=</m:mo><m:mn>1</m:mn></m:mrow><m:mi>T</m:mi></m:msubsup><m:mrow><m:msub><m:mi>&#947;</m:mi><m:mi>t</m:mi></m:msub><m:mo stretchy="false">(</m:mo><m:mi>j</m:mi><m:mo stretchy="false">)</m:mo></m:mrow></m:mstyle></m:mrow></m:mfrac><m:mo>,</m:mo></m:mrow></m:mtd></m:mtr><m:mtr columnalign="left"><m:mtd columnalign="left"><m:mrow><m:msub><m:mover accent="true"><m:mi>b</m:mi><m:mo>^</m:mo></m:mover><m:mi>j</m:mi></m:msub><m:mo stretchy="false">(</m:mo><m:mi>o</m:mi><m:mo stretchy="false">)</m:mo><m:mo>&#8594;</m:mo><m:msup><m:mi>&#963;</m:mi><m:mn>2</m:mn></m:msup><m:mo>=</m:mo><m:mfrac><m:mrow><m:mstyle displaystyle="true"><m:msubsup><m:mo>&#8721;</m:mo><m:mrow><m:mi>t</m:mi><m:mo>=</m:mo><m:mn>1</m:mn></m:mrow><m:mi>T</m:mi></m:msubsup><m:mrow><m:msup><m:mrow><m:mo stretchy="false">(</m:mo><m:msub><m:mi>o</m:mi><m:mi>t</m:mi></m:msub><m:mo>&#8722;</m:mo><m:msub><m:mover accent="true"><m:mi>&#956;</m:mi><m:mo>^</m:mo></m:mover><m:mi>j</m:mi></m:msub><m:mo stretchy="false">)</m:mo></m:mrow><m:mn>2</m:mn></m:msup><m:msub><m:mi>&#947;</m:mi><m:mi>t</m:mi></m:msub><m:mo stretchy="false">(</m:mo><m:mi>j</m:mi><m:mo stretchy="false">)</m:mo></m:mrow></m:mstyle></m:mrow><m:mrow><m:mstyle displaystyle="true"><m:msubsup><m:mo>&#8721;</m:mo><m:mrow><m:mi>t</m:mi><m:mo>=</m:mo><m:mn>1</m:mn></m:mrow><m:mi>T</m:mi></m:msubsup><m:mrow><m:msub><m:mi>&#947;</m:mi><m:mi>t</m:mi></m:msub><m:mo stretchy="false">(</m:mo><m:mi>j</m:mi><m:mo stretchy="false">)</m:mo></m:mrow></m:mstyle></m:mrow></m:mfrac></m:mrow></m:mtd></m:mtr></m:mtable></m:mrow><m:annotation encoding="MathType-MTEF">

 MathType@MTEF@5@5@+=feaafiart1ev1aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaqbaeaabiqaaaqaaiqbdkgaIzaajaWaaSbaaSqaaiabdQgaQbqabaGccqGGOaakcqWGVbWBcqGGPaqkcqGHsgIRcqaH8oqBcqGH9aqpjuaGdaWcaaqaamaaqadabaGaem4Ba82aaSbaaeaacqWG0baDaeqaaiabeo7aNnaaBaaabaGaemiDaqhabeaacqGGOaakcqWGQbGAcqGGPaqkaeaacqWG0baDcqGH9aqpcqaIXaqmaeaacqWGubavaiabggHiLdaabaWaaabmaeaacqaHZoWzdaWgaaqaaiabdsha0bqabaGaeiikaGIaemOAaOMaeiykaKcabaGaemiDaqNaeyypa0JaeGymaedabaGaemivaqfacqGHris5aaaakiabcYcaSaqaaiqbdkgaIzaajaWaaSbaaSqaaiabdQgaQbqabaGccqGGOaakcqWGVbWBcqGGPaqkcqGHsgIRcqaHdpWCdaahaaWcbeqaaiabikdaYaaakiabg2da9KqbaoaalaaabaWaaabmaeaacqGGOaakcqWGVbWBdaWgaaqaaiabdsha0bqabaGaeyOeI0IafqiVd0MbaKaadaWgaaqaaiabdQgaQbqabaGaeiykaKYaaWbaaeqabaGaeGOmaidaaiabeo7aNnaaBaaabaGaemiDaqhabeaacqGGOaakcqWGQbGAcqGGPaqkaeaacqWG0baDcqGH9aqpcqaIXaqmaeaacqWGubavaiabggHiLdaabaWaaabmaeaacqaHZoWzdaWgaaqaaiabdsha0bqabaGaeiikaGIaemOAaOMaeiykaKcabaGaemiDaqNaeyypa0JaeGymaedabaGaemivaqfacqGHris5aaaaaaaaaa@84B2@</m:annotation></m:semantics></m:math></inline-formula>, for 1 &#8804; <it>j </it>&#8804; <it>N</it>,</p>
                     </c>
                  </r>
                  <r>
                     <c>
                        <p/>
                     </c>
                     <c>
                        <p/>
                     </c>
                     <c ca="left">
                        <p>&#8226; Discrete emission <inline-formula><m:math name="1471-2105-9-224-i16" xmlns:m="http://www.w3.org/1998/Math/MathML"><m:semantics><m:mrow><m:msub><m:mover accent="true"><m:mi>b</m:mi><m:mo>^</m:mo></m:mover><m:mi>j</m:mi></m:msub><m:mo stretchy="false">(</m:mo><m:mi>k</m:mi><m:mo stretchy="false">)</m:mo><m:mo>=</m:mo><m:mfrac><m:mrow><m:mstyle displaystyle="true"><m:msubsup><m:mo>&#8721;</m:mo><m:mrow><m:mi>t</m:mi><m:mo>=</m:mo><m:mn>1</m:mn></m:mrow><m:mi>T</m:mi></m:msubsup><m:mrow><m:mi>&#948;</m:mi><m:mo stretchy="false">(</m:mo><m:msub><m:mi>o</m:mi><m:mi>t</m:mi></m:msub><m:mo>=</m:mo><m:msub><m:mi>v</m:mi><m:mi>k</m:mi></m:msub><m:mo stretchy="false">)</m:mo><m:msub><m:mi>&#947;</m:mi><m:mi>t</m:mi></m:msub><m:mo stretchy="false">(</m:mo><m:mi>j</m:mi><m:mo stretchy="false">)</m:mo></m:mrow></m:mstyle></m:mrow><m:mrow><m:mstyle displaystyle="true"><m:msubsup><m:mo>&#8721;</m:mo><m:mrow><m:mi>t</m:mi><m:mo>=</m:mo><m:mn>1</m:mn></m:mrow><m:mi>T</m:mi></m:msubsup><m:mrow><m:msub><m:mi>&#947;</m:mi><m:mi>t</m:mi></m:msub><m:mo stretchy="false">(</m:mo><m:mi>j</m:mi><m:mo stretchy="false">)</m:mo></m:mrow></m:mstyle></m:mrow></m:mfrac></m:mrow><m:annotation encoding="MathType-MTEF">

 MathType@MTEF@5@5@+=feaafiart1ev1aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGafmOyaiMbaKaadaWgaaWcbaGaemOAaOgabeaakiabcIcaOiabdUgaRjabcMcaPiabg2da9KqbaoaalaaabaWaaabmaeaacqaH0oazcqGGOaakcqWGVbWBdaWgaaqaaiabdsha0bqabaGaeyypa0JaemODay3aaSbaaeaacqWGRbWAaeqaaiabcMcaPiabeo7aNnaaBaaabaGaemiDaqhabeaacqGGOaakcqWGQbGAcqGGPaqkaeaacqWG0baDcqGH9aqpcqaIXaqmaeaacqWGubavaiabggHiLdaabaWaaabmaeaacqaHZoWzdaWgaaqaaiabdsha0bqabaGaeiikaGIaemOAaOMaeiykaKcabaGaemiDaqNaeyypa0JaeGymaedabaGaemivaqfacqGHris5aaaaaaa@5759@</m:annotation></m:semantics></m:math></inline-formula>, for 1 &#8804; <it>j </it>&#8804; <it>N</it>. and 1 &#8804; <it>k </it>&#8804; <it>K</it>, where <it>v</it><sub>1</sub>,..., <it>v</it><sub><it>K </it></sub>is the set of possible dircrete observations.</p>
                     </c>
                  </r>
               </tblbdy>
            </tbl>
         </sec>
         <sec>
            <st>
               <p>Forward sweep strategy explained</p>
            </st>
            <p>Figure <figr fid="F1">1</figr> outlines initial, simple transition probability calculations for all possible paths through a "toy" HMM. In Figure <figr fid="F1">1</figr>, to estimate the probability of transition from state 1 to state 2 (1 &#8594; 2), we calculate the probability of transition utilization at time intervals 1&#8211;2 and 2&#8211;3 as:</p>
            <fig id="F1">
               <title>
                  <p>Figure 1</p>
               </title>
               <caption>
                  <p>Time trellis for simple model where possible emissions of 0 and 1 are shown above and below trellis</p>
               </caption>
               <text>
                  <p><b>Time trellis for simple model where possible emissions of 0 and 1 are shown above and below trellis.</b> Probabilities of emissions that happen after each transition are shown in bold and transitions of interest taken at certain time-point are underlined.</p>
               </text>
               <graphic file="1471-2105-9-224-1"/>
            </fig>
            <p>
               <display-formula><it>p</it>(Making transition 1 &#8594; 2 at time 1&#8211;2) = <it>&#945;</it><sub>1</sub>(1) &#215; <it>a</it><sub>1,2 </sub>&#215; <it>b</it><sub>2</sub>(<it>o</it><sub>2</sub>) &#215; <it>&#946;</it><sub>2</sub>(2), <it>p</it>(Making transition 1 &#8594; 2 at time 2&#8211;3) = <it>&#945;</it><sub>2</sub>(1) &#215; <it>a</it><sub>1,2 </sub>&#215; <it>b</it><sub>2</sub>(<it>o</it><sub>3</sub>) &#215; <it>&#946;</it><sub>3</sub>(2).</display-formula>
            </p>
            <p>In particular, to estimate the probability of transition 1 &#8594; 2 at time interval 1&#8211;2 we calculate the sum of probabilities of all possible paths that lead to state 1 at time-point 1 (forward probability <it>&#945;</it><sub>1</sub>(1)). Then we multiply this probability of being in state 1 by the transition <it>a</it><sub>1,2 </sub>and emission <it>b</it><sub>2</sub>(<it>o</it><sub>2</sub>) probabilities.</p>
            <p>Further multiplication by the sum of probabilities of all possible paths from state 2 at time 2 until the end of the emission sequence (backward probability <it>&#946;</it><sub>2</sub>(2)), is the expected probability of transition use. The sum of these estimates at time-points 1&#8211;2 and 2&#8211;3 is equivalent to the transition probability estimate in Table <tblr tid="T3">3</tblr> (prior to normalization).</p>
            <p>According to <abbrgrp><abbr bid="B13">13</abbr></abbrgrp><it> t</it><sub><it>i</it>, <it>j</it></sub>(<it>t</it>, <it>m</it>) is the weighted sum of probabilities of all possible state paths that emit subsequence <it>o</it><sub>1</sub>,..., <it>o</it><sub><it>t </it></sub>and finish in state <it>m</it>, taking an <it>i </it>&#8594; <it>j </it>transition at least once where the weight of each state path is the number of <it>i </it>&#8594; <it>j </it>transitions taken. Processing of the entire <it>t</it><sub><it>i</it>, <it>j</it></sub>(<it>t</it>, <it>m</it>) recurrence takes memory proportional to <it>O</it>(<it>NQ</it>) and processor time <it>O</it>(<it>TNQQ</it><sub><it>max</it></sub>). Initially we have <it>t</it><sub><it>i</it>, <it>j</it></sub>(1, <it>m</it>) = 0 since no transitions have been made. After initialization, we perform the following recurrence operations:</p>
            <p>
               <display-formula id="M3">
                  <m:math name="1471-2105-9-224-i17" xmlns:m="http://www.w3.org/1998/Math/MathML">
                     <m:semantics>
                        <m:mrow>
                           <m:msub>
                              <m:mi>t</m:mi>
                              <m:mrow>
                                 <m:mi>i</m:mi>
                                 <m:mo>,</m:mo>
                                 <m:mi>j</m:mi>
                              </m:mrow>
                           </m:msub>
                           <m:mo stretchy="false">(</m:mo>
                           <m:mi>t</m:mi>
                           <m:mo>,</m:mo>
                           <m:mi>m</m:mi>
                           <m:mo stretchy="false">)</m:mo>
                           <m:mo>=</m:mo>
                           <m:msub>
                              <m:mi>&#945;</m:mi>
                              <m:mrow>
                                 <m:mi>t</m:mi>
                                 <m:mo>&#8722;</m:mo>
                                 <m:mn>1</m:mn>
                              </m:mrow>
                           </m:msub>
                           <m:mo stretchy="false">(</m:mo>
                           <m:mi>i</m:mi>
                           <m:mo stretchy="false">)</m:mo>
                           <m:msub>
                              <m:mi>a</m:mi>
                              <m:mrow>
                                 <m:mi>i</m:mi>
                                 <m:mo>,</m:mo>
                                 <m:mi>m</m:mi>
                              </m:mrow>
                           </m:msub>
                           <m:msub>
                              <m:mi>b</m:mi>
                              <m:mi>m</m:mi>
                           </m:msub>
                           <m:mo stretchy="false">(</m:mo>
                           <m:msub>
                              <m:mi>o</m:mi>
                              <m:mi>t</m:mi>
                           </m:msub>
                           <m:mo stretchy="false">)</m:mo>
                           <m:mi>&#948;</m:mi>
                           <m:mo stretchy="false">(</m:mo>
                           <m:mi>m</m:mi>
                           <m:mo>=</m:mo>
                           <m:mi>j</m:mi>
                           <m:mo stretchy="false">)</m:mo>
                        </m:mrow>
                        <m:annotation encoding="MathType-MTEF">
 MathType@MTEF@5@5@+=feaafiart1ev1aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xI8qiVKYPFjYdHaVhbbf9v8qqaqFr0xc9vqFj0dXdbba91qpepeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGaemiDaq3aaSbaaSqaaiabdMgaPjabcYcaSiabdQgaQbqabaGccqGGOaakcqWG0baDcqGGSaalcqWGTbqBcqGGPaqkcqGH9aqpcqaHXoqydaWgaaWcbaGaemiDaqNaeyOeI0IaeGymaedabeaakiabcIcaOiabdMgaPjabcMcaPiabdggaHnaaBaaaleaacqWGPbqAcqGGSaalcqWGTbqBaeqaaOGaemOyai2aaSbaaSqaaiabd2gaTbqabaGccqGGOaakcqWGVbWBdaWgaaWcbaGaemiDaqhabeaakiabcMcaPiabes7aKjabcIcaOiabd2gaTjabg2da9iabdQgaQjabcMcaPaaa@53E0@</m:annotation>
                     </m:semantics>
                  </m:math>
               </display-formula>
            </p>
            <p>
               <display-formula id="M4">
                  <m:math name="1471-2105-9-224-i18" xmlns:m="http://www.w3.org/1998/Math/MathML">
                     <m:semantics>
                        <m:mrow>
                           <m:mo>+</m:mo>
                           <m:mstyle displaystyle="true">
                              <m:munderover>
                                 <m:mo>&#8721;</m:mo>
                                 <m:mrow>
                                    <m:mi>n</m:mi>
                                    <m:mo>=</m:mo>
                                    <m:mn>1</m:mn>
                                 </m:mrow>
                                 <m:mi>N</m:mi>
                              </m:munderover>
                              <m:mrow>
                                 <m:msub>
                                    <m:mi>t</m:mi>
                                    <m:mrow>
                                       <m:mi>i</m:mi>
                                       <m:mo>,</m:mo>
                                       <m:mi>j</m:mi>
                                    </m:mrow>
                                 </m:msub>
                                 <m:mo stretchy="false">(</m:mo>
                                 <m:mi>t</m:mi>
                                 <m:mo>&#8722;</m:mo>
                                 <m:mn>1</m:mn>
                                 <m:mo>,</m:mo>
                                 <m:mi>n</m:mi>
                                 <m:mo stretchy="false">)</m:mo>
                                 <m:msub>
                                    <m:mi>a</m:mi>
                                    <m:mrow>
                                       <m:mi>n</m:mi>
                                       <m:mo>,</m:mo>
                                       <m:mi>m</m:mi>
                                    </m:mrow>
                                 </m:msub>
                                 <m:msub>
                                    <m:mi>b</m:mi>
                                    <m:mi>m</m:mi>
                                 </m:msub>
                                 <m:mo stretchy="false">(</m:mo>
                                 <m:msub>
                                    <m:mi>o</m:mi>
                                    <m:mi>t</m:mi>
                                 </m:msub>
                                 <m:mo stretchy="false">)</m:mo>
                              </m:mrow>
                           </m:mstyle>
                           <m:mo>,</m:mo>
                        </m:mrow>
                        <m:annotation encoding="MathType-MTEF">
 MathType@MTEF@5@5@+=feaafiart1ev1aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xI8qiVKYPFjYdHaVhbbf9v8qqaqFr0xc9vqFj0dXdbba91qpepeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGaey4kaSYaaabCaeaacqWG0baDdaWgaaWcbaGaemyAaKMaeiilaWIaemOAaOgabeaakiabcIcaOiabdsha0jabgkHiTiabigdaXiabcYcaSiabd6gaUjabcMcaPiabdggaHnaaBaaaleaacqWGUbGBcqGGSaalcqWGTbqBaeqaaOGaemOyai2aaSbaaSqaaiabd2gaTbqabaGccqGGOaakcqWGVbWBdaWgaaWcbaGaemiDaqhabeaakiabcMcaPaWcbaGaemOBa4Maeyypa0JaeGymaedabaGaemOta4eaniabggHiLdGccqGGSaalaaa@4E04@</m:annotation>
                     </m:semantics>
                  </m:math>
               </display-formula>
            </p>
            <p>where <inline-formula><m:math name="1471-2105-9-224-i19" xmlns:m="http://www.w3.org/1998/Math/MathML"><m:semantics><m:mrow><m:mi>&#948;</m:mi><m:mo stretchy="false">(</m:mo><m:mi>m</m:mi><m:mo>=</m:mo><m:mi>j</m:mi><m:mo stretchy="false">)</m:mo><m:mo>=</m:mo><m:mrow><m:mo>{</m:mo><m:mrow><m:mtable columnalign="left"><m:mtr columnalign="left"><m:mtd columnalign="left"><m:mrow><m:mn>1</m:mn><m:mo>,</m:mo></m:mrow></m:mtd><m:mtd columnalign="left"><m:mrow><m:mtable><m:mtr><m:mtd><m:mrow><m:mtext>if</m:mtext></m:mrow></m:mtd><m:mtd><m:mrow><m:mi>m</m:mi><m:mo>=</m:mo><m:mi>j</m:mi></m:mrow></m:mtd></m:mtr></m:mtable></m:mrow></m:mtd></m:mtr><m:mtr columnalign="left"><m:mtd columnalign="left"><m:mrow><m:mn>0</m:mn><m:mo>,</m:mo></m:mrow></m:mtd><m:mtd columnalign="left"><m:mrow><m:mtext>otherwise</m:mtext></m:mrow></m:mtd></m:mtr></m:mtable></m:mrow></m:mrow></m:mrow><m:annotation encoding="MathType-MTEF">

 MathType@MTEF@5@5@+=feaafiart1ev1aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xI8qiVKYPFjYdHaVhbbf9v8qqaqFr0xc9vqFj0dXdbba91qpepeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGaeqiTdqMaeiikaGIaemyBa0Maeyypa0JaemOAaOMaeiykaKIaeyypa0ZaaiqaaeaafaqaaeGacaaabaGaeGymaeJaeiilaWcabaqbaeqabeGaaaqaaiabbMgaPjabbAgaMbqaaiabd2gaTjabg2da9iabdQgaQbaaaeaacqaIWaamcqGGSaalaeaacqqGVbWBcqqG0baDcqqGObaAcqqGLbqzcqqGYbGCcqqG3bWDcqqGPbqAcqqGZbWCcqqGLbqzaaaacaGL7baaaaa@4BFF@</m:annotation></m:semantics></m:math></inline-formula>. Following equation (1), at a certain time-point <it>t </it>we need to score the evidence supporting transition between nodes <it>i </it>and <it>j</it>, which is the sum of probabilities of all possible state paths that emit subsequence <it>o</it><sub>1</sub>,..., <it>o</it><sub><it>t</it>-1 </sub>and finish in state <it>i </it>(forward probability <it>&#945;</it><sub><it>t</it>-1</sub>(<it>i</it>)), multiplied by transition <it>a</it><sub><it>i</it>, <it>j </it></sub>and emission <it>b</it><sub><it>j</it></sub>(<it>o</it><sub><it>t</it></sub>) probabilities upon arrival to <it>o</it><sub><it>t</it></sub>. We extend weighted paths containing evidence of <it>i </it>&#8594; <it>j </it>transitions made at previous time-points 1,..., <it>t </it>- 1 further down the trellis in subequation (4). Finally, by the end of the recurrence we marginalize the final state <it>m </it>out of probability <it>t</it><sub><it>i</it>, <it>j</it></sub>(<it>T</it>, <it>m</it>) to get a weighted sum of state paths taking transition <it>i </it>&#8594; <it>j </it>at various time-points that is equivalent to the numerator in the transition probability estimate shown in Table <tblr tid="T3">3</tblr>. Thus, we estimate transition utilization using:</p>
            <p>
               <display-formula>
                  <m:math name="1471-2105-9-224-i20" xmlns:m="http://www.w3.org/1998/Math/MathML">
                     <m:semantics>
                        <m:mrow>
                           <m:mtable>
                              <m:mtr>
                                 <m:mtd>
                                    <m:mrow>
                                       <m:msubsup>
                                          <m:mi>t</m:mi>
                                          <m:mrow>
                                             <m:mi>i</m:mi>
                                             <m:mo>,</m:mo>
                                             <m:mi>j</m:mi>
                                          </m:mrow>
                                          <m:mrow>
                                             <m:mi>E</m:mi>
                                             <m:mi>N</m:mi>
                                             <m:mi>D</m:mi>
                                          </m:mrow>
                                       </m:msubsup>
                                       <m:mo>=</m:mo>
                                       <m:mstyle displaystyle="true">
                                          <m:munderover>
                                             <m:mo>&#8721;</m:mo>
                                             <m:mrow>
                                                <m:mi>m</m:mi>
                                                <m:mo>=</m:mo>
                                                <m:mn>1</m:mn>
                                             </m:mrow>
                                             <m:mi>N</m:mi>
                                          </m:munderover>
                                          <m:mrow>
                                             <m:msub>
                                                <m:mi>t</m:mi>
                                                <m:mrow>
                                                   <m:mi>i</m:mi>
                                                   <m:mo>,</m:mo>
                                                   <m:mi>j</m:mi>
                                                </m:mrow>
                                             </m:msub>
                                             <m:mo stretchy="false">(</m:mo>
                                             <m:mi>T</m:mi>
                                             <m:mo>,</m:mo>
                                             <m:mi>m</m:mi>
                                             <m:mo stretchy="false">)</m:mo>
                                             <m:mo>,</m:mo>
                                          </m:mrow>
                                       </m:mstyle>
                                    </m:mrow>
                                 </m:mtd>
                                 <m:mtd>
                                    <m:mrow>
                                       <m:msub>
                                          <m:mi>a</m:mi>
                                          <m:mrow>
                                             <m:mi>i</m:mi>
                                             <m:mo>,</m:mo>
                                             <m:mi>j</m:mi>
                                          </m:mrow>
                                       </m:msub>
                                       <m:mo>=</m:mo>
                                       <m:mfrac>
                                          <m:mrow>
                                             <m:msubsup>
                                                <m:mi>t</m:mi>
                                                <m:mrow>
                                                   <m:mi>i</m:mi>
                                                   <m:mo>,</m:mo>
                                                   <m:mi>j</m:mi>
                                                </m:mrow>
                                                <m:mrow>
                                                   <m:mi>E</m:mi>
                                                   <m:mi>N</m:mi>
                                                   <m:mi>D</m:mi>
                                                </m:mrow>
                                             </m:msubsup>
                                          </m:mrow>
                                          <m:mrow>
                                             <m:mstyle displaystyle="true">
                                                <m:msub>
                                                   <m:mo>&#8721;</m:mo>
                                                   <m:mrow>
                                                      <m:mi>j</m:mi>
                                                      <m:mo>&#8712;</m:mo>
                                                      <m:mi>o</m:mi>
                                                      <m:mi>u</m:mi>
                                                      <m:mi>t</m:mi>
                                                      <m:mo stretchy="false">(</m:mo>
                                                      <m:msub>
                                                         <m:mi>S</m:mi>
                                                         <m:mi>i</m:mi>
                                                      </m:msub>
                                                      <m:mo stretchy="false">)</m:mo>
                                                   </m:mrow>
                                                </m:msub>
                                                <m:mrow>
                                                   <m:msubsup>
                                                      <m:mi>t</m:mi>
                                                      <m:mrow>
                                                         <m:mi>i</m:mi>
                                                         <m:mo>,</m:mo>
                                                         <m:mi>j</m:mi>
                                                      </m:mrow>
                                                      <m:mrow>
                                                         <m:mi>E</m:mi>
                                                         <m:mi>N</m:mi>
                                                         <m:mi>D</m:mi>
                                                      </m:mrow>
                                                   </m:msubsup>
                                                </m:mrow>
                                             </m:mstyle>
                                          </m:mrow>
                                       </m:mfrac>
                                       <m:mo>,</m:mo>
                                    </m:mrow>
                                 </m:mtd>
                              </m:mtr>
                           </m:mtable>
                        </m:mrow>
                        <m:annotation encoding="MathType-MTEF">
 MathType@MTEF@5@5@+=feaafiart1ev1aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xI8qiVKYPFjYdHaVhbbf9v8qqaqFr0xc9vqFj0dXdbba91qpepeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaqbaeqabeGaaaqaaiabdsha0naaDaaaleaacqWGPbqAcqGGSaalcqWGQbGAaeaacqWGfbqrcqWGobGtcqWGebaraaGccqGH9aqpdaaeWbqaaiabdsha0naaBaaaleaacqWGPbqAcqGGSaalcqWGQbGAaeqaaOGaeiikaGIaemivaqLaeiilaWIaemyBa0MaeiykaKIaeiilaWcaleaacqWGTbqBcqGH9aqpcqaIXaqmaeaacqWGobGta0GaeyyeIuoaaOqaaiabdggaHnaaBaaaleaacqWGPbqAcqGGSaalcqWGQbGAaeqaaOGaeyypa0tcfa4aaSaaaeaacqWG0baDdaqhaaqaaiabdMgaPjabcYcaSiabdQgaQbqaaiabdweafjabd6eaojabdseaebaaaeaadaaeqaqaaiabdsha0naaDaaabaGaemyAaKMaeiilaWIaemOAaOgabaGaemyrauKaemOta4KaemiraqeaaaqaaiabdQgaQjabgIGiolabd+gaVjabdwha1jabdsha0jabcIcaOiabdofatnaaBaaabaGaemyAaKgabeaacqGGPaqkaeqacqGHris5aaaakiabcYcaSaaaaaa@6DB1@</m:annotation>
                     </m:semantics>
                  </m:math>
               </display-formula>
            </p>
            <p>where <it>out</it>(<it>S</it><sub><it>i</it></sub>) is the set of nodes connected by edges from <it>S</it><sub><it>i</it></sub>.</p>
            <p>According to <abbrgrp><abbr bid="B13">13</abbr></abbrgrp><it> e</it><sub><it>i</it></sub>(<it>&#947;</it>, <it>t</it>, <it>m</it>) is the weighted sum of probabilities of all possible state paths that emit subsequence <it>o</it><sub>1</sub>,..., <it>o</it><sub><it>t </it></sub>and finish in state <it>m</it>, for which state <it>i </it>emits observation <it>&#947; </it>at least once where the weight of each state path is the number of <it>&#947; </it>emissions that it makes from state <it>i</it>.</p>
            <p>The following algorithm updates parameters for the set of discrete symbol probability distributions.</p>
            <p>Initialization step <it>e</it><sub><it>i</it></sub>(<it>&#947;</it>, 1, <it>m</it>) = <it>&#945;</it><sub>1</sub>(<it>m</it>) <it>&#948; </it>(<it>i </it>= <it>m</it>) <it>&#948; </it>(<it>&#947; </it>= <it>o</it><sub>1</sub>). After initialization we make the recurrence steps, where we correct the emission recurrence presented in <abbrgrp><abbr bid="B13">13</abbr></abbrgrp> [see Additional File <supplr sid="S1">1</supplr>]:</p>
            <suppl id="S1">
               <title>
                  <p>Additional File 1</p>
               </title>
               <text>
                  <p><b>Supplementary materials</b>. Contains previously derived recurrences for linear memory HMM implementation with forward sweep and empty start/end states along with corrected recurrences.</p>
               </text>
               <file name="1471-2105-9-224-S1.pdf">
                  <p>Click here for file</p>
               </file>
            </suppl>
            <p>
               <display-formula id="M5">
                  <m:math name="1471-2105-9-224-i21" xmlns:m="http://www.w3.org/1998/Math/MathML">
                     <m:semantics>
                        <m:mrow>
                           <m:msub>
                              <m:mi>e</m:mi>
                              <m:mi>i</m:mi>
                           </m:msub>
                           <m:mo stretchy="false">(</m:mo>
                           <m:mi>&#947;</m:mi>
                           <m:mo>,</m:mo>
                           <m:mi>t</m:mi>
                           <m:mo>,</m:mo>
                           <m:mi>m</m:mi>
                           <m:mo stretchy="false">)</m:mo>
                           <m:mo>=</m:mo>
                           <m:msub>
                              <m:mi>&#945;</m:mi>
                              <m:mi>t</m:mi>
                           </m:msub>
                           <m:mo stretchy="false">(</m:mo>
                           <m:mi>m</m:mi>
                           <m:mo stretchy="false">)</m:mo>
                           <m:mi>&#948;</m:mi>
                           <m:mo stretchy="false">(</m:mo>
                           <m:mi>i</m:mi>
                           <m:mo>=</m:mo>
                           <m:mi>m</m:mi>
                           <m:mo stretchy="false">)</m:mo>
                           <m:mi>&#948;</m:mi>
                           <m:mo stretchy="false">(</m:mo>
                           <m:mi>&#947;</m:mi>
                           <m:mo>=</m:mo>
                           <m:msub>
                              <m:mi>o</m:mi>
                              <m:mi>t</m:mi>
                           </m:msub>
                           <m:mo stretchy="false">)</m:mo>
                        </m:mrow>
                        <m:annotation encoding="MathType-MTEF">
 MathType@MTEF@5@5@+=feaafiart1ev1aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xI8qiVKYPFjYdHaVhbbf9v8qqaqFr0xc9vqFj0dXdbba91qpepeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGaemyzau2aaSbaaSqaaiabdMgaPbqabaGccqGGOaakcqaHZoWzcqGGSaalcqWG0baDcqGGSaalcqWGTbqBcqGGPaqkcqGH9aqpcqaHXoqydaWgaaWcbaGaemiDaqhabeaakiabcIcaOiabd2gaTjabcMcaPiabes7aKjabcIcaOiabdMgaPjabg2da9iabd2gaTjabcMcaPiabes7aKjabcIcaOiabeo7aNjabg2da9iabd+gaVnaaBaaaleaacqWG0baDaeqaaOGaeiykaKcaaa@4E82@</m:annotation>
                     </m:semantics>
                  </m:math>
               </display-formula>
            </p>
            <p>
               <display-formula id="M6">
                  <m:math name="1471-2105-9-224-i22" xmlns:m="http://www.w3.org/1998/Math/MathML">
                     <m:semantics>
                        <m:mrow>
                           <m:mo>=</m:mo>
                           <m:mstyle displaystyle="true">
                              <m:munderover>
                                 <m:mo>&#8721;</m:mo>
                                 <m:mrow>
                                    <m:mi>n</m:mi>
                                    <m:mo>=</m:mo>
                                    <m:mn>1</m:mn>
                                 </m:mrow>
                                 <m:mi>N</m:mi>
                              </m:munderover>
                              <m:mrow>
                                 <m:msub>
                                    <m:mi>e</m:mi>
                                    <m:mi>i</m:mi>
                                 </m:msub>
                                 <m:mo stretchy="false">(</m:mo>
                                 <m:mi>&#947;</m:mi>
                                 <m:mo>,</m:mo>
                                 <m:mi>t</m:mi>
                                 <m:mo>&#8722;</m:mo>
                                 <m:mn>1</m:mn>
                                 <m:mo>,</m:mo>
                                 <m:mi>n</m:mi>
                                 <m:mo stretchy="false">)</m:mo>
                                 <m:msub>
                                    <m:mi>a</m:mi>
                                    <m:mrow>
                                       <m:mi>n</m:mi>
                                       <m:mo>,</m:mo>
                                       <m:mi>m</m:mi>
                                    </m:mrow>
                                 </m:msub>
                                 <m:msub>
                                    <m:mi>b</m:mi>
                                    <m:mi>m</m:mi>
                                 </m:msub>
                                 <m:mo stretchy="false">(</m:mo>
                                 <m:msub>
                                    <m:mi>o</m:mi>
                                    <m:mi>t</m:mi>
                                 </m:msub>
                                 <m:mo stretchy="false">)</m:mo>
                              </m:mrow>
                           </m:mstyle>
                           <m:mo>.</m:mo>
                        </m:mrow>
                        <m:annotation encoding="MathType-MTEF">
 MathType@MTEF@5@5@+=feaafiart1ev1aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xI8qiVKYPFjYdHaVhbbf9v8qqaqFr0xc9vqFj0dXdbba91qpepeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGaeyypa0ZaaabCaeaacqWGLbqzdaWgaaWcbaGaemyAaKgabeaakiabcIcaOiabeo7aNjabcYcaSiabdsha0jabgkHiTiabigdaXiabcYcaSiabd6gaUjabcMcaPiabdggaHnaaBaaaleaacqWGUbGBcqGGSaalcqWGTbqBaeqaaOGaemOyai2aaSbaaSqaaiabd2gaTbqabaGccqGGOaakcqWGVbWBdaWgaaWcbaGaemiDaqhabeaakiabcMcaPaWcbaGaemOBa4Maeyypa0JaeGymaedabaGaemOta4eaniabggHiLdGccqGGUaGlaaa@4E58@</m:annotation>
                     </m:semantics>
                  </m:math>
               </display-formula>
            </p>
            <p>Finally, by the end of the recurrence we marginalize the final state <it>m </it>out of <it>e</it><sub><it>i</it></sub>(<it>&#947;</it>, <it>T</it>, <it>m</it>) and estimate the emission parameters through normalization</p>
            <p>
               <display-formula>
                  <m:math name="1471-2105-9-224-i23" xmlns:m="http://www.w3.org/1998/Math/MathML">
                     <m:semantics>
                        <m:mrow>
                           <m:mtable>
                              <m:mtr>
                                 <m:mtd>
                                    <m:mrow>
                                       <m:msubsup>
                                          <m:mi>e</m:mi>
                                          <m:mi>i</m:mi>
                                          <m:mrow>
                                             <m:mi>E</m:mi>
                                             <m:mi>N</m:mi>
                                             <m:mi>D</m:mi>
                                          </m:mrow>
                                       </m:msubsup>
                                       <m:mo stretchy="false">(</m:mo>
                                       <m:mi>&#947;</m:mi>
                                       <m:mo stretchy="false">)</m:mo>
                                       <m:mo>=</m:mo>
                                       <m:mstyle displaystyle="true">
                                          <m:munderover>
                                             <m:mo>&#8721;</m:mo>
                                             <m:mrow>
                                                <m:mi>m</m:mi>
                                                <m:mo>=</m:mo>
                                                <m:mn>1</m:mn>
                                             </m:mrow>
                                             <m:mi>N</m:mi>
                                          </m:munderover>
                                          <m:mrow>
                                             <m:msub>
                                                <m:mi>e</m:mi>
                                                <m:mi>i</m:mi>
                                             </m:msub>
                                             <m:mo stretchy="false">(</m:mo>
                                             <m:mi>&#947;</m:mi>
                                             <m:mo>,</m:mo>
                                             <m:mi>T</m:mi>
                                             <m:mo>,</m:mo>
                                             <m:mi>m</m:mi>
                                             <m:mo stretchy="false">)</m:mo>
                                             <m:mo>,</m:mo>
                                          </m:mrow>
                                       </m:mstyle>
                                    </m:mrow>
                                 </m:mtd>
                                 <m:mtd>
                                    <m:mrow>
                                       <m:msub>
                                          <m:mover accent="true">
                                             <m:mi>b</m:mi>
                                             <m:mo>^</m:mo>
                                          </m:mover>
                                          <m:mi>j</m:mi>
                                       </m:msub>
                                       <m:mo stretchy="false">(</m:mo>
                                       <m:mi>&#947;</m:mi>
                                       <m:mo stretchy="false">)</m:mo>
                                       <m:mo>=</m:mo>
                                       <m:mfrac>
                                          <m:mrow>
                                             <m:msubsup>
                                                <m:mi>e</m:mi>
                                                <m:mi>j</m:mi>
                                                <m:mrow>
                                                   <m:mi>E</m:mi>
                                                   <m:mi>N</m:mi>
                                                   <m:mi>D</m:mi>
                                                </m:mrow>
                                             </m:msubsup>
                                             <m:mo stretchy="false">(</m:mo>
                                             <m:mi>&#947;</m:mi>
                                             <m:mo stretchy="false">)</m:mo>
                                          </m:mrow>
                                          <m:mrow>
                                             <m:mstyle displaystyle="true">
                                                <m:msubsup>
                                                   <m:mo>&#8721;</m:mo>
                                                   <m:mrow>
                                                      <m:mi>&#947;</m:mi>
                                                      <m:mo>=</m:mo>
                                                      <m:mn>1</m:mn>
                                                   </m:mrow>
                                                   <m:mi>D</m:mi>
                                                </m:msubsup>
                                                <m:mrow>
                                                   <m:msubsup>
                                                      <m:mi>e</m:mi>
                                                      <m:mi>j</m:mi>
                                                      <m:mrow>
                                                         <m:mi>E</m:mi>
                                                         <m:mi>N</m:mi>
                                                         <m:mi>D</m:mi>
                                                      </m:mrow>
                                                   </m:msubsup>
                                                   <m:mo stretchy="false">(</m:mo>
                                                   <m:mi>&#947;</m:mi>
                                                   <m:mo stretchy="false">)</m:mo>
                                                </m:mrow>
                                             </m:mstyle>
                                          </m:mrow>
                                       </m:mfrac>
                                       <m:mo>.</m:mo>
                                    </m:mrow>
                                 </m:mtd>
                              </m:mtr>
                           </m:mtable>
                        </m:mrow>
                        <m:annotation encoding="MathType-MTEF">
 MathType@MTEF@5@5@+=feaafiart1ev1aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xI8qiVKYPFjYdHaVhbbf9v8qqaqFr0xc9vqFj0dXdbba91qpepeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaqbaeqabeGaaaqaaiabdwgaLnaaDaaaleaacqWGPbqAaeaacqWGfbqrcqWGobGtcqWGebaraaGccqGGOaakcqaHZoWzcqGGPaqkcqGH9aqpdaaeWbqaaiabdwgaLnaaBaaaleaacqWGPbqAaeqaaOGaeiikaGIaeq4SdCMaeiilaWIaemivaqLaeiilaWIaemyBa0MaeiykaKIaeiilaWcaleaacqWGTbqBcqGH9aqpcqaIXaqmaeaacqWGobGta0GaeyyeIuoaaOqaaiqbdkgaIzaajaWaaSbaaSqaaiabdQgaQbqabaGccqGGOaakcqaHZoWzcqGGPaqkcqGH9aqpjuaGdaWcaaqaaiabdwgaLnaaDaaabaGaemOAaOgabaGaemyrauKaemOta4KaemiraqeaaiabcIcaOiabeo7aNjabcMcaPaqaamaaqadabaGaemyzau2aa0baaeaacqWGQbGAaeaacqWGfbqrcqWGobGtcqWGebaraaGaeiikaGIaeq4SdCMaeiykaKcabaGaeq4SdCMaeyypa0JaeGymaedabaGaemiraqeacqGHris5aaaakiabc6caUaaaaaa@6B53@</m:annotation>
                     </m:semantics>
                  </m:math>
               </display-formula>
            </p>
            <p>The algorithm for discrete emission parameters estimate <it>B </it>= {<it>b</it><sub>1</sub>(<it>o</it>),..., <it>b</it><sub><it>N </it></sub>(<it>o</it>)<it>} </it>takes in <it>O</it>(<it>NED</it>) memory and <it>O</it>(<it>TNEDQ</it><sub><it>max</it></sub>) time. As discussed [see Subsection <it>HMM definition, EM learning and Viterbi decoding</it>] the forward sweep takes <it>O</it>(<it>TNQ</it><sub><it>max</it></sub>) time, where only the values of <it>&#945;</it><sub><it>t</it>-1</sub>(<it>i</it>) for 1 &#8804; <it>i </it>&#8804; <it>N </it>are needed to evaluate <it>&#945;t</it>(<it>i</it>), thus reducing the memory requirement to <it>O</it>(<it>N</it>) for the forward algorithm. Computing <it>e</it><sub><it>i</it></sub>(<it>&#947;</it>, <it>t</it>, <it>m</it>) takes <it>O</it>(<it>NED</it>) previous probabilities of <it>e</it><sub><it>i</it></sub>(<it>&#947;</it>, <it>t </it>- 1, <it>m</it>) for 1 &#8804; <it>m </it>&#8804; <it>N</it>, 1 &#8804; <it>i </it>&#8804; <it>E</it>, 1&#8804; <it>&#947; </it>&#8804; <it>D</it>. Recurrent updating of each <it>e</it><sub><it>i</it></sub>(<it>&#947;</it>, <it>t</it>, <it>m</it>) probability elements takes <it>O</it>(<it>Q</it><sub><it>max</it></sub>) summations, totalling <it>O</it>(<it>TNEDQ</it><sub><it>max</it></sub>).</p>
            <p><b>Theorem 1 </b><it>e</it><sub><it>i</it></sub>(<it>&#947;</it>, <it>t</it>, <it>m</it>) <it>is the weighted sum of probabilities of all possible state paths that emit subsequence o</it><sub>1</sub>,..., <it>o</it><sub><it>t </it></sub><it>and finish in state m, for which state i emits observation <it>&#947; </it>at least once</it>.</p>
         </sec>
         <sec>
            <st>
               <p>Proof</p>
            </st>
            <p><b>Initialization </b>The only chance for a path at a time-point 1 to emit symbol <it>&#947; </it>at least once from state <it>i </it>and finish in state <it>m </it>is <it>&#945;</it><sub>1</sub>(<it>m</it>) in case <it>i </it>= <it>m </it>and <it>&#947; </it>= <it>o</it><sub>1</sub>. Therefore, initialization conditions satisfy definition of <it>e</it><sub><it>i</it></sub>(<it>&#947;</it>, <it>t</it>, <it>m</it>).</p>
            <p><b>Induction </b>Suppose <it>e</it><sub><it>i</it></sub>(<it>&#947;</it>, <it>t </it>- 1, <it>m</it>) represents correct weighted sum of probabilities of all possible state paths that emit subsequence <it>o</it><sub>1</sub>,..., <it>o</it><sub><it>t</it>-1 </sub>and finish in state <it>m</it>, for which state <it>i </it>emits observation <it>&#947; </it>at least once. We need to prove the above holds for time-point <it>t</it>. Following equation (1) in recurrence part (5) we score the evidence of symbol <it>o</it><sub><it>t </it></sub>emission from state <it>i </it>at time-point <it>t</it>, which will be further propagated down the trellis in recurrence part (6). Chances of such event is <it>&#945;</it><sub><it>t</it></sub>(<it>m</it>), i.e. sum of probabilities of all possible state paths finishing in state <it>m </it>at time-point <it>t </it>under conditions <it>i </it>= <it>m </it>and <it>&#947; </it>= <it>o</it><sub><it>t</it></sub>. The second part of the recurrence (6) extends the weighted paths containing evidence of <it>&#947; </it>symbol emission from state <it>i </it>at previous time-points 1,..., <it>t </it>- 1 and finishing in state <it>n </it>further down the trellis through available transitions <it>a</it><sub><it>n</it>, <it>m</it></sub>. Thus the definition of <it>e</it><sub><it>i</it></sub>(<it>&#947;</it>, <it>t</it>, <it>m</it>) holds true for the time-point <it>t</it>.</p>
            <p>At the end of recurrence we marginalize the final state <it>m </it>out of probability <it>e</it><sub><it>i</it></sub>(<it>&#947;</it>, <it>T</it>, <it>m</it>) to get the weighted sum of all state paths making observation <it>&#947; </it>in state <it>i </it>at various time-points equivalent to the numerator of the discrete emission parameter estimate in Table <tblr tid="T3">3</tblr>, which is a weighted sum of all possible paths that score emissions evidence at certain time-points. By normalizing these scores we estimate the emission parameters.</p>
            <p>The forward sweep strategy was originally formulated in <abbrgrp><abbr bid="B13">13</abbr></abbrgrp> for HMMs with silent Start/End states, and automatically handles the prior probabilities estimates for the states as standard transitions connecting <it>Start </it>with other non-silent states. The prior transition estimates <it>a</it><sub><it>Start</it>, <it>i </it></sub>are naturally involved within recurrent updates of <it>t</it><sub><it>i</it>, <it>j</it></sub>(<it>t, m</it>), which takes an additional <it>O</it>(<it>N</it><sup>2</sup>) memory if all <it>N </it>non-silent states have non-zero priors with time cost <it>O</it>(<it>TN</it><sup>2</sup><it>Q</it><sub><it>max</it></sub>). In order to compute the prior estimates in the conventional HMM formulation we need to know the backward probability at time-point 1, which requires calculation of the entire backward table. Therefore, in the next section we present a linear memory Baum-Welch algorithm modification built around a backward sweep with scaling, which only involves calculation of <it>&#945;</it><sub>1</sub>(<it>i</it>) for 1 &#8804; <it>i </it>&#8804; <it>N </it>to estimate priors in <it>O</it>(<it>N</it>) time and <it>O</it>(<it>N</it>) memory.</p>
         </sec>
         <sec>
            <st>
               <p>Linear memory Baum-Welch using a backward sweep with scaling</p>
            </st>
            <p>The objective of the algorithm presented in this section is equivalent to that discussed previously [see Section <it>Forward sweep strategy explained</it>] based on forward probabilities of state occupation. However, by using the backward probabilities of state occupation we are able to estimate initial HMM state probabilities much more quickly. In the description that follows we introduce a new set of probabilities:</p>
            <p><it>E</it><sub><it>i</it></sub>(<it>&#947;</it>, <it>t</it>, <it>m</it>) &#8211; the weighted sum of probabilities of all possible state paths that emit subsequence <it>o</it><sub><it>t</it></sub>,..., <it>o</it><sub><it>T </it></sub>and finish in state <it>m</it>, for which state <it>i </it>emits observation <it>&#947; </it>at least once, where the weight of each state path is the number of <it>&#947; </it>emissions that it makes from state <it>i</it>.</p>
            <p><it>T</it><sub><it>i</it>, <it>j</it></sub>(<it>t</it>, <it>m</it>) &#8211; the weighted sum of probabilities of all possible state paths that emit subsequence <it>o</it><sub><it>t</it></sub>,..., <it>o</it><sub><it>T </it></sub>and finish in state <it>m</it>, taking <it>i </it>&#8594; <it>j </it>transition at least once, where the weight of each state path is the number of <it>i </it>&#8594; <it>j </it>transitions that it takes.</p>
            <p>All calculations are based on backward probability <it>&#946;</it><sub><it>t</it></sub>(<it>i</it>), but there is inevitably insufficient precision to directly represent these values for significantly long emission sequences. Therefore we scale the backward probability during the recursion.</p>
            <p>The linear memory Baum-Welch implementation is shown in Figure <figr fid="F2">2</figr>, where <inline-formula><m:math name="1471-2105-9-224-i24" xmlns:m="http://www.w3.org/1998/Math/MathML"><m:semantics><m:mi mathvariant="script">E</m:mi><m:annotation encoding="MathType-MTEF">
 MathType@MTEF@5@5@+=feaafiart1ev1aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaWenfgDOvwBHrxAJfwnHbqeg0uy0HwzTfgDPnwy1aaceaGae8hmHueaaa@36AD@</m:annotation></m:semantics></m:math></inline-formula> is a set of nodes with free emission parameters and <inline-formula><m:math name="1471-2105-9-224-i25" xmlns:m="http://www.w3.org/1998/Math/MathML"><m:semantics><m:mi mathvariant="script">T</m:mi><m:annotation encoding="MathType-MTEF">

 MathType@MTEF@5@5@+=feaafiart1ev1aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaWenfgDOvwBHrxAJfwnHbqeg0uy0HwzTfgDPnwy1aaceaGae83eXtfaaa@376F@</m:annotation></m:semantics></m:math></inline-formula> is a set of nodes with free emanating transitions. Scaling relationships used at every iteration are rigorously proven [see <it>Appendix A</it>]. An alternative to scaling is relation (7) presented in <abbrgrp><abbr bid="B17">17</abbr></abbrgrp> showing how to efficiently add log probabilities</p>
            <fig id="F2">
               <title>
                  <p>Figure 2</p>
               </title>
               <caption>
                  <p>The linear memory implementation of Baum-Welch learning algorithm for HMM</p>
               </caption>
               <text>
                  <p><b>The linear memory implementation of Baum-Welch learning algorithm for HMM.</b> This algorithm takes set of HMM parameters <it>&#955; </it>and sequence of symbols <it>O</it>. Expected HMM parameters are calculated according to formulas [see Subsection <it>Parameters update</it>].</p>
               </text>
               <graphic file="1471-2105-9-224-2"/>
            </fig>
            <p>
               <display-formula id="M7">
                  <m:math name="1471-2105-9-224-i26" xmlns:m="http://www.w3.org/1998/Math/MathML">
                     <m:semantics>
                        <m:mrow>
                           <m:mi>log</m:mi>
                           <m:mo>&#8289;</m:mo>
                           <m:mrow>
                              <m:mo>(</m:mo>
                              <m:mrow>
                                 <m:mstyle displaystyle="true">
                                    <m:munderover>
                                       <m:mo>&#8721;</m:mo>
                                       <m:mrow>
                                          <m:mi>t</m:mi>
                                          <m:mo>=</m:mo>
                                          <m:mn>0</m:mn>
                                       </m:mrow>
                                       <m:mrow>
                                          <m:mi>N</m:mi>
                                          <m:mo>&#8722;</m:mo>
                                          <m:mn>1</m:mn>
                                       </m:mrow>
                                    </m:munderover>
                                    <m:mrow>
                                       <m:msub>
                                          <m:mi>p</m:mi>
                                          <m:mi>i</m:mi>
                                       </m:msub>
                                    </m:mrow>
                                 </m:mstyle>
                              </m:mrow>
                              <m:mo>)</m:mo>
                           </m:mrow>
                           <m:mo>=</m:mo>
                           <m:mi>log</m:mi>
                           <m:mo>&#8289;</m:mo>
                           <m:msub>
                              <m:mi>p</m:mi>
                              <m:mn>0</m:mn>
                           </m:msub>
                           <m:mo>+</m:mo>
                           <m:mi>log</m:mi>
                           <m:mo>&#8289;</m:mo>
                           <m:mrow>
                              <m:mo>(</m:mo>
                              <m:mrow>
                                 <m:mn>1</m:mn>
                                 <m:mo>+</m:mo>
                                 <m:mstyle displaystyle="true">
                                    <m:munderover>
                                       <m:mo>&#8721;</m:mo>
                                       <m:mrow>
                                          <m:mi>i</m:mi>
                                          <m:mo>=</m:mo>
                                          <m:mn>1</m:mn>
                                       </m:mrow>
                                       <m:mrow>
                                          <m:mi>N</m:mi>
                                          <m:mo>&#8722;</m:mo>
                                          <m:mn>1</m:mn>
                                       </m:mrow>
                                    </m:munderover>
                                    <m:mrow>
                                       <m:msup>
                                          <m:mi>e</m:mi>
                                          <m:mrow>
                                             <m:mi>log</m:mi>
                                             <m:mo>&#8289;</m:mo>
                                             <m:msub>
                                                <m:mi>p</m:mi>
                                                <m:mi>i</m:mi>
                                             </m:msub>
                                             <m:mo>&#8722;</m:mo>
                                             <m:mi>log</m:mi>
                                             <m:mo>&#8289;</m:mo>
                                             <m:msub>
                                                <m:mi>p</m:mi>
                                                <m:mn>0</m:mn>
                                             </m:msub>
                                          </m:mrow>
                                       </m:msup>
                                    </m:mrow>
                                 </m:mstyle>
                              </m:mrow>
                              <m:mo>)</m:mo>
                           </m:mrow>
                           <m:mo>.</m:mo>
                        </m:mrow>
                        <m:annotation encoding="MathType-MTEF">
 MathType@MTEF@5@5@+=feaafiart1ev1aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xI8qiVKYPFjYdHaVhbbf9v8qqaqFr0xc9vqFj0dXdbba91qpepeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGagiiBaWMaei4Ba8Maei4zaC2aaeWaaeaadaaeWbqaaiabdchaWnaaBaaaleaacqWGPbqAaeqaaaqaaiabdsha0jabg2da9iabicdaWaqaaiabd6eaojabgkHiTiabigdaXaqdcqGHris5aaGccaGLOaGaayzkaaGaeyypa0JagiiBaWMaei4Ba8Maei4zaCMaemiCaa3aaSbaaSqaaiabicdaWaqabaGccqGHRaWkcyGGSbaBcqGGVbWBcqGGNbWzdaqadaqaaiabigdaXiabgUcaRmaaqahabaGaemyzau2aaWbaaSqabeaacyGGSbaBcqGGVbWBcqGGNbWzcqWGWbaCdaWgaaadbaGaemyAaKgabeaaliabgkHiTiGbcYgaSjabc+gaVjabcEgaNjabdchaWnaaBaaameaacqaIWaamaeqaaaaaaSqaaiabdMgaPjabg2da9iabigdaXaqaaiabd6eaojabgkHiTiabigdaXaqdcqGHris5aaGccaGLOaGaayzkaaGaeiOla4caaa@671A@</m:annotation>
                     </m:semantics>
                  </m:math>
               </display-formula>
            </p>
            <p>The scoring functions used for the emissions updates are shown in Table <tblr tid="T4">4</tblr>. With discrete emission we sum all the backward probabilities of state occupation given discrete symbol emission at certain time-points and later we normalize these counts in (8). In the case of a normally distributed continuous PDF we sum emissions and emission deviation from state <it>i </it>mean squared. These sums are scaled by probability of state occupation. We use these counts to estimate the emission mean (9) and variance (10) for a given state.</p>
            <tbl id="T4">
               <title>
                  <p>Table 4</p>
               </title>
               <caption>
                  <p>The scoring functions for discrete and continuous emissions.</p>
               </caption>
               <tblbdy cols="2">
                  <r>
                     <c ca="left">
                        <p>Discrete emission</p>
                     </c>
                     <c ca="left">
                        <p>Continuous Gaussian emission</p>
                     </c>
                  </r>
                  <r>
                     <c cspan="2">
                        <hr/>
                     </c>
                  </r>
                  <r>
                     <c ca="left">
                        <p>Score (<it>o</it><sub><it>t</it></sub>, <it>&#947;</it>, <it>i</it>)</p>
                     </c>
                     <c ca="left">
                        <p>Score (<it>o</it><sub><it>t</it></sub>, <it>&#947;</it>, <it>i</it>)</p>
                     </c>
                  </r>
                  <r>
                     <c indent="1" ca="left">
                        <p><b>return </b><it>&#948;</it>(<it>o</it><sub><it>t </it></sub>= <it>&#947;</it>)</p>
                     </c>
                     <c indent="1" ca="left">
                        <p><b>if </b>(<it>&#947; </it>= 1) <b>return </b><it>o</it><sub><it>t</it></sub>,</p>
                     </c>
                  </r>
                  <r>
                     <c>
                        <p/>
                     </c>
                     <c indent="1" ca="left">
                        <p><b>if </b>(<it>&#947; </it>= 2) <b>return </b>[<it>o</it><sub><it>t </it></sub>- (<it>b</it><sub><it>i</it></sub>(<it>o</it>) &#8594; <it>&#956;</it>)]<sup>2</sup>,</p>
                     </c>
                  </r>
                  <r>
                     <c>
                        <p/>
                     </c>
                     <c indent="1" ca="left">
                        <p><b>if </b>(<it>&#947; </it>= 3) <b>return </b>1.</p>
                     </c>
                  </r>
               </tblbdy>
            </tbl>
            <sec>
               <st>
                  <p>Parameters update</p>
               </st>
               <p>We estimate the initial probability according to equations presented in Table <tblr tid="T3">3</tblr>, where <it>D</it><sub>1 </sub>is defined in Appendix A</p>
               <p>
                  <display-formula>
                     <m:math name="1471-2105-9-224-i27" xmlns:m="http://www.w3.org/1998/Math/MathML">
                        <m:semantics>
                           <m:mrow>
                              <m:msub>
                                 <m:mover accent="true">
                                    <m:mi>&#960;</m:mi>
                                    <m:mo>^</m:mo>
                                 </m:mover>
                                 <m:mi>i</m:mi>
                              </m:msub>
                              <m:mo>=</m:mo>
                              <m:mfrac>
                                 <m:mrow>
                                    <m:msub>
                                       <m:mi>&#945;</m:mi>
                                       <m:mn>1</m:mn>
                                    </m:msub>
                                    <m:mo stretchy="false">(</m:mo>
                                    <m:mi>i</m:mi>
                                    <m:mo stretchy="false">)</m:mo>
                                    <m:msub>
                                       <m:mover accent="true">
                                          <m:mi>&#946;</m:mi>
                                          <m:mo>&#732;</m:mo>
                                       </m:mover>
                                       <m:mi>i</m:mi>
                                    </m:msub>
                                    <m:mo stretchy="false">(</m:mo>
                                    <m:mn>1</m:mn>
                                    <m:mo stretchy="false">)</m:mo>
                                 </m:mrow>
                                 <m:mrow>
                                    <m:mstyle displaystyle="true">
                                       <m:msubsup>
                                          <m:mo>&#8721;</m:mo>
                                          <m:mrow>
                                             <m:mi>i</m:mi>
                                             <m:mo>=</m:mo>
                                             <m:mn>1</m:mn>
                                          </m:mrow>
                                          <m:mi>N</m:mi>
                                       </m:msubsup>
                                       <m:mrow>
                                          <m:msub>
                                             <m:mi>&#945;</m:mi>
                                             <m:mn>1</m:mn>
                                          </m:msub>
                                          <m:mo stretchy="false">(</m:mo>
                                          <m:mi>i</m:mi>
                                          <m:mo stretchy="false">)</m:mo>
                                       </m:mrow>
                                    </m:mstyle>
                                    <m:msub>
                                       <m:mover accent="true">
                                          <m:mi>&#946;</m:mi>
                                          <m:mo>&#732;</m:mo>
                                       </m:mover>
                                       <m:mi>i</m:mi>
                                    </m:msub>
                                    <m:mo stretchy="false">(</m:mo>
                                    <m:mn>1</m:mn>
                                    <m:mo stretchy="false">)</m:mo>
                                 </m:mrow>
                              </m:mfrac>
                              <m:mo>=</m:mo>
                              <m:mfrac>
                                 <m:mrow>
                                    <m:msub>
                                       <m:mi>&#945;</m:mi>
                                       <m:mn>1</m:mn>
                                    </m:msub>
                                    <m:mo stretchy="false">(</m:mo>
                                    <m:mi>i</m:mi>
                                    <m:mo stretchy="false">)</m:mo>
                                    <m:msub>
                                       <m:mi>D</m:mi>
                                       <m:mn>1</m:mn>
                                    </m:msub>
                                    <m:msub>
                                       <m:mi>&#946;</m:mi>
                                       <m:mn>1</m:mn>
                                    </m:msub>
                                    <m:mo stretchy="false">(</m:mo>
                                    <m:mi>i</m:mi>
                                    <m:mo stretchy="false">)</m:mo>
                                 </m:mrow>
                                 <m:mrow>
                                    <m:mstyle displaystyle="true">
                                       <m:msubsup>
                                          <m:mo>&#8721;</m:mo>
                                          <m:mrow>
                                             <m:mi>i</m:mi>
                                             <m:mo>=</m:mo>
                                             <m:mn>1</m:mn>
                                          </m:mrow>
                                          <m:mi>N</m:mi>
                                       </m:msubsup>
                                       <m:mrow>
                                          <m:msub>
                                             <m:mi>&#945;</m:mi>
                                             <m:mn>1</m:mn>
                                          </m:msub>
                                          <m:mo stretchy="false">(</m:mo>
                                          <m:mi>i</m:mi>
                                          <m:mo stretchy="false">)</m:mo>
                                          <m:msub>
                                             <m:mi>D</m:mi>
                                             <m:mn>1</m:mn>
                                          </m:msub>
                                       </m:mrow>
                                    </m:mstyle>
                                    <m:msub>
                                       <m:mi>&#946;</m:mi>
                                       <m:mn>1</m:mn>
                                    </m:msub>
                                    <m:mo stretchy="false">(</m:mo>
                                    <m:mi>i</m:mi>
                                    <m:mo stretchy="false">)</m:mo>
                                 </m:mrow>
                              </m:mfrac>
                              <m:mo>=</m:mo>
                              <m:mfrac>
                                 <m:mrow>
                                    <m:msub>
                                       <m:mi>&#945;</m:mi>
                                       <m:mn>1</m:mn>
                                    </m:msub>
                                    <m:mo stretchy="false">(</m:mo>
                                    <m:mi>i</m:mi>
                                    <m:mo stretchy="false">)</m:mo>
                                    <m:msub>
                                       <m:mi>&#946;</m:mi>
                                       <m:mn>1</m:mn>
                                    </m:msub>
                                    <m:mo stretchy="false">(</m:mo>
                                    <m:mi>i</m:mi>
                                    <m:mo stretchy="false">)</m:mo>
                                 </m:mrow>
                                 <m:mrow>
                                    <m:mstyle displaystyle="true">
                                       <m:msubsup>
                                          <m:mo>&#8721;</m:mo>
                                          <m:mrow>
                                             <m:mi>i</m:mi>
                                             <m:mo>=</m:mo>
                                             <m:mn>1</m:mn>
                                          </m:mrow>
                                          <m:mi>N</m:mi>
                                       </m:msubsup>
                                       <m:mrow>
                                          <m:msub>
                                             <m:mi>&#945;</m:mi>
                                             <m:mn>1</m:mn>
                                          </m:msub>
                                          <m:mo stretchy="false">(</m:mo>
                                          <m:mi>i</m:mi>
                                          <m:mo stretchy="false">)</m:mo>
                                       </m:mrow>
                                    </m:mstyle>
                                    <m:msub>
                                       <m:mi>&#946;</m:mi>
                                       <m:mn>1</m:mn>
                                    </m:msub>
                                    <m:mo stretchy="false">(</m:mo>
                                    <m:mi>i</m:mi>
                                    <m:mo stretchy="false">)</m:mo>
                                 </m:mrow>
                              </m:mfrac>
                              <m:mo>.</m:mo>
                           </m:mrow>
                           <m:annotation encoding="MathType-MTEF">
 MathType@MTEF@5@5@+=feaafiart1ev1aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xI8qiVKYPFjYdHaVhbbf9v8qqaqFr0xc9vqFj0dXdbba91qpepeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGafqiWdaNbaKaadaWgaaWcbaGaemyAaKgabeaakiabg2da9KqbaoaalaaabaGaeqySde2aaSbaaeaacqaIXaqmaeqaaiabcIcaOiabdMgaPjabcMcaPiqbek7aIzaaiaWaaSbaaeaacqWGPbqAaeqaaiabcIcaOiabigdaXiabcMcaPaqaamaaqadabaGaeqySde2aaSbaaeaacqaIXaqmaeqaaiabcIcaOiabdMgaPjabcMcaPaqaaiabdMgaPjabg2da9iabigdaXaqaaiabd6eaobGaeyyeIuoacuaHYoGygaacamaaBaaabaGaemyAaKgabeaacqGGOaakcqaIXaqmcqGGPaqkaaGccqGH9aqpjuaGdaWcaaqaaiabeg7aHnaaBaaabaGaeGymaedabeaacqGGOaakcqWGPbqAcqGGPaqkcqWGebardaWgaaqaaiabigdaXaqabaGaeqOSdi2aaSbaaeaacqaIXaqmaeqaaiabcIcaOiabdMgaPjabcMcaPaqaamaaqadabaGaeqySde2aaSbaaeaacqaIXaqmaeqaaiabcIcaOiabdMgaPjabcMcaPiabdseaenaaBaaabaGaeGymaedabeaaaeaacqWGPbqAcqGH9aqpcqaIXaqmaeaacqWGobGtaiabggHiLdGaeqOSdi2aaSbaaeaacqaIXaqmaeqaaiabcIcaOiabdMgaPjabcMcaPaaakiabg2da9KqbaoaalaaabaGaeqySde2aaSbaaeaacqaIXaqmaeqaaiabcIcaOiabdMgaPjabcMcaPiabek7aInaaBaaabaGaeGymaedabeaacqGGOaakcqWGPbqAcqGGPaqkaeaadaaeWaqaaiabeg7aHnaaBaaabaGaeGymaedabeaacqGGOaakcqWGPbqAcqGGPaqkaeaacqWGPbqAcqGH9aqpcqaIXaqmaeaacqWGobGtaiabggHiLdGaeqOSdi2aaSbaaeaacqaIXaqmaeqaaiabcIcaOiabdMgaPjabcMcaPaaakiabc6caUaaa@91D9@</m:annotation>
                        </m:semantics>
                     </m:math>
                  </display-formula>
               </p>
               <p>The emissions estimate for the discrete case are</p>
               <p>
                  <display-formula id="M8">
                     <m:math name="1471-2105-9-224-i28" xmlns:m="http://www.w3.org/1998/Math/MathML">
                        <m:semantics>
                           <m:mrow>
                              <m:msub>
                                 <m:mover accent="true">
                                    <m:mi>b</m:mi>
                                    <m:mo>^</m:mo>
                                 </m:mover>
                                 <m:mi>j</m:mi>
                              </m:msub>
                              <m:mo stretchy="false">(</m:mo>
                              <m:mi>&#947;</m:mi>
                              <m:mo stretchy="false">)</m:mo>
                              <m:mo>=</m:mo>
                              <m:mfrac>
                                 <m:mrow>
                                    <m:msubsup>
                                       <m:mover accent="true">
                                          <m:mi>E</m:mi>
                                          <m:mo>&#732;</m:mo>
                                       </m:mover>
                                       <m:mi>j</m:mi>
                                       <m:mrow>
                                          <m:mi>E</m:mi>
                                          <m:mi>N</m:mi>
                                          <m:mi>D</m:mi>
                                       </m:mrow>
                                    </m:msubsup>
                                    <m:mo stretchy="false">(</m:mo>
                                    <m:mi>&#947;</m:mi>
                                    <m:mo stretchy="false">)</m:mo>
                                 </m:mrow>
                                 <m:mrow>
                                    <m:mstyle displaystyle="true">
                                       <m:msubsup>
                                          <m:mo>&#8721;</m:mo>
                                          <m:mrow>
                                             <m:mi>&#947;</m:mi>
                                             <m:mo>=</m:mo>
                                             <m:mn>1</m:mn>
                                          </m:mrow>
                                          <m:mi>D</m:mi>
                                       </m:msubsup>
                                       <m:mrow>
                                          <m:msubsup>
                                             <m:mover accent="true">
                                                <m:mi>E</m:mi>
                                                <m:mo>&#732;</m:mo>
                                             </m:mover>
                                             <m:mi>j</m:mi>
                                             <m:mrow>
                                                <m:mi>E</m:mi>
                                                <m:mi>N</m:mi>
                                                <m:mi>D</m:mi>
                                             </m:mrow>
                                          </m:msubsup>
                                          <m:mo stretchy="false">(</m:mo>
                                          <m:mi>&#947;</m:mi>
                                          <m:mo stretchy="false">)</m:mo>
                                       </m:mrow>
                                    </m:mstyle>
                                 </m:mrow>
                              </m:mfrac>
                              <m:mo>=</m:mo>
                              <m:mfrac>
                                 <m:mrow>
                                    <m:msub>
                                       <m:mi>D</m:mi>
                                       <m:mn>1</m:mn>
                                    </m:msub>
                                    <m:msubsup>
                                       <m:mi>E</m:mi>
                                       <m:mi>j</m:mi>
                                       <m:mrow>
                                          <m:mi>E</m:mi>
                                          <m:mi>N</m:mi>
                                          <m:mi>D</m:mi>
                                       </m:mrow>
                                    </m:msubsup>
                                    <m:mo stretchy="false">(</m:mo>
                                    <m:mi>&#947;</m:mi>
                                    <m:mo stretchy="false">)</m:mo>
                                 </m:mrow>
                                 <m:mrow>
                                    <m:msub>
                                       <m:mi>D</m:mi>
                                       <m:mn>1</m:mn>
                                    </m:msub>
                                    <m:mstyle displaystyle="true">
                                       <m:msubsup>
                                          <m:mo>&#8721;</m:mo>
                                          <m:mrow>
                                             <m:mi>&#947;</m:mi>
                                             <m:mo>=</m:mo>
                                             <m:mn>1</m:mn>
                                          </m:mrow>
                                          <m:mi>D</m:mi>
                                       </m:msubsup>
                                       <m:mrow>
                                          <m:msubsup>
                                             <m:mi>E</m:mi>
                                             <m:mi>j</m:mi>
                                             <m:mrow>
                                                <m:mi>E</m:mi>
                                                <m:mi>N</m:mi>
                                                <m:mi>D</m:mi>
                                             </m:mrow>
                                          </m:msubsup>
                                          <m:mo stretchy="false">(</m:mo>
                                          <m:mi>&#947;</m:mi>
                                      