正确性 (计算机科学)

✍ dations ◷ 2025-11-25 01:47:50 #理论计算机科学

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

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

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

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

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

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

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

相关

  • 逆孕酮逆孕酮(英语:Retroprogesterone,也被称为9β,10α-孕酮,9β,10α-progesterone,或9β,10α-孕-4-烯-3,20-二酮,9β,10α-pregn-4-ene-3,20-dione)是一种黄体制剂但从未上市。它是天
  • ECEC编号或EC号是酶学委员会(英语:Enzyme Commission)为酶所制作的一套编号分类法,是以每种酶所催化的化学反应为分类基础。这套分类法亦同时会为各种酶给予一个建议的名称,所以亦
  • 手厥阴心包经手厥阴心包经(Pericardium Meridian of Hand-Jueyin,PC)是一条经脉,十二正经之一,与手少阳三焦经相表里。本经起于天池,止于中冲,左右各9个腧穴。起于胸中,出属心包络,向下通过横隔,从
  • 克鲁尔克鲁尔(Krul、Krull)可能指:
  • 央元音表内成对的元音分别为不圆唇/圆唇。央元音(central vowel)是使用于一些口语语言中的一种元音类型。央元音的决定性特征为舌头的位置大约在前元音及后元音两者位置的中间。国际
  • 阿莫士·奥尔柯特阿莫士·布朗森·奥尔柯特(Amos Bronson Alcott,1799年11月29日-1888年3月4日),美国教师、作家、哲学家和改革家。作为一名教育者,奥尔柯特开创了新的和年轻学生交互的方式,即通过
  • 世界水资源协会世界水资源协会(英语:World Water Council,缩写:WWC)是一个非政府组织(NGO)、政府、和国际组织共同组成的国际合作成果,创立于1996年,目前总部设在法国马赛。主要是因应世界上日渐受
  • 川中丘陵川中丘陵又称盆中丘陵,位于四川盆地东部,北起大巴山南麓,南达长江以南;西至龙泉山,东抵华蓥山,面积约为8.4万平方千米。其为方山丘陵,低山广布,溪流纵横,海拔约为250—600米,相对高差
  • 赛博格艺术赛博格艺术(英语:Cyborg art 或 Cyborgism),是一种艺术运动,兴起于2000年代中期的英国,它的基础是通过控制论植入物在人体中创造和增加新的感觉,并通过新的感觉创造艺术品,由赛博格
  • Lp范数 L p {\displaystyle L_{p}} -范数(英语: L