有哪些研究数据结构的好的方法?

版权声明:本文出自www.54manong.com,转载请注明原地址,谢谢! https://blog.csdn.net/xiaohuanglv/article/details/85420289

来源:我是码农,转载请保留出处和链接!

本文链接:http://www.54manong.com/?id=17

image.png

研究数据结构是为了编写程序,编写程序是为了解决问题。用计算机求解一个现实问题,一般可用以下的问题求解模型加以描述:

现实问题→数学模型→算法→程序→解

也就是说,首先要从现实问题出发,抽象出一个适当的数学模型,然后设计一个解此数学模型的算法,最后根据此算法编出程序,经过测试、排错、运行直至得到最终的解答。(现实)问题、数学模型、算法和程序是问题求解过程中出现的四个不同的概念。

问题(problem):从直觉上讲,问题无非是一个需要完成的任务,即对应一组输入有一组相应的输出。在问题的定义中不应包含有关怎样解决该问题的限制。只有在问题被准确定义并完全理解后才有可能研究问题的解决方法。然而在问题的定义中应该包含对所有解决方案所需要的资源(比如说,计算机的主存储器和磁盘空间以及运行时间)的限制。

数学模型(mathematical model):问题的数学模型是指用数学的方法精确地把问题描述成函数。

函数(function):是输入(即定义域)和输出(即值域)之间的一种映射关系。函数的输入是一个值或一些信息,这些值组成的输入称为函数的参数。不同的输入可以产生不同的输出,但对于给定的输入,每次计算函数时得到的输出必须相同。

算法(algorithm):是指解决某个问题(其数学模型)的一种方法(将给出算法的更详细的定义)。如果将问题抽象为数学模型,那么它仅是精确地定义了输入和输出的映射关系,而算法则能把输入转换为输出。一个问题可以有多种算法。

一个算法如果能在所要求的资源限制内将问题解决好,则称这个算法是有效率的。一个算法如果比其他已知算法需要更少的资源,则称这个算法是更有效率的。

程序(program):一个计算机程序被认为是对一个算法使用某种程序设计语言的具体实现。由于使用任何一种现代计算机程序设计语言都可以实现任何一个算法,所以可能有许多程序都是同一个算法的实现。虽然算法是独立于程序的,但因为最终的目标是问题求解,所以在定义算法时,必须提供足够多的细节,以便必要时转换为程序。在本书中我们经常直接提供C(或用C++的一个子集编写的)程序作为算法的描述。

在问题求解模型中关键的一步是建立数学模型,而寻找(或者说将问题抽象成)数学模型的实质是分析问题,从中提取出要进行处理的对象,并找出这些对象之间内在的相互关系,然后用数学语言加以描述。

被处理对象在计算机中的表示就是数据,数据结构实际上就是一种数学模型。选择正确的恰当的数据结构对问题的求解是至关重要的。

猜你喜欢

转载自blog.csdn.net/xiaohuanglv/article/details/85420289
今日推荐