[][src]Trait contest_algorithms::arq_tree::ArqSpec

pub trait ArqSpec {
    type F;
    type M;
    fn compose(f: &Self::F, g: &Self::F) -> Self::F;
fn apply(f: &Self::F, a: &Self::M) -> Self::M;
fn op(a: &Self::M, b: &Self::M) -> Self::M;
fn identity() -> Self::M; }

Associated Types

type F

Type of data representing an endomorphism.

type M

Type of monoid elements.

Loading content...

Required methods

fn compose(f: &Self::F, g: &Self::F) -> Self::F

For eager updates, compose() ho be unimplemented!(). For lazy updates: Require for all f,g,a: apply(compose(f, g), a) = apply(f, apply(g, a))

fn apply(f: &Self::F, a: &Self::M) -> Self::M

For eager updates, apply() can assume to act on a leaf. For lazy updates: Require for all f,a,b: apply(f, op(a, b)) = op(apply(f, a), apply(f, b))

fn op(a: &Self::M, b: &Self::M) -> Self::M

Require for all a,b,c: op(a, op(b, c)) = op(op(a, b), c)

fn identity() -> Self::M

Require for all a: op(a, identity()) = op(identity(), a) = a

Loading content...

Implementors

impl ArqSpec for AssignMin[src]

type F = i64

type M = i64

impl ArqSpec for AssignSum[src]

type F = i64

type M = (i64, i64)

impl ArqSpec for SupplyDemand[src]

type F = (i64, i64)

type M = (i64, i64, i64)

Loading content...