Exemple #1
0
 def test_clique(self):
     """ Clique test """
     algo = NumPyMinimumEigensolver()
     result = algo.compute_minimum_eigenvalue(operator=self.qubit_op, aux_operators=[])
     x = sample_most_likely(result.eigenstate)
     ising_sol = clique.get_graph_solution(x)
     np.testing.assert_array_equal(ising_sol, [1, 1, 1, 1, 1])
     oracle = self._brute_force()
     self.assertEqual(clique.satisfy_or_not(ising_sol, self.w, self.k), oracle)
Exemple #2
0
 def test_clique_vqe(self):
     """ VQE Clique test """
     aqua_globals.random_seed = 10598
     q_i = QuantumInstance(BasicAer.get_backend('statevector_simulator'),
                           seed_simulator=aqua_globals.random_seed,
                           seed_transpiler=aqua_globals.random_seed)
     result = VQE(RealAmplitudes(reps=5, entanglement='linear'),
                  COBYLA(),
                  max_evals_grouped=2,
                  quantum_instance=q_i).compute_minimum_eigenvalue(operator=self.qubit_op)
     x = sample_most_likely(result.eigenstate)
     ising_sol = clique.get_graph_solution(x)
     np.testing.assert_array_equal(ising_sol, [1, 1, 1, 1, 1])
     oracle = self._brute_force()
     self.assertEqual(clique.satisfy_or_not(ising_sol, self.w, self.k), oracle)
    def _brute_force(self):
        # brute-force way: try every possible assignment!
        def bitfield(n, length):
            result = np.binary_repr(n, length)
            return [int(digit) for digit in result]

        nodes = self.num_nodes  # length of the bitstring that represents the assignment
        maximum = 2**nodes
        has_sol = False
        for i in range(maximum):
            cur = bitfield(i, nodes)
            cur_v = clique.satisfy_or_not(np.array(cur), self.w, self.k)
            if cur_v:
                has_sol = True
                break
        return has_sol