1 #Region "Microsoft.VisualBasic::72f7818574169b6f85e9bb783135ac61, Microsoft.VisualBasic.Core\ComponentModel\Algorithm\DynamicProgramming.vb"
2
3     ' Author:
4     
5     '       asuka (amethyst.asuka@gcmodeller.org)
6     '       xie (genetics@smrucc.org)
7     '       xieguigang (xie.guigang@live.com)
8     
9     ' Copyright (c) 2018 GPL3 Licensed
10     
11     
12     ' GNU GENERAL PUBLIC LICENSE (GPL3)
13     
14     
15     ' This program is free software: you can redistribute it and/or modify
16     ' it under the terms of the GNU General Public License as published by
17     ' the Free Software Foundation, either version 3 of the License, or
18     ' (at your option) any later version.
19     
20     ' This program is distributed in the hope that it will be useful,
21     ' but WITHOUT ANY WARRANTY; without even the implied warranty of
22     ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
23     ' GNU General Public License for more details.
24     
25     ' You should have received a copy of the GNU General Public License
26     ' along with this program. If not, see <http://www.gnu.org/licenses/>.
27
28
29
30     ' /********************************************************************************/
31
32     ' Summaries:
33
34     '     Class Cost
35     
36     '         FunctionDefaultCost, DefaultSubstituteCost
37     
38     '     Delegate Function
39     
40     
41     '     Delegate Function
42     
43     
44     
45     
46     
47     ' /********************************************************************************/
48
49 #End Region
50
51 Imports Microsoft.VisualBasic.Language.Default
52
53 Namespace ComponentModel.Algorithm.DynamicProgramming
54
55     Public Class Cost(Of T)
56
57         Public insert As Func(Of T, Double)
58         Public delete As Func(Of T, Double)
59         Public substitute As Func(Of T, T, Double)
60         Public transpose As Func(Of T, T, Double)
61
62         Public Shared Function DefaultSubstituteCost(a As T, b As T, equals As GenericLambda(Of T).IEquals) As Double
63             Return If(equals(a, b), 0, 1)
64         End Function
65
66         Public Shared Function DefaultCost(cost As DoubleAs DefaultValue(Of Cost(Of T))
67             Return New Cost(Of T) With {
68                 .insert = Function(x) cost,
69                 .delete = Function(x) cost,
70                 .substitute = Function(a, b) cost
71             }
72         End Function
73     End Class
74
75     Public Delegate Function ISimilarity(Of T)(x As T, y As T) As Double
76     Public Delegate Function IEquals(Of T)(x As T, y As T) As Boolean
77
78 End Namespace