https://www.acmicpc.net/problem/16224
16224번: Path Equality
www.acmicpc.net
선형대수학 D3 문제치고는 굉장히 어려웠다. 구현이 쉬워서 난이도가 약간 깎인 듯싶다.
일단 결론은
이로부터 A의 characteristic polynomial은 n-1개의 0과 1개의
(=>) 방향 증명은 어렵다. n = 9이고 m = 1인 경우로 사례연구를 해 보자. tr(A) = 3이므로 9개의 노드 중 3개는 자기 자신을 향하는 loop를 갖고, 나머지 6개는 그렇지 않다. 일단 자기 자신을 향하는 loop를 갖는 3개의 노드는 똑같이 loop를 갖는 다른 노드들과 연결되지 말아야 한다(이는 m = 1이라는 특수한 조건 때문이며, 항상 그런 것은 아니다). 나머지 6개 친구들에 대해서 자기 자신으로 돌아오는 길이 2의 경로가 있으려면, 노드를 2개씩 짝지어서 이들 사이에 양방향 길을 하나씩 놓아주어야 함을 알 수 있다. 따라서 A는 일단 이렇게 생겼다.
A가 만약 모든 node의 outdegree가 같은 regular graph라면, 또한
로 구해줄 수 있기 때문이다. 증명은 쉬운데, 길이가 2인 모든 경로는 경로를 양분하는 node를 하나 갖고 있고, 하나의 node를 양분점으로 가진 길이 2인 모든 경로의 수는 그 node의 indegree 값과 outdegree 값의 곱이기 때문이다. 따라서 A의 각 행벡터는
여기서 뜬금없는 가정을 하나 해 줄 건데, rank(A) = 3이라는 가정이다. 사실 rank는 우리가 A에 대해서 얻을 수 있는 정보 중 상당히 가치가 높은 정보다. 왜냐하면 우리가 rank(A^2) = 1이라는 사실을 알고 있는데, 이 1이라는 값이 정말로 낮은 수치다. 모든 행렬 X에 대해서 X^2의 rank에 대해 다음이 성립함이 알려져 있다.
이 사실은 대학생 수학경시대회에서 몇 번 출제된 적이 있다. 어쨌든 이 사실을 쓰면 우리는 rank(A) <= 5라는 사실을 증명할 수 있는데, 이 rank 값이 낮으면 낮을수록 rank(A^2) 값도 낮아질 거라는 직관이 있다. 그러므로 우리는 rank(A) = 3으로 놓는다. 이걸 굳이 3으로 놓는 이유는 ? 위치를 어떻게 채우더라도 저 값이 3보다 낮아질 수가 없다. 어쨌든 rank(A) = 3이고, A의 모든 성분이 0 또는 1이므로, 각 행벡터 중 서로 다른 것이 최대 3개까지라는 새로운 가정을 해 줄 수 있다. 이 가정 하에 주어진 행렬은 다음과 같이 채워진다.
이것 말고도 여러 가지 방법이 있지만 일단 이렇게 적어줄 수가 있다. 이 행렬은 엄청나게 복잡하게 생겼지만, 적절한 좌표변환을 통해 이 행렬과
이 닮음이라는 결론을 얻어줄 수 있다. 이를 일반화하면 된다.

'Computer Science > PS' 카테고리의 다른 글
[백준 1238] 파티 (Python 풀이, Gold III) (0) | 2023.01.17 |
---|---|
[백준 3904] The Teacher's Side of Math (Diamond IV) (0) | 2023.01.12 |
2022 ICPC 서울 리저널 후기 (짧) (0) | 2022.11.19 |
2022 아주대학교 프로그래밍 경시대회 (APC) 참가 후기 (0) | 2022.11.13 |
KMP 그림 그리면서 구현 (0) | 2022.11.05 |
댓글