首页 理论教育计算机导论-算法定义与性质

计算机导论-算法定义与性质

【摘要】:在第1章我们简单介绍了算法的概念,并指出:软件的主体是程序,程序的核心是算法。算法既是人类之间交流智能的工具,也是人和机器之间交流智能的工具。算法的可终止性是指算法应能在有限的操作步骤后结束。我们仍以第1章给出的求解两个整数的最大公约数问题的算法为例,来讨论算法的定义问题。所以,上述方法不是一个算法。计算机求解任何问题,必须在一个有限的时间段内得到处理结果,算法的可终止性保证了这一点。

在第1章我们简单介绍了算法的概念,并指出:软件的主体是程序,程序的核心是算法。算法既是人类之间交流智能的工具,也是人和机器之间交流智能的工具。算法既然在软件开发中具有如此重要的地位,我们就要对算法问题给予足够的重视。为此,我们需要给出算法的严格定义。

算法是描述求解问题方法的操作步骤的集合,这样的操作步骤必须具有确定性、可终止性和可执行性。

算法的确定性是指算法中的每一个操作步骤必须是含义确定的。算法的可终止性是指算法应能在有限的操作步骤后结束。算法的可执行性是指算法中的操作步骤都是可以具体执行的。

我们仍以第1章给出的求解两个整数的最大公约数问题的算法为例,来讨论算法的定义问题。求解两个整数的最大公约数问题的方法如下:

(1)令M为两个整数中的较大者,N为两个整数中的较小者;

(2)用M除以N,令R为M除以N的余数;

(3)若R不等于0,则令M等于N,N等于R,返回步骤(2)继续;若R等于0,则N中的数值就是两个整数的最大公约数。

显然,上述方法满足算法所要求的三点:第一,上述方法的每一个操作步骤都是含义确定的;第二,当两个整数M和N为有限数值时,上述方法可在有限的操作步骤后结束;第三,上述方法的每一个操作步骤都是可以具体执行的。因此,上述方法是一个算法。

但是,下面的方法就不是一个算法:(www.chuimin.cn)

(1)构造一个包含所有正整数数值的表;

(2)把这个表按从大到小的次序排序。

虽然上述方法的两个操作步骤都满足确定性,但是,步骤(1)要求构造包含所有正整数数值的表,所以不满足有穷性;步骤(2)要求把包含无限个正整数数值的表按从大到小的次序排序,而这样的要求是无法作到的,因此不满足可执行性。所以,上述方法不是一个算法。

从算法所具有的确定性、可终止性和可执行性,可以得出如下结论:

(1)由于算法中所有的操作步骤都具有确定性,而任何确定的、无二义的操作,计算机都可以按部就班地一步步执行,所以,我们很容易就可以把求解问题的算法转变为计算机可以执行的程序。

(2)计算机求解任何问题,必须在一个有限的时间段内得到处理结果,算法的可终止性保证了这一点。

(3)算法的可执行性保证了所有操作步骤都是在计算机上可以执行的。

从另一个角度来看,算法所处理的问题一定有零个或若干个输入数据,算法对一个问题的零个或若干个输入数据处理后,一定产生至少一个作为处理结果的输出数据。所以,从函数映射的角度看,算法是输入数据到输出数据的一种映射。