论文部分内容阅读
伴随经典计算机硬件的飞速发展,各种电子器件的尺寸都在不断缩小,在其物理尺寸达到纳米级别时,经典物理定律即将不再适用,而将受到量子效应影响。微观世界所遵循之量子力学定律和经典物理定律亦完全不同,其主要区别在于物理状态不再能够完全为现有设备准确感知,即所谓的“测不准”原理。另一方面,1994年P.Shor提出了基于量子计算模型的大整数因子分解算法(一般称之为Shor算法),和经典算法相比拥有了理论上的指数级计算加速,从而首次向世人展示了量子计算的惊人潜力。此后,Grover算法的提出也为量子计算机在数据存贮和搜索领域的应用提供了可能。与经典算法相比,量子算法能够充分利用量子计算机的量子并行性,特点可以简单归结为运算速度快,存贮容量大,安全保密性高。
为验证量子算法正确性、以及通用量子计算机可行性,南京大学量子计算和量子信息研究组认为有必要在硬件设备尚未完全就位的情况下提前展开软件方面的探索。为了给程序人员书写和使用量子算法提供便利,量子程序设计语言是非常值得关注的一个领域,特别在我国国内,这一领域的研究截至目前几乎仍然是空白。南京大学量子计算和量子信息研究组在学习前人工作的基础上已于2006年6月设计并在经典计算机上模拟实现了一种基于Java语言的命令式量子程序设计语言NDQJava,该工作的相关文献业已发表在相应学术期刊。然而,量子程序设计语言的设计和实现途径并不仅仅限于命令式一种,与之对应的函数式(又名申述式)程序设计语言亦可被用于作为量子程序设计语言的蓝本。本着探索和发现的目的,本小组又设计并模拟实现了另一种量子程序设计语言NDQFP。
NDQFP基于上世纪70年代John Backus在其图灵奖报告中所阐述之函数式程序设计语言FP,为描述量子计算添加了量子运算的相关成分,同时对经典部分也做了必要的修改。NDQFP语言的处理系统则建立在C++语言处理系统的基础上,首先将NDQFP程序在源程序语言的层次编译到C++程序,加入调用相应量子汇编与解释程序的C++代码后,再由C++语言处理系统编译,从而加完成其模拟实现。处理系统的编译部分由词法分析、语法分析、代码转换三部分组成。为了精确地描述量子计算在逻辑上的流程并与目前已知的物理模型相对应,在NDQFP处理系统的设计和实现过程中定义了量子汇编及机器语言。量子汇编语言作为高级量子程序设计语言和量子器件之间的接口语言,其设计考虑了完备、简明、易用这三方面的因素。另外,为了模拟实现NDQFP处理系统,亦定义了量子机器语言,并且通过解释程序加以解释执行。本文首先简要介绍了NDQFP语言的若干设计及相应考虑,之后着重描述了NDQFP处理系统中汇编及解释程序的设计思想与实现方法,对其中若干关键问题给出了相应图表及源程序片段加以详细阐明。