def _jt_from_chordal_graph(self, return_junction_tree): """ Creates a Junction tree with appropriate edges from a graph which is known to be chordal Parameters ---------- return_junction_tree: return the junction tree, if true else return tree-width """ from pgmpy.base import JunctionTree if return_junction_tree: cliques = nx.chordal_graph_cliques(self) jt = JunctionTree() jtnode = 0 for max_clique in cliques: jtnode += 1 jt.add_node(jtnode) jt.node[jtnode]["clique_nodes"] = max_clique jt.add_jt_edges() return jt else: return nx.chordal_graph_treewidth(self)
def clique_size(self): if len(self._arcs) == 0: g = self.to_nx() return nx.chordal_graph_treewidth(g) + 1 else: return max(cc.clique_size() for cc in self.chain_components())
def test_graph_treewidth(self): with pytest.raises(nx.NetworkXError, match="Input graph is not chordal"): nx.chordal_graph_treewidth(self.non_chordal_G)