1 #ifndef __FPA__BASE__MINIMUMSPANNINGTREE__H__
2 #define __FPA__BASE__MINIMUMSPANNINGTREE__H__
7 #include <itkSimpleDataObjectDecorator.h>
8 #include <itkSmartPointer.h>
16 template< class V, class C, class VC >
17 class MinimumSpanningTree
18 : public itk::SimpleDataObjectDecorator< std::map< V, std::pair< V, short >, VC > >
21 typedef std::pair< V, short > TNodeInfo;
22 typedef std::map< V, TNodeInfo, VC > TDecorated;
23 typedef MinimumSpanningTree Self;
24 typedef itk::SimpleDataObjectDecorator< TDecorated > Superclass;
25 typedef itk::SmartPointer< Self > Pointer;
26 typedef itk::SmartPointer< const Self > ConstPointer;
29 typedef C TCollisions;
30 typedef VC TVertexCompare;
33 typedef std::vector< unsigned long > _TRow;
34 typedef std::vector< _TRow > _TMatrix;
38 itkTypeMacro( MinimumSpanningTree, B );
40 itkGetConstMacro( Collisions, TCollisions );
43 void SetCollisions( const TCollisions& collisions );
44 void SetParent( const TVertex& v, const TVertex& p, const short& fid )
46 this->Get( )[ v ] = TNodeInfo( p, fid );
51 std::vector< V >& path, const V& a, const V& b
55 MinimumSpanningTree( );
56 virtual ~MinimumSpanningTree( );
58 virtual void _Path( std::vector< V >& path, const V& a ) const;
61 // Purposely not implemented
62 MinimumSpanningTree( const Self& other );
63 Self& operator=( const Self& other );
66 TCollisions m_Collisions;
67 _TMatrix m_FrontPaths;
68 static const unsigned long INF_VALUE;
75 #include <fpa/Base/MinimumSpanningTree.hxx>
77 #endif // __FPA__BASE__MINIMUMSPANNINGTREE__H__