〈算法设计与分析基础〉读书笔记2——蛮力法

本文是《算法设计与分析基础》的读书笔记,主要探讨了蛮力法在选择排序、冒泡排序、顺序查找、字符串匹配、最近对问题、凸包问题以及旅行商和背包问题中的应用。虽然蛮力法直观简单,但在解决某些问题时效率较低,如平方级别的时间复杂度。对于旅行商和背包问题这类NP困难问题,蛮力法的效率尤其低下,提示我们需要寻找更高效的算法策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

蛮力法

蛮力法是一种简单直接地解决问题的方法,常常直接基于问题的描述和所设计的概念定义。

1.       选择排序和冒泡排序

SelectionSort(A[0…n-1])   C(n) = n(n-1)/2  算法效率为平方级别,但是键的交换次数仅为n-1次。

BubbleSort(A[0…n-1])  最坏情况是键的交换次数和比较次数都为平方级别,不如前者。

应用蛮力法得出的第一个算法,可以通过适度的努力来提升它的性能。

2.       顺序查找和蛮力字符串匹配

SequentialSearch(A[0…n],K)BruteForceStringMatch(T[0..n-1],P[0..m-1])的效率都可以近似属于线形级别。

3.       最近对和凸包问题的蛮力算法

最近对问题是要求找出一个包含n个点的集合中距离最近的两个点,在二维空间中,蛮力法的求解效率为平方级别。

凸包问题是为一个n个点的集合构造凸包的问题;一个点集合S的凸包是包含S的最小凸集合。 用蛮力法求解的效率为N的立方级别。

4.       穷举查找

a.              旅行商问题:要求找出一条n个给定城市间的最短路径,使我们在回到出发城市以前,每个城市都只访问一次。

b.              背包问题:给定n个重量为Wi,价值为Vi物品和一个承重为W的背包,求这些物品中一个最有价值的子集,并且要能够装到背包中。

旅行商问题和背包问题都属于“NP困难问题”,用蛮力法求解效率超低。

分配问题:有n个任务需要分配给n个人执行,成本不同,求总成本最小的分配方案。  (蛮力法求解效率为n!级别, 可用匈牙利方法求)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值