在计算机科学中,不同的开发人员开发了许多搜索算法来搜索不同的方面(字符串、数字、模式、解决方案)。
搜索以多种方式进行。 蛮力搜索和穷举搜索是编码人员使用的两种字符串搜索算法。 这些方法的工作原理是搜索每个可行的解决方案。
关键精华
- 暴力攻击系统地测试每一种可能的组合以破解密码或加密。
- 详尽的搜索算法评估所有可能的解决方案以找到最佳解决方案。
- 这两种方法都可能是资源密集型的,但无需特定启发式方法即可有效解决问题。
蛮力与穷举搜索
蛮力 是一种非统一搜索,它使用反复试验来猜测登录信息、加密密钥或查找隐藏的网页。 穷举搜索是一种蛮力搜索,用于解决与以下问题相关的问题 排列 和组合。 这是一个统一的搜索,花费的时间更少。
蛮力算法是开发人员编写的一种获取字符串的技术,甚至用于解决八皇后难题(将八个皇后放在八乘八的棋盘上的难题)。
然而,这是一种直观的策略,需要进行大量比较才能解决问题。
穷举搜索是一种蛮力搜索,用于解决与排列组合相关的问题。
主要目的是通过满足约束来搜索最优解的每个解。 其他问题也可以排序,例如旅行商和背包问题。
对比表
比较参数 | 暴力搜索 | 穷举搜索 |
---|---|---|
搜索类型 | 蛮力是一种非统一搜索。 | 穷举是一个统一的搜索,因为我们知道在哪个方向进行提取。 |
搜索 | 蛮力用于搜索字符串模式。 | 穷举搜索算法用于获取排列、组合和子集。 |
程序 | 蛮力算法通过在给定文本中向右移动来搜索所需的模式。 | 穷举搜索算法检查每个节点,直到它到达最终节点。 |
时间 | 蛮力是一种耗时的方法。 | 相比之下,穷举搜索算法花费的时间更少。 |
应用领域 | 蛮力搜索算法用于将八个皇后放在八乘八的棋盘上。 | 穷举搜索算法用于解决旅行商问题。 |
什么是暴力搜索?
蛮力算法是一种搜索技术 计算机科学. 由于它是一种直观的方法,因此它是解决仅基于预测的问题的一种非常直接的方法。
在这种方法中,没有使用复杂的技术来寻找解决方案。
该过程是不断遍历文本以搜索字符串。 如果字符串不匹配,则向右移动一步并重复该过程,直到找到合适的匹配项。
现在的程序很简单。 假设我们必须搜索字符串 PLANT。
将段落中每个单词的拼写与字符串 PLANT 匹配。 如果行中的短语不匹配,则向右移动。 如果字符串匹配,则我们的搜索成功。 我们收到了预期的结果。
因此,如果文本的长度较长,我们可以说这是一种非常耗时的搜索方法。 计算比较次数的技巧是 N x M 的乘法,其中 N 是文本的长度,M 是字符串的长度。
例如,
文字=10
String= PLANT 所以,字符串的大小 =5
组合 = NXM = 10 x 5= 50
在实际生活中,我们可以使用暴力搜索。 一个例子是在 8×8 的棋盘上放置八个皇后。 规则是将皇后排列成这样的程度,即没有一个皇后阻挡另一个皇后的路线。
什么是穷举搜索?
穷举搜索是蛮力搜索算法的一个子集,用于搜索组合和排列。 该算法的重点是通过满足所有约束来找到给定问题的每个解决方案。
因为穷尽意味着累人,所以这些类型的搜索是盲目搜索,但是是统一的。 该策略旨在最大化或最小化问题。
许多问题都可以使用穷举搜索来解决,例如旅行商问题和背包问题。
旅行商的问题是在返回出发地之前,他必须使用最短路线访问 N 个城市(仅一次)。
这里N是城市的数量,这个问题下的约束是:
- 遵循从一个城市到另一个城市的最短路径。
- 回来之前参观所有的城市。
- 只访问所有城市一次。
例如,
有五个城市:A、B、C、D 和 E。通过应用组合来明智地选择起始城市。 因此,所有约束都已满足。
在选择合适的路径时,我们将尝试多种组合,这将是累人且耗时的。 换句话说,我们必须形成一个循环运动才能达到目标。
蛮力搜索和穷举搜索之间的主要区别
- 蛮力搜索算法是非均匀方法。 另一方面,穷举搜索算法是一种统一的方法。
- 蛮力搜索算法是一种在文本中搜索字符串的方法。 相反,穷举搜索算法搜索排列和组合的解决方案。
- 蛮力技术通过匹配字符串中的所有字母来工作。 然而,穷举搜索遵循检查流程图的每个节点直到满足约束的过程。
- Brute Force 方法比较耗时,适用于数据较短的情况。 另一方面,即使在复杂的场景中,穷举算法也适用。
- 由于穷举搜索技术遵循暴力法,因此它比穷举搜索更受欢迎。
- https://ieeexplore.ieee.org/abstract/document/4640789/
- https://link.springer.com/chapter/10.1007/3-540-44411-4_2
最后更新时间:13 年 2023 月 XNUMX 日
Sandeep Bhandari 拥有塔帕尔大学计算机工程学士学位(2006 年)。 他在技术领域拥有 20 年的经验。 他对各种技术领域都有浓厚的兴趣,包括数据库系统、计算机网络和编程。 你可以在他的网站上阅读更多关于他的信息 生物页面.