Рубрики
Без рубрики

Алгоритм Deutsch

На этой неделе я решил покрыть алгоритм Deutsch. Алгоритм Deutsch – это простая демонстрация Qu … Tagged Python, Cirq.

На этой неделе я решил покрыть алгоритм Deutsch. Алгоритм Deutsch – это простая демонстрация квантовой параллелизма и помех. Итак, сначала позвольте мне объяснить квантовую параллелизм и помехи.

Квантовая параллельность

Квантовая параллелизм – это способность квантовой памяти существовать в суперпозиции состояний. Таким образом, это означает, что любой бит или кубит памяти может одновременно быть 1 или 0. Это позволяет более быстрым расчетам сложных проблемах, поскольку весь диапазон переменных можно проверить одновременно. Это, однако, приводит к нескольким результатам того, что может быть решение. Эти выходы прикреплены к вероятности того, насколько правильны ответ. Одним из главных применений алгоритма Deutsch является имитировать эту проблему и вывести ответ.

Квантовые помехи

Квантовая вмешательство является результатом суперпозиции. В квантовых компьютерах это позволяет распад нескольких состояний в вероятностях желаемого результата. Затем, используя алгоритм, похожий на тот, который пояснил позже в этой статье, решение может быть легко определено из этих переменных.

Что такое алгоритм Deutsch

Алгоритм Deutsch был создан Дэвидом Deutsch и Richard Jozsa в 1992 году как простой пример того, как квантовые компьютеры могут легко превзойти стандартный компьютер. Алгоритм определяет, является ли функция сбалансированной или постоянной на основе двух отдельных входов. Если эти входные данные одинаковы, функция возвращает ноль, в противном случае он возвращает один. Чтобы решить эту функцию, используя классический компьютер, оба входа должны рассматриваться отдельно, но с использованием квантового компьютера это можно сделать одновременно из-за свойств, объясненных в первых двух разделах.

Чтобы перевести это в код сначала мы должны импортировать случайные, CIRQ, и сделать нашу жизнь легче импортировать некоторые из методов CIRQ

import random 
import cirq
from cirq import H, X, CNOT, measure

Тогда мы должны создать два функция помощника. Первая функция делает Oracle, которая определит то, что есть каждое число, а затем возвращает моменты схемы на основе этого номера. Тогда другой создает цепь, которую мы будем использовать к концу основной функции.

def make_oracle(q0, q1, secret_numbers):

    if secret_numbers[0]:
        yield[CNOT(q0,q1), X(q1)] 
        #if the first number is 1 yield 
        #CNOT gate and X gate moments

    if secret_numbers[1]:
        yield CNOT(q0, q1) 
        #if the second number 
        #is 1 yield CNOT gate

def make_circuit(q0, q1, oracle):
    c = cirq.Circuit()

    c.append([X(q1), H(q1), H(q0)]) 
    #append X gate and 
    #two H gates to the circuit

    c.append(oracle) 
    #append oracle to circuit

    c.append([H(q0), measure(q0, key='result')]) 
    #append H gate on first qubit 
    #and then a mesure function to determine the output.

    return c

Теперь, поскольку это сделано, все, что осталось, это создать два линейке, создавать список случайных чисел, вызовите наш помощник функции, а затем запустить их через симулятор.

def main():
    q0, q1 = cirq.LineQubit.range(2) 
    #create 2 qubits

    secret_numbers = [random.randint(0,1) for i in range(2)] 
    #create list of two numbers

    oracle = make_oracle(q0, q1, secret_numbers) 
    #create oracle moment to process 
    #the numbers in the list
    print('Secret function:\nf(x) = <{}>'.format(', '.join(str(e) for e in secret_numbers))) 
    #print out list numbers

    circuit = make_deutsch_circuit(q0,q1, oracle) 
    #create circuit
    print("Circuit:") 
    print(circuit) 
    #print it out

    simulator = cirq.Simulator() 
    #create simulator
    result = simulator.run(circuit)
    #run circuit through simulator
    print('Result of f(0)⊕f(1):') 
    print(result) #print result

if __name__ == '__main__':
    main()

Это простое приложение квантовых компьютеров и в будущем, я опубликую несколько сложных примеров. Я рекомендую вам несколько раз запускать это несколько раз, чтобы увидеть различные выходы и схемы, которые создаются. Для некоторых примеров большего количества ворот или читать на те, которые перечислены здесь, переходят на Ворота .

Оригинал: “https://dev.to/dmarcr1997/deutsch-s-algorithm-4cc”