正确性 (计算机科学)

✍ dations ◷ 2025-09-10 04:38:35 #理论计算机科学

在理论计算机科学中,算法的正确性(英语:correctness)是指一个算法在程序规范下被认定为正确的判定。其中,正确(英语:functional correctness)针对输入输出的行为(例如:对每一个输入,算法都能给出预期的输出)。

人们将正确性分为两类。一类被称为部分正确性(英语:partial correctness),它要求在算法返回结果时这一结果是正确的;另一类被称为完全正确性(英语:total correctness),它在部分正确性的基础之上还要求算法必须能够结束。由于对于停机问题没有通用的解决方案,因此判定完全正确性的断言有着更多需要深层次研究的地方。终止的证明是指一类数学证明,因为完全正确性需要证明一个算法会终止,所以它在程序的形式验证中起着至关重要的作用。

例如考虑这样一个问题:依次搜索整数列1, 2, 3, …来看是否存在某个特定现象——比如说存在一个奇数为完全数。对于这个问题而言,我们很容易写出一个部分正确的程序(直接对于每个数字做长除法判定其是否完全)。然而如果我们想证明这个程序是完全正确的,那就相当于我们在断言一个在数论里目前还未知的结论。

在算法和程序规范都是基于形式化来给出时,对正确性的证明应当为一个数学证明。然而我们并不期待能够给出特定机器上实现的特定程序的正确性断言,因为那样将需要考虑诸如内存限制在内的更多问题。

证明论中有一个结论柯里-霍华德同构。这一结论认为:任意一个在构造性逻辑下的功能正确性的证明都对应了一个λ演算程序。这种转换证明的方式被称为(英文:program extraction)。

霍尔逻辑是一个具体的能够严密验证程序正确性的形式系统。它用一系列的公理来定义程序语言的语义,从而通过称之为霍尔三元组的断言来验证程序的正确性。

软件测试是指验证一个程序或系统的某些属性或能力来判断它是否达到预期目的的行为。尽管软件测试在软件质量方面起着至关重要的作用,并且被程序员和测试员们广泛采用,但由于人们对软件的认识十分有限,它仍旧是一个艰深的领域。软件测试的最大难点在于如何控制其复杂性:我们没有办法在一个合理的复杂度内完整地测试一个程序。测试不只是调试。测试的目的包括但不限于确保软件质量、验证其正确性和估算其稳定性。我们对测试的定义也可以更加一般化,其中正确性测试和稳定性测试是两个最大的研究领域。软件测试是预算、时间和软件质量的一个平衡。

相关

  • 动物界è§å†…文动物是多细èƒçœŸæ ¸ç”Ÿå‘½ä½“中的一大类群,统称为动物界ã
  • 杭州公共自行车杭州公共自行车交通系统,是中国浙江省杭州市杭州公交集团下属的公共自行车发展服务有限公司营运的一个公益性公众交通项目。该服务在中国国内尚无先例,与法国公共自行车系统V
  • 帆船帆船自1900年巴黎夏季奥运会起成为每届夏季奥运会比赛项目。到2016年为止的奖牌榜
  • 神殿神庙,是指供奉神明或宗教人物的建筑,以供信士进行祭祀、祈祷、礼拜等宗教仪式,不同宗教有不同的神庙。东亚传统宗教的神庙多称为庙宇,佛教的宗教建筑物则多称为佛寺。在华人地区
  • 电影类型电影类型(英语:Film Genre),也叫做“片种”,指的是基于电影的叙事元素和情感反应进行相似分类的电影类别。绝大部分电影类型的理论源自文学批评。电影的基本类别包括“虚构片”和
  • 指标化石指准化石(英语:Index fossils,又称为标准化石、指标化石)是指一种可以被用来推知所处地层的地质年代之化石。其运作原理基于一个前提上:虽然沉积物可能会因为沉积时所处的环境不
  • 兵员和文职人员局中国人民解放军军徽中央军委政治工作部兵员和文职人员局,位于北京市,是中央军事委员会政治工作部下属局,负责全军兵员和文职人员工作。1950年,中央人民政府人民革命军事委员会作
  • 美国铁路运输美国的铁路运输主要由货运业务组成。客运业务曾经是该国客运网络的一个庞大而重要的组成部分,但现如今,相较于其他国家的交通运输格局而言,它仅仅扮演着一个作用非常有限的角色
  • 奎卡特克语奎卡特克语(英语:Cuicatec Language)为墨西哥瓦哈卡州西部民族奎卡特克族(英语:Cuicatec people)广泛使用的语言,属欧托-曼格语系。奎卡特克族与米斯特克族联系较为紧密。据2000年
  • 云凝结核云凝结核(英语:Cloud condensation nuclei),又称凝结核,是使水蒸气凝结为液态时,作为凝结核心的颗粒。在纯粹只有气态水分子和其他气体存在的空间中,水分子间的相互作用较小,些微的