op_partition.h
Go to the documentation of this file.
1 /** @file op_partition.h
2 
3 Data structure that implements an equivalence class in the bisimulation algorithm.
4 The algorithm is presented in
5 J.-C. Fernandez, “An implementation of an efficient algorithm for
6 bisimulation equivalence,” Science of Computer Programming, vol. 13,
7 pp. 219-236, 1990.
8 */
9 
10 /* FAU Discrete Event Systems Library (libfaudes)
11 
12  Copyright (C) 2006 Bernd Opitz
13  Exclusive copyright is granted to Klaus Schmidt
14 
15  This library is free software; you can redistribute it and/or
16  modify it under the terms of the GNU Lesser General Public
17  License as published by the Free Software Foundation; either
18  version 2.1 of the License, or (at your option) any later version.
19 
20  This library 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 GNU
23  Lesser General Public License for more details.
24 
25  You should have received a copy of the GNU Lesser General Public
26  License along with this library; if not, write to the Free Software
27  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
28 
29 
30 #include "corefaudes.h"
31 #include "op_debug.h"
32 #include <vector>
33 #include <map>
34 
35 #ifndef FAUDES_OP_PARTITION_H
36 #define FAUDES_OP_PARTITION_H
37 
38 
39 namespace faudes {
40 
41 /**
42 * This struct implements a coset (=equivalence class) as needed for the computation of the coarsest quasi-congruence on an automaton.
43 */
44 struct Partition {
45 
46  /** Constructor */
47  Partition();
48 
49  /** Unique index */
51 
52  /** Pointer to the associated StateSet */
54 
55  /** Index of the parent coset */
57 
58  /** Index of the brother coset */
60 
61  /** Index of first child coset */
63 
64  /** Index of second child coset */
66 
67  /** indicates if the current partition is stable with respect to this coset */
69 
70  /** Info-map. First Idx: event, second Idx: state, third Idx: number of occurences */
71  std::map<Idx,std::map<Idx,Idx> > infoMap;
72 
73  /**
74  * Write info-map to console
75  *
76  * @param event
77  * event for which the info-map shall be plotted
78  */
79  void writeInfoMap(Idx event) const;
80 
81  /** number of states in this coset */
83 };
84 
85 } // name space
86 
87 #endif

libFAUDES 2.24g --- 2014.09.15 --- c++ api documentaion by doxygen