正确性 (计算机科学)

✍ dations ◷ 2025-07-13 17:21:02 #理论计算机科学

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

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

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

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

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

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

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

相关

  • 工程核工程(英语:Nuclear engineering)是工程学的一门分支,是原子核物理学的工程应用层面,主要领域有核电、核医学、核子材料学与辐射度量等方面。但也和一些国际性议题有关连,如:核武
  • 方以智方以智像方以智(1611年-1671年11月9日),字密之,号曼公,又号鹿起,别号龙眠愚者,出家后改名大智,字无可,别号弘智,人称药地和尚。直隶桐城县(今安徽省桐城市)人。明末清初著名学者、思想家
  • 萧昭业萧昭业(473年-494年9月7日),字元尚,小名法身,南朝齐的第三任皇帝,文惠太子萧长懋之长子,齐武帝之孙。萧昭业虽然工于隶书,美容止而获得祖父与父亲的喜爱,但是萧昭业本人是一个阳奉阴违
  • 啮虫总目啮虫目(学名:Psocodea)是由传统分类的啮虫目(亦有简化作
  • 美利坚合众国宪法第四条宪法正文I ∙ II ∙ III ∙ IV ∙ V ∙ VI ∙ VII其它修正案 XI ∙ XII ∙ XIII ∙ XIV ∙ XV XVI ∙ XVII ∙ XVIII ∙ XIX ∙ XX XXI ∙ XXII ∙ XXIII ∙
  • 新浦级潜艇新浦级潜艇是北朝鲜研发的弹道导弹潜艇,目前已有大量证据证明存在,但详细资料并不确实,美国军事专家根据北朝鲜建造能力推测其性能诸元,并认为其有可能搭载两枚短程弹道导弹并从
  • 世界大学生运动会奖牌统计世大运奖牌榜统计从1959年夏季世界大学生运动会至2017年夏季世界大学生运动会及1960年冬季世界大学生运动会至2017年冬季世界大学生运动会,如下面统计。这张表是历届的世界大
  • 米格-29M战斗机米格-29K战斗机 - 支点-D舰载型高空:2100km/hr(2马赫)MiG-29M: 16000米 / 52493呎2000公里MiG-29M2:1700公里MiG-29M战斗机(俄语:Микоян МиГ-33;北约代号:支点-E),为MiG-29的
  • think of me/no more tears《think of me/no more tears》是安室奈美惠以个人单独名义在2001年1月24日发行的第19张单曲。
  • 北 (南卡罗来纳州)北(英文:North),是美国南卡罗来纳州下属的一座城市。城市类型是“Town”。其面积大约为5.19平方英里(13.43平方公里)。根据2010年美国人口普查,该市有人口754人,人口密度约为每平方