第一章 算法在计算中的应用
1.1 算法
1.1-1 给出现实世界中需要排序的一个例子或者现实生活中需要计算凸壳的一个例子。
需要排序的例子:学生成绩排名、按身高排队、按书本大小或内容排序摆放等等。
需要计算凸壳的例子:计算点集的直径、海上救援通过计算凸壳确定最小搜救范围等等。
1.1-2 除速度外,在真实环境中还可能使用哪些其他有关效率的量度?
内存存储效率、编码效率、阅读效率、工作效率等等。
1.1-3 选择一种你以前已知的数据结构,并讨论其优势和局限。
数组
优点:访问速度快,支持随机访问;内存占用连续,方便缓存。
缺点:大小固定,插入和删除元素效率低;不支持灵活的大小调整。
链表
优点:动态大小,插入和删除元素效率高;不需要预先定义大小。
缺点:访问速度慢,需要按顺序遍历;需要额外的内存开销。
栈
优点:后进先出,插入和删除操作简单;适合处理递归和回溯问题。
缺点:容量限制(静态栈),满了无法再添加元素;只能访问栈顶元素,无法随机访问。
队列
优点:先进先出,适合任务调度和资源共享;插入和删除操作效率高。
缺点:容量限制(静态队列),满了无法再添加元素;只能访问队头元素,无法随机访问。
哈希表
优点:查找速度快;支持快速插入和删除操作。
缺点:可能发生冲突,需要冲突解决机制;内存使用不如数组高效,可能存在空闲槽问题。
树
优点:适合表示层次结构,如文件系统;可以有效地进行排序和检索。
缺点:实现复杂,维护成本高;不平衡时查找效率下降。
图
优点:能表示复杂的关系和网络结构;多种遍历算法,适用范围广。
缺点:实现和维护复杂;存储开销大,尤其是在稀疏图中。
集合
优点:不允许重复元素,自动去重;提供快速元素查找、插入和删除操作。
缺点:不支持索引,无法按顺序访问元素。
1.1-4 前面给出的最短路径与旅行商问题有哪些相似之处,又有哪些不同?
相同处:寻找最短路径。可抽象成在图中寻找路径的问题。
不同处:旅行商问题存在更多的限制。可行解必须经过每一个节点一次且仅一次的最短回路。普通的最短路径问题可能不需要遍历所有节点且可能允许重复经过某个节点。
1.1-5 提供一个现实生活的问题,其中只有最佳解才行。然后提供一个问题,其中近似最佳的一个解也足够好。
最佳解也可视作唯一解,例如:求两数的最大公约数。
近似最佳解,即可能存在多个解的问题,例如:求微分方程的解。
1.2 作为一种技术的算法
1.2-1 给出在应用层需要算法内容的应用的一个例子,并讨论涉及的算法的功能。
例如电商平台、社交媒体、影音流媒体服务中的推荐算法。
包括:协同过滤算法、内容推荐算法、混合推荐系统、深度学习算法。
协同过滤算法功能:基于用户的行为和偏好来推荐内容。该算法根据历史数据分析用户与物品之间的交互,例如用户购买的商品、观看的电影等。分为基于用户的协同过滤和基于物品的协同过滤。
内容推荐算法功能:根据物品的特征来推荐相似的物品。该算法分析用户过去喜欢的物品的属性(如产品描述、类别等)并推荐与之类似的物品。
混合推荐系统功能:结合协同过滤和内容推荐算法,以提高推荐的准确性和多样性。这种方法克服了单独使用某种算法的局限性。
深度学习算法功能:利用深度学习技术对复杂的用户行为和物品特征进行建模,提升推荐的精度。这些方法通常涉及到神经网络,能够捕捉到用户潜在的偏好。
1.2-2 假设我们正比较插入排序与归并排序在相同机器上的实现。对规模为n的输入,插入排序运行步,而归并排序运行步。问对哪些值,插入排序优于归并排序?
n < 43
即
1.2-3 n的最小值为何值时,运行时间为的一个算法在相同机器上快于运行时间为的另一个算法?
15
即
思考题
1-1 (运行时间的比较)假设求解问题的算法需要毫秒,对下表中的每个函数和时间t,确定可以在时间t内求解的问题的最大规模。
该题答案仅供参考,答案来源于网络。