导语:
本文并非源自于突发奇想。好多年前第一次接触Jain’s Faireness index公式,我甚至记不下来它的形式,也不指望能弄懂它的含义。
后来发现任意学科的绝大多数问题都是可以抽象成数学问题,这些数学问题几乎都可以仅通过四则混合运算,开方,简单的微积分描述和解决,而这些知识对于一个小学高年级学生而言都是可以理解的。
最近周末偶尔会给小小灌输一些数学思想,顺便用简单的数学去梳理以前自己似懂非懂的专业领域,作此文。
但这不是唯一一篇,前面写过多篇,后面也还有。
互联网作为一个自治系统,带宽资源在所有数据流之间是共享的,互联网得以运行的关键如如何在所有这些数据流之间公平合理地分配带宽。
TCP作为一个广泛部署的端到端协议,拥塞控制是避免互联网崩溃的前提,其中最重要的是带宽资源分配的公平性(对于避免拥塞而言,公平是最重要的,而不是效率),公平性是评价一个拥塞控制算法的重要指标。
那么如何度量一个拥塞控制算法的公平性,常用的方式即使用一个公式,即Jain’s Faireness index。
设一共有 n n n条流共享带宽, x i x_i xi为第 i i i条流的带宽分配情况(或为cwnd,或为pacing rate,随意),
F ( x 1 , . . . x n ) = ( Σ i = 1 n x i ) 2 n Σ i = 1 n x i 2 ∈ [ 1 n , 1 ] F(x_1,...x_n)=\dfrac{(\Sigma_{i=1}^nx_i)^2}{n\Sigma_{i=1}^nx_i^2}\in[\dfrac{1}{n},1] F(x1,...xn)=nΣi=1nxi2(Σi=1nxi)2∈[n1,1]
F F F数值越大,公平性越好。
F F F为什么是这种形式?为什么它能度量公平性?背后有什么直观含义?我Google了好久都没有找到答案。正好最近跟朋友讨论过这个问题,在经过一些思考后,我决定自己写一篇。
从形式上看,Jain’s Faireness index实际上就是柯西不等式的一个特殊情况。
柯西不等式如下:
Σ k = 1 n a k 2 Σ k = 1 n ≥ ( Σ k = 1 n a k b k ) 2 \Sigma_{k=1}^na_k^2\Sigma_{k=1}^n\geq (\Sigma_{k=1}^na_kb_k)^2 Σk=1nak2Σk=1n≥(Σk=1nakbk)2【当且仅当 a 1 b 1 = a 2 b 2 = . . . a n b n \dfrac{a_1}{b_1}=\dfrac{a_2}{b_2}=...\dfrac{a_n}{b_n} b1a1=b2a2=...bnan时取等号】
令 b 1 = b 2 = . . . b n = 1 b_1=b_2=...b_n=1 b1=b2=...bn=1,则柯西不等式化为:
Σ k = 1 n a k 2 × n ≥ ( Σ k = 1 n a k ) 2 \Sigma_{k=1}^na_k^2\times n\geq (\Sigma_{k=1}^na_k)^2 Σk=1nak2×n≥(Σk=1nak)2
两边除以左边,可得:
1 ≥ ( Σ k = 1 n a k ) 2 n Σ k = 1 n a k 2 1\geq \dfrac{(\Sigma_{k=1}^na_k)^2}{n\Sigma_{k=1}^na_k^2} 1≥nΣk=1nak2(Σk=1nak)2【当且仅当 a 1 = a 2 = . . . a n a_1=a_2=...a_n a1=a2=...an时取等号】
这就是Jain’s Faireness index,而且连取值范围都有了。
虽然数学形式很清晰,但仅从柯西不等式本身,依然无法看出 F F F的直观含义,为什么 x 1 = x 2 = . . . x n x_1=x_2=...x_n x1=x2=...xn就最公平,为什么随着 x i x_i xi之间偏差逐渐变大, F F F会逐渐变小。
从柯西不等式分析Jain’s Faireness index是最完备且优雅的,但在此之前我想分享一些自己思考的成果。我把柯西不等式的几何意义分析放在本文最后,现在暂且忘掉它,先来直观感受Jain’s Faireness index。
如果能有个动态的过程就太好了,于是想办法构造。
先从2条流说起,设 x 1 x_1 x1, x 2 x_2 x2为其对应的资源,根据毕达哥拉斯定理的面积证明法,构造下面边长为1的正方形和其内接正方形:
有下列等式成立:
x 1 + x 2 = 1 x_1+x_2=1 x1+x2=1
x 1 2 + x 2 2 = h 2 x_1^2+x_2^2=h^2 x12+x22=h2
移动P点可改变 x 1 x_1 x1, x 2 x_2 x2的大小,观察以 h h h为边长的内接正方形面积S的变化。就像转万花筒一样,P点从A移动到AB中点的过程中,S逐渐变小,此后在接近B的过程中,S又逐渐增大。
这个动态过程正好可以如下度量公平性:
不妨将S的倒数作为公平性度量。求出S的范围:
1 S = 1 x 1 2 + x 2 2 = 1 h 2 \dfrac{1}{S}=\dfrac{1}{x_1^2+x_2^2}=\dfrac{1}{h^2} S1=x12+x221=h21
S m a x = 1 S_{max}=1 Smax=1
S m i n = ( 2 2 ) 2 = 1 2 S_{min}=(\dfrac{\sqrt 2}{2})^2=\dfrac{1}{2} Smin=(22)2=21
因此,Jain’s Faireness index的物理意义其实就是S的大小:
1 ≤ ( x 1 + x 2 ) 2 x 1 2 + x 2 2 ≤ 2 1\leq\dfrac{(x_1+x_2)^2}{x_1^2+x_2^2}\leq2 1≤x12+x22(x1+x2)2≤2
两边除以2,可得:
F ( x 1 , x 2 ) = ( x 1 + x 2 ) 2 2 ( x 1 2 + x 2 2 ) ∈ [ 1 2 , 1 ] F(x_1,x_2)=\dfrac{(x_1+x_2)^2}{2(x_1^2+x_2^2)}\in[\dfrac{1}{2},1] F(x1,x2)=2(x12+x22)(x1+x2)2∈[21,1]
接下来,3条流,4条流,…n条流的情况,如何像以上这样确定Jain’s Faireness index的实际意义?毕达哥拉斯定理还能挂靠吗?很难了…
毕达哥拉斯定理的面积证明法是一种拼凑法,属于奇技淫巧,但凡奇技淫巧都无法推而广之。虽难推广,但有意思,下面再来一例拼凑。
设 x 1 ≥ x 2 x_1\geq x_2 x1≥x2,对因式分解和勾股数敏感的人一眼就能认出一组勾股数: x 1 + x 2 2 \dfrac{x_1+x_2}{2} 2x1+x2, x 1 − x 2 2 \dfrac{x_1-x_2}{2} 2x1−x2, x 1 2 + x 2 2 2 \sqrt{\dfrac{x_1^2+x_2^2}{2}} 2x12+x22,如果认不出来,通过简单的平面几何构造,也能看出究竟,如下图:
Jain’s Faireness index事实上就是 cos 2 θ \cos^2\theta cos2θ。
从上图中可以直观感受到,随着 x 1 x_1 x1和 x 2 x_2 x2逐渐接近,即 P P P点向圆心 O O O接近, θ \theta θ会逐渐变小,从而 cos θ \cos\theta cosθ逐渐变大,Jain’s Faireness index趋向于公平。
若要度量n条流的带宽分配公平性,并展示其公平性的实际意义,我采用解析几何的方法,寻找
Jain’s Faireness index的几何意义。
依然设总带宽资源为单位1,先从2条流开始。构造下面的二维笛卡儿坐标系:
该坐标系中的两个重要方程:
可得下面的不等式:
2 2 ≤ x 1 2 + x 2 2 ≤ 1 \dfrac{\sqrt 2}{2}\leq \sqrt{x_1^2+x_2^2}\leq1 22≤x12+x22≤1
其中, 2 2 \dfrac{\sqrt 2}{2} 22由于上述公平直线方程和资源直线方程联立求得。因此:
1 ≤ 2 ( x 1 2 + x 2 2 ) ≤ 2 1\leq 2(x_1^2+x_2^2) \leq 2 1≤2(x12+x22)≤2
由于 x 1 + x 2 = 1 x_1+x_2=1 x1+x2=1,取倒数,将取值限制在区间 [ 1 2 , 1 ] [\dfrac{1}{2},1] [21,1]:
1 2 ≤ ( x 1 + x 2 ) 2 2 ( x 1 2 + x 2 2 ) ≤ 1 \dfrac{1}{2}\leq\dfrac{(x_1+x_2)^2}{2(x_1^2+x_2^2)}\leq 1 21≤2(x12+x22)(x1+x2)2≤1
看,这就是2条流时的Jain’s Faireness index。
该坐标系中的两个重要方程:
3 3 ≤ x 1 2 + x 2 2 + x 3 2 ≤ 1 \dfrac{\sqrt 3}{3}\leq \sqrt{x_1^2+x_2^2+x_3^2}\leq1 33≤x12+x22+x32≤1
其中, 3 3 \dfrac{\sqrt 3}{3} 33由于上述公平直线方程和资源直线方程联立求得。因此:
1 ≤ 3 ( x 1 2 + x 2 2 + x 3 2 ) ≤ 3 1\leq 3(x_1^2+x_2^2+x_3^2) \leq 3 1≤3(x12+x22+x32)≤3
其中, 3 3 \dfrac{\sqrt 3}{3} 33由于上述公平直线方程和资源平面方程联立求得。
由于 x 1 + x 2 + x 3 = 1 x_1+x_2+x_3=1 x1+x2+x3=1,取倒数,将取值限制在区间 [ 1 3 , 1 ] [\dfrac{1}{3},1] [31,1]:
1 3 ≤ ( x 1 + x 2 + x 3 ) 2 3 ( x 1 2 + x 2 2 + x 3 2 ) ≤ 1 \dfrac{1}{3}\leq\dfrac{(x_1+x_2+x_3)^2}{3(x_1^2+x_2^2+x_3^2)}\leq 1 31≤3(x12+x22+x32)(x1+x2+x3)2≤1
看,这就是3条流时的Jain’s Faireness index。
很容易扩展到4条流。构造四维坐标系:
… 不过画不出来了…
当存在 n n n条流时,资源分配体现为 n n n维坐标系下资源超平面 x 1 + x 2 + . . . x n = 1 x_1+x_2+...x_n=1 x1+x2+...xn=1上的点,公平性的度量就是原点 O O O到资源超平面上点距离的倒数。如果该距离最短,则资源分配绝对公平,该点一定是资源超平面和公平直线的交点 P f a i r ( 1 n , 1 n , 1 n , . . . 1 n ) P_{fair}(\dfrac{1}{n},\dfrac{1}{n},\dfrac{1}{n},...\dfrac{1}{n}) Pfair(n1,n1,n1,...n1)。资源分配点在资源超平面偏离 P f a i r P_{fair} Pfair越远,原点 O O O到该点的距离就越大,其倒数就越小,体现为越不公平。是不是很形象呢?
OK,在结束本文之前,我兑现最开始的承诺,用柯西不等式来正式描述Jain’s Faireness index。先从柯西不等式的几何意义开始。
定义二维向量 a = [ a 1 , a 2 ] a=[a_1,a_2] a=[a1,a2], b = [ b 1 , b 2 ] b=[b_1,b_2] b=[b1,b2]
设向量 c c c如下:
c = [ c 1 , c 2 ] = a − b c=[c_1,c_2]=a-b c=[c1,c2]=a−b
根据余弦定理:
∣ c ∣ 2 = ∣ a ∣ 2 + ∣ b ∣ 2 + 2 ∣ a ∣ ∣ b ∣ cos θ |c|^2=|a|^2+|b|^2+2|a||b|\cos\theta ∣c∣2=∣a∣2+∣b∣2+2∣a∣∣b∣cosθ
c c c表达式恒等式展开:
c ⋅ c = ( a − b ) ⋅ ( a − b ) = a ⋅ a − 2 a ⋅ b + b ⋅ b c\cdot c=(a-b)\cdot(a-b)=a\cdot a-2a\cdot b+b\cdot b c⋅c=(a−b)⋅(a−b)=a⋅a−2a⋅b+b⋅b
根据点乘定义:
c ⋅ c = c 1 c 1 + c 2 c 2 = c 1 2 + c 2 2 = ∣ c ∣ 2 c\cdot c=c_1c_1+c_2c_2=c_1^2+c_2^2=|c|^2 c⋅c=c1c1+c2c2=c12+c22=∣c∣2
所以:
∣ c ∣ 2 = ∣ a ∣ 2 + ∣ b ∣ 2 + 2 a ⋅ b |c|^2=|a|^2+|b|^2+2a\cdot b ∣c∣2=∣a∣2+∣b∣2+2a⋅b
结合余弦定理的形式,可得:
a ⋅ b = ∣ a ∣ ∣ b ∣ cos θ ≤ ∣ a ∣ ∣ b ∣ a\cdot b=|a||b|\cos\theta\leq|a||b| a⋅b=∣a∣∣b∣cosθ≤∣a∣∣b∣
根据点乘定义以及距离公式:
a ⋅ b = a 1 b 1 + a 2 b 2 ≤ a 1 2 + a 2 2 b 1 2 + b 2 2 a\cdot b=a_1b_1+a_2b_2\leq\sqrt{a_1^2+a_2^2}\sqrt{b_1^2+b_2^2} a⋅b=a1b1+a2b2≤a12+a22b12+b22
取平方得:
( a 1 b 1 + a 2 b 2 ) 2 ≤ ( a 1 2 + a 2 2 ) ( b 1 2 + b 2 2 ) (a_1b_1+a_2b_2)^2\leq(a_1^2+a_2^2)(b_1^2+b_2^2) (a1b1+a2b2)2≤(a12+a22)(b12+b22)
这就是柯西不等式在二维空间的情况。现在推广到三维空间很容易。三维空间的推导和二维空间完全一致,只是 a a a与 b b b形成的平面可能是斜的,夹角 θ \theta θ依然是一个夹角。
对于 n ( n ≥ 4 ) n(n\geq4) n(n≥4)维空间,虽然无法想象,但对于数学推导依然不变,比如:
c ⋅ c = c 1 2 + c 2 2 + . . . c n 2 = ∣ c ∣ 2 c\cdot c=c_1^2+c_2^2+...c_n^2=|c|^2 c⋅c=c12+c22+...cn2=∣c∣2
高维空间虽然不可想象, a a a与 b b b两个向量永远组成一个二维平面,在二维平面上的夹角 θ \theta θ永远和二维空间的情形完全一致。
将 n n n维空间的柯西不等式变换一下形式:
( a 1 b 1 + a 2 b 2 + . . . a n b n ) 2 ( a 1 2 + a 2 2 + . . . a n 2 ) ( b 1 2 + b 2 2 + . . . b n 2 ) = cos 2 θ ≤ 1 \dfrac{(a_1b_1+a_2b_2+...a_nb_n)^2}{(a_1^2+a_2^2+...a_n^2)(b_1^2+b_2^2+...b_n^2)}=\cos^2\theta\leq 1 (a12+a22+...an2)(b12+b22+...bn2)(a1b1+a2b2+...anbn)2=cos2θ≤1
不等式左边正好可以表示 cos 2 θ \cos^2\theta cos2θ,柯西不等式的几何意义在于:
现在假设两个 n n n维向量其中的 b b b已经确定:
b = [ 1 , 1 , . . . 1 ] b=[1,1,...1] b=[1,1,...1]
代入柯西不等式:
( a 1 + a 2 + . . . a n ) 2 n ( a 1 2 + a 2 2 + . . . a n 2 ) = cos 2 θ ≤ 1 \dfrac{(a_1+a_2+...a_n)^2}{n(a_1^2+a_2^2+...a_n^2)}=\cos^2\theta\leq 1 n(a12+a22+...an2)(a1+a2+...an)2=cos2θ≤1
以上就是完整的Jain’s Faireness index!
n n n条流共享带宽,构造 n n n维空间,向量 b b b记为 O B → \overrightarrow{OB} OB,点 B B B坐标为 ( 1 , 1 , . . . 1 ) (1,1,...1) (1,1,...1),空间中的点 P ( a 1 , a 2 , . . . a n ) P(a_1,a_2,...a_n) P(a1,a2,...an)可以代表一个资源分配点,它的几何意义就是:
浙江温州皮鞋湿,下雨进水不会胖。