正确性 (计算机科学)

✍ dations ◷ 2025-11-11 09:14:00 #理论计算机科学

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

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

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

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

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

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

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

相关

  • 孔多塞侯爵马利·让·安托万·尼古拉·德·卡里塔,孔多塞侯爵(法语:Marie Jean Antoine Nicolas de Caritat, marquis de Condorcet,1743年9月17日-1794年3月28日)是18世纪法国启蒙运动时期
  • 沼泽性子宫沼泽性子宫(英语:boggy uterus),是通过身体检查发现子宫比常规预测更软弱。它作为一种诊断结论,可能指向宫缩无力。此外,它也和子宫内膜异位有关。
  • 过氧乙酸过氧乙酸(俗名:过醋酸),英文:Peracetic acid(peroxyacetic acid, or PAA),是有机过氧酸家族中的一个成员。它是无色液体,具有乙酸的典型气味。过氧乙酸是强氧化剂。过醋酸作为
  • 乙硫磷乙硫磷(化学式:C9H22O4P2S4),白色至琥珀色油状液体。易溶于丙酮、甲醇、乙醇、二甲苯,微溶于水。遇酸、碱时分解,加热时加速分解,150℃以上迅速分解;在空气中会缓慢氧化;无腐蚀性。是
  • 机械工业部中华人民共和国机械工业部是在1982年5月,由第一机械工业部与农业机械部、国家仪器仪表工业总局、国家机械设备成套总局合并而成,简称机械部。1986年12月2日,第六届全国人大常委
  • 2013年拿笃冲突马来西亚获胜:苏禄苏丹国(自称)马来西亚 沙巴当地居民最高元首端姑阿都哈林 纳吉·阿都拉萨 希山慕丁·胡先 阿末扎希·哈米迪 Ismail Omar Zulkifeli Mohd. Zin Musa Aman马
  • 字体列表字体列表,列出各种文字字体。
  • 盗墓笔记《盗墓笔记》是中国作家南派三叔2006年于起点中文网连载的网络小说,首发于起点中文网,单行本全9卷。《盗墓笔记》的完结篇于2011年12月19日上市。小说单行本第七卷初版由时代
  • 黄祸“黄祸”(英语:)俗称“黄祸论”,是欧洲殖民帝国与美国对亚洲民族,尤其是对中国与日本具有批判性的代表用语。该词盛行自著名版画“欧洲各民族,保卫你们的信仰和家园!”(俗称“黄祸
  • 波多野秀治波多野秀治(生年不详—1579年6月25日)是日本战国时代至安土桃山时代在丹波国的武将、大名。父亲是波多野晴通。波多野氏(日语:波多野氏)最后的当主。生年不详,家中长男。波多野氏