正确性 (计算机科学)

✍ dations ◷ 2025-11-30 05:22:41 #理论计算机科学

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

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

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

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

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

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

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

相关

  • 副木夹板、副木(英语:Splint),亦称夹,为一种硬性或有弹性的装置,可将移位的或可动的身体部位保持在适当位置,也能对受伤部位提供保护。副木可用于严重程度不至于需要固定整个受伤部位的
  • 聊天室网络聊天室通常直称聊天室,是一种人们可以在线交谈的网络论坛,在同一聊天室的人们通过广播消息进行实时交谈。聊天室可以建立在即时通讯软件(如QQ)、P2P软件、互联网及万维网(如
  • 中华民国 (消歧义)中华民国可以指:
  • span class=nowrapTh(NOsub3/sub)sub4/sub/span硝酸钍是一种无机化合物,化学式为Th(NO3)4,为极易潮解的放射性氧化剂。独居石精矿用50%氢氧化钠溶液在140°C下溶解,后经热水稀释和70°C下保温陈化,得到独居石碱溶饼。用硝酸溶
  • 热微菌门热微菌门(Thermomicrobia)是一类绿非硫细菌。正如名字所说,是一类嗜热菌。一些学者认为热微菌不构成单独的一个门,而应该并入另一类绿非硫细菌——绿弯菌门(Chloroflexi)。
  • 191<< 190191192193194195196197198199>> 191是190与192之间的自然数。
  • 方伯谦方伯谦(1853年-1894年),清朝福建侯官县人,字益堂,北洋水师将领。福建船政学堂首届驾驶专业毕业生。甲午战争时担任济远号管带,黄海海战后,清廷以“临阵脱逃罪”将其军前正法。方家兄
  • 波士顿·科贝特托马斯·H·“波士顿”·科贝特(英文名:Thomas H. "Boston" Corbett)(1832年1月29日-1894年9月1日)是美国北军在南北战争时期的知名人物之一。他在维吉尼亚州的一个仓库击毙了杀死
  • 埃尔南多·西莱斯·雷耶斯埃尔南多·西莱斯·雷耶斯(西班牙语:Hernando Siles Reyes;1882年8月5日-1942年11月23日)是玻利维亚政治人物,也是玻利维亚第31任总统,在1930年军事政变中被迫下台。埃尔南多·西莱
  • 艾穆艾穆(?-?),字和父、和甫,号纯卿、熙亭,湖广承宣布政使司岳州府平江县(今湖南省平江县),明朝政治人物、举人出身。嘉靖四十年(1561年)辛酉科乡试中举,被任命为阜城县教谕。邻郡诸生如赵南星