Computer Science/Software Application

[소프트웨어 응용] Web과 Directed Graph

brong 2023. 10. 20. 21:13
728x90

Web & Directed graphs

Web을 그래프로 봐보자

실세계의 여러 네트워크 데이터 중, 웹도 그 중 하나다! 심지어 엄청 큰

→ 짚고 넘어갈만 하다.

웹의 구성 - Graph

  • Node ← 웹 페이지
  • Edge ← 하이퍼링크 (페이지 간의 연결)

웹의 변화 - Process

  • 이전에는 사람들이 웹에서 목적을 가지고 무언가는 탐색했던 반면, 요즘에는 수 많은 연결이 하이퍼링크보단 트랜잭션이다. 트랜잭션이란 여러 스탭이지만 한 과정으로 봐야하는 것

웹의 구조 - Structure - Directed Graph

  • 웹은 방향 그래프이다.
  • 하나의 페이지로부터 나가는 링크도 있고, 들어오는 링크도 있다.

→ 어느정도의 비율일까 → In, Out 집합

방향 그래프의 연결성은 → Strongly, Weakly

In(v) : v에 도달할 수 있는 노드 w들의 집합

Out(v) : v에서 나가서 도달할 수 있는 노드 w들의 집합

노드 v는 In, Out 모두에 들어간다

모든 방향 그래프는 이 두가지로 나타낼 수 있다.

→ 강한 연결 그래프거나, 사이클이 없거나

  • Strongly connected
    • 각 노드는 모든 노드에 도달 가능 하다.
    • 모든 노드에 대해 In(A) = Out(A)
  • DAG - Directed Acyclic Graph
    • 사이클이 없는 방향 그래프 !
    • 사이클이 있으면: (u→v) 길이 있으면 (v→u) 가는 길도 있다
      • 모든 노드로 갈 수 있다.
      • 강한 연결 그래프면 - 사이클이 반드시 존재한다.

Strongly connected component (SCC)

: node S들의 집합이다

  • S의 모든 노드들은 모두 강하게 연결되어 있다.
  • S를 포함하는 더 큰 컴포넌트는 없다.

  • 노드 하나짜리도 SCC이다.

모든 방향 그래프는 SCC들로 이루어진 DAG이다

증명) proof by contradiction

만약 DAG가 아니면 → 사이클이 존재 한다. 그럼 연결된 상태 → 더 큰 SCC가 가능

  • 큰 강한 연결 컴포넌트들이 사이클 없이 연결된 상태 !
    • 만약 SCC들 간의 사이클이 있다? → 그럼 더 큰 SCC를 만들 수 있었음. — 위반
  • 방향 그래프 G는 SCC들로 나누어질 수 있다. (partioning된다)
    • 모든 노드는 오직 하나의 SCC의 요소이다!

노드 v를 포함하는 SCC 찾기

scc의 노드들 : strongly connected

→ v로 올 수 있고, v가 갈 수 있는 애들

In(v) 교 Out(v)

근데 In(v)는 구하기 어렵다 → 그래프 방향을 다 뒤집어서 G’ 여기서 In(v)를 찾자

Out(v, G) 교 Out(v, G') = SCC !!

web의 SCC

→ 웹은 하나의 Giant SCC로 이루어지지 않을까!?

웹은 엄청 많은 노드들과 링크들 → 엄청 큰 SCC → Giant SCC!

경험적으로, 웹의 SCC는 엄청 큼 100만개 정도의 페이지

만약에 이렇게 큰 Giant SCC 2개가 있다고 해보자.

→ 그럼 이 많은 페이지들간의 연결이 하나만 있어도 하나의 SCC로 합쳐지는데, 이거 하나가 없을까?

→ 링크가 없을 확률은 매우 작다.

→ 고로 웹은 하나의 큰 Giant SCC일 확률이 크다

Web 네트워크의 구조

WEB

  • 203백만 개 노드
  • 15억 개 링크

WEB - 무방향 그래프

  • 91% 노드들은 weakly connected component (WCC)
  • 무방향 그래프로 보자면, 91%는 연결되어 있음.
  • 연결을 엄청 많이 가지고 있는 허브 역할을 하는 노드들이 얘네들을 다 연결시키는 게 아닌가?
    • 이 허브 노드들을 지워도 50% 노드들은 여전히 WCC임

WEB - 방향 그래프

  • 가장 큰 SCC: 전체 노드의 28%(56백만)를 포함하고 있음
  • 대략적으로 어떤 노드 v에 대해
    • Out(v) ~ 50%
    • In(v) ~ 50% (100백만)