main page
modules
namespaces
classes
files
Gecode home
Generated on Tue Jan 28 2020 00:00:00 for Gecode by
doxygen
1.8.17
gecode
search
bab.hpp
Go to the documentation of this file.
1
/* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
2
/*
3
* Main authors:
4
* Christian Schulte <schulte@gecode.org>
5
*
6
* Contributing authors:
7
* Guido Tack <tack@gecode.org>
8
*
9
* Copyright:
10
* Christian Schulte, 2004
11
* Guido Tack, 2004
12
*
13
* Last modified:
14
* $Date: 2016-04-19 17:19:45 +0200 (Tue, 19 Apr 2016) $ by $Author: schulte $
15
* $Revision: 14967 $
16
*
17
* This file is part of Gecode, the generic constraint
18
* development environment:
19
* http://www.gecode.org
20
*
21
* Permission is hereby granted, free of charge, to any person obtaining
22
* a copy of this software and associated documentation files (the
23
* "Software"), to deal in the Software without restriction, including
24
* without limitation the rights to use, copy, modify, merge, publish,
25
* distribute, sublicense, and/or sell copies of the Software, and to
26
* permit persons to whom the Software is furnished to do so, subject to
27
* the following conditions:
28
*
29
* The above copyright notice and this permission notice shall be
30
* included in all copies or substantial portions of the Software.
31
*
32
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
33
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
34
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
35
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
36
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
37
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
38
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
39
*
40
*/
41
42
namespace
Gecode
{
namespace
Search {
43
45
GECODE_SEARCH_EXPORT
Engine*
bab
(Space* s,
const
Options& o);
46
48
template
<
class
T>
49
class
BabBuilder
:
public
Builder
{
50
using
Builder::opt
;
51
public
:
53
BabBuilder
(
const
Options
&
opt
);
55
virtual
Engine
*
operator()
(
Space
* s)
const
;
56
};
57
58
template
<
class
T>
59
inline
60
BabBuilder<T>::BabBuilder
(
const
Options
&
opt
)
61
:
Builder
(
opt
,
BAB
<T>::best) {}
62
63
template
<
class
T>
64
Engine
*
65
BabBuilder<T>::operator()
(
Space
* s)
const
{
66
return
build<T,BAB>(s,
opt
);
67
}
68
69
}}
70
71
namespace
Gecode
{
72
73
template
<
class
T>
74
inline
75
BAB<T>::BAB
(T* s,
const
Search::Options
& o)
76
: Search::Base<T>(Search::
bab
(s,o)) {}
77
78
template
<
class
T>
79
inline
T*
80
bab
(T* s,
const
Search::Options
& o) {
81
BAB<T>
b
(s,o);
82
T*
l
= NULL;
83
while
(T*
n
=
b
.next()) {
84
delete
l
;
l
=
n
;
85
}
86
return
l
;
87
}
88
89
template
<
class
T>
90
SEB
91
bab
(
const
Search::Options
& o) {
92
return
new
Search::BabBuilder<T>
(o);
93
}
94
95
}
96
97
// STATISTICS: search-other
GECODE_SEARCH_EXPORT
#define GECODE_SEARCH_EXPORT
Definition:
search.hh:63
Gecode::Search::Options
Search engine options
Definition:
search.hh:446
Gecode::Search::Builder
A class for building search engines.
Definition:
search.hh:667
Gecode::BAB
Depth-first branch-and-bound search engine.
Definition:
search.hh:773
Gecode::Search::BabBuilder::BabBuilder
BabBuilder(const Options &opt)
The constructor.
Definition:
bab.hpp:60
Gecode::Search::bab
Engine * bab(Space *s, const Options &o)
Create branch and bound engine.
Definition:
bab.cpp:48
Gecode::Search::BabBuilder
A BAB engine builder.
Definition:
bab.hpp:49
Gecode::Space
Computation spaces.
Definition:
core.hpp:1748
Gecode
Gecode toplevel namespace
Gecode::SEB
Search::Builder * SEB
Type for a search engine builder.
Definition:
search.hh:695
Gecode::bab
T * bab(T *s, const Search::Options &o)
Perform depth-first branch-and-bound search for subclass T of space s and options o.
Definition:
bab.hpp:80
Test::opt
Options opt
The options.
Definition:
test.cpp:101
b
struct Gecode::@579::NNF::@61::@62 b
For binary nodes (and, or, eqv)
Gecode::Search::Engine
Search engine implementation interface
Definition:
search.hh:601
l
NNF * l
Left subtree.
Definition:
bool-expr.cpp:244
Gecode::BAB::BAB
BAB(T *s, const Search::Options &o=Search::Options::def)
Initialize engine for space s and options o.
Definition:
bab.hpp:75
Gecode::Search::Builder::opt
Options opt
Stored and already expanded options.
Definition:
search.hh:670
n
int n
Number of negative literals for node type.
Definition:
bool-expr.cpp:238
Gecode::Search::BabBuilder::operator()
virtual Engine * operator()(Space *s) const
The actual build function.
Definition:
bab.hpp:65