作为码农,你无需成为数学家即可掌握量子计算

作为程序员 , 你会做的很棒这篇文章是这本书的一部分:Python的动手量子机器学习
有关量子计算的科学论文和教科书中充斥着数学公式 。甚至有关量子计算的博客文章也充斥着数学术语 。它从您遇到的第一个概念开始 。量子叠加:
作为码农,你无需成为数学家即可掌握量子计算文章插图
作为非数学家 , 这个公式可能已经太多了 。如果您不熟悉所使用的狄拉克符号(|ψ?)或不习惯使用向量 , 那么这样的公式与埃及象形文字一样好:
作为码农,你无需成为数学家即可掌握量子计算文章插图
> Image by author, Frank Zickert
不要误会我的意思 。数学是描述技术概念的好方法 。数学是一种简洁而精确的语言 。相比之下 , 我们的自然语言(例如英语)冗长且不精确 。一本充满自然语言的整本书解释了一小部分数学公式 。
但是我们大多数人比自然语言更能理解自然语言 。我们从小就学习母语 , 每天都在练习 。我们甚至以我们的自然语言做梦 。不过 , 我无法确定某些同学是否梦想过数学 。对于我们大多数人来说 , 数学充其量是一门外语 。
当我们要学习新知识时 , 使用母语对我们来说更容易 。很难理解新概念的含义 。如果我们用外语授课 , 那就更难了 。如果不是不可能的话 。
当然 , 如果愿意的话 , 数学是量子力学和量子计算的母语 。但是为什么我们只用自己的语言教授量子计算呢? 我们不应该尝试以一种学习者更容易理解的方式来解释它吗? 我会说"绝对"!
用学习者的语言教书并不意味着我们不应该看数学 。我们应该! 但是 , 当数学的精确度有助于我们解释事物的工作原理时 , 我们就使用数学 。
实际上 , 数学并不是我们唯一的精确语言 。我们拥有与数学公式一样精确的语言 。如今 , 这些语言对许多人来说几乎是自然的 。这些语言是编程语言 。
我的意思不是特定编程语言的语法 。相反 , 我指的是一种思维方式 , 几乎所有编程语言都共享 。从Python到Java , 从Javascript到Ruby , 甚至从C到Cobol 。所有这些语言都基于布尔逻辑 。无论使用哪种编程语言 , 程序员都可以使用布尔逻辑进行大量工作 。
最显着的是 , 布尔逻辑出现在条件语句中:if then else 。
if x and y:# A statement to evaluate in boolean logicdoSomething () # if the statement evaluiates to Trueelse:doSomethingElse () #otherwise条件语句的if部分是纯布尔逻辑 。通常 , 它包含基本的布尔运算符not和and和or 。
如果某些陈述为True , 则其否定为False 。相反 , 如果语句为False , 则其否定为True 。如果语句由P和Q两个部分组成 , 则仅当P为True并且Q为True时P和Q才为True 。但是 , 如果P或Q为True , 则P或Q为True 。
这是Python中布尔逻辑的三个示例 。
P = TrueQ = Falseprint('not P is {}'.format(not P))print('P and Q is {}'.format(P and Q))print('P or Q is {}'.format(P or Q))print('P and not Q is {}'.format(P and not Q))not P is FalseP and Q is FalseP or Q is TrueP and not Q is True
虽然Python使用这些确切的关键字 , 但在数学中 , 符号表示这些运算符:
· ?表示不not
· ∧的意思是和and
· ∨表示或or
如果您不是数学家 , 那么这些符号以及您在量子机器学习过程中遇到的所有其他符号可能看起来是神秘的 。但是 , 当用Python或数学描述概念时 , 概念的表示可能有所不同 , 但是概念本身是相同的 。
【作为码农,你无需成为数学家即可掌握量子计算】您无需成为数学家即可了解布尔逻辑 。实际上 , 您也不需要成为程序员 , 因为我们甚至可以通过真值表来描述布尔逻辑 。


推荐阅读