seq_iso_check.h

00001 /*
00002  *  Copyright (C) 2005 M.J. Zaki <zaki@cs.rpi.edu> Rensselaer Polytechnic Institute
00003  *  Written by parimi@cs.rpi.edu
00004  *  Updated by chaojv@cs.rpi.edu, alhasan@cs.rpi.edu, salems@cs.rpi.edu
00005  *
00006  *  This program is free software; you can redistribute it and/or
00007  *  modify it under the terms of the GNU General Public License
00008  *  as published by the Free Software Foundation; either version 2
00009  *  of the License, or (at your option) any later version.
00010  *
00011  *  This program is distributed in the hope that it will be useful,
00012  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00013  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014  *  GNU General Public License for more details.
00015  *
00016  *  You should have received a copy of the GNU General Public License along
00017  *  with this program; if not, write to the Free Software Foundation, Inc.,
00018  *  59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
00019  */
00020 #ifndef _SEQ_ISO_CHECK_H_
00021 #define _SEQ_ISO_CHECK_H_
00022 
00023 #include "typedefs.h"
00024 
00025 template<class PP, class MP, class ST, template<class, typename, typename, template <typename> class > class CC, 
00026          template<typename> class ALLOC >
00027 class pattern;
00028 
00029 class directed;
00030 class acyclic;
00031 class indegree_lte_one;
00032 class outdegree_lte_one;
00033 
00034 template<class prop, class next_property>
00035 class proplist;
00036 
00037 
00042 template<typename PP, class MP, class PAT_ST, template<class, typename, typename, template <typename> class> class CC, 
00043          template <typename> class ALLOC >
00044   bool check_isomorphism(SEQ_PATTERN* const& cand_pat) { 
00045   // bool check_isomorphism(pattern<SEQ_PROP, MP, PAT_ST, CC, ALLOC>* const& cand_pat) { 
00046   // bool check_isomorphism(SEQ_PATTERN* const& cand_pat) { 
00047    // NOTE:
00048    // The candidate generation process for sequences eliminates isomorphism.
00049    // Hence no explicit isomorphism check needs to be done.
00050 
00051    // Update the canonical code.
00052    // NOTE:
00053    // No change made to the canonical code when an edge is added.
00054   cand_pat->_canonical_code.insert_vertex(cand_pat->rmost_vertex());
00055 
00056   cand_pat->_is_canonical = true;
00057   return true;
00058 }
00059 
00060 #endif

Generated on Wed Jul 26 14:01:08 2006 for DMTL by  doxygen 1.4.7