GEDLIB  1.0
fingerprint.hpp
Go to the documentation of this file.
1 /***************************************************************************
2 * *
3 * Copyright (C) 2018 by David B. Blumenthal *
4 * *
5 * This file is part of GEDLIB. *
6 * *
7 * GEDLIB is free software: you can redistribute it and/or modify it *
8 * under the terms of the GNU Lesser General Public License as published *
9 * by the Free Software Foundation, either version 3 of the License, or *
10 * (at your option) any later version. *
11 * *
12 * GEDLIB is distributed in the hope that it will be useful, *
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15 * GNU Lesser General Public License for more details. *
16 * *
17 * You should have received a copy of the GNU Lesser General Public *
18 * License along with GEDLIB. If not, see <http://www.gnu.org/licenses/>. *
19 * *
20 ***************************************************************************/
21 
27 #ifndef SRC_EDIT_COSTS_FINGERPRINT_HPP_
28 #define SRC_EDIT_COSTS_FINGERPRINT_HPP_
29 
30 
31 #include "edit_costs.hpp"
32 
33 namespace ged {
34 
50 template<class UserNodeLabel, class UserEdgeLabel>
51 class Fingerprint : public EditCosts<UserNodeLabel, UserEdgeLabel> {
52 public:
53 
54  virtual ~Fingerprint();
55 
63  Fingerprint(double node_ins_del_cost = 0.7, double edge_ins_del_cost = 0.5, double alpha = 0.75);
64 
65  virtual double node_ins_cost_fun(const UserNodeLabel & node_label) const final;
66 
67  virtual double node_del_cost_fun(const UserNodeLabel & node_label) const final;
68 
69  virtual double node_rel_cost_fun(const UserNodeLabel & node_label_1, const UserNodeLabel & node_label_2) const final;
70 
71  virtual double edge_ins_cost_fun(const UserEdgeLabel & edge_label) const final;
72 
73  virtual double edge_del_cost_fun(const UserEdgeLabel & edge_label) const final;
74 
75  virtual double edge_rel_cost_fun(const UserEdgeLabel & edge_label_1, const UserEdgeLabel & edge_label_2) const final;
76 
77 private:
78 
79  double node_ins_del_cost_;
80 
81  double edge_ins_del_cost_;
82 
83  double alpha_;
84 
85  static constexpr double pi_() {return 3.141592653589793238463;}
86 };
87 
88 }
89 
90 #include "fingerprint.ipp"
91 
92 
93 #endif /* SRC_EDIT_COSTS_FINGERPRINT_HPP_ */
ged::EditCosts class declaration.
Fingerprint(double node_ins_del_cost=0.7, double edge_ins_del_cost=0.5, double alpha=0.75)
Constructor.
virtual double edge_rel_cost_fun(const UserEdgeLabel &edge_label_1, const UserEdgeLabel &edge_label_2) const final
Edge relabeling cost function.
virtual double edge_ins_cost_fun(const UserEdgeLabel &edge_label) const final
Edge insertion cost function.
virtual double node_del_cost_fun(const UserNodeLabel &node_label) const final
Node deletion cost function.
virtual double edge_del_cost_fun(const UserEdgeLabel &edge_label) const final
Edge deletion cost function.
virtual double node_rel_cost_fun(const UserNodeLabel &node_label_1, const UserNodeLabel &node_label_2) const final
Node relabeling cost function.
Global namespace for GEDLIB.
virtual double node_ins_cost_fun(const UserNodeLabel &node_label) const final
Node insertions cost function.
Edit costs for graphs contained in Fingerprint dataset.
Definition: fingerprint.hpp:51
ged::Fingerprint class definition.
Abstract class for defining edit cost functions.
Definition: edit_costs.hpp:38