Як квантовий комп'ютер робить основну математику на апаратному рівні?


27

Читаючи цю нитку Reddit, я зрозумів, що навіть через пару місяців навчання квантових обчислень я абсолютно не розумію, як працює квантовий комп'ютер.

Щоб зробити питання більш точним, скажімо, у нас є надпровідний 5-кубітний квантовий комп'ютер на базі надпровідного кубіта (як 5-кубітний IBM Quantum Computer). Я набираю за допомогою клавіатури на моніторі (скажімо, у базовій програмі калькулятора, на якій може бути квантовий комп'ютер). Після цього він повинен мені повернути 5 . Але це відбувається на апаратному рівні? Чи надходять якісь електричні сигнали, що відповідають входам 2 , 3 і +, до процесорного блоку комп'ютера? Це якось "ініціалізує" електрони пари Купера? Що станеться з кубітним електронним кубітом пари Купера після цього (здогадуйтесь, що над ними працювали б якісь чорні скриньки )? Як це, нарешті, повертає мені вихід2+3523+ квантові ворота , які в свою чергу знову5 ?

Я здивований тим, як мало я міг придумати основні роботи квантового комп'ютера шляхом пошуку в мережі.

Відповіді:


27

По-перше, a класичний комп'ютер виконує основні математики на апаратному рівні в арифметичній та логічній одиниці (АЛУ). Логічні ворота приймають низькі та високі вхідні напруги та використовують CMOS для реалізації логічних воріт, що дозволяють виконувати окремі ворота та створювати їх для виконання великих, складніших операцій. У цьому сенсі введення на клавіатурі - це відправлення електричних сигналів, які в кінцевому підсумку закінчуються командою (у вигляді більшої кількості електричних сигналів), що надсилається до АЛУ, виконуються правильні операції та надсилається більше сигналів назад, який перетворюється на відображати пікселі у формі цифри на екрані.

Що з квантовим комп'ютером?

Існує два можливі способи використання квантових процесорів: самостійно або спільно з класичним процесором. Однак більшість (включаючи ваш приклад надпровідних) квантових процесорів насправді не використовують електричні сигнали, хоча це все одно, як миша, клавіатура та монітор тощо передають та отримують інформацію. Отже, повинен бути спосіб перетворити електричний сигнал у будь-який сигнал, який використовує квантовий процесор (про який я отримаю згодом), а також певний спосіб сказати процесору, що ви хочете зробити. Обидві ці проблеми можуть бути вирішені одразу класичними методами попередньої та після обробки, як, наприклад, у QISKit IBM . Корпорація Microsoft трохи більше застосовує підхід зверху вниз у Q # , де програми для квантового процесора записуються більше як "класична" програма, на відміну від сценарію, потім компілюються та потенційно оптимізуються.для обладнання. Тобто, якщо у вас є функція, вона може виконувати класичні операції, а також здійснювати дзвінки в квантовий процесор для виконання будь-яких необхідних квантових операцій. Це призводить мене до першого пункту:

Якщо ви збираєтеся попросити комп'ютер з доступом до квантового процесора, щоб обчислити щось таке, як2+3 , одне дуже вірним рішенням буде просто обчислити його на класичному процесорі, як зазвичай.

Добре, скажімо, ви змушуєте класичний процесор використовувати квантовий процесор, який в даному випадку є однією з надпровідних мікросхем IBM, використовуючи кубики транскому, скажімо, IBM QX4 . Це занадто мало, щоб виправити помилки, тому давайте ігнорувати це. Існує три частини використання процесорної моделі процесора: ініціалізація, унітарна еволюція та вимірювання, які більш докладно пояснюються нижче. До цього,

Що таке трансон?

EJ=IcΦ0/2π Φ0=h/2eIcVgCgEC=(2e)2/2CС

Н=ЕС(н-нг)2-ЕJcosϕ,
нϕнг=СгVг/2е|н=|0|n=|1E0=ω0 and E1=ω1 and qubit frequency ω=ω1ω0, describing the computational basis of a qubit. A typical charge qubit could have EC=5EJ. Adding a large shunting capacitance and increasing the gate capacitance switches this ratio, so that EJEC and we have a transmon. This has the advantage of longer coherence times, at a cost of reduced anharmonicity (where energy levels beyond the first two are closer together, potentially causing leakage).

Finally, we get to the main question:

How do we initialise, evolve and measure a transmon?

  • Single qubit unitary evolution: Applying a microwave pulse E(t)=Ex(t)cos(ωdt)+Ey(t)sin(ωdt) for 0<t<tg of frequency ωd and making the rotating wave approximation gives the Hamiltonian of the qubit states (in the ideal case) as
    H=(ω1ωd12Ex(t)i2Ey(t)12Ex(t)+i2Ey(t)ω22ωd)
    However, due to lower anharmonicity, the microwave pulses have to be shaped to reduce leakage to higher energy levels in a process known as Derivative Removal by Adiabatic Gate (DRAG). By varying the pulse, different Hamiltonians can be achieved, which, depending on the time of the pulse can be used to implement different unitary operations on a single qubit.
  • Measurement/readout: A microwave resonator, with resonance frequency ωr, can be coupled to the transmon using a capacitor. This interaction causes (decaying) Rabi oscillations to occur in the transmon-resonator system. When the coupling strength of cavity and qubit, gωωr, this is known as the dispersive regime. In this regime, the transmittance spectrum of the cavity is shifted by ±g2/(ωωr) depending on the state of the qubit, so applying a microwave pulse and analysing the transmittance and reflectance (by computer) can then be used to measure the qubit.
  • Multiple qubit unitary evolution: This idea of coupling a qubit to a microwave resonator can be extended by coupling the resonator to another qubit. As in the single qubit gate case, timings of the coupling as well as microwave pulses can be used allow the first qubit to couple to the cavity, which is then coupled to the second qubit and perform certain 2-qubit gates. Higher energy levels can also be used to make certain gates easier to implement due to interactions between higher levels caused by the cavity. One such example is shown here, where the cavity causes an interaction between the states of |2|0 and |1|1. An avoided crossing between these states means that a 2-qubit phase gate can be implemented, although in general 2-qubit gates are implemented less well (have a lower fidelity) than single qubit ones.
  • Initialisation: Readout, potentially followed by a single qubit Pauli X gate (on each qubit measured to be in state |1) to ensure that all qubits start in state |0.

Adding 2 and 3 is now a 'simple' matter of initialising the qubits, performing the gates equivalent to a classical reversible adder and measuring the result, all implemented automatically. The measurement result is then returned by a classical computer as per usual.

As a bonus, it seems a little pointless to go through all that in order to implement gates that could be done on a classical computer anyway, so it turns out that it's possible to approximately implement a quantum adder, which adds two quantum (as opposed to classical) states, with some error, on one of IBM's processors.


15

Here is my process for doing arithmetic on a quantum computer.

Step 1: Find a classical circuit that does the thing you're interested in.

In this example, a full adder.

classical full adder

Step 2: Convert each classical gate into a reversible gate.

Have your output bits present from the start, and initialize them with CNOTs, CCNOTs, etc.

semi-reversible full adder

Step 3: Use temporary outputs.

If you were doing this addition to e.g. control whether a Grover oracle phases by -1 or not, now is the time to apply a Z gate to your output qubit.

Step 4: Get rid of intermediate values by doing exactly the opposite of what you did to compute them.

This may or may not include getting rid of the output bits, depending on how the circuit fits into your overall algorithm.

semi-reversible full adder 2

Step 5: (Sometimes) for each output bit you keep, get rid of an input bit.

And I don't mean "drop them on the floor", I mean apply operations that cause them to become 0 for sure.

When you compute c+=a, leaving behind a copy of the original value of c tends to be bad. It destroys coherence. So you must look at your adder circuit (or whatever), and think hard about if there's a way to use your output bits to get rid of your input bits. For example, after computing c+a you could do a temporary out-of-place subtraction into a register r, xor r into the register storing the unwanted copy of c, then revert the temporary subtraction.

(A notable exception to "if you keep your output, don't keep so much of your input" is Shor's algorithm. Shor's algorithm decoheres its input on purpose, but in a very particular way that helps with period finding.)

Step 6: Be efficient

In step 5 I said you could uncompute the input of an inplace addition by doing an out of place addition followed by a temporary out-of-place subtraction. This is a bit silly. The overall adding process is going to span 4n qubits (n to hold a, n to hold c, n to hold c+a, n to hold (c+a)-a). If you are more clever, you can fit everything into 2n qubits or (slightly easier) into 2n+1 qubits:

cuccaro adder

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.