Skip to main content

TropicalGroebnerComputer

Struct TropicalGroebnerComputer 

Source
pub struct TropicalGroebnerComputer {
    pub weight: Vec<f64>,
    pub generators: Vec<Polynomial>,
    pub nvars: usize,
}
Expand description

A tropical Gröbner basis computation for a weighted ideal.

Given an ideal I ⊆ k[x_1,…,x_n] and a weight vector w ∈ R^n, the initial ideal in_w(I) is generated by {in_w(f) : f ∈ I}. The tropical variety Trop(I) = {w : in_w(I) contains no monomial}.

Fields§

§weight: Vec<f64>

The weight vector w.

§generators: Vec<Polynomial>

The ideal generators.

§nvars: usize

Number of variables.

Implementations§

Source§

impl TropicalGroebnerComputer

Source

pub fn new(weight: Vec<f64>, generators: Vec<Polynomial>, nvars: usize) -> Self

Create a new tropical Gröbner computer.

Source

pub fn weighted_degree(&self, m: &Monomial) -> f64

Compute the weighted degree of a monomial m w.r.t. w: w(m) = ∑_i w_i · m_i.

Source

pub fn initial_form(&self, f: &Polynomial) -> Polynomial

Compute the initial form in_w(f): keep only terms achieving the maximum weighted degree.

Source

pub fn is_in_tropical_variety(&self) -> bool

Check if the weight vector w is in the tropical variety of the ideal (heuristic: check if no initial form of any generator is a monomial).

Source

pub fn tropical_monomial_count(&self) -> usize

Compute the tropical degree: number of generators whose initial form is a monomial.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.