File: njn_dynprogprobproto.hpp

package info (click to toggle)
mmseqs2 18-8cc5c%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 34,388 kB
  • sloc: cpp: 87,288; ansic: 10,655; sh: 2,919; makefile: 142; perl: 13
file content (84 lines) | stat: -rwxr-xr-x 3,273 bytes parent folder | download | duplicates (20)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#ifndef INCLUDED_NJN_DYNPROGPROBPROTO
#define INCLUDED_NJN_DYNPROGPROBPROTO

/* $Id: $
* ===========================================================================
*
*                            PUBLIC DOMAIN NOTICE
*               National Center for Biotechnology Information
*
*  This software/database is a "United States Government Work" under the
*  terms of the United States Copyright Act.  It was written as part of
*  the author's offical duties as a United States Government employee and
*  thus cannot be copyrighted.  This software/database is freely available
*  to the public for use. The National Library of Medicine and the U.S.
*  Government have not placed any restriction on its use or reproduction.
*
*  Although all reasonable efforts have been taken to ensure the accuracy
*  and reliability of the software and data, the NLM and the U.S.
*  Government do not and cannot warrant the performance or results that
*  may be obtained by using this software or data. The NLM and the U.S.
*  Government disclaim all warranties, express or implied, including
*  warranties of performance, merchantability or fitness for any particular
*  purpose.
*
*  Please cite the author in any work or product based on this material.
*
* ===========================================================================*/

/*****************************************************************************

File name: njs_dynprogprobproto.hpp

Author: John Spouge

Contents: 

******************************************************************************/

#include <vector>
#include <cstdlib>

namespace Njn {

    class	DynProgProbProto {

        // DynProgProbProto performs updates for probabilities in a dynamic programming computation.

        // The object behaves as follows:
        //
        // Default:
        //    (1) The initial state of the dynamic programming computation is 0 with probability 1.0.
        //
        // Behavior:
        //    (2) If input_ is the computation's input, it replaces oldValue_ with NewValueFct (oldValue_, input_)
        //    (3) The dynamic programming function can be reset with setValueFct (...).
        //    (4) The probability for the input can be reset with setInput (...).
        //    (5) The probability of input_ = [0, dimInputProb_) is inputProb_ [input_].
        //    (6) getProb (long int i_) returns the probability corresponding to the long int value i_.

        public:

        typedef long int ValueFct (long int oldValue_, size_t input_); 
        // function for producing new value from old value and input state

        virtual ~DynProgProbProto ();

        virtual inline operator bool () const = 0; // ? is the object ready for computation ?

        virtual void clear () = 0; // restarts the computation

        virtual void update () = 0; // updates dynamic prog probs 

        virtual inline double getProb (long int value_) const = 0; // probability value

        virtual inline size_t getStep () const = 0; // current index : starts at 0 

        virtual inline long int getValueLower () const = 0; // present lower long int value in the array
        virtual inline long int getValueUpper () const = 0; // one beyond present upper long int value in the array
    };

}

#endif