正确性 (计算机科学)

✍ dations ◷ 2025-12-02 18:37:40 #理论计算机科学

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

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

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

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

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

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

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

相关

  • 翁吉瓦翁吉瓦是安哥拉南部的城镇,也是库内纳省的首府,距离纳米比亚边境42公里,海拔高度1,098米,每年平均降雨量493毫米,雨量集中在12月至3月,镇内经济活动以商业和服务业为主。坐标:17°0
  • 加那利凉流加那利洋流(Canary Current),或称为加那利凉流,为一个北大西洋漂流向南分支出来的洋流,并且向西南流动远至塞内加尔而且亦在此处转往西流。加那利洋流把水面下有丰富养分的水带向
  • 通道侗族自治县通道侗族自治县,简称通道县,位于湖南西南边缘、怀化市南部,为怀化市辖自治县。辖域面积2,225平方公里;国内生产总值68,298万元(2004年);户籍总人口为21.91万人(2004),其中非农业人口2.
  • 涅吉达尔人涅吉达尔人,人口567人(2002),在哈巴罗夫斯克一带生活。与鄂温克有关,属于清代奇愣部,语言也与鄂温克有关。他们也是朝鲜人口中的兀狄哈。大多数信仰东正教,也有信仰萨满教,每年秋
  • 英国独立广播英国独立广播(United Kingdom Independent Broadcasting,UKIB)是英国的一个由独立电视节目制作公司和播出机构组成的合作组织。英国独立广播的会员包括了独立电视台,17家独立电
  • 戴维·李戴维·李可以指:
  • 丹尼斯·普莱斯丹尼斯·普莱斯(1915年6月23日-1973年10月6日 )是一名英国演员。普莱斯1937年6月首次登台,在克罗伊登轮演剧院演出,同年9月6日在伦敦女王剧院演出了《理查二世》。1940年至1942年
  • 尼克·斯科维尔尼克·斯科维尔(英语:Nick Scoville,?-),美国天文学家,加州理工学院Francis L. Moseley天文学教授和系主席。
  • 观景台观景台、展望台指的是位于高层建筑上用作观赏景致之用的平台。周围一般有栏杆防护,如果太高则会与外界隔离。有时可能还有付费望远镜。高层观景台一般位于摩天大楼或瞭望塔,下
  • 戈登贝尔奖戈登贝尔奖(ACM Gordon Bell Prize)美国计算机协会设立于1987年,每年颁发,是一种超级电脑应用软件设计奖,奖金象征性1万美元。戈登贝尔奖通常会由当年前500排行名列前茅的超级电