DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁SEO優化 >> SEO優化集錦 >> 淺談網頁搜索排序中的投票模型
淺談網頁搜索排序中的投票模型
編輯:SEO優化集錦     

前些天讀了一本《選舉的困境》,其中有一章,從美國的選舉制度說起,介紹美國選舉制度的不足,然後針對其不足,提出種種改善,然而每種改善都有其各自的問題,其中的變化很有趣。

先說美國選舉制度,美國的總統選舉是一種“贏者通吃”的方式,每個州根據其人口多少,有幾十或幾百的“州票”,州裡的人對總統候選人進行選舉,在某個州獲得票最多的那個候選人,獲得這個州所有的“州票”,然後統計所有候選人的“州票”多少,獲得最多“州票”的候選人獲勝。

這樣制度的問題是顯然的,比如如果只有兩個州,A州5個人,而B州4個人,州票也分別是5和4,如果某候選人X在A州以3:2獲勝,另一個候選人Y在B州以4:0獲勝,這樣顯然候選人Y在全國范圍內獲得了6張票,而候選人X只有在A州的3張票,但是由於“贏者通吃”,X獲得了A周的全部5張“州票”,Y只獲得了B周的4張“州票”,在全國只有1/3民眾支持的X居然獲得了選舉的勝利。

這樣的情況在2000年美國總統選舉中就出現過,小布什的州票領先於戈爾,然而在全國民眾中統計支持戈爾的人數卻是大於小布什的,當然戈爾輸給小布什還有另一個原因,這裡按下不表。

如果放在算法領域,可以看出這裡的問題在於,為了統計結果R(最適合的總統人選),找到了一個特征A(每個民眾的投票),而決定結果R的,卻不是特征A,而是由特征A推導出來的特征B(州票),在特征A向特征B的推導過程中,信息丟失了(每個洲的支持百分比不一樣)。

“贏者通吃”這種制度的具體歷史原因先不說,有興趣的朋友可以去看原著。解決這種問題的最直接方案就是從“贏者通吃”變成直選,也就是一人一票,直接統計票數,然而這樣也會遇到一系列問題。

在談那一系列問題之前,先把要解決的問題抽象一下:

有n個候選人,每個選民對這n個候選人投票,最終在n個候選人中選出最合適、最符合民意、也符合邏輯的那個人。

方案1一票制,每人一票,選出自己最喜歡的候選人,對結果進行統計,得票最多的那個人當選。

這樣做的問題是會導致作者定義的一種“鹬蚌困局”,舉例說,如果有ABC三個候選人,其中BC政見比較類似,支持B的人也比較支持C,反之亦然,在全民中,喜歡BC的人占多數,A的政見和BC相反,支持A的人在全民中占少數。這樣導致的後果就是,BC獲得的票會比較分散,而A獲得的票比較集中從而獲得勝利,如果BC中有1人不參加選舉,票就會集中到B或者C一個人的手中,從而使多數選民的支持者當選。前面按下不表的戈爾失敗的另一個原因,就是有人認為有跟戈爾政見類似的耐德的參與,他分散了部分戈爾的選票。

可以對此問題有所改善的方案叫做“二選制”。

方案2:二選制,每人一票,如果無人獲得大於50%的支持,則將得票最高的兩個候選人拿出來,再進行一輪選舉,得票多的人獲勝。

法國總統選舉就是這樣的二選制,但是這樣的方法只能改善“鹬蚌困局”,而不能徹底解決,2002年的法國總統大選就出現了類似的情況,當時支持左派政見的民眾較多,然而在二選制下,最終的前兩名卻是一個右派和一個極右派。出現這種情況的原因是當年有16個總統候選人,且多數是持左派政見者,這樣就導致左派的票極端分散。

方案3:n選制,每人一票,如果無人獲得大於50%的支持,則去掉支持最少的候選人,再進行一輪投票,若依舊無人獲得大於50%的支持,再去掉得票最少的候選人,直到有人大於50%支持為止。

2001年奧委會決定北京為2008年奧運會主辦城市的時候,就是用的這樣的制度,在第一輪投票裡大阪被淘汰,北京在第二輪就獲得了半數以上的支持,從而當選。

n選制的問題在於不實用,如果是奧委會這種只有幾百個人投票的情況還可以使用,如果類似前面法國總統選舉,有16個候選人,舉國上下最多可能進行15次投票,成本太高。

方案4:即刻復選制,每個民眾對候選人進行排序,如果某個候選人獲得了50%以上的首選,則直接獲得勝利,否則淘汰票數最低的候選人,並且把票數最低候選人的得票中的第二候選人拿出來,分給對應的候選人,如果有人獲得50%以上,則當選,否則再淘汰一位最低的,並且把他票分給裡面排序最高的且未被淘汰的候選人,如此往復。

愛爾蘭總統選舉和倫敦市長選舉采用的是類似的方案,此方案也有問題,試想如此場景:選民共10人,中間派候選人是3人的首選,左派和右派的候選人分別是4人的首選,當然左派選民最討厭右派候選人,而右派選民也最討厭左派候選人,而左派右派的民眾對中間派候選人倒是都可以接受,不管是即可復選制還是n選制,中間派候選人都會在第一輪被淘汰。而中間派候選人則是全體民眾都可以接受的人,也最能調和各派之間矛盾,最和諧。

這個方案的本質問題是,雖然每個選民可以對候選人排序,但是在第一輪的時候卻只考慮了第一選,沒有考慮選民的二、三選。

方案5:上行復選制,跟方案4類似,只不過第一輪淘汰的不是支持最少,而是反對最多的候選人(獲得最多末選票的候選人)

再看上面提到的情況,中間派候選人由於不是任何人的末選,所以第一輪淘汰的是左派或者右派,再第二輪選舉中,中間派的候選人就可以獲勝了。

方案5也有方案5的問題,考慮這樣一種情況,只有兩個候選人AB參選,選民9人,其中6人喜歡A而討厭B,3人喜歡B而討厭A,無論按照之前的哪種方式,都會是A獲勝。但是現在又多了兩個候選人C和D,喜歡B的3人中,都是把A列在最後一個候選的,而喜歡A的6人的末選,卻是BCD各2票,這樣,在第一輪選舉中,A就由於獲得了最多的末選票被淘汰了,而通過精心的構造例子,完全可以使B最終當選。僅僅由於CD參選或者不參選,A和B之間的勝負關系就發生了大逆轉。

實際使用此方案的例子不多,只有在公元前507年的雅典有類似的方案,不是讓民眾投支持票,而是投反對票,把反對最多的人投出局。

方案6:多賽制,民眾對候選人排序,然後候選人之間兩兩pk,統計每一張選票上看候選人A在候選人B前面還是B在A前面,如此找到獲勝場次最多的候選人來贏得選舉。

這樣的問題是可能導致循環勝負,如ABC三個候選人,有3個民眾,投票分別是ABC,BCA,CAB,可以看出AB之間A獲勝兩次,A>B;BC之間B獲勝兩次,B>C,AC之間C獲勝兩次,C&

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved