steghide
0.5.1
Main Page
Classes
Files
File List
File Members
src
DFSAPHeuristic.h
Go to the documentation of this file.
1
/*
2
* steghide 0.5.1 - a steganography program
3
* Copyright (C) 1999-2003 Stefan Hetzl <shetzl@chello.at>
4
*
5
* This program is free software; you can redistribute it and/or
6
* modify it under the terms of the GNU General Public License
7
* as published by the Free Software Foundation; either version 2
8
* of the License, or (at your option) any later version.
9
*
10
* This program is distributed in the hope that it will be useful,
11
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
* GNU General Public License for more details.
14
*
15
* You should have received a copy of the GNU General Public License
16
* along with this program; if not, write to the Free Software
17
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18
*
19
*/
20
21
#ifndef SH_DFSAPHEURISTIC
22
#define SH_DFSAPHEURISTIC
23
24
#include "
EdgeIterator.h
"
25
#include "
MatchingAlgorithm.h
"
26
#include "
Vertex.h
"
27
28
class
Edge
;
29
#include "
Graph.h
"
30
class
Matching
;
31
40
class
DFSAPHeuristic
:
public
MatchingAlgorithm
{
41
public
:
50
DFSAPHeuristic
(
Graph
* g,
Matching
* m,
float
goal = 100.0,
UWORD32
mne =
UWORD32_MAX
,
EdgeIterator::ITERATIONMODE
mo =
EdgeIterator::SAMPLEOCCURENCE
) ;
51
52
virtual
~DFSAPHeuristic
(
void
) ;
53
54
const
char
*
getName
(
void
)
const
55
{
return
"DFS Augmenting Path Heuristic"
; } ;
56
61
void
reset
(
UWORD32
mne =
UWORD32_MAX
,
EdgeIterator::ITERATIONMODE
mo =
EdgeIterator::SAMPLEOCCURENCE
) ;
62
63
void
run
(
void
) ;
64
65
private
:
71
unsigned
long
searchAugmentingPath
(
Vertex
* v0,
const
Edge
** path) ;
72
73
const
Edge
*
getNextEdge
(
Vertex
*v) ;
74
75
void
markVisited
(
Vertex
*v)
76
{
TimeCounters
[v->
getLabel
()] =
TimeCounter
; } ;
77
82
bool
isVisited
(
Vertex
*v)
const
83
{
return
isVisited
(v->
getLabel
()) ; } ;
84
85
bool
isVisited
(
VertexLabel
vlbl)
const
86
{
return
(
TimeCounters
[vlbl] ==
TimeCounter
) ; } ;
87
88
UWORD32
TimeCounter
;
89
UWORD32
*
TimeCounters
;
90
bool
*
VertexOnPath
;
91
EdgeIterator
*
EdgeIterators
;
92
93
#ifdef DEBUG
94
95
unsigned
long
long
NEdgesSuccessful ;
97
unsigned
long
long
NEdgesUnsuccessful ;
99
unsigned
long
NSuccessful ;
101
unsigned
long
NUnsuccessful ;
103
std::string SuccessString ;
104
#endif
105
} ;
106
107
#endif // ndef SH_DFSAPHEURISTIC
Generated on Mon Jan 14 2013 04:45:06 for steghide by
1.8.3