예제 #1
0
파일: test_model.py 프로젝트: dirko/pyugm
    def test_get_largest_sepset_grid(self):
        a = DiscreteFactor([0, 1])
        b = DiscreteFactor([1, 2, 3])
        c = DiscreteFactor([3, 4, 5])
        d = DiscreteFactor([5, 6])
        e = DiscreteFactor([0, 7, 8])
        f = DiscreteFactor([8, 2, 9, 10])
        g = DiscreteFactor([10, 4, 11, 12])
        h = DiscreteFactor([12, 13, 6])
        i = DiscreteFactor([7, 14])
        j = DiscreteFactor([14, 9, 15])
        k = DiscreteFactor([15, 11, 16])
        l = DiscreteFactor([16, 13])

        # a{0 1} ---[1]--- b{1 2 3} ---[3]--- c{3 4 5} ---[5]--- d{5 6}
        #   |                  |                   |                  |
        #  [0]                [2]                 [4]                [6]
        #   |                  |                   |                  |
        # e{0 7 8} --[8]-- f{8 2 9 10} --[10]- g{10 4 11 12} -[12]- h{12 13 6}
        #   |                  |                   |                  |
        #  [7]                [9]                 [11]               [13]
        #   |                  |                   |                  |
        # i{7 14} --[14]--j{14 9 15} --[15]-- k{15 11 16} --[16]-- l{16 13}

        model = Model([a, b, c, d, e, f, g, h, i, j, k, l])

        expected_edges = {(a, b), (b, c), (c, d), (a, e), (b, f), (c, g), (d, h),
                          (e, f), (f, g), (g, h), (e, i), (f, j), (g, k), (h, l),
                          (i, j), (j, k), (k, l)}

        print_edge_set(model.edges)
        self._assert_edge_sets_equal(model.edges, expected_edges)
예제 #2
0
파일: test_model.py 프로젝트: dirko/pyugm
    def test_get_largest_sepset_larger(self):
        a = DiscreteFactor([(0, 2), (1, 2), (2, 2)])
        b = DiscreteFactor([(0, 2), (3, 2), (4, 2)])
        c = DiscreteFactor([(1, 2), (2, 2), (5, 3), (6, 3)])

        model = Model([a, b, c])

        # Expect:
        #  a{0 1 2} --[2 3]-- c{1 2 5 6}
        #      \
        #       [0]
        #          \
        #           b{0 3 4}
        print_edge_set(model.edges)
        self._assert_edge_sets_equal(model.edges, {(a, c), (a, b)})
예제 #3
0
파일: test_model.py 프로젝트: dirko/pyugm
    def test_get_largest_sepset_large(self):
        a = DiscreteFactor([0, 1, 2, 3, 4, 5])
        b = DiscreteFactor([1, 2, 3, 4, 5, 6])
        c = DiscreteFactor([3, 4, 5, 6, 8])
        d = DiscreteFactor([0, 1, 2, 7])
        e = DiscreteFactor([1, 7, 8])

        # a{0 1 2 3 4 5} --[1 2 3 4 5]-- b{1 2 3 4 5 6} --[3 4 5 6]-- c{3 4 5 6 8}
        #      \                                                    /
        #    [0 1 2]                                            [8]
        #         \                                           /
        #       d{0 1 2 7} ---------[1 7]---------------   e{1 7 8}

        model = Model([a, b, c, d, e])

        expected_edges = [(a, b), (b, c), (a, d), (d, e), (e, c)]

        print_edge_set(model.edges)
        self._assert_edge_sets_equal(model.edges, expected_edges)