#ifndef __FPA__BASE__MINIMUMSPANNINGTREE__H__ #define __FPA__BASE__MINIMUMSPANNINGTREE__H__ #include #include namespace fpa { namespace Base { /** */ template< class V, class C, class B > class MinimumSpanningTree : public B { public: typedef MinimumSpanningTree Self; typedef B Superclass; typedef itk::SmartPointer< Self > Pointer; typedef itk::SmartPointer< const Self > ConstPointer; typedef V TVertex; typedef C TCollisions; protected: typedef std::vector< unsigned long > _TRow; typedef std::vector< _TRow > _TMatrix; public: itkTypeMacro( MinimumSpanningTree, B ); itkGetConstMacro( Collisions, TCollisions ); public: void SetCollisions( const TCollisions& collisions ); virtual void GetPath( std::vector< V >& path, const V& a, const V& b ) const; protected: MinimumSpanningTree( ); virtual ~MinimumSpanningTree( ); virtual void _Path( std::vector< V >& path, const V& a ) const; virtual long _FrontId( const V& v ) const = 0; virtual V _Parent( const V& v ) const = 0; private: // Purposely not implemented MinimumSpanningTree( const Self& other ); Self& operator=( const Self& other ); protected: TCollisions m_Collisions; _TMatrix m_FrontPaths; static const unsigned long INF_VALUE; }; } // ecapseman } // ecapseman #include #endif // __FPA__BASE__MINIMUMSPANNINGTREE__H__ // eof - $RCSfile$