正确性 (计算机科学)

✍ dations ◷ 2024-12-23 04:22:44 #理论计算机科学

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

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

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

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

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

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

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

相关

  • 成人电子游戏成人电子游戏,指不适合未成年人玩的游戏,并禁止未成年人购买。通常包括色情、血腥、暴力、猎奇的元素。行内使用“18+”为标注,称为“18禁”。Microsoft Windows的普及令日本的
  • 假设检验假设检验是推论统计中用于检验统计假设的一种方法。而“统计假设”是可通过观察一组随机变量的模型进行检验的科学假说。一旦能估计未知参数,就会希望根据结果对未知的真正参
  • 规范性文件1999年颁布的中华人民共和国《行政复议法》通过排除法对“红头文件”作了一个笼统的划定,划定“红头文件”为排除法律、行政法规、地方法规、行政规章以外的“乡、镇人民政府
  • 罐子罐是指那些开口较大、一般为近圆筒形的器皿,造型特点是口径大腹丰且深,胫部内收,大底足。制造材料可以是陶瓷、金属、玻璃及塑料等,可用来盛物、汲水、烹煮等用途。通称为罐子。
  • 泰国湾泰国湾(泰语:อ่าวไทย)又称暹罗湾(泰语:อ่าวสยาม),是泰王国的南海湾,其东南部通南中国海,泰国、柬埔寨、越南濒临其北部和东部,泰国、马来西亚在其西部。泰国湾长720多
  • 下城区下城区是中国浙江省杭州市下辖的一个市辖区。下城区地处南宋皇城以北,杭州习惯以北为下,因而得名。秦至隋时为钱唐县地。唐时为钱塘县地。五代后梁龙德二年(922年),为钱江县地。
  • 苏菲·阿布·塔勒布苏菲·阿布·塔勒布(阿拉伯语:صوفى أبو طالب‎,Ṣūfī Abū Ṭālib,1925年1月27日-2008年2月21日),埃及政治人物。1978年到1983年担任埃及议会议长,1981年10月6日穆罕
  • 卡利亚夸卡利亚夸(Calliaqua)是加勒比海岛国圣文森特和格林纳丁斯圣文森特岛圣乔治区的一个城镇,位于该岛南海岸,靠近该岛最南点。为当地鱼市场、当地篮球场、体育场以及餐馆和酒吧的所
  • 黑岩义胜黒岩 义胜(日语:くろいわ よしかつ、1886年(明治19年)2月13日 - 1947年(昭和22年)8月1日)为日本陆军军人。最终阶级为陆军中将。1886年(明治19年)2月、高知县香美郡山北村(现・香南市)
  • 梅谢尔斯卡娅低地梅谢尔斯卡娅低地是俄罗斯的低地,由莫斯科州、弗拉基米尔州和梁赞州负责管辖,面积约25,000平方公里,平均海拔高度80至130米,最高点海拔高度214米。坐标:55°10′58″N 40°20′00