Google OR-Tools v9.11
a fast and portable software suite for combinatorial optimization
Loading...
Searching...
No Matches
util::ReverseArcMixedGraph< NodeIndexType, ArcIndexType > Class Template Reference

#include <graph.h>

Inheritance diagram for util::ReverseArcMixedGraph< NodeIndexType, ArcIndexType >:
util::BaseGraph< int32_t, int32_t, true >

Classes

class  IncomingArcIterator
 
class  OppositeIncomingArcIterator
 
class  OutgoingArcIterator
 
class  OutgoingOrOppositeIncomingArcIterator
 

Public Member Functions

 ReverseArcMixedGraph ()
 
 ReverseArcMixedGraph (NodeIndexType num_nodes, ArcIndexType arc_capacity)
 
ArcIndexType OutDegree (NodeIndexType node) const
 
ArcIndexType InDegree (NodeIndexType node) const
 
BeginEndWrapper< OutgoingArcIteratorOutgoingArcs (NodeIndexType node) const
 
BeginEndWrapper< IncomingArcIteratorIncomingArcs (NodeIndexType node) const
 
BeginEndWrapper< OutgoingOrOppositeIncomingArcIteratorOutgoingOrOppositeIncomingArcs (NodeIndexType node) const
 
BeginEndWrapper< OppositeIncomingArcIteratorOppositeIncomingArcs (NodeIndexType node) const
 
BeginEndWrapper< OutgoingArcIteratorOutgoingArcsStartingFrom (NodeIndexType node, ArcIndexType from) const
 
BeginEndWrapper< IncomingArcIteratorIncomingArcsStartingFrom (NodeIndexType node, ArcIndexType from) const
 
BeginEndWrapper< OutgoingOrOppositeIncomingArcIteratorOutgoingOrOppositeIncomingArcsStartingFrom (NodeIndexType node, ArcIndexType from) const
 
BeginEndWrapper< OppositeIncomingArcIteratorOppositeIncomingArcsStartingFrom (NodeIndexType node, ArcIndexType from) const
 
absl::Span< const NodeIndexType > operator[] (NodeIndexType node) const
 
ArcIndexType OppositeArc (ArcIndexType arc) const
 
NodeIndexType Head (ArcIndexType arc) const
 
NodeIndexType Tail (ArcIndexType arc) const
 
void ReserveArcs (ArcIndexType bound) override
 
void AddNode (NodeIndexType node)
 
ArcIndexType AddArc (NodeIndexType tail, NodeIndexType head)
 
void Build ()
 
void Build (std::vector< ArcIndexType > *permutation)
 
bool IsArcValid (ArcIndexType arc) const
 
- Public Member Functions inherited from util::BaseGraph< int32_t, int32_t, true >
 BaseGraph ()
 
 BaseGraph (const BaseGraph &)=default
 
BaseGraphoperator= (const BaseGraph &)=default
 
virtual ~BaseGraph ()=default
 
int32_t num_nodes () const
 
int32_t size () const
 
int32_t num_arcs () const
 Returns the number of valid arcs in the graph.
 
IntegerRange< NodeIndexAllNodes () const
 BaseGraph implementation -------------------------------------------------—.
 
IntegerRange< ArcIndexAllForwardArcs () const
 
bool IsNodeValid (int32_t node) const
 Returns true if the given node is a valid node of the graph.
 
bool IsArcValid (int32_t arc) const
 
int32_t node_capacity () const
 Capacity reserved for future nodes, always >= num_nodes_.
 
int32_t arc_capacity () const
 Capacity reserved for future arcs, always >= num_arcs_.
 
virtual void ReserveNodes (int32_t bound)
 
virtual void ReserveArcs (int32_t bound)
 
void Reserve (int32_t node_capacity, int32_t arc_capacity)
 
void FreezeCapacities ()
 
void GroupForwardArcsByFunctor (const A &a, B *b)
 
int32_t max_end_arc_index () const
 

Additional Inherited Members

- Public Types inherited from util::BaseGraph< int32_t, int32_t, true >
typedef int32_t NodeIndex
 
typedef int32_t ArcIndex
 
- Static Public Attributes inherited from util::BaseGraph< int32_t, int32_t, true >
static const int32_t kNilNode
 
static const int32_t kNilArc
 
- Protected Member Functions inherited from util::BaseGraph< int32_t, int32_t, true >
void ComputeCumulativeSum (std::vector< int32_t > *v)
 Functions commented when defined because they are implementation details.
 
void BuildStartAndForwardHead (SVector< int32_t > *head, std::vector< int32_t > *start, std::vector< int32_t > *permutation)
 
- Protected Attributes inherited from util::BaseGraph< int32_t, int32_t, true >
int32_t num_nodes_
 
int32_t node_capacity_
 
int32_t num_arcs_
 
int32_t arc_capacity_
 
bool const_capacities_
 

Detailed Description

template<typename NodeIndexType = int32_t, typename ArcIndexType = int32_t>
class util::ReverseArcMixedGraph< NodeIndexType, ArcIndexType >

This graph is a mix between the ReverseArcListGraph and the ReverseArcStaticGraph. It uses less memory:

Definition at line 656 of file graph.h.

Constructor & Destructor Documentation

◆ ReverseArcMixedGraph() [1/2]

template<typename NodeIndexType = int32_t, typename ArcIndexType = int32_t>
util::ReverseArcMixedGraph< NodeIndexType, ArcIndexType >::ReverseArcMixedGraph ( )
inline

Definition at line 667 of file graph.h.

◆ ReverseArcMixedGraph() [2/2]

template<typename NodeIndexType = int32_t, typename ArcIndexType = int32_t>
util::ReverseArcMixedGraph< NodeIndexType, ArcIndexType >::ReverseArcMixedGraph ( NodeIndexType num_nodes,
ArcIndexType arc_capacity )
inline

Definition at line 668 of file graph.h.

Member Function Documentation

◆ AddArc()

template<typename NodeIndexType , typename ArcIndexType >
ArcIndexType util::ReverseArcMixedGraph< NodeIndexType, ArcIndexType >::AddArc ( NodeIndexType tail,
NodeIndexType head )

We inverse head and tail here because it is more convenient this way during build time, see Build().

Definition at line 2052 of file graph.h.

◆ AddNode()

template<typename NodeIndexType , typename ArcIndexType >
void util::ReverseArcMixedGraph< NodeIndexType, ArcIndexType >::AddNode ( NodeIndexType node)

Definition at line 2044 of file graph.h.

◆ Build() [1/2]

template<typename NodeIndexType = int32_t, typename ArcIndexType = int32_t>
void util::ReverseArcMixedGraph< NodeIndexType, ArcIndexType >::Build ( )
inline

Definition at line 714 of file graph.h.

◆ Build() [2/2]

template<typename NodeIndexType , typename ArcIndexType >
void util::ReverseArcMixedGraph< NodeIndexType, ArcIndexType >::Build ( std::vector< ArcIndexType > * permutation)

Fill tails.

Fill information for iterating over reverse arcs.

Definition at line 2066 of file graph.h.

◆ Head()

template<typename NodeIndexType , typename ArcIndexType >
NodeIndexType util::ReverseArcMixedGraph< NodeIndexType, ArcIndexType >::Head ( ArcIndexType arc) const
Todo
(user): support Head() and Tail() before Build(), like StaticGraph<>.

Definition at line 2021 of file graph.h.

◆ IncomingArcs()

template<typename NodeIndexType = int32_t, typename ArcIndexType = int32_t>
BeginEndWrapper< IncomingArcIterator > util::ReverseArcMixedGraph< NodeIndexType, ArcIndexType >::IncomingArcs ( NodeIndexType node) const

◆ IncomingArcsStartingFrom()

template<typename NodeIndexType = int32_t, typename ArcIndexType = int32_t>
BeginEndWrapper< IncomingArcIterator > util::ReverseArcMixedGraph< NodeIndexType, ArcIndexType >::IncomingArcsStartingFrom ( NodeIndexType node,
ArcIndexType from ) const

◆ InDegree()

template<typename NodeIndexType , typename ArcIndexType >
ArcIndexType util::ReverseArcMixedGraph< NodeIndexType, ArcIndexType >::InDegree ( NodeIndexType node) const

Definition at line 1998 of file graph.h.

◆ IsArcValid()

template<typename NodeIndexType = int32_t, typename ArcIndexType = int32_t>
bool util::BaseGraph< NodeIndexType, ArcIndexType, HasReverseArcs >::IsArcValid ( ArcIndexType arc) const
inline

Returns true if the given arc is a valid arc of the graph.

Note
the arc validity range changes for graph with reverse arcs.

Definition at line 230 of file graph.h.

◆ operator[]()

template<typename NodeIndexType , typename ArcIndexType >
absl::Span< const NodeIndexType > util::ReverseArcMixedGraph< NodeIndexType, ArcIndexType >::operator[] ( NodeIndexType node) const

This loops over the heads of the OutgoingArcs(node). It is just a more convenient way to achieve this. Moreover this interface is used by some graph algorithms.

Definition at line 2007 of file graph.h.

◆ OppositeArc()

template<typename NodeIndexType , typename ArcIndexType >
ArcIndexType util::ReverseArcMixedGraph< NodeIndexType, ArcIndexType >::OppositeArc ( ArcIndexType arc) const

Definition at line 2014 of file graph.h.

◆ OppositeIncomingArcs()

template<typename NodeIndexType = int32_t, typename ArcIndexType = int32_t>
BeginEndWrapper< OppositeIncomingArcIterator > util::ReverseArcMixedGraph< NodeIndexType, ArcIndexType >::OppositeIncomingArcs ( NodeIndexType node) const

◆ OppositeIncomingArcsStartingFrom()

template<typename NodeIndexType = int32_t, typename ArcIndexType = int32_t>
BeginEndWrapper< OppositeIncomingArcIterator > util::ReverseArcMixedGraph< NodeIndexType, ArcIndexType >::OppositeIncomingArcsStartingFrom ( NodeIndexType node,
ArcIndexType from ) const

◆ OutDegree()

template<typename NodeIndexType , typename ArcIndexType >
ArcIndexType util::ReverseArcMixedGraph< NodeIndexType, ArcIndexType >::OutDegree ( NodeIndexType node) const

Definition at line 1992 of file graph.h.

◆ OutgoingArcs()

template<typename NodeIndexType = int32_t, typename ArcIndexType = int32_t>
BeginEndWrapper< OutgoingArcIterator > util::ReverseArcMixedGraph< NodeIndexType, ArcIndexType >::OutgoingArcs ( NodeIndexType node) const

◆ OutgoingArcsStartingFrom()

template<typename NodeIndexType = int32_t, typename ArcIndexType = int32_t>
BeginEndWrapper< OutgoingArcIterator > util::ReverseArcMixedGraph< NodeIndexType, ArcIndexType >::OutgoingArcsStartingFrom ( NodeIndexType node,
ArcIndexType from ) const

◆ OutgoingOrOppositeIncomingArcs()

template<typename NodeIndexType = int32_t, typename ArcIndexType = int32_t>
BeginEndWrapper< OutgoingOrOppositeIncomingArcIterator > util::ReverseArcMixedGraph< NodeIndexType, ArcIndexType >::OutgoingOrOppositeIncomingArcs ( NodeIndexType node) const

◆ OutgoingOrOppositeIncomingArcsStartingFrom()

template<typename NodeIndexType = int32_t, typename ArcIndexType = int32_t>
BeginEndWrapper< OutgoingOrOppositeIncomingArcIterator > util::ReverseArcMixedGraph< NodeIndexType, ArcIndexType >::OutgoingOrOppositeIncomingArcsStartingFrom ( NodeIndexType node,
ArcIndexType from ) const

◆ ReserveArcs()

template<typename NodeIndexType , typename ArcIndexType >
void util::ReverseArcMixedGraph< NodeIndexType, ArcIndexType >::ReserveArcs ( ArcIndexType bound)
override

Definition at line 2036 of file graph.h.

◆ Tail()

template<typename NodeIndexType , typename ArcIndexType >
NodeIndexType util::ReverseArcMixedGraph< NodeIndexType, ArcIndexType >::Tail ( ArcIndexType arc) const

Definition at line 2029 of file graph.h.


The documentation for this class was generated from the following file: