pub struct Graph<TData: Ord, TOp: Ord> { /* private fields */ }
Expand description
Graph
Implementations§
Source§impl<TData: Clone + Copy + Ord, TOp: Clone + Copy + Ord> Graph<TData, TOp>
impl<TData: Clone + Copy + Ord, TOp: Clone + Copy + Ord> Graph<TData, TOp>
Sourcepub fn iter_data(&self) -> NodeIterator<'_, TData> ⓘ
pub fn iter_data(&self) -> NodeIterator<'_, TData> ⓘ
iterator over data node.
Sourcepub fn iter_op(&self) -> NodeIterator<'_, TOp> ⓘ
pub fn iter_op(&self) -> NodeIterator<'_, TOp> ⓘ
iterator over op node.
Sourcepub fn iter_op_given_input(
&self,
var: &TData,
) -> Result<NodeIterator<'_, TOp>, &str>
pub fn iter_op_given_input( &self, var: &TData, ) -> Result<NodeIterator<'_, TOp>, &str>
Return the list of ops that the given variable is the input of the func.
Sourcepub fn iter_op_given_output(
&self,
var: &TData,
) -> Result<NodeIterator<'_, TOp>, &str>
pub fn iter_op_given_output( &self, var: &TData, ) -> Result<NodeIterator<'_, TOp>, &str>
Return the list of ops that the given variable is the output.
Sourcepub fn iter_input_given_op(
&self,
func: &TOp,
) -> Result<NodeIterator<'_, TData>, &str>
pub fn iter_input_given_op( &self, func: &TOp, ) -> Result<NodeIterator<'_, TData>, &str>
Return the list of input given the func.
Sourcepub fn iter_output_given_op(
&self,
func: &TOp,
) -> Result<NodeIterator<'_, TData>, &str>
pub fn iter_output_given_op( &self, func: &TOp, ) -> Result<NodeIterator<'_, TData>, &str>
Return a list of data as the output of the op.
Sourcepub fn drop_data(&mut self, id: &TData) -> Result<TData, &str>
pub fn drop_data(&mut self, id: &TData) -> Result<TData, &str>
Remove a data node, op node and downstream data/op node are removed.
Sourcepub fn drop_op(&mut self, id: &TOp) -> Result<TOp, &str>
pub fn drop_op(&mut self, id: &TOp) -> Result<TOp, &str>
Remvoe an op node, input data node and downstream data/op node are removed.
Sourcepub fn decouple_data_func(
&mut self,
var: &TData,
func: &TOp,
) -> Result<(), AutoDiffError>
pub fn decouple_data_func( &mut self, var: &TData, func: &TOp, ) -> Result<(), AutoDiffError>
Decouple input variable and op
Sourcepub fn decouple_func_data(
&mut self,
func: &TOp,
var: &TData,
) -> Result<(), AutoDiffError>
pub fn decouple_func_data( &mut self, func: &TOp, var: &TData, ) -> Result<(), AutoDiffError>
Decouple op and output variable
Sourcepub fn get_input_edge_data(&self) -> BTreeSet<TData>
pub fn get_input_edge_data(&self) -> BTreeSet<TData>
list data node without upstream op node in a set.
Sourcepub fn get_output_edge_data(&self) -> BTreeSet<TData>
pub fn get_output_edge_data(&self) -> BTreeSet<TData>
list data node without downstream op node in a set.
Sourcepub fn connect(
&mut self,
dti: &[TData],
dto: &[TData],
op: &TOp,
) -> Result<TOp, &str>
pub fn connect( &mut self, dti: &[TData], dto: &[TData], op: &TOp, ) -> Result<TOp, &str>
Connect input data, output data and operation
Sourcepub fn connect_aux(
&mut self,
input_data: &[TData],
output_data: &[TData],
op: &TOp,
) -> Result<TOp, &str>
pub fn connect_aux( &mut self, input_data: &[TData], output_data: &[TData], op: &TOp, ) -> Result<TOp, &str>
Auxilary connect, This allows the graph to support loop.
Sourcepub fn walk<F>(
&self,
start_set: &[TData],
forward: bool,
closure: F,
) -> Result<(), BTreeSet<TData>>
pub fn walk<F>( &self, start_set: &[TData], forward: bool, closure: F, ) -> Result<(), BTreeSet<TData>>
Walk through the graph with a starting set of data nodes. Go through backwards if forward is false. The closure call provides the side-effect.
This Walk() guarantee the input of visiting op is already visited or it’s an input.