Co oznaczają podwójne druty w obwodach kwantowych i jak odnoszą się do instrukcji if?

10

Obwód

wprowadź opis zdjęcia tutaj

można przetłumaczyć na następujący kod:

operation Teleport(msg, there) {
    let register = AllocateRegister();
    let here = register;
    H(here);
    CNOT(here, there);
    CNOT(msg, here);
    H(msg);
    // Measure out the entanglement.
    if (M(msg) == One)  { Z(there); }
    if (M(here) == One) { X(there); }
  }
}

Jak powstają instrukcje if? Dlaczego po pomiarach używane są podwójne linie?

R. Chopin
źródło
Czy mogę zapytać, jaki język ma ten przykład? Czy to Q #?
Norrius
2
Nie, ale było oparte na Q #. Nie chciałem wymagać od czytelników znajomości Q #, więc stworzyłem ten pseudo-kod, który używa tylko funkcji z powszechnie używanych języków.
R. Chopin

Odpowiedzi:

13

Podwójne linie są jedną wspólną konwencją dla klasycznych bitów w schematach obwodów kwantowych. W tym przypadku reprezentują bity wynikające z pomiarów kubitów msgi here.

Kontrolowane operacje obejmujące klasyczne bity są tylko operacjami, które są wykonywane, jeśli te klasyczne bity mają wartość 1, do czego ifsłużą instrukcje w pseudokodzie.

Niel de Beaudrap
źródło