Udostępnij przez


Wybierz operację

W pełni kwalifikowana nazwa: Std.TableLookup.Select

operation Select(data : Bool[][], address : Qubit[], target : Qubit[]) : Unit is Adj + Ctl

Podsumowanie

Wykonuje wyszukiwanie tabel przy użyciu sieci SELECT

Opis

Przy założeniu, że rejestr target zainicjowany bez zera, ta operacja zainicjuje ją za pomocą ciągów bitowych w data indeksów zgodnie z wartościami obliczeniowymi rejestru address.

Dane wejściowe

dane

Klasyczne dane odnośników tabeli, które są przygotowywane w target w odniesieniu do stanu w address. Długość danych musi być mniejsza niż 2ⁿ, gdzie n to długość address. Każdy wpis w danych musi mieć taką samą długość, która musi być równa długości target.

adres

Rejestr adresów

cel

Rejestr docelowy zainicjowany zero

Uwagi

Implementacja sieci SELECT jest oparta na kodowaniu jednoargumentowym, jak pokazano w [1]. Rekursywna implementacja tego algorytmu jest przedstawiona w [3]. Wariant przylegania jest zoptymalizowany przy użyciu operacji unlookup opartej na pomiarach [3]. Kontrolowany wariant przylegania nie jest zoptymalizowany przy użyciu tej techniki.

Źródła

  1. arXiv:1805.03662 "Kodowanie elektronicznej spectry w obwodach kwantowych z złożonością liniową T"
  2. arXiv:1905.07682 "Arytmetyka okienna"
  3. arXiv:2211.01133 "Wyszukiwanie tabeli zoptymalizowanej pod kątem czasu kosmicznego"