mtc_parallel.h

Go to the documentation of this file.
00001 /** @file mtc_parallel.h
00002 
00003 Methods for parallel composition of multitasking generators
00004 
00005 */
00006 
00007 /* FAU Discrete Event Systems Library (libfaudes)
00008 
00009    Copyright (C) 2008  Matthias Singer
00010    Copyright (C) 2007  Thomas Moor
00011    Exclusive copyright is granted to Klaus Schmidt
00012 
00013    This library is free software; you can redistribute it and/or
00014    modify it under the terms of the GNU Lesser General Public
00015    License as published by the Free Software Foundation; either
00016    version 2.1 of the License, or (at your option) any later version.
00017 
00018    This library is distributed in the hope that it will be useful,
00019    but WITHOUT ANY WARRANTY; without even the implied warranty of
00020    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00021    Lesser General Public License for more details.
00022 
00023    You should have received a copy of the GNU Lesser General Public
00024    License along with this library; if not, write to the Free Software
00025    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA */
00026 
00027 
00028 #ifndef FAUDES_MTCPARALLEL_H
00029 #define FAUDES_MTCPARALLEL_H
00030 
00031 #include "corefaudes.h"
00032 #include "mtc_generator.h"
00033 #include <stack>
00034 
00035 namespace faudes {
00036 
00037 /**
00038  * Parallel composition of two colored marking generators, controllability status is observed
00039  *
00040  * @param rGen1
00041  *   First MtcSystem for parallel composition
00042  *
00043  * @param rGen2
00044  *   Second MtcSystem for parallel composition
00045  *
00046  * @param rResGen
00047  *   MtcSystem in which the result of the parallel composition is saved
00048  *
00049  * <h4>Example: Parallel composition of two colored marking generators</h4>
00050  * <table border=0> <tr> <td>
00051  *   <table width=100%>
00052  *     <tr> <td> <center> MtcSystems for composition </center> </td> </tr>
00053  *     <tr> <td> @image html tmp_mtc_functions_4a_system.png </td> </tr>
00054        <tr> <td> @image html tmp_mtc_functions_4b_system.png </td> </tr>
00055  *     <tr> <td> <center> The left MtcSystem contains only one colored state, state 2, whereas the right one possesses two color labels - one for each state. </center> </td> </tr>
00056  *   </table>
00057  *   </td> </tr>
00058  *   <tr> <td>
00059  *   <table width=100%>
00060  *     <tr> <td> <center> Result of the parallel composition </center> </td> </tr>
00061  *     <tr> <td> @image html tmp_mtc_functions_4c_parallel.png </td> </tr>
00062  *     <tr> <td> <center> The composed MtcSystem contains all colors that appear in both single MtcSystems.
00063 
00064 The single states are labeled with a color when both states to combine are labeled with it. A color label is also added when it occurs in one of the two currently regarded states to compose and, at the same time, it does not appear in the second single MtcSystem. </center> </td> </tr>
00065  *   </table>
00066  *   </td> </tr>
00067  * </table>
00068  *
00069  * @ingroup MultitaskingPlugin
00070  */
00071 void mtcParallel(const MtcSystem& rGen1, const MtcSystem& rGen2,
00072     MtcSystem& rResGen);
00073 
00074 /**
00075  * Parallel composition of two MtcSystems
00076  *
00077  * @param rGen1
00078  *   First MtcSystem for parallel composition
00079  *
00080  * @param rGen2
00081  *   Second MtcSystem for parallel composition
00082  *
00083  * @param rReverseCompositionMap
00084  *
00085  * @param rResGen
00086  *   Generator in which the result of the parallel composition is saved
00087  */
00088 void mtcParallel(const MtcSystem& rGen1, const MtcSystem& rGen2,
00089     std::map< std::pair<Idx,Idx>, Idx>& rReverseCompositionMap, 
00090     MtcSystem& rResGen);
00091 
00092 /**
00093  * Compose the color set for a state combined from two states in two distinct automata
00094  *
00095  * @param rGen1
00096  *   First MtcSystem for parallel composition
00097  *
00098  * @param stdidx1
00099  *   Index to first MtcSystem's current state
00100  *
00101  * @param colors1
00102  *   Color set of first MtcSystem
00103  *
00104  * @param rGen2
00105  *   Second MtcSystem for parallel composition
00106  *
00107  * @param stdidx2
00108  *   Index to second MtcSystem's current state
00109  *
00110  * @param colors2
00111  *   Color set of second MtcSystem
00112  *
00113  * @param composedSet
00114  *   Color set where composition colors will be inserted
00115  *
00116  * @exception Exception
00117  *   - Index not member of set (id 200)
00118  *   - Index not found in set (id 201)
00119  */
00120 void ComposedColorSet(const MtcSystem& rGen1, const Idx stdidx1, ColorSet& colors1,
00121                       const MtcSystem& rGen2, const Idx stdidx2, ColorSet& colors2,
00122                       ColorSet& composedSet);
00123 
00124 } // namespace faudes
00125 
00126 #endif

libFAUDES 2.23h --- 2014.04.03 --- c++ api documentaion by doxygen