数据结构研究的内容是针对非数值计算的程序设计问题,研究计算机的操作对象以及他们之间的关系和操作。而数据结构所包括的内容为:逻辑结构、物理结构(存储结构)、数据运算(操作)。逻辑结构可分为线性结构和非线性结构,其中线性结构包括线性表、栈、队列、串、数组,而非线性结构包括树结构和图结构。对于物理结构有顺序结构、链式结构、索引结构、散列结构。数据运算除了增、删、改、查,还有排序。
数据是能被计算机识别、存储和处理的符号的集合;数据元素是数据的基本单位,具有完整确定的实际意义;数据对象是具有相同性质的数据元素的集合,是数据的一个子集;数据结构是相互关系之间存在一种或多种特定关系的数据元素的集合;数据类型是一个值的集合和定义在该值上的一组操作的总称;抽象数据类型是有用户定义的一个数据模型与定义在该模型上的一组操作,由基本数据类型构成。
算法是对特定问题求解步骤的一只描述,它是指令的有限序列,是一系列输入转化为输出的计算步骤。而算法有五个基本特征,分别是有限性(算法在执行有限步后必须终止)、确定性(算法的每个步骤都需要精确的定义,无歧义的运行)、输入(算法在运行之前赋给它的量)、输出(算法运行结束时的结果)、可行性(算法原则上能够准确运行)。
Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法。Dijkstra算法用于对有权图进行搜索,找出图中两点的最短距离,既不是深度优先算法(DFS)搜索,也不是广度优先算法(BFS)搜索;该算法如果应用于无权图,或者所有边的权都相等的图,那么它就等同于广度优先算法(BFS)搜索。
Dijkstra算法基本思想是将网图G中所有顶点分成U和U - V两个子集合
1. 初始时,集合U里只有一个源点u,集合V - U里是图中除u以外所有顶点,u到V - U中其他顶点的“长度”是两者间弧的权值。当不存在连接弧时,约定长度为无穷。
2. 在V - U中挑选一个与源点u有连接弧的权值最小顶点v,并将其由V - U移出添加到U中。对V - U里剩下各个顶点k到源点u的权值进行比较。如果有向网图中存在弧(v,k),使得该弧段上权值加上原先u到v弧段(路径)长度之和小于u到k路径长度,用此“和”取代原先u到k的长度,否则原先u到k的长度保持不变。
3. 逐次对集合V - U 实施操作2,当V - U为空时,算法结束,所求得的u到各顶点的长度即是源点到其他顶点的最短路径长度。
