Added codes 1.1, 1.2, 1.3 and 1.5
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
import numpy as np
|
||||
|
||||
# Constants for PageRank
|
||||
threshold = 1e-13
|
||||
beta = 0.85
|
||||
|
||||
# Spider Trap Network represented as adjacency matrix
|
||||
A = [
|
||||
[0, 0, 1, 0],
|
||||
[1, 0, 0, 0],
|
||||
[1, 1, 0, 0],
|
||||
[1, 1, 0, 1]
|
||||
]
|
||||
|
||||
# Convert adjacency matrix to a numpy array
|
||||
arr = np.array(A, dtype=float)
|
||||
|
||||
# Calculate summation of columns
|
||||
s = []
|
||||
for i in range(len(A)):
|
||||
s.append(np.sum(arr[:, i]))
|
||||
|
||||
print("Summation of columns: ", s)
|
||||
|
||||
# Create the column stochastic probability matrix, M
|
||||
M = arr.copy()
|
||||
for j in range(len(A)):
|
||||
if s[j] != 0: # Prevent division by zero
|
||||
M[:, j] = M[:, j] / s[j]
|
||||
|
||||
print("Column stochastic probability matrix, M:")
|
||||
print(M)
|
||||
|
||||
# Initialize rank vector
|
||||
r = (1.0 + np.zeros([len(M), 1])) / len(M)
|
||||
print("Initial rank vector:")
|
||||
print(r)
|
||||
|
||||
# Calculate the uniform rank contribution
|
||||
uniformR = (1.0 - beta) * r
|
||||
r_prev = r.copy()
|
||||
|
||||
# PageRank iterations
|
||||
for i in range(1, 1001):
|
||||
print("Iteration: ", i)
|
||||
r = beta * np.matmul(M, r_prev) + uniformR
|
||||
print("The rank vector: ")
|
||||
print(r)
|
||||
|
||||
diff = np.sum(abs(r - r_prev))
|
||||
if diff < threshold:
|
||||
break
|
||||
r_prev = r.copy()
|
||||
|
||||
# Display the final rank vector
|
||||
print("The final rank vector: ")
|
||||
print(r[:, 0])
|
||||
Reference in New Issue
Block a user