高二同學(xué)學(xué)習(xí)pagerank算法后續(xù),如何推廣到評優(yōu)問題以及北太天元的代碼實現(xiàn)

學(xué)生的記名投票評優(yōu)問題
總共有個五個學(xué)生,
假設(shè)初始時刻5個學(xué)生的信用分是相同的,都是 1/5,
???也就是
???x(1,1) = 1/5 ;?x(2,1) = 1/5; ...; x(5,1) = 1/5;
這個在北太天元可以這么作
x = zeros(5, 20);
x(:,1) = 1/5;
學(xué)生1 給學(xué)生 j=1,2,4 投票, 表示他把自己的信用分數(shù)
平均分給了同學(xué)1,2,4。?因此,
???學(xué)生1 從學(xué)生1 得到的分數(shù)是 1/3 * x(1,1)
???學(xué)生2 從學(xué)生1 得到的分數(shù)是 1/3 * x(1,1)
???學(xué)生4 從學(xué)生1 得到的分數(shù)是 1/3 * x(1,1)
學(xué)生2僅僅給學(xué)生5投了一票,說明
???學(xué)生5 從學(xué)生2 得到的分數(shù)是 1 * x(2,1)
學(xué)生3給學(xué)生1,2,3各投了一票,說明
???學(xué)生1 從學(xué)生3 得到的分數(shù)是 1/3 * x(3,1)
???學(xué)生2 從學(xué)生3 得到的分數(shù)是 1/3 * x(3,1)
???學(xué)生3 從學(xué)生3 得到的分數(shù)是 1/3 * x(3,1)
學(xué)生4給學(xué)生2,3,5各投了一票,說明
???學(xué)生2 從學(xué)生4 得到的分數(shù)是 1/3 * x(4,1)
???學(xué)生3 從學(xué)生4 得到的分數(shù)是 1/3 * x(4,1)
???學(xué)生5 從學(xué)生4 得到的分數(shù)是 1/3 * x(4,1)
學(xué)生5給學(xué)生3,4,5各投了一票,說明
???學(xué)生2 從學(xué)生5 得到的分數(shù)是 1/3 * x(5,1)
???學(xué)生3 從學(xué)生5 得到的分數(shù)是 1/3 * x(5,1)
???學(xué)生5 從學(xué)生5 得到的分數(shù)是 1/3 * x(5,1)
我們可以從投票矩陣
A = [ 1??1??0??1??0
?????0??0??0??0??1
?????1??1??1??0??0
?????0??1??1??0??1
?????0??0??1??1??1 ] ;
得到轉(zhuǎn)移矩陣(信用分數(shù)轉(zhuǎn)移矩陣)
P =?[ 1/3???????????0?????????????1/3???????????0?????????????0
??????1/3???????????0?????????????1/3???????????1/3???????????0
??????0?????????????0?????????????1/3???????????1/3???????????1/3
??????1/3???????????0?????????????0?????????????0?????????????1/3
??????0?????????????1?????????????0?????????????1/3???????????1/3 ];
從A得到P的北太天元代碼可以是:
for k=1:5
??P(k,:) = A(k,;) / sum (A(k,:));
end
P = P' ; % 轉(zhuǎn)置
x(:,1) 就是第一個時刻的態(tài),x(i,1) = 1/5 表示第i個同學(xué)的信用分數(shù)
投票得到的轉(zhuǎn)移矩陣確定以后,下一個狀態(tài)就是改變了每個同學(xué)的信用分數(shù)
轉(zhuǎn)移一次后到了第二個時刻,同學(xué)1,2,3,4,5得到的分數(shù)是
???同學(xué)1的分數(shù)是
???x(1,2) = x(1,1) * 1/3 + x(3,1)*1/3 ;
這個實際上等于 x(1,2) = P(1,:) * x(:,1)
?也就是說是P的第一行乘以 x 的第一列
??[1/3?0?1/3 0?0 ] * [ 0.2
???????????????????????????0.2
???????????????????????????????????????0.2
???????????????????????????????????????0.2
???????????????????????????????????????0.2 ]???=?1/3*0.2 + 0 *0.2 +1/2*0.3 +0*0.2 + 0*0.2
同學(xué)的2分數(shù)是
??x(2,2) = P(2,:) * x(:,1);
....
同學(xué)5的分數(shù)是
??x(5,2) = P(2,:)*x(:,1);
也就是
??x(:,2) = P * x(:,1)
經(jīng)過很多次轉(zhuǎn)移后,我們看到同學(xué)1,2,3,4,5 得到的信用分數(shù)趨向于平衡,
這就是最終的學(xué)生的信用分數(shù)。
很多次轉(zhuǎn)移用的北太天元的代碼是
?for k=2:20
??x(:,k) = P*x(:,k-1);
?end
?針對我們的這個例子,我們轉(zhuǎn)移了19次,然后得到的最終信用分數(shù)是
format rat % 這個是用分數(shù)來顯示浮點數(shù)
x(:,end)
ans =
?????12/101
?????17/101
?????24/101
?????15/101
?????33/101
我們可以得到結(jié)論,學(xué)生5 > 學(xué)生3 > 學(xué)生2 > 學(xué)生4 > 學(xué)生1