Формула: f(x) = (-1)^{f(0)} * prod_{i=1}^{n-1} (-1)^{x_i x_n}
Расшифровка формулы:
- f(x) - заданная функция, где x = (x_1, x_2, ..., x_n) - входные данные, n - количество кубитов
- (-1)^{f(0)} - если значение f(0) равно 1, то произведение будет равно -1, иначе - 1
- prod_{i=1}^{n-1} - произведение от i=1 до n-1 включительно
- (-1)^{x_i x_n} - для каждой пары i и n, если x_i и x_n равны 1, то произведение будет равно -1, иначе - 1
Интуиция за формулой:
- Так как функция f должна быть константной или сбалансированной, мы можем использовать значения x_i исключительно для проверки, сбалансирована ли функция f (т.е. есть ли паттерн во входных значениях, который соответствует сбалансированному выходу функции f).
- Переменная f(0) используется для приведения функции к более простой форме. Таким образом, если f(0)=0, то формула ничего не изменится; если f(0)=1, то мы можем поменять знак всего выражения, т.к. умножение на -1 ничего не изменит в вычислениях.
- (-1)^{x_i x_n} для каждой