Beispiel #1
0
    def test_PSOLB_random(self):
        """
        Check if solution computed by PSOL + edge removal is included in the full solution computed by
        Zielonka's algorithm.
        """
        print("test psolb random")
        not_solved_size = []
        for i in range(5, self.number_of_random + 5):
            g = gen.random(i, i / 2, 1, i / 3)
            winning_region_0, winning_region_1 = zielonka.strong_parity_solver_no_strategies(
                g)
            resulting_arena, fatal_region_0, fatal_region_1 = fatal.psolB(
                g, [], [])

            self.assertTrue(elem in winning_region_0
                            for elem in fatal_region_0)
            self.assertTrue(elem in winning_region_1
                            for elem in fatal_region_1)

            # if the game is completely solved by PSOL
            if set(winning_region_0) == set(fatal_region_0) and set(
                    winning_region_1) == set(fatal_region_1):
                self.fully_solved_random += 1
            else:
                not_solved_size.append(i)

        print("Number of random games fully solved by PSOLB = " +
              str(self.fully_solved_random))
        print("Size of games not solved = " + str(not_solved_size) + "\n")
Beispiel #2
0
    def test_recursive_single_priority_random(self):
        """
        Check if solution computed by the recursive algorithm is correct.
        We create random parity games and transform them into generalized parity games by using a copy of the first
        priority function as a second priority function.
        """
        print("test recursive single priority random")
        for i in range(5, self.number_of_random + 5):
            g = gen.random(i, i / 2, 1, i / 3)

            winning_region_0, winning_region_1 = zielonka.strong_parity_solver_no_strategies(
                g)
            computed_winning_0, computed_winning_1 = recursive.generalized_parity_solver(
                g)

            self.assertTrue(set(winning_region_0) == set(computed_winning_0))
            self.assertTrue(set(winning_region_1) == set(computed_winning_1))
Beispiel #3
0
def random_games(i):
    # for some reason this does not work for indices < 5
    j = i + 5
    return generators.random(j, j, 1, j / 3)