Esempio n. 1
0
    def test_matrix_has_four_loops_and_five_vertices(self):
        a = Transition(D('0.15'), D('56'))
        b = Transition(D('0.85'), D('112'))

        c = Transition(D('0.05'), D('8'))
        d = Transition(D('0.95'), D('16'))

        e = Transition(D('0.05'), D('24'))
        f = Transition(D('0.95'), D('48'))

        g = Transition(D('0.90'), D('40'))
        z = Transition(D('0.10'), D('20'))

        trans_matrix = TransitionMatrix([
            [a, _, b, _, _],
            [_, _, _, _, _],
            [_, _, c, d, _],
            [_, _, _, e, f],
            [_, g, _, _, z],
        ])
        reduce_matrix_size(trans_matrix)

        self.assertTrue(trans_matrix.has_only_source_and_drain())

        trans_from_source_to_drain = trans_matrix._matrix[0][1]
        self.assertEqual(trans_from_source_to_drain.probability, D('1'))

        all_rows_are_ok_after_excluding_first_loop = all(
            check_sum_of_probabilities(row) for row in trans_matrix._matrix
        )
        self.assertTrue(all_rows_are_ok_after_excluding_first_loop)
Esempio n. 2
0
    def test_matrix_has_one_loop_and_four_vertices(self):
        b = Transition(D('0.4'), D('10'))
        a = Transition(D('0.6'), D('20'))

        f = Transition(D('0.4'), D('10'))
        g = Transition(D('0.2'), D('5'))
        d = Transition(D('0.4'), D('15'))

        e = Transition(D('0.8'), D('5'))
        z = Transition(D('0.2'), D('10'))

        trans_matrix = TransitionMatrix([
            [_, _, b, a],
            [_, _, _, _],
            [_, f, g, d],
            [_, e, z, _],
        ])
        reduce_matrix_size(trans_matrix)

        self.assertTrue(trans_matrix.has_only_source_and_drain())

        trans_from_source_to_drain = trans_matrix._matrix[0][1]
        self.assertEqual(trans_from_source_to_drain.probability, D('1'))

        all_rows_are_ok_after_excluding_first_loop = all(
            check_sum_of_probabilities(row) for row in trans_matrix._matrix
        )
        self.assertTrue(all_rows_are_ok_after_excluding_first_loop)
Esempio n. 3
0
    def test_matrix_has_four_loops_and_five_vertices(self):
        a = Transition(D('0.15'), D('56'))
        b = Transition(D('0.85'), D('112'))

        c = Transition(D('0.05'), D('8'))
        d = Transition(D('0.95'), D('16'))

        e = Transition(D('0.05'), D('24'))
        f = Transition(D('0.95'), D('48'))

        g = Transition(D('0.90'), D('40'))
        z = Transition(D('0.10'), D('20'))

        trans_matrix = TransitionMatrix([
            [a, _, b, _, _],
            [_, _, _, _, _],
            [_, _, c, d, _],
            [_, _, _, e, f],
            [_, g, _, _, z],
        ])
        reduce_matrix_size(trans_matrix)

        self.assertTrue(trans_matrix.has_only_source_and_drain())

        trans_from_source_to_drain = trans_matrix._matrix[0][1]
        self.assertEqual(trans_from_source_to_drain.probability, D('1'))

        all_rows_are_ok_after_excluding_first_loop = all(
            check_sum_of_probabilities(row) for row in trans_matrix._matrix)
        self.assertTrue(all_rows_are_ok_after_excluding_first_loop)
Esempio n. 4
0
    def test_matrix_has_one_loop_and_four_vertices(self):
        b = Transition(D('0.4'), D('10'))
        a = Transition(D('0.6'), D('20'))

        f = Transition(D('0.4'), D('10'))
        g = Transition(D('0.2'), D('5'))
        d = Transition(D('0.4'), D('15'))

        e = Transition(D('0.8'), D('5'))
        z = Transition(D('0.2'), D('10'))

        trans_matrix = TransitionMatrix([
            [_, _, b, a],
            [_, _, _, _],
            [_, f, g, d],
            [_, e, z, _],
        ])
        reduce_matrix_size(trans_matrix)

        self.assertTrue(trans_matrix.has_only_source_and_drain())

        trans_from_source_to_drain = trans_matrix._matrix[0][1]
        self.assertEqual(trans_from_source_to_drain.probability, D('1'))

        all_rows_are_ok_after_excluding_first_loop = all(
            check_sum_of_probabilities(row) for row in trans_matrix._matrix)
        self.assertTrue(all_rows_are_ok_after_excluding_first_loop)
Esempio n. 5
0
    def test_sum_of_probabilities_is_equal_to_one_or_zero(self):
        b = Transition(D('0.4'), D('10'))
        a = Transition(D('0.6'), D('20'))

        f = Transition(D('0.5'), D('10'))
        d = Transition(D('0.5'), D('15'))

        e = Transition(D('0.8'), D('5'))
        z = Transition(D('0.2'), D('10'))

        trans_matrix = TransitionMatrix([[_, _, b, a], [_, _, _, _],
                                         [_, f, _, d], [_, e, z, _]])
        trans_matrix.exclude_last_vertex()

        all_rows_are_ok_after_excluding_first_loop = all(
            check_sum_of_probabilities(row) for row in trans_matrix._matrix)
        self.assertTrue(all_rows_are_ok_after_excluding_first_loop)
Esempio n. 6
0
    def test_sum_of_probabilities_is_equal_to_one_or_zero(self):
        b = Transition(D('0.4'), D('10'))
        a = Transition(D('0.6'), D('20'))

        f = Transition(D('0.5'), D('10'))
        d = Transition(D('0.5'), D('15'))

        e = Transition(D('0.8'), D('5'))
        z = Transition(D('0.2'), D('10'))

        trans_matrix = TransitionMatrix([
            [_, _, b, a],
            [_, _, _, _],
            [_, f, _, d],
            [_, e, z, _]
        ])
        trans_matrix.exclude_last_vertex()

        all_rows_are_ok_after_excluding_first_loop = all(
            check_sum_of_probabilities(row) for row in trans_matrix._matrix
        )
        self.assertTrue(all_rows_are_ok_after_excluding_first_loop)