pub struct JunctionTree {
pub cliques: Vec<Clique>,
pub edges: Vec<JunctionTreeEdge>,
pub var_to_cliques: HashMap<String, Vec<usize>>,
pub calibrated: bool,
}Expand description
Junction tree structure for exact inference.
Fields§
§cliques: Vec<Clique>Cliques in the tree
edges: Vec<JunctionTreeEdge>Edges connecting cliques
var_to_cliques: HashMap<String, Vec<usize>>Variable to clique mapping (for query efficiency)
calibrated: boolWhether the tree has been calibrated
Implementations§
Source§impl JunctionTree
impl JunctionTree
Sourcepub fn from_factor_graph(graph: &FactorGraph) -> Result<Self>
pub fn from_factor_graph(graph: &FactorGraph) -> Result<Self>
Build a junction tree from a factor graph.
This implements the complete junction tree construction algorithm:
- Moralize the graph (if directed)
- Triangulate to create a chordal graph
- Identify maximal cliques
- Build a junction tree satisfying the running intersection property
Sourcepub fn calibrate(&mut self) -> Result<()>
pub fn calibrate(&mut self) -> Result<()>
Calibrate the junction tree by passing messages.
This implements the message passing schedule for exact inference.
Sourcepub fn query_marginal(&self, variable: &str) -> Result<ArrayD<f64>>
pub fn query_marginal(&self, variable: &str) -> Result<ArrayD<f64>>
Query marginal probability for a variable.
Sourcepub fn query_joint_marginal(&self, variables: &[String]) -> Result<ArrayD<f64>>
pub fn query_joint_marginal(&self, variables: &[String]) -> Result<ArrayD<f64>>
Query joint marginal over multiple variables.
Sourcepub fn treewidth(&self) -> usize
pub fn treewidth(&self) -> usize
Get the treewidth of this junction tree.
The treewidth is the size of the largest clique minus 1.
Sourcepub fn verify_running_intersection_property(&self) -> bool
pub fn verify_running_intersection_property(&self) -> bool
Check if the junction tree satisfies the running intersection property.
For every variable X, the set of cliques containing X forms a connected subtree.
Trait Implementations§
Source§impl Clone for JunctionTree
impl Clone for JunctionTree
Source§fn clone(&self) -> JunctionTree
fn clone(&self) -> JunctionTree
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for JunctionTree
impl Debug for JunctionTree
Auto Trait Implementations§
impl Freeze for JunctionTree
impl RefUnwindSafe for JunctionTree
impl Send for JunctionTree
impl Sync for JunctionTree
impl Unpin for JunctionTree
impl UnwindSafe for JunctionTree
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.