#include <arcane/utils/DirectedAcyclicGraphT.h>
Classes | |
class | SortedElementSet |
Types publics | |
typedef GraphBaseT< VertexType, EdgeType > | Base |
typedef SortedElementSet< typename Base::EdgeTypeRefArray > | SortedEdgeSet |
typedef SortedElementSet< typename Base::VertexTypeRefArray > | SortedVertexSet |
typedef std::map< typename Base::VertexTypeConstRef, Integer > | VertexLevelMap |
typedef std::map< typename Base::EdgeTypeConstRef, Integer > | EdgeLevelMap |
typedef std::set< std::pair< VertexType, Integer >, std::function< bool(std::pair< VertexType, Integer >, std::pair< VertexType, Integer >)> > | VertexLevelSet |
![]() | |
typedef std::reference_wrapper< VertexType > | VertexTypeRef |
typedef std::reference_wrapper< const VertexType > | VertexTypeConstRef |
typedef std::reference_wrapper< EdgeType > | EdgeTypeRef |
typedef std::reference_wrapper< const EdgeType > | EdgeTypeConstRef |
typedef std::list< VertexType > | VertexList |
typedef std::list< EdgeType > | EdgeList |
typedef SharedArray< VertexTypeRef > | VertexTypeRefArray |
typedef SharedArray< VertexTypeConstRef > | VertexTypeConstRefArray |
typedef SharedArray< EdgeTypeRef > | EdgeTypeRefArray |
typedef SharedArray< EdgeTypeConstRef > | EdgeTypeConstRefArray |
typedef std::map< VertexTypeConstRef, std::pair< VertexTypeRefArray, EdgeTypeRefArray > > | AdjacencyListType |
typedef std::pair< VertexTypeRef, VertexTypeRef > | VertexPair |
typedef std::map< EdgeTypeConstRef, VertexPair > | EdgeToVertexMap |
typedef IterableEnsembleT< VertexList > | VertexSet |
typedef IterableEnsembleT< EdgeList > | EdgeSet |
typedef IterableEnsembleT< EdgeTypeRefArray > | ConnectedEdgeSet |
typedef VertexType | VertexRef |
typedef EdgeType | EdgeRef |
Fonctions membres publiques | |
DirectedAcyclicGraphT (ITraceMng *trace_mng) | |
virtual | ~DirectedAcyclicGraphT () |
void | addEdge (const VertexType &source_vertex, const VertexType &target_vertex, const EdgeType &source_to_target_edge) |
void | addEdge (VertexType &&source_vertex, VertexType &&target_vertex, EdgeType &&source_to_target_edge) |
SortedVertexSet | topologicalSort () |
SortedEdgeSet | spanningTree () |
void | print () |
bool | hasCycle () |
![]() | |
void | addEdge (const VertexType &source_vertex, const VertexType &target_vertex, const EdgeType &source_to_target_edge) |
Les arêtes multiples (constituées des mêmes noeuds source et target) ne sont pas autorisées (throw FatalErrorException) | |
void | addEdge (VertexType &&source_vertex, VertexType &&target_vertex, EdgeType &&source_to_target_edge) |
template<class Vertex, class Edge> | |
void | _addEdge (Vertex source_vertex, Vertex target_vertex, Edge source_to_target_edge) |
EdgeType * | getEdge (const VertexType &source_vertex, const VertexType &target_vertex) |
Renvoie un pointeur vers l'instance d'EdgeType stockée dans le graphe ou nullptr si non trouvé. | |
const EdgeType * | getEdge (const VertexType &source_vertex, const VertexType &target_vertex) const |
Renvoie un pointeur vers l'instance d'EdgeType stockée dans le graphe ou nullptr si non trouvé. | |
EdgeType * | _getEdge (const VertexType &source_vertex, const VertexType &target_vertex) |
VertexType * | getSourceVertex (const EdgeType &edge) |
const VertexType * | getSourceVertex (const EdgeType &edge) const |
VertexType * | getTargetVertex (const EdgeType &edge) |
const VertexType * | getTargetVertex (const EdgeType &edge) const |
VertexSet | vertices () |
EdgeSet | edges () |
ConnectedEdgeSet | inEdges (const VertexType &vertex) |
ConnectedEdgeSet | outEdges (const VertexType &vertex) |
Types privés | |
typedef VertexType & | VertexRef |
typedef EdgeType & | EdgeRef |
Fonctions membres privées | |
void | _computeVertexLevels () |
void | _computeVertexLevel (const VertexType &vertex, Integer level) |
Integer | _computeEdgeLevel (const EdgeType &edge) |
void | _printGraphEntry (const typename Base::AdjacencyListType::value_type &vertex_entry) |
Attributs privés | |
std::set< typename Base::VertexTypeConstRef > | m_colored_vertices |
VertexLevelMap | m_vertex_level_map |
EdgeLevelMap | m_edge_level_map |
bool | m_compute_vertex_levels |
Membres hérités additionnels | |
![]() | |
GraphBaseT (ITraceMng *trace_mng) | |
virtual | ~GraphBaseT () |
![]() | |
ITraceMng * | m_trace_mng |
VertexList | m_vertices |
EdgeList | m_edges |
AdjacencyListType | m_adjacency_list |
AdjacencyListType | m_adjacency_list_transposed |
source_vertex -> target_vertices | |
EdgeToVertexMap | m_edge_to_vertex_map |
target_vertex -> source_vertices | |
Template class for DirectedAcyclicGraph. VertexType must implement a less comparison operator.
Définition à la ligne 38 du fichier DirectedAcyclicGraphT.h.
typedef GraphBaseT<VertexType,EdgeType> Arcane::DirectedAcyclicGraphT< VertexType, EdgeType >::Base |
Définition à la ligne 108 du fichier DirectedAcyclicGraphT.h.
typedef std::map<typename Base::EdgeTypeConstRef,Integer> Arcane::DirectedAcyclicGraphT< VertexType, EdgeType >::EdgeLevelMap |
Définition à la ligne 112 du fichier DirectedAcyclicGraphT.h.
|
private |
Définition à la ligne 42 du fichier DirectedAcyclicGraphT.h.
typedef SortedElementSet<typename Base::EdgeTypeRefArray> Arcane::DirectedAcyclicGraphT< VertexType, EdgeType >::SortedEdgeSet |
Définition à la ligne 109 du fichier DirectedAcyclicGraphT.h.
typedef SortedElementSet<typename Base::VertexTypeRefArray> Arcane::DirectedAcyclicGraphT< VertexType, EdgeType >::SortedVertexSet |
Définition à la ligne 110 du fichier DirectedAcyclicGraphT.h.
typedef std::map<typename Base::VertexTypeConstRef,Integer> Arcane::DirectedAcyclicGraphT< VertexType, EdgeType >::VertexLevelMap |
Définition à la ligne 111 du fichier DirectedAcyclicGraphT.h.
typedef std::set<std::pair<VertexType,Integer>, std::function<bool (std::pair<VertexType,Integer>,std::pair<VertexType,Integer>)> > Arcane::DirectedAcyclicGraphT< VertexType, EdgeType >::VertexLevelSet |
Définition à la ligne 113 du fichier DirectedAcyclicGraphT.h.
|
private |
Définition à la ligne 41 du fichier DirectedAcyclicGraphT.h.
|
inline |
Constructeur de la classe
Définition à la ligne 46 du fichier DirectedAcyclicGraphT.h.
Références Arcane::GraphBaseT< VertexType, EdgeType >::GraphBaseT().
|
inlinevirtual |
Destructeur de la classe
Définition à la ligne 51 du fichier DirectedAcyclicGraphT.h.
|
inlineprivate |
Définition à la ligne 226 du fichier DirectedAcyclicGraphT.h.
|
inlineprivate |
Définition à la ligne 199 du fichier DirectedAcyclicGraphT.h.
|
inlineprivate |
Définition à la ligne 189 du fichier DirectedAcyclicGraphT.h.
|
inlineprivate |
Définition à la ligne 238 du fichier DirectedAcyclicGraphT.h.
|
inline |
Définition à la ligne 115 du fichier DirectedAcyclicGraphT.h.
|
inline |
Définition à la ligne 121 du fichier DirectedAcyclicGraphT.h.
|
inline |
La detection de cycle se fait avec un pattern lazy qui n'est lancé que lors de l'appel à topologicalSort() et print(). Cette méthode permet de savoir si le graphe contient un cycle (ce qui produirait l'échec de topologicalSort())
Définition à la ligne 170 du fichier DirectedAcyclicGraphT.h.
|
inline |
Définition à la ligne 153 du fichier DirectedAcyclicGraphT.h.
|
inline |
Définition à la ligne 137 du fichier DirectedAcyclicGraphT.h.
|
inline |
Définition à la ligne 127 du fichier DirectedAcyclicGraphT.h.
|
private |
Définition à la ligne 182 du fichier DirectedAcyclicGraphT.h.
|
private |
Définition à la ligne 185 du fichier DirectedAcyclicGraphT.h.
|
private |
Définition à la ligne 184 du fichier DirectedAcyclicGraphT.h.
|
private |
Définition à la ligne 183 du fichier DirectedAcyclicGraphT.h.