#ifndef __fpa__Base__Dijkstra__h__
#define __fpa__Base__Dijkstra__h__
-#include <vector>
-#include <fpa/Config.h>
-#include <itkFunctionBase.h>
-#include <fpa/Base/DijkstraCostFunctionBase.h>
+#include <fpa/Base/PriorityQueueAlgorithm.h>
namespace fpa
{
*/
template< class _TSuperclass, class _TMST >
class Dijkstra
- : public _TSuperclass
+ : public fpa::Base::PriorityQueueAlgorithm< _TSuperclass >
{
public:
- typedef Dijkstra Self;
- typedef _TSuperclass Superclass;
- typedef itk::SmartPointer< Self > Pointer;
- typedef itk::SmartPointer< const Self > ConstPointer;
+ typedef Dijkstra Self;
+ typedef fpa::Base::PriorityQueueAlgorithm< _TSuperclass > Superclass;
+ typedef itk::SmartPointer< Self > Pointer;
+ typedef itk::SmartPointer< const Self > ConstPointer;
typedef _TMST TMST;
typedef typename Superclass::TOutput TOutput;
typedef typename Superclass::TVertex TVertex;
- typedef itk::FunctionBase< TOutput, TOutput > TCostConversionFunction;
- typedef DijkstraCostFunctionBase< TVertex, TOutput > TCostFunction;
-
protected:
typedef typename Superclass::_TQueueNode _TQueueNode;
- struct _TQueueNodeCompare
- {
- bool operator( )( const _TQueueNode& a, const _TQueueNode& b )
- {
- return( b.Result < a.Result );
- }
- };
- typedef std::vector< _TQueueNode > _TQueue;
public:
itkTypeMacro( Dijkstra, Algorithm );
- itkGetObjectMacro( CostFunction, TCostFunction );
- itkGetObjectMacro( CostConversionFunction, TCostConversionFunction );
- itkSetObjectMacro( CostFunction, TCostFunction );
- itkSetObjectMacro( CostConversionFunction, TCostConversionFunction );
-
public:
_TMST* GetMinimumSpanningTree( );
const _TMST* GetMinimumSpanningTree( ) const;
virtual bool _UpdateValue(
_TQueueNode& v, const _TQueueNode& p
) override;
- virtual unsigned long _QueueSize( ) const override;
- virtual void _QueueClear( ) override;
- virtual void _QueuePush( const _TQueueNode& node ) override;
- virtual _TQueueNode _QueuePop( ) override;
private:
// Purposely not defined
Self& operator=( const Self& other );
protected:
- _TQueue m_Queue;
- typename TCostFunction::Pointer m_CostFunction;
- typename TCostConversionFunction::Pointer m_CostConversionFunction;
-
unsigned long m_MSTIndex;
};