你有沒有考慮過為量子編程做準備?


首先,任何基於量子位(Qubit)的 QC 都不是超計算(Hypercomputation),所以所有現有的編程工具都不用進行擴展來適合 QC。

然後你說 QC 可以提速,但目前人們普遍認為的 BQP 大概這麼大:

也就是說,只有特定的問題(比如素數分解)才適合量子化,像 NPC 裡面一票的困難問題,BQP 未必有很大的用處。


該不該考慮為量子編程做準備,不論是從個人學習還是企業戰略考量的角度,我們都先要了解三個方面:時機,價值,可行性。

1) 量子計算目前的發展狀況如何?(時機)

2) 量子編程有哪些應用場景/實用價值?(價值)

3) 如何為量子編程做準備?(可行性)

1.
時機:量子計算目前的發展狀況如何?

量子計算機的概念在35年前由費曼第一次提出。儘管量子計算機實用化依舊遙遠,但業界普遍對此持樂觀態度,這從行業巨頭在量子計算機方面的「軍備競賽」就可見一斑。目前真正意義上的通用量子計算機還未面世,但是系統的量子編程語言已經存在。在摩爾定律終結的時代背景下,量子計算被看做是突破計算能力瓶頸的一條充滿誘惑的出路。

在過去的五十年里,摩爾定律成功指導了計算機行業的發展,但這個定律很有可能在未來十到十五年內失效。一方面繼續提高集成度的難度越來越大,摩爾在65年預言晶元性能每年都會翻倍,75年他把周期改成兩年,始終遵循這個周期的Intel如今把時間延長到了2.5年。另一方面,晶元生產存在物理上的基本限制。當晶體管集成度越來越高,越來越小的納米級晶體管容易出現量子力學中的隧道效應(quantum
tunneling),電子從源極穿到漏極,導致電流泄露,晶元無法工作。

於是大家紛紛把目光投向了量子計算。傳統比特位(bit)的狀態非0即1,n bits的經典計算機只能一次運算2^n個數中的一個;而量子比特位(qubit)卻可以處於0和1的疊加態(superposition),2
qubits就可以疊加出4種態 00 01
10 11,以此類推,n
qubits就可以一次性同時運算2^n個數。位數越多,量子計算的速度相較於經典計算機的速度會呈指數級增長。

目前最先進的量子計算機是D-wave
System最近剛發布的2000Q量子計算機,計算能力是它上一代的兩倍,是矽谷那些比較先進的伺服器的一萬倍。但很多研究人員依舊抱有懷疑,因為它與初期量子計算機不一樣,而是退而求其次採用了量子退火(quantum
annealing),即不是所有qubit之間都可以發生糾纏,它們只和臨近的qubit糾纏。與傳統量子計算機相比,D-wave的qubit量子態更為脆弱,操作精確度更低,雖然運算中的確用到了一些量子物理的原理,但是否能對現有計算機的運算能力進行指數級提速還是個未知數。儘管如此,D-wave在某些特定任務上的計算能力還是遠遠超過了現有的經典計算機。已有不少科研人員爭先恐後預訂D-wave新系統的使用時間,用來探索機器學習或網路加密等需要運算海量數據的課題。D-Wave打算兩年內發布4000Q量子計算機,讓qubits之間發生更複雜的糾纏,從而帶來更強大的計算能力。

但由於D-wave並不完全符合理論上量子計算機的原理,所以沒法運行現有的編程語言,比如QCL和Quipper。至於完全符合理論設想的量子計算機是否可能實現,物理和計算機學界都沒有定論。

除了Google-NASA量子人工智慧實驗室與D-wave的合作以外,各行業巨頭都希望在量子計算上搶佔先機。IBM於2000年就已公布過他們的第一台量子計算機,於2016年五月,IBM又推出在線服務將一台5Q的量子計算機開放給所有人使用。微軟在2005建立量子計算基礎研究站StationQ,近期在StationQ里還成立了人工智慧研究小組。與Google和IBM利用超導量子電路不同,微軟另闢蹊徑選擇了基於anyons的拓撲量子計算,目前搞定了qubit基本模塊。同時,英國也斥資2700萬英鎊支持量子技術發展戰略。

微軟量子計算機項目的技術經理Todd
Homdahl認為這個領域已經到了從理論轉向工程的轉折點。

換言之,時機已經成熟,量子計算有可能站上風口。

2.
價值:量子編程有哪些應用場景/實用價值?

首先要聲明一點,量子計算機不是用來取代經典計算機的,而是為了處理經典計算機無法解決的問題。

量子加密

先舉個比較著名的例子,用來做大數因子分解的量子演算法Shor』s
algorithm,在一台擁有足夠量子位並且量子位能夠不受環境能量干擾的量子計算機上,它可以破解目前的RSA公共密鑰加密系統,因為RSA系統本身就是建立在大數因子分解難以計算的假設上。類似地,量子計算機的強大計算能力正在威脅現有的所有加密方式。若有人處心積慮將今天不可破譯的密碼信息保留到未來,那麼在量子計算機面前這都將是小菜一碟。

但與此同時,量子密鑰分配技術使密碼安全性有了質的飛躍。原因很簡單,量子密碼信息根本無法竊取。在量子計算機的運行過程中,量子必須始終處於封閉空間,你不能打開看,一看就會使外部能量干擾了量子態,量子干涉就會被破壞,那你觀察到的量子數據就會變成一坨亂碼,竊聽也會留下量子測量痕迹。不僅無法竊取,截獲也不太可能。因為量子不可克隆定理決定了任何複製都得不到一模一樣的量子態。

在量子計算時代來勢洶洶的背景下,加密系統升級迫在眉睫。Temporal
Defense System已經率先購買了第一台2000Q量子計算機。美國國家標準技術局也呼籲政府為了國家信息安全務必要在2025之前全面採用量子加密。

場景規劃:

場景規劃指最優路徑規劃、資源最優配置等決策問題。D-Wave量子計算機最早就是為優化問題(optimization)而設計的,用來給NASA的太空探索計算如何最優化利用有限的資源。此外,智能城市的概念在近年也越來越得到各國政府重視,比如新加坡提出的智能國家(Smart
Nation)和美國交通部提出的智能城市挑戰項目(Smart
City Challenge Program),量子計算的高速運算能力能更快地從大量實時數據中分析出反饋信息,有助於交通擁堵、水電供應等問題上更精準及時的動態規劃。對於其他瞬息萬變的行業來說,比如金融、氣候、醫療、國防等,量子計算機的優化決策能力同樣價值巨大:預測股市走向、醫院的床位是否足夠、氣候災害對農林業的影響之類。

人工智慧/機器學習:

人工智慧領域最大的挑戰之一就是處理海量數據,而這正是量子計算機的優勢所在。早在2015年中科大就測試過能夠辨認手寫字體的量子人工智慧,而那僅僅是一台4
qubits的量子計算機,難以想像千位量子計算機會是一種怎樣的概念。MIT機械工程教授Seth
Lloyd說,一台300Q的量子計算機就足以運算自宇宙大爆炸以來歷史上所有的數據信息。IBM認知計算系統Watson的CTO表示,量子計算和人工智慧的協同合作是一件非常自然的事情。他還說,目前的認知計算系統還只能模仿人類的思維,但沒法完全模擬人腦的完整活動,如果人工智慧想要超越並提升人類的認知水平,運算必須要更快,探測更敏捷,耗能更低。量子計算機極有可能幫助我們實現所有的目標。

化學:

哈佛的化學副教授Alan
Aspuru-Guzik在MIT一個研討會上提出化學領域會成為量子計算機運算提速的最直接應用。計算化學反應時間的關鍵是計算原子的能量,然而每多加一個原子,整個系統的複雜性就會翻倍,因為每個原子都與其他的原子發生糾纏。所以如果遇到包含大約100個原子的分子時,能量估算就大大超出了經典計算機的能力,但用差不多位數的量子計算機做模擬就沒問題,比如2016下半年,科研人員用兩個qubits進行了氫氣分子的基態和化學鍵長的模擬計算。

總之,一旦真正意義上的千位通用量子計算機面世,在很多領域都會掀起計算革命。

3.
可行性:如何為量子編程做準備?

目前有哪些量子編程軟體和語言呢?

D-Wave的Qbsolv
。使用者不需要具備專業量子物理知識也可以給D-Wave量子計算機編程。它的目標就是吸引不了解量子計算機的科研人員,將使用和開發門檻降低。Qbsolv目前是一款開源軟體,D-Wave希望圍繞這個平台建立量子計算的開源社區/生態系統。但由於D-Wave與眾不同的演算法與傳統量子計算機和經典計算機都不一樣,所以Qbsolv寫的程序目前只能在D-Wave的機器上跑。類似的還有D-Wave資助開發的Qmasm.

但IBM開發的在線量子計算機允許人們運行自己開發的程序。操作起來需要一定的量子物理專業知識,但是非常好用,界面很簡潔,運算準確率很高。

語言主要介紹兩種,命令式編程的QCL,函數式編程的Quipper。QCL的語法和C相似,讓傳統程序員可以用一種熟悉的形式來給量子計算機編程。最基本數據類型是qureg,類似於隊列。QCL支持用戶自定義操作符和函數。Quipper在函數式編程語言里算是最新成員,是一種嵌入式語言,宿主語言為Haskell。

由於QCL編譯器用的是qlib模擬庫,所以程序在運行中的qubit量子態可以被看到,但這在真正的量子計算機上是不可能的,只能在模擬器上可以實現。

總之如果你考慮開始為量子編程做準備,初級的軟體和語言都是有的。如果為了科研目的,那麼效率至上,用這些現成的軟體和語言就夠了。但如果你為了未來的新計算時代做準備,那麼學習量子編程和經典編程不同,除了軟體和語言以外,最好先了解量子物理和量子計算的原理。

上面是對於個人。那麼對企業和政府來說,幫助他們應對量子計算時代的服務已經存在。目前這種服務形成了一個利基市場,一小部分研究加密系統的公司做好了準備為大型機構做防止量子計算機破解的系統升級,比如美國的Security
Innovation, 加拿大的EvolutionQ,荷蘭的Atos等等。

總結:

從時機、價值和可行性三方面考量,對企業和個人來說,學習量子編程都值得考慮。

最後歡迎關注 @矽谷密探


更新: 應明生老師今年在交大 BASICS 的 summer school 上的 slides 以及一份中文介紹; 主要涉及的是08年之後的相關工作:

basics.sjtu.edu.cn/summer_school/basics16/download/

-------------------------------------------------------------------------

先來幾個名詞解釋: Quantum circuit (universal set), Solovay-Kitaev theorem, mathsf{BQP}.

如果不知道是什麼的各位還是彆強答了, 這一屏幕寫的都特么是啥啊......

如果題主知道 Solovay-Kitaev theorem 和 Gottesman-Knill theorem 的話, 還對mathsf{BQP}裡面都是什麼東西有點基本概念的話, 就知道 quantum circuit 可以用一系列 universal set 表示. 一方面, 所謂"編程"的方式之一就是根據量子演算法生成對應的 quantum circuit. 比如現在 Quipper 或者 MSR 的 LIQU|&> 這樣的東西. MSR 幾個月前為了推廣 LIQU|&> 還特地組織了個比賽 Microsoft Quantum Challenge.

早期的量子演算法設計, 比如 Shor 演算法, 必須手動設計對應的量子線路. 而現在這一工作很大程度上可以藉助 circuit synthesis 的理論, 比如最初 Kitaev 給出的 Solovay-Kitaev theorem 的構造性證明 (可讀性較好的版本見 Nielsen 等人的 Notes: https://arxiv.org/abs/quant-ph/0505030), 或者近年來 Clifford+T 之類與代數數論 (其實是抽象代數), 見 https://arxiv.org/abs/1206.5236 和 https://arxiv.org/abs/1403.2975. 這也是目前 MSR 的 QuArC 重點關注的方向之一.

另一方面, Gottesman-Knill theorem 和一些相關的結果告訴我們, 一部分 quantum circuit 是能夠在經典計算機上有效模擬的(Clifford gate). 提出者之一的 Daniel Gottesman 還以此和糾錯編碼相關的工作, 拿過 2003 年 MIT Technology Review 的 Innovator Under 35 (Innovator Under 35: Daniel Gottesman, 33). 今年年初 Sergey Bravyi 和 David Gosset 進一步改進了 Clifford gate 的經典模擬演算法(http://arxiv.org/abs/1601.07601), 在文中展示了約40個 qubit 的演算法模擬結果.

更多相關介紹見:

量子軟體是否有位數之說? - Climber.pi 的回答

Google 的 Quantum Computing Playground 可以用來做什麼? - 羅秀哲的回答

需要說明的是, 這裡討論的都是所謂 "quantum data, classical control" 的情況, 忽略了純量子控制流的情況. 對此感興趣的同學可以留意下應明生老師的相關工作 (今年還出了本書, elsevier.com 的頁面)


你要搞的話,用不著等到量子計算機出來,現在就能嘗試。D-Wave做了很多工作,在GPU上模擬量子計算。甚至出過一篇paper,比較OpenCL和CUDA的性能差異

https://arxiv.org/ftp/arxiv/papers/1005/1005.2581.pdf

至於D-Wave拿手的量子退火,也可以在GPU上用蒙特卡洛法模擬

http://on-demand.gputechconf.com/gtc/2016/presentation/s6380-james-king-gpu-based-monte-carlo-algorithms.pdf

實際上即便量子計算機推廣了,在很長一段時間內也仍然不會是個通用計算的模型,而是fixed function的做法。比如固化一些量子計算有優勢的演算法,馬爾科夫鏈、質數分解等,而在傳統計算機上,用傳統的方法調用。你不要管那些函數怎麼實現的,它能很快給你結果就是了。所以,這件事情和並行無關、和語言無關、和系統無關。


我猜這玩意到時候可能會像fpga那樣用,畢竟現在通用量子計算機沒造出來呢


量子計算機可以用電子計算機模擬實現,雖然演算法效率是不同的。

關於已經開發的量子演算法,很多人已經總結過,並且在不斷的更新中,例如:

Childs et al., "Quantum algorithms for algebraic problems", Review of Modern Physics, Volume 82, page 1 - 52.

至於量子編程語言也早就有了,例如: QCL - A Programming Language for Quantum Computers

當然目前量子語言的編譯器在底層實現的都是跑在基於電子計算的硬體上的,因為真正的通用量子計算機還沒有製造出來。


曾經看過應明生老師的關於量子編程的論文,結果發現雖然我懂一點量子計算和一點PL里的符號,但是還是完全看不懂量子編程(逃


我不知道最終量子編程能不能被封裝成普通 C 介面的高級演算法。即使最終不能出現這種高度易用的封裝,最有可能的結果是量子編程會成為今天 GPU 編程的樣子。它不可能成為整個軟體系統的主要開發方式,只是部分性能熱點的特殊開發方式。如果從今天的局面來看,GPU 開發雖然是一個很有用處的技能,但也不是所有開發者必須掌握的。


沒有,ARM embedded都量子化了,我差不多也該退休了


不用準備,因為到時候會有人寫好量子計算機的jvm和的python interpreter。

或者會有人開發出OpenQuantum供大家使用,最後變成

#include &

import OpenQuantum as oq

這種


我對量子計算不了解,只是今年五月份身體不好時,偶爾閱讀了圖書館的幾本量子計算的書。

但我發現:量子計算沒那麼神!他只能解決一類特定組合問題而已,大部分人工智慧演算法乃至大部分計算機演算法沒辦法用其大規模加速!

我是孤陋寡聞,但這和我想的神一樣的提速不一樣呀。這最多也就是作為一類協處理器,或者說就是安全類協處理器罷了。我了解不多,也就是皮毛,但就我看,單純從理論上講,大家想的啥程序秒算應該是黃粱一夢了。

而且量子計算機有比特數,這和你的 32 位還是 64 位 CPU 完全不是一回事。量子求解組合問題,完全看這個比特數,你可以這麼理解,這個量子計算機的比特數直接限制了他的求解規模。是的,你的 16 GB 內存也限制了求解規模,但你實際完全不關心。那是因為 CPU 可以 64 比特地在虛存上一步一步執行。而量子計算機基本演算法的一個求解大步驟只能是一步執行完,這個大步驟如果超出比特數,基本就不能算了。而這個比特數,我查了一下資料,不準確地說,現在一般水平過不了 1000 bit。

反正,從皮毛看來,和我預期大相徑庭。


沒有,關於這個問題我曾經特意問過咱們complexity theory得教授,教授的回答大意如下:

首先,通用量子計算機八字還沒一撇,連可行理論框架更別說真的量產使用了。【做不到這一點就意味著我們只能在少數一些設計出量子演算法的問題上使用量子計算,而絕大多數的通用計算問題依然只能基於目前的傳統的計算框架。這同時也意味著就算有所謂的量子語言,也不可能做到像我們概念中的計算機語言一樣能解決生活中的問題。

其次,就算是量子演算法,也只能進行指數級別的加速,對目前的complexity class並不會造成什麼顛覆性的影響【就如同高票貼的那張complexity class的hierarchy一樣, BQP和NP並不是包含關係,所以就算有通用量子機,也會和現有計算系統呈一個相輔相成的關係,並不會完全取代。

所以,比起學習量子計算,還不如多學一些並行式演算法,在單核計算能力已經有點像是接近瓶頸的今天,並行式演算法肯定是未來20年,甚至出現了量子計算以後,都會是一個非常值得研究的話題


不需要特別準備啊

反正量子計算機的 OS 都是用 Lisp 寫的


你這個成本也太高了吧?


q++ xxx.cpp -o xxx

qython xxx.py

javaq xxx.java

以及宇宙最強IDE會解決一切問題的(笑

除了用q(uantum)開頭的話會和qt系列衝突之外似乎沒啥問題


不用準備,作為應用開發者,不需要考慮底層問題太多。

量子相關的,必然只是多了些硬體,有公司會做驅動,有編譯器小組解決底層問題,有各種語言小組解決語言兼容問題。

而我們只要學會,並應用就可以。


是否同意安裝 Visual Studio For Quantum 2020 協議,確認後開始安裝到您的量子計算機。


即使商用量子計算機出現,在很長一段時間內還是通過經典計算機操作的

可以把它想像成用計算機控制機械臂操作量子比特吧

import QuantumComputer

arr = QuantumComputer.alloc_qubits(100)

&> Error: allocating more qubits than available.


目前已經推出的可以解決量子計算特定問題的一些程序或軟體包有: Microsoft推出的LIQUi|&> (念作liquid) 意為「語言集成量子操作模擬器」, 和日本理化研究所RIKEN推出的QuTiP- Quantum Toolbox in Python. LIQUi|&> 和QuTiP均可免費下載使用,在Github上也可以找到程序代碼。


考慮過,畢竟年輕。

如果有生之年能看到量子計算機普及的話,在大規模普及之前要及時關注那時候的量子計算機兼容現有的電子計算機體系效果怎麼樣。

現在的話,至少要去涉獵量子演算法,不能懂也要知道解決的是哪些問題。


推薦閱讀:

Visual Studio Code如何編寫運行C、C++?
新高一起步學信息學競賽會遲嗎?
應屆生去宇龍通訊(酷派)公司的利弊如何?
正在工作的程序員,生活狀態什麼樣?
在美女眼中,我們IT程序員是什麼樣?

TAG:程序員 | 編程語言 | 量子計算理論 | 量子計算機 | 量子編程 |