Trong suốt câu trả lời này, những chuẩn mực của một ma trận , ‖ Một ‖ sẽ được xem là chuẩn mực phổ của A (có nghĩa là, giá trị đơn lẻ lớn nhất của A ). Các định lý solovay-Kitaev bang rằng xấp xỉ một cổng để trong vòng một lỗi ε đòi hỏi O ( log c 1A∥A∥AAϵcửa, choc<4trong bất kỳ số cố định của kích thước.
O(logc1ϵ)
c<4
Đối với phần đầu tiên:
phép tính gần đúng đưa ra một lỗi, sẽ lan rộng và tích lũy trong một tính toán dài
Chà, có thể được thể hiện bằng cảm ứng rằng các lỗi tích lũy thông qua việc sử dụng một ma trận để ước tính một ma trận khác là không đáng kể (xem ví dụ bài giảng của Andrew Child ). Đó là, đối với các ma trận đơn vị và V i , ‖ U i - V iUiVi∥Ui−Vi∥<ϵ∀i∈{1,2,…,t}⟹∥Ut…U2U1−Vt…V2V1∥≤tϵ .
Có gì phương tiện này trong việc thực hiện là rằng, đối với một lỗi tổng thể không quá phải đạt được, mỗi nhu cầu cổng được xấp xỉ để trong vòng ε / t , hoặcϵϵ/t
áp dụng xấp xỉ cho toàn bộ mạch
cũng giống như áp dụng xấp xỉ cho từng cổng riêng lẻ, mỗi cổng có một lỗi riêng không lớn hơn toàn bộ mạch chia cho số cổng mà bạn đang xấp xỉ.
Xét về tổng hợp cổng, Thuật toán được thực hiện bằng cách lấy sản phẩm của cửa bộ để tạo thành một bộ cổng mới Γ 0 mà tạo thành một ε 2 ròng SU ( d ) (đối với bất kỳ một ∈ SU ( d ) ,ΓΓ0ϵ2SU(d) ). Bắt đầu từ danh tính, một đơn vị mới được tìm thấy đệ quy từ cổng mới được thiết lập để có được một mạng lưới chặt hơn quanh mục tiêu đơn nhất. Lạ lùng thay, thời gian cho một thuật toán cổ điển để thực hiện thao tác này cũng O ( p o l y log 1 / ε ) , đó là thời gian phụ đa thức. Tuy nhiên, theoHarrow, Recht, Chuang, trong d -dimensions, như một quả cầu bán kính ε xung quanh SU ( d )A∈SU(d),∃U∈Γ0s.t.∥A−U∥≤ϵ2O(polylog1/ϵ)dϵSU(d)có một khối lượng , cân này theo cấp số nhân trong d 2∝ϵd2−1d2 cho số lượng kích thước không cố định.
Điều này có ảnh hưởng đến thời gian tính toán cuối cùng. Tuy nhiên, vì tỷ lệ trong cả hai số cổng và độ phức tạp tính toán cổ điển là đa thức phụ, điều này không làm thay đổi lớp phức tạp của bất kỳ thuật toán nào, ít nhất là đối với các lớp thường được xem xét.
Đối với cổng , độ phức tạp tổng thể (thời gian và cổng) là t
O(tpolylogtϵ)
.
Khi sử dụng mô hình mạch đơn mà không có các phép đo trung gian , số lượng cổng được thực hiện sẽ luôn được biết trước khi tính toán. Tuy nhiên, có thể giả định rằng đây không phải là trường hợp khi các phép đo trung gian được sử dụng, do đó, khi đó số cổng mà bạn muốn ước tính là không xác định, điều này nói rằng không rõ. và nếu bạn không biết t là gì , rõ ràng bạn không thể ước chừng mỗi cổng bị lỗi ϵ / t . Nếu bạn biết một ràng buộc về số lượng cửa (nói, t max ), sau đó bạn có thể xấp xỉ mỗi cổng để trong vòng ε / t maxttϵ/ttmaxϵ/tmaxđể có một lỗi tổng thể và độ phức tạp O ( t≤ϵmặc dùnếu không có giới hạn trên cho số cổng được biết, sau đó mỗi cổng sẽ được xấp xỉ với một số (nhỏ hơn)ε', đưa ra một lỗi chung≤t'εcho số kết quả của cửa thực hiện (mà không rõ tại đầu)t', với độ phức tạp tổng thể củaO(t'
O(tpolylogtmaxϵ),
ϵ′≤t′ϵt′O(t′polylog1ϵ′).
2nthϵ/2n
O(polylog2nϵ′)=O(polynlog1ϵ′),
O(polytlog1ϵ),
Điều này không quá tệ, vì vậy tôi hy vọng rằng (khi không biết số lượng cổng), các máy tính cổ điển sẽ có thể tiếp tục đưa ra các cổng chính xác ít nhất là nhanh như bộ xử lý lượng tử cần chúng. Nếu không phải hiện tại, thì hy vọng một khi bộ xử lý lượng tử trở nên đủ tốt để điều này thực sự trở thành một vấn đề!
1 Mặc dù, có thể không hiệu quả nhất