import numpy as np
# 参数设置
p = 0.85 # 继续浏览当前网页的概率
a = np.array([[1, 0, 0, 0],
[0, 0, 0, 1],
[0, 0, 0, 1],
[0, 1, 0, 0]], dtype=float)
length = a.shape[1] # 网页数量
b = np.transpose(a).copy() # 转置并复制以避免修改原始矩阵
m = np.zeros((a.shape), dtype=float)
# 构造转移矩阵(修正 Dead Ends)
for j in range(b.shape[0]):
if b[j].sum() == 0: # 处理 Dead Ends
b[j] = np.ones(length) / length # 修正为均匀分布
for i in range(b.shape[1]):
m[i][j] = b[j][i] / b[j].sum() # 使用修正后的 b[j][i]
# 初始化 PageRank 值
v = np.ones(length).reshape(-1, 1) / length
ee = np.ones(length).reshape(-1, 1) / length
# 迭代计算 PageRank 值
for _ in range(100):
v = p * np.dot(m, v) + (1 - p) * ee
print("修正后的 PageRank 值:")
print(v)
aW1wb3J0IG51bXB5IGFzIG5wCgojIOWPguaVsOiuvue9rgpwID0gMC44NSAgIyDnu6fnu63mtY/op4jlvZPliY3nvZHpobXnmoTmpoLnjocKYSA9IG5wLmFycmF5KFtbMSwgMCwgMCwgMF0sCiAgICAgICAgICAgICAgWzAsIDAsIDAsIDFdLAogICAgICAgICAgICAgIFswLCAwLCAwLCAxXSwKICAgICAgICAgICAgICBbMCwgMSwgMCwgMF1dLCBkdHlwZT1mbG9hdCkKCmxlbmd0aCA9IGEuc2hhcGVbMV0gICMg572R6aG15pWw6YePCmIgPSBucC50cmFuc3Bvc2UoYSkuY29weSgpICAjIOi9rOe9ruW5tuWkjeWItuS7pemBv+WFjeS/ruaUueWOn+Wni+efqemYtQptID0gbnAuemVyb3MoKGEuc2hhcGUpLCBkdHlwZT1mbG9hdCkKCiMg5p6E6YCg6L2s56e755+p6Zi177yI5L+u5q2jIERlYWQgRW5kc++8iQpmb3IgaiBpbiByYW5nZShiLnNoYXBlWzBdKToKICAgIGlmIGJbal0uc3VtKCkgPT0gMDogICMg5aSE55CGIERlYWQgRW5kcwogICAgICAgIGJbal0gPSBucC5vbmVzKGxlbmd0aCkgLyBsZW5ndGggICMg5L+u5q2j5Li65Z2H5YyA5YiG5biDCiAgICBmb3IgaSBpbiByYW5nZShiLnNoYXBlWzFdKToKICAgICAgICBtW2ldW2pdID0gYltqXVtpXSAvIGJbal0uc3VtKCkgICMg5L2/55So5L+u5q2j5ZCO55qEIGJbal1baV0KCiMg5Yid5aeL5YyWIFBhZ2VSYW5rIOWAvAp2ID0gbnAub25lcyhsZW5ndGgpLnJlc2hhcGUoLTEsIDEpIC8gbGVuZ3RoCmVlID0gbnAub25lcyhsZW5ndGgpLnJlc2hhcGUoLTEsIDEpIC8gbGVuZ3RoCgojIOi/reS7o+iuoeeulyBQYWdlUmFuayDlgLwKZm9yIF8gaW4gcmFuZ2UoMTAwKToKICAgIHYgPSBwICogbnAuZG90KG0sIHYpICsgKDEgLSBwKSAqIGVlCgpwcmludCgi5L+u5q2j5ZCO55qEIFBhZ2VSYW5rIOWAvO+8miIpCnByaW50KHYp