웹페이지 A가 B를 링크하면 B는 단순히 링크 한 개를 얻는 데서 끝나지 않습니다. A가 다른 중요한 페이지들로부터 많은 링크를 받는 페이지라면 A가 건넨 링크에도 더 큰 무게가 실립니다. 반대로 A가 수백 개의 페이지로 링크를 나누어 보내면 B가 받는 몫은 작아집니다. 구글 공동 창업자 래리 페이지와 세르게이 브린이 초기 검색 시스템에 도입한 PageRank는 이 연결 관계를 반복해서 계산하는 링크 분석 방식입니다.
PageRank의 핵심은 웹을 방향 그래프로 나타낸 뒤 그 위를 무작위로 이동하는 방문자의 장기 체류 확률을 구하는 것입니다. 이 이동 규칙에 댐핑과 텔레포테이션을 더해 마르코프 전이 행렬로 표현하고, 확률 벡터를 계속 곱하면 일정한 벡터에 가까워집니다. 그 벡터는 전이 행렬의 고유값 1에 대응하는 고유벡터이며, 각 성분이 해당 페이지의 PageRank가 됩니다. 다만 실제 Google 검색 순위는 이 고전적 공식 하나로 결정되지 않습니다. Google은 PageRank가 지금도 핵심 순위 시스템의 일부라고 설명하면서도, 작동 방식이 초기 형태에서 크게 발전했고 검색에는 여러 시스템과 신호가 함께 쓰인다고 밝히고 있습니다.
PageRank는 링크 수가 아니라 링크의 구조를 계산한다
초기 PageRank 논문의 출발점은 학술 논문의 인용입니다. 중요한 논문에 인용되면 그 인용의 가치도 크다고 보는 것처럼, 중요한 웹페이지가 가리키는 페이지에는 더 큰 중요도를 전달합니다. 모든 링크를 똑같은 한 표로 세는 방식과 다른 점입니다.
페이지 j의 PageRank를 r_j, 그 페이지가 내보내는 링크 수를 d_j라고 하겠습니다. j가 페이지 i로 연결되어 있다면 j가 i에 전달하는 기본 몫은 r_j/d_j입니다. 링크가 하나뿐이면 자신의 점수를 한 곳에 전달하고, 링크가 열 개면 각 링크에 10분의 1씩 전달합니다. 페이지 i의 점수는 자신을 가리키는 모든 페이지의 몫을 더해 얻습니다. 실제 계산에는 여기에 댐핑 계수와 텔레포테이션 항이 더해집니다.
링크 j→i가 있을 때 j가 i에 전달하는 링크 몫 = r_j ÷ d_j
따라서 링크를 많이 받았다는 사실만으로 높은 PageRank가 보장되지는 않습니다. 어느 페이지가 링크했는지, 그 페이지의 점수가 얼마인지, 그 페이지가 점수를 몇 개의 나가는 링크로 나누는지가 함께 계산됩니다. PageRank라는 이름의 Rank는 사이트 전체가 아니라 고전적 모형에서 개별 페이지에 배정되는 확률 점수를 뜻합니다.
웹페이지를 방향 그래프와 전이 행렬로 바꾸기
웹을 그래프로 표현하면 웹페이지는 꼭짓점, 하이퍼링크는 화살표가 됩니다. A에서 B로 가는 링크는 A→B라는 방향을 갖습니다. PageRank 계산에서는 이 그래프를 확률 전이 행렬 P로 옮깁니다. 여기서는 출발 페이지를 열, 도착 페이지를 행에 놓는 열 확률 행렬 표기를 사용하겠습니다.
P_ij = 1/d_j (j가 i로 링크할 때), 그렇지 않으면 P_ij = 0
페이지 j에서 나가는 링크가 d_j개라면 방문자가 그중 하나를 같은 확률로 고른다고 가정합니다. 그러므로 j에 해당하는 열의 확률을 모두 더하면 1이 됩니다. 현재 방문 확률을 열벡터 r^(k)라고 할 때 다음 단계는 r^(k+1)=P r^(k)로 계산합니다. 이 계산은 한 번 이동한 뒤 각 페이지에 도착할 확률을 뜻합니다.
책이나 강의에 따라 출발 페이지를 행, 도착 페이지를 열에 놓기도 합니다. 그때 P는 행 확률 행렬이고 정상분포는 행벡터 π^T=π^T P로 씁니다. 두 표기는 전치 관계일 뿐 계산 원리는 같습니다. 행과 열의 약속을 섞지만 않으면 됩니다. 이 글에서 사용하는 열 확률 행렬에서는 PageRank가 오른쪽 고유벡터입니다.
랜덤 서퍼 모델과 마르코프 연쇄
랜덤 서퍼 모델은 한 방문자가 현재 페이지의 링크 가운데 하나를 무작위로 골라 다음 페이지로 이동한다고 가정합니다. 다음 위치가 현재 위치에 의해서만 정해지고 그 이전의 이동 경로에는 직접 의존하지 않으므로 마르코프 연쇄로 나타낼 수 있습니다. 여기서 상태는 웹페이지이고, 링크를 따라갈 확률이 상태 사이의 전이 확률입니다.
오랫동안 이동했을 때 방문자가 각 페이지에 있을 확률이 더 이상 바뀌지 않는다면 이를 정상분포라고 합니다. 그 정상분포 r은 P를 한 번 더 곱해도 그대로이므로 P r=r을 만족합니다. 확률벡터이므로 모든 성분은 0 이상이고 합은 1입니다.
정상분포 조건: P r = r, r_i ≥ 0, Σr_i = 1
왜 주 고유값이 1이고 PageRank가 고유벡터인가
행렬 A와 0이 아닌 벡터 x가 A x=λx를 만족할 때 x를 고유벡터, λ를 고유값이라고 합니다. PageRank의 정상분포 식 P r=r은 P r=1·r과 같습니다. 따라서 r은 고유값 1에 대응하는 P의 고유벡터입니다. 크기는 확률의 합이 1이 되도록 정규화합니다.
열 확률 행렬에서는 각 열의 합이 1이므로 1로만 이루어진 행벡터를 왼쪽에서 곱했을 때 1^T P=1^T가 됩니다. 즉 P의 전치행렬에는 고유값 1이 있고, 행렬과 전치행렬은 같은 고유값을 가지므로 P에도 고유값 1이 있습니다. 확률 전이 행렬의 스펙트럼 반지름, 즉 고유값 절댓값의 최댓값은 1입니다. 그래서 1을 주 고유값이라고 부릅니다. 모든 고유값이 1이라는 뜻은 아닙니다.
여기에 양의 텔레포테이션 확률을 넣어 만든 Google 행렬은 모든 상태 사이의 이동 가능성을 확보합니다. 표준 조건에서는 페론·프로베니우스 정리에 따라 고유값 1에 대응하는 양의 정상분포가 하나로 정해집니다. 다른 고유성분은 반복할수록 약해져 어느 초기 확률벡터에서 시작해도 같은 PageRank 벡터에 수렴합니다.
세 페이지로 직접 계산하는 기본 PageRank
A, B, C 세 페이지가 있다고 하겠습니다. A는 B와 C에 링크하고, B는 C에만 링크하며, C는 A에만 링크합니다. A의 링크는 두 개이므로 A에서 B와 C로 이동할 확률은 각각 1/2입니다. B에서 C, C에서 A로 이동할 확률은 각각 1입니다.
| 출발 페이지 | 연결된 페이지 | 각 링크 선택 확률 |
|---|---|---|
| A | B, C | 각각 1/2 |
| B | C | 1 |
| C | A | 1 |
행을 도착지 A·B·C, 열을 출발지 A·B·C 순서로 놓으면 전이 행렬은 P=[[0,0,1],[1/2,0,0],[1/2,1,0]]입니다. 정상분포를 r=(a,b,c)^T라고 두고 P r=r을 풀면 a=c, b=a/2, c=a/2+b가 됩니다. 여기에 a+b+c=1을 적용하면 (a,b,c)=(0.4,0.2,0.4)입니다. A와 C에는 각각 장기 방문 확률 40%, B에는 20%가 배정됩니다.
A는 C의 확률을 전부 받고, B는 A의 확률 가운데 절반만 받습니다. C는 A의 절반과 B의 전부를 받습니다. 들어오는 링크의 개수가 같더라도 링크를 보내는 페이지의 점수와 분배 구조 때문에 결과가 달라질 수 있음을 보여 주는 예입니다.
링크만 따라가면 생기는 세 가지 문제
실제 웹 그래프에 기본 전이 규칙만 적용하면 항상 하나의 안정된 답으로 수렴하는 것은 아닙니다. 링크가 없는 페이지, 닫힌 링크 집단, 일정한 주기의 순환이 계산을 방해할 수 있습니다.
1. 댕글링 노드 또는 데드엔드
밖으로 나가는 링크가 하나도 없는 페이지를 댕글링 노드라고 합니다. 이 페이지에 해당하는 열은 모두 0이 되어 열의 합이 1인 확률 행렬 조건이 깨집니다. 방문자가 어디로 갈지 정의되지 않고 계산상 확률 질량도 사라집니다. 보통 이 열을 전체 페이지에 대한 균등분포나 미리 정한 개인화 벡터로 바꿔 문제를 해결합니다.
2. 스파이더 트랩
몇 페이지가 서로에게만 링크하고 바깥으로 나가는 링크가 없다면 방문자는 그 집단에 들어간 뒤 빠져나오지 못합니다. 이런 닫힌 집단을 스파이더 트랩이라고 부릅니다. 기본 모형에서는 시간이 흐를수록 그 집단이 확률을 흡수해 다른 페이지의 점수가 지나치게 작아질 수 있습니다.
3. 주기적인 순환
A가 B만 링크하고 B가 A만 링크하는 두 페이지에서는 방문 확률이 두 상태를 번갈아 오갈 수 있습니다. 정상분포 자체는 존재해도 시작 벡터에 따라 반복값이 진동하여 극한으로 가지 않을 수 있습니다. 마르코프 연쇄에서 하나의 정상분포로 안정적으로 수렴하려면 연결성뿐 아니라 비주기성도 필요합니다.
댐핑과 텔레포테이션으로 Google 행렬 만들기
PageRank는 방문자가 항상 링크만 따라간다고 가정하지 않습니다. 확률 α로 현재 페이지의 링크를 따라가고, 확률 1-α로 링크와 무관하게 다른 페이지로 이동한다고 설정합니다. 이 갑작스러운 이동을 텔레포테이션이라고 합니다. 고전적 설명에서 자주 쓰이는 α는 0.85이며, 이는 계산 예시와 초기 모형을 설명하기 위한 값입니다. 현재 Google이 실제 시스템에서 사용하는 구체적 설정은 공개된 고전 공식과 동일하다고 단정할 수 없습니다.
텔레포테이션 목적지를 나타내는 확률벡터를 v라고 하면 Google 행렬 G와 반복식은 다음과 같습니다. 먼저 댕글링 노드의 열은 v로 채워 P가 확률 행렬이 되게 합니다.
G = αP + (1-α)v1^T
r^(k+1) = G r^(k) = αP r^(k) + (1-α)v
v의 성분이 모두 1/n인 균등분포라면 n개 페이지 어디로든 같은 확률로 이동합니다. 각 페이지는 반복 단계마다 (1-α)/n이라는 기본 몫을 받습니다. v의 모든 성분이 양수이고 0<α<1이면 G의 모든 성분도 양수가 됩니다. 그 결과 링크 그래프가 분리되어 있거나 주기적이어도 하나의 양의 정상분포가 존재하고 반복 계산이 그 분포로 수렴합니다.
α가 1에 가까우면 링크 구조의 영향이 커지고 수렴은 대체로 느려집니다. α가 작아지면 텔레포테이션의 비중이 커져 점수가 더 평평해지고 반복 계산은 빨리 안정됩니다. 표준 Google 행렬에서는 주 고유값 1을 제외한 고유값의 절댓값이 α 이하가 되므로, α는 링크 비중뿐 아니라 오차가 줄어드는 속도에도 관여합니다.
댐핑을 넣은 세 페이지 예제의 수렴 과정
앞의 A·B·C 링크 구조에 α=0.85와 균등 텔레포테이션 v=(1/3,1/3,1/3)^T를 적용하겠습니다. 링크를 따라갈 확률은 85%, 임의의 페이지로 이동할 확률은 15%입니다. 따라서 각 페이지가 매 단계 받는 텔레포테이션 몫은 0.15/3=0.05입니다. 시작값은 세 페이지에 똑같이 1/3씩 배정합니다.
| 반복 k | A의 확률 | B의 확률 | C의 확률 |
|---|---|---|---|
| 0 | 0.333333 | 0.333333 | 0.333333 |
| 1 | 0.333333 | 0.191667 | 0.475000 |
| 2 | 0.453750 | 0.191667 | 0.354583 |
| 3 | 0.351396 | 0.242844 | 0.405760 |
| 5 | 0.394896 | 0.217831 | 0.387273 |
| 10 | 0.388913 | 0.214416 | 0.396670 |
| 20 | 0.387792 | 0.214806 | 0.397402 |
| 수렴값 | 0.387790 | 0.214811 | 0.397400 |
처음 몇 번은 값이 위아래로 움직이지만 진폭이 점점 작아집니다. 충분히 반복하면 약 (0.387790, 0.214811, 0.397400)으로 수렴합니다. 세 값의 합은 1이며 G r=r을 만족합니다. 이 예에서는 C의 PageRank가 약 39.74%로 가장 높고, A가 약 38.78%, B가 약 21.48%입니다. 댐핑이 없는 결과 (0.4,0.2,0.4)와 비슷하지만 텔레포테이션이 확률을 조금 더 고르게 분배합니다.
거듭제곱 반복법으로 PageRank를 구하는 절차
PageRank 계산에는 주로 거듭제곱 반복법이 사용됩니다. 처음에는 모든 페이지에 1/n씩 주거나 합이 1인 다른 확률벡터를 정합니다. 이후 같은 전이 행렬을 계속 곱하고, 새 벡터와 이전 벡터의 차이가 허용 오차보다 작아지면 멈춥니다.
- 각 페이지에서 나가는 링크 수를 세고 링크 전이 행렬 P를 구성합니다.
- 나가는 링크가 없는 댕글링 열을 개인화 벡터 v로 바꿉니다.
- 댐핑 계수 α와 텔레포테이션 벡터 v를 정합니다.
- 초기 확률벡터 r^(0)을 정하고 합이 1인지 확인합니다.
- r^(k+1)=αP r^(k)+(1-α)v를 반복합니다.
- ||r^(k+1)-r^(k)||₁이 정한 허용 오차보다 작아지면 종료합니다.
- 마지막 벡터의 성분을 페이지별 PageRank로 사용합니다.
웹 규모에서는 n×n 행렬을 빽빽하게 저장하지 않습니다. 한 페이지가 전체 웹페이지 중 극히 일부에만 링크하므로 링크 행렬은 대부분 0인 희소 행렬입니다. 링크가 E개라면 한 번의 행렬·벡터 곱은 링크 목록을 따라가며 대략 E에 비례하는 계산으로 처리할 수 있습니다. 초기 Google 논문도 수억 개 링크 규모의 그래프를 다루기 위해 반복 계산과 링크 구조의 희소성을 활용했습니다.
반복 계산과 연립방정식은 같은 답을 준다
정상분포 식 r=αP r+(1-α)v에서 αP r을 왼쪽으로 옮기면 (I-αP)r=(1-α)v가 됩니다. 0<α<1이면 αP의 스펙트럼 반지름이 1보다 작아 I-αP의 역행렬이 존재합니다. 따라서 다음과 같이 PageRank를 연립방정식의 해로도 쓸 수 있습니다.
r = (1-α)(I-αP)^(-1)v
페이지가 몇 개뿐인 예제에서는 역행렬이나 연립방정식으로 정확한 값을 구할 수 있습니다. 하지만 웹처럼 거대한 희소 그래프에서는 역행렬을 직접 만드는 비용이 매우 큽니다. 그래서 행렬 전체를 조밀하게 만들지 않고 링크를 따라 벡터만 반복해서 갱신하는 방식이 실용적입니다.
개인화 벡터는 텔레포테이션 목적지를 정한다
v를 반드시 균등분포로 정해야 하는 것은 아닙니다. 스포츠 페이지에 더 큰 확률을 주면 스포츠 주제에 치우친 PageRank를, 특정 신뢰 집합에 더 큰 확률을 주면 그 집합을 출발점으로 한 점수를 만들 수 있습니다. 이때 v의 각 성분은 0 이상이고 전체 합은 1이어야 합니다. 개인화 벡터가 달라지면 같은 링크 그래프에서도 정상분포가 달라집니다.
다만 개인화 PageRank라는 수학적 가능성과 현재 Google 검색의 실제 개인화 방식을 같은 것으로 보아서는 안 됩니다. 공개된 PageRank 모형은 전이 행렬과 정상분포를 설명하는 모델이고, 현재 검색 제품의 세부 구현은 훨씬 많은 시스템과 신호를 포함합니다.
PageRank와 검색 결과 순위는 같은 말이 아니다
고전적 PageRank는 특정 검색어를 입력하기 전에 링크 그래프만으로 계산할 수 있는 질의 독립적 중요도입니다. 반면 실제 검색 결과는 사용자가 입력한 검색어와 문서의 관련성, 콘텐츠의 품질과 유용성, 위치·언어·기기 같은 맥락, 최신성이 필요한 검색인지 여부 등 여러 요소를 함께 고려합니다. 높은 PageRank가 특정 검색어에서 반드시 첫 번째 결과를 뜻하지 않는 이유입니다.
Google의 현재 공식 순위 시스템 안내는 페이지들이 서로 어떻게 연결되는지 이해하는 여러 링크 분석 시스템 가운데 PageRank가 포함된다고 설명합니다. 동시에 PageRank가 처음 출시 때 사용된 핵심 시스템 중 하나였고 이후 작동 방식이 크게 발전했다고 명시합니다. 그러므로 공개된 고전 공식을 현재 Google의 전체 순위 알고리즘이나 최신 점수표로 해석해서는 안 됩니다.
PageRank를 SEO에 적용할 때 자주 생기는 오해
링크 개수만 늘리면 순위가 오른다?
고전 공식부터 링크를 모두 같은 가치로 세지 않습니다. 링크를 보내는 페이지의 점수와 그 페이지에서 나가는 링크 수가 전달량을 바꿉니다. 더구나 현재 Google은 링크 스팸을 다루는 시스템과 정책을 별도로 운영합니다. 검색 순위를 조작하기 위한 인위적 링크는 고전 PageRank의 수학을 정상적인 SEO 전략으로 옮긴 것이 아닙니다.
사이트에 PageRank 점수 하나가 있다?
PageRank의 기본 계산 단위는 페이지입니다. 같은 도메인 안에서도 어떤 페이지가 어디에서 링크를 받고 어디로 연결하는지에 따라 값이 달라질 수 있습니다. 제3자 도구가 표시하는 도메인 권위 점수는 Google이 제공하는 PageRank와 동일한 지표가 아닙니다. Google 역시 제3자의 권위 점수가 Google의 자체 신호와 일치하지 않는다고 안내합니다.
내부 링크는 단순한 메뉴 장식이다?
링크 그래프 관점에서 내부 링크도 페이지 사이의 연결 구조를 만듭니다. 또한 Google의 검색 기본사항은 크롤러가 다른 페이지를 찾을 수 있도록 링크를 크롤링 가능한 형태로 만들라고 권고합니다. 다만 실제 검색 시스템이 내부 링크의 위치와 속성, 문맥을 어떤 가중치로 처리하는지는 고전적 균등 링크 모형만으로 알 수 없습니다.
PageRank 수학 모형의 한계
- 고전 모형은 링크의 문맥이나 실제 추천 의도를 모두 구분하지 않고 같은 전이 규칙으로 단순화합니다.
- 새 페이지는 좋은 콘텐츠를 담고 있어도 아직 들어오는 링크가 적어 낮은 점수를 받을 수 있습니다.
- 링크 팜처럼 인위적으로 연결 구조를 만들면 기본 알고리즘을 조작할 여지가 있어 별도의 스팸 대응이 필요합니다.
- 크롤러가 발견하지 못했거나 접근할 수 없는 링크는 계산 그래프에 포함되지 않습니다.
- 고전 PageRank만으로 검색어 관련성, 정보의 최신성, 사실 정확성, 사용 편의성을 판단할 수 없습니다.
- 댐핑 계수와 개인화 벡터를 어떻게 정하느냐에 따라 결과가 달라집니다.
이 한계는 PageRank의 계산이 틀렸다는 뜻이 아닙니다. PageRank는 주어진 링크 그래프와 전이 규칙 아래에서 장기 방문 확률을 일관되게 계산합니다. 다만 그 확률이 웹문서의 모든 품질을 측정하는 것은 아니므로 검색 시스템은 다른 신호와 결합해야 합니다. 초기 Google 논문에서도 PageRank뿐 아니라 앵커 텍스트, 단어 위치와 글꼴 크기 등 여러 정보를 함께 사용했습니다.
구글 PageRank 계산에 관한 자주 묻는 질문
PageRank의 주 고유값은 왜 정확히 1인가요?
확률 전이 행렬은 각 출발 상태에서 다음 상태로 갈 확률의 합이 1이 되도록 구성됩니다. 그래서 1은 항상 전이 행렬의 고유값입니다. 정상분포는 행렬을 곱해도 변하지 않아 G r=1·r을 만족합니다. 텔레포테이션을 포함한 표준 Google 행렬에서는 1이 절댓값이 가장 큰 고유값이고, 이에 대응하는 확률 고유벡터가 하나로 정해집니다.
PageRank 값은 링크를 클릭할 실제 사용자 비율인가요?
고전적 PageRank 값은 현재 페이지에서 나가는 모든 링크를 같은 확률로 고르고 일정 확률로 텔레포트한다는 랜덤 서퍼 모형의 정상확률입니다. 실제 사람은 링크의 문구, 위치, 디자인과 목적에 따라 다르게 행동하므로 PageRank를 실제 트래픽 비율과 동일하게 해석할 수 없습니다.
반복은 몇 번 해야 하나요?
고정된 횟수보다 수렴 기준을 사용합니다. 예를 들어 연속된 두 벡터 차이의 L1 노름이 10^-8보다 작아질 때까지 반복할 수 있습니다. 필요한 횟수는 댐핑 계수, 그래프 구조, 허용 오차와 초기값에 따라 달라집니다. α가 1에 가까울수록 일반적으로 수렴이 느려집니다.
주 고유벡터를 직접 구하면 반복 계산이 필요 없나요?
작은 행렬에서는 고유방정식이나 연립방정식을 직접 풀 수 있습니다. 웹 그래프는 매우 크고 희소하므로 모든 고유값을 구하거나 역행렬을 만드는 것보다 주 고유벡터만 반복해서 구하는 방식이 저장 공간과 계산량 면에서 유리합니다.
현재 Google 검색도 α=0.85를 그대로 쓰나요?
0.85는 PageRank를 설명하는 고전적이고 널리 쓰이는 댐핑 값입니다. Google은 현재 PageRank의 작동 방식이 처음보다 크게 발전했다고 밝히지만 실제 시스템의 구체적인 행렬, 계수와 결합 가중치는 공개하지 않습니다. 따라서 현재 검색이 모든 상황에서 0.85를 그대로 사용한다고 확인된 사실처럼 말할 수 없습니다.
페이지랭크 계산 핵심 정리
PageRank는 웹페이지를 꼭짓점, 링크를 방향 간선으로 바꾼 뒤 랜덤 서퍼의 장기 방문 확률을 구합니다. 페이지 j의 점수는 그 페이지에서 나가는 링크 수 d_j로 나뉘어 연결된 페이지에 전달됩니다. 이 규칙을 확률 전이 행렬 P로 만들면 다음 확률벡터는 P r로 계산됩니다.
링크만 따르는 행렬에는 댕글링 노드, 스파이더 트랩과 주기적 순환 문제가 생길 수 있습니다. 그래서 확률 α로 링크를 따르고 1-α로 다른 페이지로 이동하는 텔레포테이션을 넣습니다. 이렇게 만든 Google 행렬 G의 정상분포는 G r=r을 만족하며, 바로 주 고유값 1에 대응하는 고유벡터입니다. 양의 텔레포테이션 조건에서는 이 확률벡터가 유일하고 거듭제곱 반복법으로 수렴 계산할 수 있습니다.
이 수학은 중요한 페이지가 건넨 링크에 더 큰 무게를 주면서 웹 전체의 상호 의존성을 하나의 확률벡터로 압축합니다. 그러나 고전적 PageRank는 링크 구조의 중요도를 계산하는 한 요소입니다. 현재 Google 검색은 발전된 PageRank와 여러 링크 분석 시스템에 더해 질의 관련성, 품질, 맥락 등 다양한 신호를 함께 사용합니다.
참고 자료
- Sergey Brin·Lawrence Page, The Anatomy of a Large-Scale Hypertextual Web Search Engine
- Lawrence Page 외, The PageRank Citation Ranking: Bringing Order to the Web
- SIAM Review, A Survey of Eigenvector Methods for Web Information Retrieval
- SIAM Journal on Matrix Analysis and Applications, PageRank Computation, with Special Attention to Dangling Nodes
- Stanford CME 323, PageRank 강의 노트
- Google Search Central, 검색 순위 시스템 안내
- Google Search Central, Google 검색의 작동 방식
- Google Search Central, 검색엔진 최적화 기본 가이드