《算法:C语言实现》_第一部分 基础知识_引言

算法与数据结构
大多数算法关注的是计算机中涉及的数据的组织方法。用这种方法建立的对象称为数据结构。它们都是计算机科学研究的核心。
简单算法可以导致非常复杂的数据结构,反之,复杂算法可以利用简单数据结构以便理解算法。
算法在大规模问题中更能凸显重要性
对于大规模问题(或者需要求解大量小规模的问题的应用),我们的动机就是设计时间和空间都尽可能高效的方法。
一个设计良好的算法会使程序快上数百万倍。
学习算法目的
学习求解重要任务的合理算法,仔细关注这些方法之间可比较的性能。不应该利用不清楚会消耗什么资源的算法,了解到底期望算法如何执行。

典型问题——连通性
假设给定整数对的一个序列,其中每个整数表示某种类型的一个对象,我们想要说明 对p-q表示“p与q连通”。假设连通是可传递的:若有 对q-r表示“q与r连通”,则有p-q-r。

目标:写一个过滤集合中的无关对的程序。
输入:形如 p-q。
输出:输入的对 与 现有的对没有联系,不连通则输出该对。
如图示例:
《算法:C语言实现》_第一部分 基础知识_引言这就是连通性问题。
连通性问题应用广泛并且在大规模问题中难度巨大
《算法:C语言实现》_第一部分 基础知识_引言如何快速断定图中两黑点是否连通呢?