Upload
allan-sun
View
550
Download
0
Embed Size (px)
Citation preview
PROBLEM E: THE PAGERANK ALGORITHM
STEP 1: READ INPUT
Sample Input:
4
0 1 1 1
0 0 0 1
1 1 0 0
1 0 0 0
• 4表示有4個網頁(4行輸入資料),每行有4個數字
• 由於輸入資料是網頁的”vote”,所以不是有(1)就是沒有(0)
STEP 2: INITIAL ARRAY
• 對於讀取進來的資料,最簡單的方式是以一個nxn的陣列來存放
• 然後檢查每個網頁有幾個”vote”,用以計算每個”vote”有多少”value”
0 1 1 1
0 0 0 1
1 1 0 0
1 0 0 0
3 1 2 1
STEP 3: VALUE CALCULATION
• 對於每個”vote”,他的”value”是 vote/total vote
• 也就是說,如果一個網頁給出了3個”vote”,那麼它所給出的每個”vote”的”value”
就是1/3
• 由於有4個網頁,每個”vote”所值的”value”也都是1/4
• 所以每個page目前的PageRank就會是他得到的”value”
0 1/3 1/3 1/3
0 0 0 1
1/2 1/2 0 0
1 0 0 0
3/8 5/24 1/12 1/3
0 1/12 1/12 1/12
0 0 0 1/4
1/8 1/8 0 0
1/4 0 0 0
0.375 0.208 0.083 0.333
STEP 4: PAGERANK CALCULATION
• 在PageRank演算法中,有一個調整用的公式
這個公式套用在這個範例當中,可以展開成這樣
STEP 4: PAGERANK CALCULATION(CONT.)
• 其中d是一個給定的常數 0.85
• N是給的網頁數量,在範例中是4
• 是我們在Step 3當中算出來的”value”
• 將這幾個數字代入公式求解,只要代一次就好
0.375 0.208 0.083 0.333
0.85 0.85
4
STEP 5: OUTPUT RESULT
• 此時你的結果應該是這樣
• 輸出要求是只輸出小數後兩位,每個網頁的PageRank值一行,也就是每輸出一格就換一次行
• 你應該會用到 #include<iomanip> 中的部分function
Sample Output:
0.36
0.21
0.11
0.32
0.35625 0.2143 0.10805 0.32055