아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

Min-hashing

시간 제한1초메모리 제한1024 MB

요약
각 노드에 서로 다른 레이블이 주어진 그래프에서 모든 노드의 값을 이웃 중 최솟값으로 반복해 바꿀 때, 어느 시점에서든 같은 값을 가진 노드 쌍의 최대 개수를 구한다.
난이도

어려움10점 중 8점

유형
그래프, 시뮬레이션, 수학, 정렬
정답자
아직 제출이 없습니다

문제

무향 단순 그래프 G=(V,E)G = (V, E)를 생각하자. 어떤 노드와 연결성이 비슷한 노드를 찾는 문제는 오래 연구된 주제이다. 이는 어떤 노드가 다른 노드와 관련 있는지를 판단하는 좋은 지표가 되기 때문이다. Facebook의 "친구 추천" 같은 서비스가 대표적인 응용 사례이다. 유사도를 형식화하기 위해 Jaccard 유사도 개념을 사용할 수 있으며, 이는 ∣N(v1)∩N(v2)∣/∣N(v1)∪N(v2)∣|N(v_1) \cap N(v_2)| / |N(v_1) \cup N(v_2)|로 정의된다. 여기서 N(v)={u∣(u,v)∈E}N(v) = \{u | (u, v) \in E\}이다.

여기서는 대신 min-hashing 방법을 다룬다. 각 노드 vv가 라벨 lvl_v를 가진다고 하자. 노드 vv의 shingle 값 svs_v는 sv=min⁡{lu∣u∈N(v)}s_v = \min \{l_u | u \in N(v) \}로 정의된다. 이 방법은 산업적 요구를 따라갈 만큼 효율적이며, 유사도를 재는 데도 훌륭한 지표이다. 무작위로 유일한 라벨을 부여했을 때, 이웃 집합 N(v1)N(v_1)과 N(v2)N(v_2) 사이의 Jaccard 유사도는 노드 v1v_1과 v2v_2가 같은 shingle 값을 가질 확률의 비편향 추정량이다.

min-hashing의 변형을 생각해 보자. 라벨을 이전 반복의 shingle 값으로 삼아 min-hashing을 반복 수행한다. 이 변형에서 각 노드 vv와 반복 횟수 kk에 대해 값 hv(k)h^{(k)}_v는 다음과 같이 정의된다.

hv(k)={sv,if k=1min⁡{hu(k−1)∣u∈N(v)},if k≥2h^{(k)}_v = \begin{cases} s_v, & \text{if $k = 1$} \\ \min \{h^{(k-1)}_u | u \in N(v) \}, & \text{if $k \geq 2$} \end{cases}

각 kk에 대해 ckc_k를 hu(k)=hv(k)h^{(k)}_u = h^{(k)}_v인 서로 다른 두 정점의 비순서쌍 {u,v}\{u, v\}의 개수라 하자. 그러면 kk가 커질수록 ckc_k는 어떻게 변할까? 이 문제에서 여러분의 과제는 max⁡k∈Nck\max_{k \in \mathbb{N}} c_k를 계산하는 것이다.

입력

첫째 줄에 노드의 수와 간선의 수를 나타내는 두 양의 정수 nn과 mm (1≤n≤100 000,1≤m≤250 000)(1 \leq n \leq 100\,000, 1 \leq m \leq 250\,000)이 주어진다. 노드는 11부터 nn까지 번호가 매겨진다. 이 번호는 노드의 라벨이 \textbf{아니다}.

둘째 줄에 11부터 nn까지의 양의 정수를 한 번씩 포함하는 nn개의 정수가 주어지며, ii번째 수는 노드 ii의 초기 라벨을 나타낸다.

다음 mm개의 줄에 각각 두 정수가 주어진다. 이 중 ii번째 줄에는 서로 다른 두 정수 uiu_i와 viv_i (1≤ui,vi≤n)(1 \leq u_i, v_i \leq n)가 주어지며, {ui,vi}∈E\{u_i, v_i\} \in E임을 뜻한다.

입력은 자기 루프, 중복 간선, 차수가 00인 노드가 없도록 주어진다.

출력

모든 양의 정수 kk에 대한 ckc_k의 최댓값을 출력한다.

예제2

  1. 예제 1

    입력
    5 5
    1 2 3 4 5
    1 2
    2 3
    3 4
    4 5
    5 1
    
    예상 출력
    10
    
  2. 예제 2

    입력
    4 3
    1 2 3 4
    1 2
    2 3
    3 4
    
    예상 출력
    2