3

在阅读SO 上给定字符的独特组合时,我想知道这是否是使用Brute-Force方法的程序应用的技术?我的意思是进行 92 种组合来破解用户 ID 或密码。典型的 Windows 键盘有大约 92 个字符可用于密码。

我不是在问如何通过这种方法破解密码,而是想知道一些复杂的程序对暴力破解方法使用什么方法?

4

1 回答 1

3

使用蛮力解决问题的朴素方法确实是一种简单的回溯,它探索所有可能性,评估它们,然后选择最好的。

但是,对于某些问题 - 您可能有更多信息,然后是“它解决了它”或“它没有解决它”。例如,对于SAT问题(查找布尔公式是否有解) - 您可以了解“您究竟是如何得到矛盾的”(哪些变量不能满足分配)。通常我们将此问题称为约束传播它在DPLL算法下应用于 SAT,该算法经常用于 SAT 求解器(以变化形式)。
如果您有兴趣 - 使用 SAT 求解器的现实生活中的程序多种多样,

另一个常见的优化是分支定界- 意思是,你可以在到达叶子之前修剪你的“搜索树”。旅行推销员问题就是一个例子。如果你已经找到了一条长度为 100 的路径,并且你正在探索一条新的路径,并且达到了 101,则无需继续探索这种可能性。

于 2012-09-05T06:55:46.643 回答