Tôi nghĩ rằng ahelwer
câu trả lời đó chạm vào một số cách mà chúng ta nghĩ về sự phức tạp của các thuật toán. Tuy nhiên - do chúng ta không thực sự có "tiên tri" trong thế giới thực mà chúng ta muốn truy vấn, bạn có thể tự hỏi tại sao chúng ta lại lo lắng về sự phức tạp của truy vấn hoặc ý tưởng về các nhà tiên tri. Tôi sẽ cố gắng đưa ra một số quan điểm về điều này, và đặc biệt để mô tả cách bạn có thể cố gắng nghĩ cách xây dựng một "nhà tiên tri Đức Josza" theo cách mà bạn không cảm thấy như thể bạn đang gian lận.
(Như đã Norbert Schuch
chỉ ra, đối với vấn đề tiếng Đức là trường hợp cơ bản của tiếng Đức, thì không có nhiều phạm vi để hiểu, nhưng tôi hy vọng rằng câu hỏi của bạn về các nhà tiên tri cũng áp dụng chung hơn. Đó là những gì tôi sẽ nói ở đây.)
Một trực giác về các nhà tiên tri
Khái niệm về một nhà tiên tri là một cách để cho phép bản thân chúng ta đơn giản hóa cách chúng ta nói về các vấn đề tính toán.
Ứng dụng ban đầu của khái niệm nhà tiên tri là xem xét giả thuyết những gì chúng ta có thể làm nếu chúng ta có thể giải quyết những vấn đề khó khăn, thậm chí là những vấn đề không thể, mà không cam kết làm thế nào chúng ta có thể làm điều đó ngay cả về nguyên tắc. Nhưng trong sự phức tạp tính toán ngày nay - đặc biệt là trong tính toán lượng tử, ví dụ như trong các trường hợp của Đức Greg Jos Josza, Bernstein, Vazirani, và các vấn đề tiên tri khác - tình huống là khác nhau: nhà tiên tri mô tả một chức năng là cơ sở của vấn đề. Thực tế rằng đó là 'một lời tiên tri' là một cách để cấu trúc cách chúng ta mô tả chức năng là trung tâm của vấn đề: không phải chúng ta không bao giờ phải suy nghĩ về cách tính toán của hàm, mà thông tin này đơn giản không được cung cấp như một phần của vấn đề và chúng tôi không quan tâm đến thời gian hoặc sự phức tạp khác liên quan đến chức năng đó.
Khi chúng ta thực hiện phương pháp này, chúng ta thực sự có thể có được câu trả lời liên quan đến những câu hỏi rất khó tính toán. Ví dụ, bạn có thể biết rằng chúng tôi không biết làm thế nào để chứng minh hoặc P ≠ NP hoặc P = NP , nhưng mà chúng ta có thể thấy rằng có những thầy mo Một ví dụ mà chúng ta có thể chứng minh rằng P Một ≠ NP Một . Điều mà nhà tiên tri A làm ở đây không giúp máy tính (chính xác hơn là máy Turing xác định hoặc máy Turing không xác định) để giải quyết vấn đề - nó đại diện cho vấn đề mà máy tính phải giải quyết. Thực tế là chúng ta có thể chỉ ra trong một số trường hợp rằng P A ≠ NP Một , không có nghĩa là P là thực sự khác biệt so với NP : nó chỉ có nghĩa rằng chỉ sử dụng nondeterminism thực sự là một nguồn lực quan trọng cho một mô hình tính toán để có - nó cho phép bạn để giải quyết một số vấn đề một cách hiệu quả, và không có cách nào nói chung để mô phỏng thuyết không điều kiện hiệu quả trên một máy tính xác định. Vì vậy, nếu bạn muốn giải quyết vấn đề liên quan đến những gì Một tính, bạn hoàn toàn có thể yêu cầu một số thông tin về cấu trúc của bất kỳ chức năng mà có thể tính toán một cách hiệu quả Một .
Đây là một trong những điều chính mà các nhà tiên tri nói đến: chúng cho phép bạn nói về những cách mà các mô hình tính toán có thể hoặc không thể giải quyết vấn đề, khi bạn được cung cấp thông tin hạn chế về vấn đề.
Sử dụng thuật toán oracle để giải quyết các vấn đề phi tiên tri
Thuật toán tiếng Đức Josza Josza, hay thuật toán BernsteinTHER Vazirani, về nguyên tắc không phải là thuật toán mà người ta thực hiện vì lợi ích của riêng họ. (Chà, không thực sự - xem Phần tiếp theo.) Họ đại diện cho những cách mà bạn có thể giải quyết vấn đề . Họ giải quyết vấn đề gì? Chúng cho phép bạn khám phá các tính năng nhất định của hàm mà bạn quan tâm - cho dù đó là hằng số / cân bằng hay vectơ nào được liên kết trong một số hàm tuyến tính có giá trị vô hướng trên các vectơ.
Những chức năng nào bạn thực hiện chúng trên? - Bạn thực hiện chúng trên bất kỳ chức năng nào mà bạn quan tâm đến câu trả lời.
Mô tả về các thuật toán dựa trên tiên tri này nằm bên cạnh điểm. Các vấn đề tiên tri về cơ bản cho phép bạn biết rằng, với một máy tính lượng tử lý tưởng, bạn có thể giải quyết vấn đề ngay cả khi bạn biết rất ít về chức năng , với điều kiện bạn thực sự có thể đánh giá chức năng một cách hiệu quả trong thực tế. Để thực sự đánh giá một chức năng như vậy, tất nhiên bạn sẽ cần một số mô tả về cách thực hiện, và do đó bạn có nhiều thông tin hơn trong cài đặt tiên tri; nhưng điều đó không ngăn bạn sử dụng cùng một thuật toán.
Điều gì xảy ra khi bạn có nhiều thông tin hơn trong cài đặt lời tiên tri, đó là đột nhiên có những cách khác mà bạn có thể giải quyết vấn đề. Cụ thể, có thể giải quyết vấn đề một cách hiệu quả theo cách cổ điển . (Đây là quan sát tương tự như với P A ≠ NP A : nó chứng minh rằng có các vấn đề trong NP , mà bất kỳ thuật toán xác định hiệu quả nào ít nhất sẽ yêu cầu thông tin cấu trúc thực tế để có thể giải quyết - để khi bạn cung cấp mô tả của một chức năng có thể tính toán hiệu quả chứ không phải là một 'tiên tri', có thể vấn đề sẽ xảy raP. ) Điều đó có nghĩa là thuật toán lượng tử có thể không có cùng lợi thế so với thuật toán cổ điển trong việc giải quyết vấn đề cụ thể mà bạn trình bày - và thực tế có thể là cách tiếp cận cổ điển tốt hơn (đặc biệt là với các thiết bị chúng ta hiện tại).
Cuối cùng, chỉ vì bạn có một thuật toán lượng tử để giải quyết một cái gì đó, không có nghĩa đó là cách tốt nhất để giải quyết một cái gì đó. Điều này chắc chắn đúng với thuật toán tiếng Đức Josza: ngay cả trong cài đặt tiên tri, sử dụng tính ngẫu nhiên cũng gần như tốt, và tốt hơn nhiều là chúng ta chưa có máy tính lượng tử đáng tin cậy lớn! Nhưng sau đó một lần nữa ...
"Thực hiện" một lời sấm truyền
Mục đích của việc thực hiện thuật toán tiếng Đức Josza cũng giống như thực hiện " Xin chào, thế giới! " - không phải để giải quyết vấn đề cấp bách chưa được giải quyết, mà là thực hành sử dụng một công cụ mà bạn mong đợi sẽ hữu ích để làm những việc khác.
Để thực hành mã hóa, bạn nên cảm thấy hoàn toàn thư giãn và thoải mái với ý tưởng thực hiện một lời sấm truyền, và với ý tưởng của máy tính đánh giá nhà tiên tri. Về nguyên tắc, đây là điểm của những gì bạn muốn làm. Ngay cả khi bạn đang sử dụng một trình giả lập cổ điển, trong đó máy tính cổ điển thực sự đang đánh giá tất cả các nhánh của sự chồng chất và vì vậy rõ ràng tìm ra câu trả lời cho một vấn đề để giả vờ rằng đó là một máy tính lượng tử hoạt động theo cách xoay vòng hơn một chút, vì vậy có thể - bạn đang thực hành cách sử dụng một công cụ có thể hữu ích cho những thứ khác và một ngày nào đó sẽ không được chạy trên máy tính cổ điển.
Vì vậy, làm thế nào bạn nên đi về thực hiện lời tiên tri của bạn?
(i) Nếu bạn thực sự cam kết với ý tưởng rằng bạn chỉ đang thực hành, bạn không cần phải giả vờ rằng bạn đang làm bất cứ điều gì kỳ diệu. Hãy đến với bất kỳ cách nào để thực hiện chức năng tiên tri, ngay cả khi nó rõ ràng rõ ràng đối với người quan sát thông thường cho dù kết quả là không đổi hoặc cân bằng. Bạn chỉ đang cố gắng thực hành nhận ra một thuật toán - đừng lo lắng rằng ai đó sẽ buộc tội bạn là kẻ mạo danh, rằng bạn đang giả vờ chữa bệnh ung thư nhưng thực sự đang chơi với Lego. Bạn không bao giờ được giả vờ để chữa bệnh ung thư, và bạn đang chơi với Lego bởi sự lựa chọn có chủ ý. Nắm bắt điều đó và chỉ cần làm điều đó.
f(x)=g(x,r)rg(x,r)xrvà nơi không rõ ràng làm thế nào để giải quyết nó một cách cổ điển, là không tầm thường.
g(x,r)=x⋅rx,r∈{0,1}ng(x,r)f(x)f(x)r≠0
Có thể hình dung rằng việc xây dựng ở trên có thể được xây dựng / làm xáo trộn phần nào, để có được một công trình được đảm bảo để đánh giá một hàm hằng hoặc hàm cân bằng, và trong đó hai điều này xảy ra không rõ ràng hoặc thậm chí khó khăn - nhưng tôi có thể ' T nghĩ làm thế nào, tại thời điểm này.
Hãy nhớ rằng điều này thực sự rất khó thực hiện - nhưng nếu bạn có thể thấy một cách để làm điều đó, nó có thể rất đáng giá: Bravyi, Gossett và Koening đã làm điều gì đó như thế này cho vấn đề Bernstein Vazirani, và nó cho phép họ cho thấy một sự tách biệt nhỏ nhưng vô điều kiện giữa độ phức tạp lượng tử và cổ điển, đó là một trong những điều thú vị hơn xảy ra trong sự phức tạp lượng tử trong vài năm qua.
TL; DR
Đừng đổ mồ hôi vì thực tế là bạn đang 'đánh giá' một lời sấm truyền.
Nếu bạn đổ mồ hôi vì bất cứ điều gì, chỉ lo lắng rằng một mô tả thực tế của chức năng có thể giúp giải quyết vấn đề tương tự một cách dễ dàng mà không cần máy tính lượng tử.
Nếu động lực của bạn chỉ là để thực hành với lập trình lượng tử, thậm chí đừng lo lắng về điều đó. Lưu lo lắng của bạn cho các vấn đề worthier, như sự nóng lên toàn cầu. Trong khi chờ đợi, hãy tận hưởng việc chơi với Legos trong khi bạn xây dựng một thứ gì đó nhiều hơn.