get_big_h_fixed_points_from_scratch

get_big_h_fixed_points_from_scratch#

iqm.qaoa.tree_calculation.tree_calculation.get_big_h_fixed_points_from_scratch(p, big_d, h, big_gamma, big_beta, basis_list_t=None)#

Recursively implements equations (A23), (A24) and (A25) to obtain the fixed points of the calculation.

Parameters:
  • p (int) – The number of QAOA layers, corresponding to the largest order of the fixed points that we want to calculate.

  • big_d (int) – Graph regularity minus one. Note that in expressions with \(Gamma\), we use \(\sqrt{D}\) in the denominator instead of \(\sqrt{d} = \sqrt{D+1}\), but this just introduces a small factor to the gamma angles.

  • h (float) – The local field of the problem.

  • big_gamma (ndarray[tuple[Any, ...], dtype[float64]]) – The array of the \(\gamma\) angles of the QAOA. The full array, with a 0 in the middle (see A8).

  • big_beta (ndarray[tuple[Any, ...], dtype[float64]]) – The array of the \(\beta\) angles of the QAOA. The full array, with a 0 in the middle (see A8).

  • basis_list_t (list[list[ndarray[tuple[Any, ...], dtype[int8]]]] | None) – For some compatibility, the basis list sorted by the symmetry sectors can be pregenerated and given as an input. Otherwise it’s generated internally.

Returns:

A list of lists of the fixed points. The outer index labels the order of the fixed point and the inner index labels its input. Therefore taking [3][0] of the output returns \(H^{(3)}_{d-1}([-1, -1, -1, 1, -1, -1])\) because [-1, -1, -1, 1, -1, -1] is presumably the first basis state of 3 variables in symmetry sector 3.

Return type:

tuple[list[ndarray[tuple[Any, …], dtype[complex128]]], list[ndarray[tuple[Any, …], dtype[complex128]]]]