8
PROBLEM E: THE PAGERANK ALGORITHM

OOP 2011 Midterm On-site Exam - Problem E Answer

Embed Size (px)

Citation preview

Page 1: OOP 2011 Midterm On-site Exam - Problem E Answer

PROBLEM E: THE PAGERANK ALGORITHM

Page 2: OOP 2011 Midterm On-site Exam - Problem E Answer

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)

Page 3: OOP 2011 Midterm On-site Exam - Problem E Answer

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

Page 4: OOP 2011 Midterm On-site Exam - Problem E Answer

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

Page 5: OOP 2011 Midterm On-site Exam - Problem E Answer

STEP 4: PAGERANK CALCULATION

• 在PageRank演算法中,有一個調整用的公式

這個公式套用在這個範例當中,可以展開成這樣

Page 6: OOP 2011 Midterm On-site Exam - Problem E Answer

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

Page 7: OOP 2011 Midterm On-site Exam - Problem E Answer

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

Page 8: OOP 2011 Midterm On-site Exam - Problem E Answer