00001 /*****************************************************************************/ 00002 /*! 00003 * \file decision_engine_dfs.h 00004 * 00005 * Author: Clark Barrett 00006 * 00007 * Created: Fri Jul 11 13:04:25 2003 00008 * 00009 * <hr> 00010 * Copyright (C) 2003 by the Board of Trustees of Leland Stanford 00011 * Junior University and by New York University. 00012 * 00013 * License to use, copy, modify, sell and/or distribute this software 00014 * and its documentation for any purpose is hereby granted without 00015 * royalty, subject to the terms and conditions defined in the \ref 00016 * LICENSE file provided with this distribution. In particular: 00017 * 00018 * - The above copyright notice and this permission notice must appear 00019 * in all copies of the software and related documentation. 00020 * 00021 * - THE SOFTWARE IS PROVIDED "AS-IS", WITHOUT ANY WARRANTIES, 00022 * EXPRESSED OR IMPLIED. USE IT AT YOUR OWN RISK. 00023 * 00024 * <hr> 00025 * 00026 */ 00027 /*****************************************************************************/ 00028 00029 #ifndef _cvcl__search__decision_engine_dfs_h_ 00030 #define _cvcl__search__decision_engine_dfs_h_ 00031 00032 #include "decision_engine.h" 00033 00034 namespace CVCL { 00035 00036 /*****************************************************************************/ 00037 /*! 00038 *\anchor de_dfs 00039 *\class DecisionEngineDFS 00040 *\brief Decision Engine for use with the Search Engine 00041 *\ingroup DE 00042 * 00043 * Author: Clark Barrett 00044 * 00045 * Created: Fri Jul 11 16:34:22 2003 00046 * 00047 */ 00048 /*****************************************************************************/ 00049 class DecisionEngineDFS : public DecisionEngine { 00050 00051 protected: 00052 virtual bool isBetter(const Expr& e1, const Expr& e2); 00053 00054 public: 00055 //! Constructor 00056 DecisionEngineDFS(TheoryCore* core, SearchImplBase* se); 00057 virtual ~DecisionEngineDFS() { } 00058 00059 /*! @brief Find the next splitter. \return Null Expr if no 00060 splitter is found. */ 00061 virtual Expr findSplitter(const Expr& e); 00062 00063 //! Search should call this when it derives 'false' 00064 virtual void goalSatisfied(); 00065 00066 }; 00067 00068 } 00069 00070 #endif