物理不好,如何給量子計算機編程?

2020-10-21 InfoQ

量子計算是如今發展最快的科技之一。許多公司和研究實驗室都在儘可能快地向市場發布功能強大的量子硬體。在該領域取得的每一點進步都意義重大。

當前還沒有絕對完美的量子計算機有能力運行可靠的算法,例如 Shor 算法和 Grover 算法等。然而,現在的量子機器正在迅速的進步。IBM 公司表明,在下一個十年,量子計算機將具備不可否認的優勢,足以解決很多傳統計算機無法解決的問題。

在 2019 年,IBM 提出了一種度量標準,叫做 Quantum Volume(QV)。該標準是從硬體的角度去衡量一個量子計算機的能力和有效性。QV 是一個基於不同因子計算所得的數值,例如計算機中量子位的數值、它們的連接性以及錯誤率的度量等。如果我們需要在實際的硬體上運行真實世界規模的算法,我們就需要一個很大的 QV 值。到目前為止,IBM 公司擁有 QV 值最大(32)的設備。

從軟體的角度來說,一些研究人員預測,未來十年市場對於量子編程人員的需求將會呈指數級增長。例如 Google、IBM 和 Microsoft 等公司將會投入大量的財力和巨大的努力去培養下一代的量子研究人員和編程人員。

事實上,為了建立一個量子計算機,你不需要在物理和數學領域具備很高的學位。在我看來,你只需要具備很好的想像力即可。

傳統編程 vs. 量子編程

圖片來自作者(使用 Canva 繪製)

和傳統計算機相比,量子計算機的運行基於一種完全不同的模式。用一種簡單的思路來理解就是:在傳統計算機中,我們使用的是 0 和 1 兩個數字。而在量子計算機中,在原有 0 和 1 的基礎上,還增加了一個」可能為 0 或者 1「的狀態,也被稱作"疊加態"(superposition)。所有的量子算法都是利用了這種「可能」的狀態來表現量子計算機的強大能力。如今,量子計算機的編程有點像 1950 年代時我們對傳統計算機的編程——雖然採用了類似於彙編語言的風格,但是具有更好的語法。

彙編語言並不簡單,所以這似乎聽上去很有挑戰性。但實際情況是,當你了解了基本 ( https://towardsdatascience.com/take-your-first-step-into-the-quantum-realm-a13e99fab886 ) 的定義,以及量子位和疊加態的意義 ( https://medium.com/digital-diplomacy/the-three-pillars-of-quantum-computing-d80ff5f50ec7 ) 後,你就可以開始為量子計算機編程了。這也就是說,實際量子代碼的編寫並不需要對於物理有很深層次的掌握。

圖片來自作者(使用 Canva 繪製)

為量子計算機編程的方法有哪些

無論是公司還是研究實驗室都在致力於開發一種高級的量子程式語言,使程式設計師可以不需要非常熟悉量子物理學和量子力學就能夠使用。事實上,現如今存在的量子程式語言和在傳統程式語言基礎上建立的量子編程庫的數量可能比你想像的還要多。

因此,你的選擇要麼是在量子彙編的級別上編程,要麼是使用一個基於傳統程式語言的、用於量子計算的庫,或者也可以使用一個純粹的量子程式語言。我在下圖中列舉了在每一個類別中最廣為人知和使用最廣的選擇。

圖片來自作者(使用 Canva 繪製)

彙編級別的量子編程

  • QX Simulator( http://quantum-studio.net/#quick_start ):該模擬器用於模擬一般量子計算機的行為。它允許程式設計師去設計和模擬運行他們的量子算法。為了用 QX Simulator 實現一個算法,程式設計師需要從量子彙編語言(quantum assembly language, QASM, https://arxiv.org/pdf/1707.03429.pdf )的角度描述算法的流程。

具有量子編程庫的傳統程式語言

使用傳統程式語言去寫量子代碼已經有很多的選擇。我將會按照受歡迎的程度進行排序。

  • Qiskit( https://qiskit.org/ ):Qiskit (Quantum Information Science Kit) 是一個誕生於 2017 年的 Python 庫,由 IBM Research 負責開發和維護。它也是最受歡迎和使用最廣泛的量子編程庫。Qiskit 很受歡迎的其中一個原因是它具有非常活躍和繁榮的社區。並且你還可以在 IBM 的真實的量子計算機上運行你用 Python 寫的代碼。
  • Cirq( https://github.com/quantumlib/Cirq ):這是一個由 Google 的開發者們開發的非官方的 Python 庫,用於在 Google 的量子計算機上編寫和運行測試。你可以使用 Cirq 來編寫和模擬運行量子算法。不過 Google 並不允許任何人在他們的設備上運行代碼。
  • Pyquil( https://github.com/rigetti/pyquil ):這是一個由 Rigetti 編寫的 Python 庫,可以在使用量子指令語言 Quil(同樣由 Rigetti 開發, https://arxiv.org/abs/1608.03355 )的 Rigetti 機器上編寫和實現量子算法。Quil 在語法上類似於 QASM。
  • Scaffold( https://www.cs.princeton.edu/research/techreps/TR-934-12 ):Scaffold 是一個從 Python 遷移到 C++ 的庫,可以用於在傳統機器上編寫和運行量子算法。
  • Strange( https://github.com/redfx-quantum/strange ):這是一個可以用於編寫和運行量子算法的 Java API。通過使用傳統的 Java 分布式渠道使得 Strange 可以是分布式的,並且通過利用 Maven 或者 Gradle 可以使得它用起來非常簡單。

事實上還有一些其他的基於傳統程式語言的量子編程庫存在,但是他們中的大多數已經過時或者在某一時刻已經停止了開發,這裡就不再贅述。

量子程式語言

為了摒棄傳統程式語言並建立獨立的量子程式語言,研究人員已經開發出了在語法上和著名的傳統語言相類似的量子程式語言。這也簡化了從傳統編程到量子編程的轉換過程。這些語言包括:

  • Q#( https://docs.microsoft.com/en-us/quantum/overview/what-is-qsharp-and-qdk?view=qsharp-preview ):這是一個由 Microsoft 開發的用於編寫和執行量子代碼的量子程式語言。它是 Microsoft’s Quantum Development Kit(QDK) 的一部分。QDK 包括一個分離的模擬器和電路優化器。
  • Quipper( https://www.mathstat.dal.ca/~selinger/quipper/ ):這是一個支持函數式量子編程的嵌入式量子程式語言,同時允許程式設計師採用比彙編語言更高級的方式去描述他們的算法。Quipper 也包括七個已經實現的、基於當前理論研究的量子算法。
  • Sliq( https://silq.ethz.ch/ ):這是最新的量子程式語言,由 ETH Zürich 的研究員們開發並於今年早些時候發布。Sliq 可以提供量子算法的更高級別表徵,且其在語法上類似 Python 和 C++。

如何開始

有了這麼多選擇,你可能會對於應該選擇從哪開始你的量子旅程感到不知所措。我的建議是:從一個基於你曾經使用過的傳統程式語言編寫的量子編程庫著手,慢慢適應了量子邏輯和思考方法後,再轉到一個純粹的量子程式語言上。

只有在我想深入了解量子計算機的工作原理和門之間的動態關係時,我才會考慮使用一個低級別的語言(例如 QX Simulator)。

我是從 Qiskit 入手的,而且今天仍然用得很多——不僅因為它是用 Python 寫的,還因為我可以在一個真實的量子計算機上運行我的代碼。雖然目前為止結果依然很糟,但可以在真實的量子計算機上運行你的代碼仍然是非常有趣的事。

為了方便說明,我們使用之前提到的九種方法來實現相同的量子代碼。你可以分析實現一個電路的不同方法,來選擇你覺得有趣的那一個入手。

在當前的很多量子編程裡,你需要搭建一個使用量子門(等同於經典門)的電路來應用你的算法。讓我們來嘗試實現一個可以在兩個量子位之間創造疊加態的量子迴路。為了完成這個任務,你需要了解用於創建疊加態的「魔法門」,稱為 Hadamard Gate。輸入 0 或者 1,它將會返回一個 0 和 1 的對等疊加態。

  1. 使用 QX Simulator:

圖片來自作者(使用 Canva 繪製)

  1. 使用基於傳統程式語言的庫

圖片來自作者(使用 Canva 繪製)

  1. 使用純粹的量子程式語言:

圖片來自作者(使用 Canva 繪製)

結論

我是一個喜歡學習和探索新事物的人,但我同時也明白,我們需要在一個時間點把自身的能量專注學習一件事才能表現得更好。

這也是我建議你可以從基於傳統程式語言的量子編程庫著手的原因。這樣,你只需要關注量子的思維方式,而不需要同時學習一種特定的程式語言。當你適應了量子編程的邏輯後,再去關注一個量子程式語言,就會容易得多。在這之後,如果你還想進一步拓展你的知識,就可以繼續往下走去探索 QASM 了。

參考文獻

  1. A. W. Cross, L. S. Bishop, S. Sheldon, P. D. Nation, and J. M.Gambetta,「Validating quantum computers using randomized model circuits.」
  2. Wexelblat, Richard L., ed. History of programming languages. Academic Press, 2014.

原文連結:

https://medium.com/better-programming/program-a-quantum-computer-today-a62de23268f0

關注我並轉發此篇文章,私信我「領取資料」,即可免費獲得InfoQ價值4999元迷你書,點擊文末「了解更多」,即可移步InfoQ官網,獲取最新資訊~

相關焦點

  • 谷歌、微軟聯合出品《量子計算機編程》公開課,教你怎麼寫量子代碼
    新智元報導 編輯:大明【新智元導讀】微軟和谷歌聯合推出了一門在線互動課程《量子計算機編程》,課程面向初學者,介紹量子計算編程的基本概念,並教授如何利用微軟的Q#語言編寫簡單的量子算法和代碼。課程在網頁瀏覽器中進行,無需開發環境。
  • 量子編程取得突破:量子計算機的第一種直觀語言
    #量子計算機對人類發展的影響#量子計算機的編程變得越來越容易:蘇黎世聯邦理工學院的計算機科學家設計了第一種程式語言,可以像傳統計算機一樣簡單、可靠、安全地對量子計算機進行編程。ETH智能系統實驗室(SRI)的計算機科學教授Martin Vechev說:「對量子計算機進行編程仍然是研究人員面臨的挑戰,這就是為什麼我如此興奮,以至於我們現在可以繼續蘇黎世ETH對量子計算機和程式語言的發展。」他認為:「與現有語言相比,我們的量子程式語言Silq使程式設計師能夠更好地利用量子計算機的潛力,因為代碼對於程式設計師而言更緊湊,更快,更直觀並且更易於理解。」
  • 學量子編程 情人節獲得個薛丁格的女朋友?
    量子計算是一個非常前沿的領域,也是一個典型的「月探」工程:它有著巨大的創造價值的潛力,也有很高的失敗風險。  在情人節之際,正在尋找機會的你,該不該考慮為量子編程做準備? 如何為量子編程做準備?  我們邀請長期關注量子計算領域的錢愉盈來回答這個問題,她也曾連續兩年在Robocup上獲獎。
  • 量子計算機算力那麼強,它使用什麼程式語言?
    我們現在用的普通計算機上面的應用程式都是通過特定的程式語言進行開發出來的,那如果量子計算機出現我們應該用什麼編程式設計師進行編程呢?近日,蘇黎世聯邦理工學院的計算機科學家為量子計算機設計了第一種程式語言,可以像傳統計算機那樣簡單、可靠和安全地為量子計算機編程,這種程式語言被命名為Silq。Silq允許程式設計師更好地利用量子計算機的潛力,而且它的代碼更緊湊,更快,更直觀,更容易理解。程式設計師怎麼對它進行編程呢?
  • 量子計算機領域內第一種高級程式語言 Silq 誕生
    近日,蘇黎世聯邦理工學院的計算機科學界人士在程式語言領域取得了重要突破:計算機科學教授 Martin Vechev 與他的團隊設計出了量子計算機領域內第一種高級程式語言 Silq,它能夠像傳統計算機語言一樣簡單、安全又可靠。
  • 如何看待Honeywell宣稱造出世界上性能最強的量子計算機?
    Honeywell是歷史悠久的傳統計算機廠商了,我的Fortran編程就是在Honeywell中型機上學會的。任何一個東西都是量子,任何一個東西也都是量子計算機,它表現的性質用傳統計算機建模計算都計算不精確,或者計算不出來。所以自宇宙誕生以來,量子計算計算機就存在了,量子計算也存在了,它就是我們的世界萬物,我們的物理世界。然而計算是數學。數學也一直存在,只不過需要人去提出那些概念,去證明,去推導。人類認識到的數學是人類發現的。數學和物理存在本質的差別。
  • 一文教你 「量子編程」入門式
    量子計算機量子計算機被發現之後,量子編程也在不斷發展。本文將帶你入門量子編程,介紹量子計算機與傳統電腦的區別,解釋量子編程的基本概念,最後教你如何在一個當今免費的量子計算機上運行程序。由於我們將涉及到有關量子編程的基礎數學,因此你需要了解向量、矩陣、線性組合和複數的概念。量子計算機讓我們首先了解一下什麼是量子計算機,其與傳統的計算機有什麼區別?
  • 中國量子計算機發展究竟如何 與美國差距多大
    網易科技訊10月28日消息,在今日舉行的2017未來科學大獎頒獎典禮暨未來論壇年會上,中國科學技術大學合肥微尺度物質科學國家實驗室教授 陳宇翱、 中國科學技術大學教授 陸朝陽、阿里雲首席量子技術科學家及密西根大學電子工程與計算機科學系教授施堯耘
  • 超級計算機的100萬億倍!中國量子計算機「九章」為何這麼快?
    而量子計算機從原理上是並行處理,操作一次可以把2的N次方數據變成另外2的N次方數據,所以操作一次量子計算機,相當於操作電子計算機2的N次方串行的次數,這就是量子計算機能夠超過電子計算機最重要的物理原因。據了解,量子計算機的計算能力與它單個晶片裡面有多少個量子比特有關,量子比特就是那個「N」。
  • 超級計算機的100萬億倍!中國量子計算機「九章」為何這麼快?
    而量子計算機從原理上是並行處理,操作一次可以把2的N次方數據變成另外2的N次方數據,所以操作一次量子計算機,相當於操作電子計算機2的N次方串行的次數,這就是量子計算機能夠超過電子計算機最重要的物理原因。據了解,量子計算機的計算能力與它單個晶片裡面有多少個量子比特有關,量子比特就是那個「N」。
  • 量子計算機一把雙刃劍?
    物理世界也是如此。我們日常生活中接觸到的各種力、熱、電、光現象大多可以用建立於十七到十九世紀的經典物理學解釋;但進入二十世紀後,科學家們發現世界是由原子組成的,如果想從分子、原子水平上更本質地理解自然現象,就必須引入一套與經典物理很不一樣的新規律,這就是量子力學。
  • 科普:量子計算機是這樣計算的
    當您看了這兩篇D-Wave公司的文章,您就會明白:什麼是量子計算機、它是如何實現和工作的、它長得什麼樣、解決什麼類型的問題等……D-Wave系統公司,是世界上第一個量產量子計算機的公司,堪稱量子計算機的鼻祖。本文及下一篇文章都是翻譯他們寫的科普文章《量子計算入門》和《D-Wave量子計算機硬體介紹》,李電匠在此逐段逐段的翻譯整合如下,之前的分開翻譯的部分,請進入歷史消息中查找。
  • 數學家Peter Shor:量子計算機威脅網絡加密,只是時間
    而在25年前,美國應用數學家Peter Shor提出Shor算法,證明了如何讓量子計算變得可行,量子計算會如何威脅到數據。消息傳得很快,那個周末,計算機科學家 Umesh Vazirani 給我打了個電話。他說:「我聽說你能用量子計算機分解質因數,請告訴我是如何做到的。」 那時候,我其實還沒有解決分解質因數的問題。我不知道你聽說過兒童遊戲 「打電話」 沒有,但不知怎的,五天時間裡,我的研究結果就變成了分解質因數,因為人們都在這樣傳。在那五天裡,我正好也解決了那個問題,所以我能告訴Umesh如何做。
  • 量子計算機威脅到網絡加密只是一個時間問題
    25年前,Peter Shor證明了如何讓量子計算變得可行,同時也表明了量子計算會如何威脅到數據;以下是《自然》對他的採訪。上世紀 80 年代,當物理學家首次提出量子計算機的想法時,它們聽起來就像是理論上很精彩、但可能註定只能停留在論文裡的概念。
  • 量子計算機之危:對噪聲非常敏感,噪聲可以迅速摧毀量子疊加態!
    文章來自:博科園官網(www.bokeyuan.net)來自CSC-IT科學中心、阿爾託大學和奧博·阿卡德的研究人員及其來自美國波士頓大學的合作者,首次系統地展示了噪音對量子計算的影響,其這項研究成果發表在《物理評論快報》期刊上。
  • 量子物理有什麼用?或許是下一代計算機
    在量子物理看來,多世界的詮釋有可能是正確的,打開裝著貓的盒子的那一剎那,世界已經一分為二。《彗星來的那一夜》的英文名似乎能更好詮釋主旨——「Coherence」(相關性),晦澀的量子物理不再是一隻半死不死的貓,不同世界中人們的行為成了更好的標誌。可除了燒腦的思維遊戲之外,量子物理對於我們的現實生活又有什麼作用?
  • Peter Shor:量子計算機威脅到網絡加密只是時間問題
    ,同時也表明了量子計算會如何威脅到數據;以下是《自然》對他的採訪。Q:但是許多專家還是認為量子計算機會在完成計算前丟失信息?有一個反對意見是說在量子力學中,如果你測量一個系統,你就會不可避免地幹擾它。我證明了如何在測量錯誤的同時不測量計算,這樣你就能糾正錯誤,而不會破壞整個計算。在我那篇1995的糾錯論文發表後,一些懷疑人士也開始相信量子計算或許是可行的。Q:糾錯依賴「物理」和「邏輯」量子比特。
  • 一文讀懂「量子霸權」|量子計算機|算法_網易訂閱
    光子盒研究院出品  自從去年10月23日,谷歌「利用可編程超導處理器實現量子霸權」被正式刊文介紹之後,世界都認識到了一個新名詞:「量子霸權」。  量子霸權實驗可以類比貝爾實驗。貝爾實驗已經無漏洞地反駁了定域隱變量模型,而量子霸權實驗將駁倒「拓展的丘奇—圖靈論題」,其表述為:經典計算機可以在多項式時間內有效模擬任何物理過程。「量子霸權」將提供一個令人信服的證據證明經典計算模型無法模擬糾纏,更無法獲得量子計算的計算能力。
  • 不能編程、燒錢、沒用?潘建偉直播回應「九章」量子計算爭議
    他選擇了 「量子優越性」(Quamtum advantage)這個詞,含義是一樣的,即量子計算機在特定問題上超越世界上性能最好的經典計算機。儘管選擇了一個更低調的名詞,「九章」還是引發了轟動性的討論甚至是爭議。它只能算一個「沒用」的問題?它比谷歌的「懸鈴木」要快100億倍是怎麼算出來的?「燒錢」在一臺不能編程的機器上值得嗎?
  • 若你不知道微軟的量子編程Q,那得知道新出的Silq量子程式語言
    迄今為止,對於我們很多大眾而言,量子計算機依然神秘依然高大上依然可望而不可即。而對於業內人士而言,量子計算機和量子技術的研究已經不是一天兩天了,科學家們的研究不亦樂乎,成果進展也可喜。比如,程式語言領域就迎來了一個重要的突破:第一種高級程式語言 Silq問世。