爱吱声

标题: 此间大牛多,请教算法高手一个问题 [打印本页]

作者: 雷达    时间: 2022-3-26 08:43
标题: 此间大牛多,请教算法高手一个问题
本帖最后由 雷达 于 2022-3-26 08:54 编辑 / f+ d/ M0 I) B; B

* H4 z! m: \7 n' f. C其实是个概率问题。
9 p; ?1 }' O' Z- J6 m8 [那本CLRS算法导论中,第 5-2 练习题。
7 S' [# r' r, ~- W; J4 p5 O在 n 长的数列中有 k 个相同的 x 值,用顺序算法搜第一个 x 。/ w; @7 l6 z7 Z" P
问题就是这个人的表述; o- y) [0 @# {1 s5 V$ M. N
https://math.stackexchange.com/q ... orithm-running-time
. g1 _, w! g& [. Y  E% P9 P9 ]/ h* K" h3 O
按照答案,从头开始,之前没有出现过 x 的前提下,每一个元素是  x 的概率是 1/k; 不是  x 的概率是 1/(k+1)
, b2 Y6 X) ?( i2 e" K7 y: D
- J5 O* _$ a2 P4 T8 P" If i is an index such that A≠x then P(Xi)=1/(k+1) since we examine it only if it occurs before every one of the k indices that contains x".
! H0 B  o) Z3 x- o& o. Y
2 \1 P' Y+ x+ ]! F1 Q0 @没看懂,这个   P(Xi)=1/(k+1) 怎么来的? 按直觉,这个概率应该和 n 有关,假设 n = 10000, k = 5 的情况 和 n = 10, k = 5 的情况比较,概率应该不一样才对吧。
. k) m. c! p  l% H7 L' }7 C$ F2 q! e( i8 Q% P
老了,脑子水掉了,希望有高手解释清楚一点。多谢。
作者: 数值分析    时间: 2022-3-26 10:32
本帖最后由 数值分析 于 2022-3-26 10:56 编辑 9 b; ]3 p8 R2 N) C( W- F

* c4 Q! ?9 \$ f* \( k您对答案的理解似乎有误。
3 u0 s, u! E6 X" ]  T, E: M9 P随机变量X是测试过的元素的数目
8 V, x7 o2 [' M9 ~而随机变量Xi是另一组随机变量,每一个都是个indicator,取值是0或者1,含义为第i个元素是否被测试过,而不是该元素是否等于欲查找的值。/ X% y" l4 S+ z7 a4 `
所以才有E(x)=sum(E(Xi))。8 i9 L' e7 Z1 {7 c. u. |* r% K; J
而如果 A[ i ]!= x,那么k个x值元素将整个数组分为了k+1个区间,而我们检查了这个元素,所以这个元素必须位于第一个区间,所以概率是1/(k+1)
* F) F( c$ C6 @, k您再想想?
作者: 老福    时间: 2022-3-26 10:44
这个题目可以用递归的方法解决:
% ^6 B2 i3 w0 E' x+ Q$ g6 v7 i6 K4 ^0 ]" @
E(k|n)=1*(k/n)+(1+E(k|n-1))*((n-k)/n)=1+((n-k)/n)*E(k|n-1), p# k0 e' Q0 V0 L5 |( K) }. i

" X( A1 g9 p4 G' J/ p. g然后从头开始:3 J( J, \0 w# C6 B
E(k|k)=1
. s! {4 {5 [) R* B& p9 \) yE(k|k+1)=1+((1)/(k+1))*E(k|k)=1+(1/(k+1))=(k+2)/(k+1)
4 @7 b8 i" g' H( u4 vE(k|k+2)=1+(2/(k+2))*E(k|k+1)=1+(2/(k+2))*(k+2)/(k+1)=(k+3)/(k+1)3 J, w2 ]7 `/ t1 N' D* a) j
Finally, we can easily get E(k|n)=(n+1)/(k+1)
: b4 p3 F: E' |9 i3 O6 D! b7 t8 b  p2 V0 k. q5 c2 s
原文的解法有点绕,还没想明白。
作者: 雷达    时间: 2022-3-26 11:00
数值分析 发表于 2022-3-26 10:32
1 O/ H4 D& b3 ^6 P您对答案的理解似乎有误。; |- x! q) b$ F1 Q& J- @' g
随机变量X是测试过的元素的数目
" P  |+ s  ]5 J( u而随机变量Xi是另一组随机变量,每一个都是个ind ...
( }, s& C; K5 A$ T: c& @' f- [
明白了。
- O: O0 }$ Z( ?是指的某非x元素在所有x之前的概率,实际上有 k+1 种可能的位置关系,所以在所有x之前就是 1/(k+1)
: s( J: y: o: e& P多谢
作者: 雷达    时间: 2022-3-26 11:07
老福 发表于 2022-3-26 10:440 i0 H/ g9 x5 C! M# H7 K/ h9 i
这个题目可以用递归的方法解决:
/ ]. u2 U5 n/ B" f2 {
5 T) q* ?: t1 ~  ]E(k|n)=1*(k/n)+(1+E(k|n-1))*((n-k)/n)=1+((n-k)/n)*E(k|n-1)
' o8 V1 h' b, y+ S  }2 R7 ]$ ?3 {) T

9 J  T1 a2 n: |6 g) n6 v递归法也是可以的。
作者: 老福    时间: 2022-3-26 12:01
雷达 发表于 2022-3-26 11:07
) _% B6 S( o3 V! Q: k递归法也是可以的。
" n1 B( ~0 n# t8 O& Q
其实原文的解释似是而非,试想i=1的情形,对于概率P(X1=1), 无论A1是不是x, 这个概率应该是1, 而不是1/(k+1)。
作者: 数值分析    时间: 2022-3-26 14:46
本帖最后由 数值分析 于 2022-3-26 14:51 编辑 ! A3 l& r! O; }0 K7 T
老福 发表于 2022-3-26 12:01
) F( L* @8 ?) N' k) H7 J9 V其实原文的解释似是而非,试想i=1的情形,对于概率P(X1=1), 无论A1是不是x, 这个概率应该是1, 而不是1/( ...

* g5 \2 z; U: r8 X. u0 N& b( p: E: G3 g4 E
我觉得这个答案的作者其实是吧下标i作为元素的编号,而不是位置。
6 {. k# x; q- j2 O7 J6 B否则没法按元素是否等于x来分类,因为某一个位置是否等于x本身就是个随机事件。
9 i6 h* @# J: u( L, I: }: P+ y* K3 ?$ u9 D( c/ r
而这个答案的作者其实是把每一个元素编了号,然后再考虑这个元素在数组中的位置的。故此对应于某一个元素,其是否等于x是个确定的事件,所以元素可以分为两类讨论,等于x的和不等于x的。$ r! `( y! f# L3 V( E! F2 r
所以A[ i ]这个写法有点误导,这里这个A并不是要做搜索的那个数组,而是所有元素的列表。
作者: 老福    时间: 2022-3-27 00:32
一开始我一直顺着原文的叙述试图理解概率为何为1/(k+1), 很困惑。谢谢数值分析坛友的提醒,终于想明白了。下面试着用同一思路但不同的语言叙述一下,作为总结。# P1 B! y$ c1 Z* p4 s

; o& e6 u$ s' B! r- u* m3 W2 F8 d5 |, K0 NLet S be the set of the n elements in which there are k and only k elements that have value x. For each element w, let I be the indicator if w is examined or not, that is, I(w) = 1 if w is examined and 0 if w is not examined. X, the number of elements being examined, will be the sum of I(w) for all w in S. Accordingly, E[X] will be the sum of E[I(w)]=P{I(w)=1}.
, \* X9 |; p4 r1 c! a# o0 g$ b, ^0 t; n+ M6 R3 Z
For w that has a value x, the chance of w being examined is the chance that w is at the first position of a permutation of k x-valued elements. Therefore it's 1/k.0 `7 \) S5 z% O) W# L/ u
7 H3 L) f# _  A# i/ ~6 a, z
For w that has a value not being x, the chance of x being examined is the chance that w is at the first position of a permutation of all k x-valued elements plus w. Therefore it's 1/(k+1).3 B4 `, \. Q; X5 p) n
4 Q4 k' K1 M# s+ _
There are k elements that have value x and n-k elements that are not equal to x, so the sum of all these probabilities will be k*(1/k) + (n-k)*(1/(k+1)) = (n+1)/(k+1).& N  P- E( _% Y5 F3 y1 Q  C

; [2 u2 T9 s# _+ e, c$ `5 D4 ?2 D/ U理解上述解法的一个关键点是对于所有不等于x的element,它能不能有机会被查验取决于而且只取决于它与k个值为x的elements的相对位置。




欢迎光临 爱吱声 (http://129.226.69.186/bbs/) Powered by Discuz! X3.2