Algorithm 一个漂亮的算法-Boyer-Moore投票算法。有人知道类似的算法吗?
Boyer-Moore多数投票算法采用了一种漂亮的方法,在第一次投票中突出显示可能的多数元素,然后在第二次投票中检查其有效性。有人知道类似的2次通过算法吗?尝试搜索,但找不到。谢谢你能分享一下这两种算法中的一些吗?如果你想寻找Boyer-Moore算法的推广,有一种是由 该算法正在寻找“频繁”元素的候选元素,其中“频繁”被定义为在(0,1)中重复Algorithm 一个漂亮的算法-Boyer-Moore投票算法。有人知道类似的算法吗?,algorithm,Algorithm,Boyer-Moore多数投票算法采用了一种漂亮的方法,在第一次投票中突出显示可能的多数元素,然后在第二次投票中检查其有效性。有人知道类似的2次通过算法吗?尝试搜索,但找不到。谢谢你能分享一下这两种算法中的一些吗?如果你想寻找Boyer-Moore算法的推广,有一种是由 该算法正在寻找“频繁”元素的候选元素,其中“频繁”被定义为在(0,1)中重复1次 该算法生成一个1/Θ候选列表,其中一些可能是误报,但它从不缺少候选 该算法是一次通过算法。 如果您可以允许第二次传递数据,则很容易验证这些候选者中
1次
该算法生成一个1/Θ
候选列表,其中一些可能是误报,但它从不缺少候选
该算法是一次通过算法。
如果您可以允许第二次传递数据,则很容易验证这些候选者中的哪一个确实“频繁”
算法的伪代码(取自I TAed):
问题是什么?还有其他漂亮的算法吗?(1)是(2),这是主体,你至少分享了1种算法,它们的原理是相似的,直到你认为哪一部分是原则?例如,KMP
是一种两遍算法。看看,你觉得它们相似吗?另一个宝石是格雷厄姆·诺尔顿问题。谢谢你,阿米特。我在找这个!
1. PF = ∅
2. foreach element e∈S {
3. if PF.hasKey(e) { // increase counter
4. PF.value(e)++ // of existing elements
5. }
6. Else {
7. PF.insert(e,1) // insert new element
8. If |PF|== 1/θ { // but if PF is full
9. Foreach key ∈ PF {
10. PF.value(k)-- // decrease all counters
11. if PF.value(k) == 0 { // and remove
12. PF.remove(k) // elements at 0
13. } } } } }
14. Output PF