Exemple #1
0
    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)
Exemple #2
0
 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)