간선에 음이 아닌 가중치가 있는 무방향 그래프 $G$가 주어졌을 때, 다음과 같은 쿼리를 처리하자:1 u v: $u, v$ 간의 최단 경로의 길이를 반환한다...는 어려운 문제이다. Balanced separator를 쉽게 찾을 수 있거나 하는 특수 케이스가 아니면 보통 $O(nm)$ 시간에 Dijkstra를 $n$ 번 돌리는 방법보다 좋은 방법이 없다. 그러니까 다음과 같은 Approximate 버전을 생각하자. 초기에 정수 파라미터 $k \geq 1$ 이 같이 주어졌을 때:1 u v: $u, v$ 간의 최단 경로의 길이가 $d$ 라면, $[d, (2k-1)d]$ 범위에 있는 수를 출력하라.실제 출력한 수를 길이로 가지는 경로가 존재하지 않을 수도 있지만, 일단 오늘 얘기할 알고리즘에서는 항상 있는 경..
까먹기 전에 뭐라도 씀원래 아인타랑 같이 Season 3을 좀 했다. 친구없음 이슈로 거의 다 2인팀이었는데, 세미파이널 때는 잘하는 사람을 한명 데려가고 싶어서 정민찬이랑 같이 나갔다. 처음으로 해 본 3인팀이었다.SemifinalsUCPC 세미나에서 강연을 하고 참가한 대회였고 뭔가 제대로 기여를 못 한 기억밖에 안 난다. 아마 한시간 넘게 늦참하고 엄청 피곤하게 쳤던 것으로 기억한다. 지금 제출창을 열어보니까 내가 짠 문제가 3개 있는데D는 내가 풀었던게 기억난다L은 아인타가 Directed MST로 환원하고 난 그냥 그 풀이를 그대로 짰던게 기억난다E는 뭔가 내 코드가 있는데 기억이 안 난다.. 내가 풀었을까? 누가 도와줬을까? 흠...아무튼 난 버스만 탔고, 그래서 커트에 약간 미달했는데, 어쩌..
(6/11 추가) 두 구글 폼은 당분간 계속 열어두겠습니다. 아직 많은 마이그레이션이 처리되지 않은 상태이기도 하고, 폼을 특별히 닫을 이유도 없어 보여서, 현재 상태로 두고 관리도 하겠습니다. 다만 제가 불시에 사전 공지 없이 폼을 닫을 수도 있습니다.(5/13 추가) 두 구글 폼은 한국 시간 6월 10일 오후 1시까지 열어두겠습니다.(4/19 추가: 권한 WRITE로 해주세요! READ로 하니까 업로드가 안 되네요. 수정은 안할건데, 걱정되시면 clone해서 주시면 됩니다)BOJ 서비스 종료에 관해서 Qingyu님과 이야기를 나누었는데, Qingyu님이 기존 문제를 QOJ.ac로 마이그레이션하는 데 있어 도움을 주실 의향이 있다고 해 주셔서 마이그레이션 신청을 받고자 합니다. 도움을 주신 Qingyu..
Thatchaphol Saranurak 강의를 듣고 안 까먹으려고 작성1. Warmup: Two Action Setting$n$ 명의 전문가와 함께 주식 시장을 $T$일에 걸쳐 예측하려고 한다. 매일 다음과 같은 일이 일어난다:각각의 전문가가 오늘의 주식 시장이 상승인지 하락인지 예측한다.당신은 이를 보고 오늘 주식 시장이 상승인지 하락인지 결정한다.이후 주식 시장의 결과가 나온다. (주식 시장은 adversarial할 수 있다. 즉 당신의 결정의 반대만 찍는 등의 일이 발생할 수 있음)Loss를 결과를 못 맞춘 날의 수로 정의하자. 주식 시장이 무조건 내가 찍은 것의 반대만 찍는다면 Loss가 $T$ 가 나오는 것은 어렵지 않다. 고로 목표는 최고의 전문가에 비해서 그렇게 못하지 않는 전략을 찾는 것이..
에 관해서 최근에 공부하고 발표자료를 만들었다.
CCC 2025 S1. Positioning Peter’s Paintings답은 $2 \min(\max(A, C) + B + D, A + C + \max(B, D))$ 입니다.CCC 2025 S3. Pretty Pens$Q = 0$ 인 경우의 풀이를 먼저 정리합시다. 변호사가 종류를 바꾸지 않을 경우, 각 종류에 대해서 덕의 최댓값을 구한 후 이를 합한 것이 정답이 됩니다. 종류를 바꾸게 된다면, 현재 최댓값으로 선정된 업보 중 덕을 최소화하는 것을 빼서, 선정되지 않은 업보로 교체하는 것이 최적입니다. 즉, 이 때 얻을 수 있는 이득은 (최댓값 중 덕 최솟값) - (최댓값 아닌 업보 중 덕 최댓값) 으로 계산할 수 있습니다. 이 이득 값이 $0$ 이상이면, 최댓값의 합에 이를 더해주면 됩니다. 이렇게 ..
그래프의 최대 독립 집합 문제는, 그래프가 주어졌을 때 최대 크기의 정점 부분집합 $S$를 골라서, $S$ 안에 있는 두 정점을 잇는 간선이 없게끔 하는 문제이다. 이 문제는 NP-complete임이 아주 잘 알려져 있다. 심지어 $O(n^{0.99})$-factor로 approximate할 수 있으면 $\textsf{NP} = \textsf{ZPP}$ 이다 (사실상 $\textsf{P} = \textsf{NP}$ 라는 뜻이다.) 어차피 제대로 못 푸는 문제이니 대신 다음과 같은 그리디 알고리즘을 생각해 볼 수 있다.순열 $\pi$ 를 잡고, 그 순서대로 정점을 순회한다. $\pi$ 는 모든 길이 $n$ 의 순열 중 랜덤하게 샘플.만약 현재 정점과 인접한 정점 중 $S$ 에 있는 정점이 없으면 현재 정점..
최대 차수가 $\Delta$ 인 그래프를 $(\Delta + 1)$ 개의 색으로 색칠하는 문제를 생각해 보자. 이 문제는 정점을 아무 순서로 보면서 남는 색을 배정해 주면 선형 시간에 쉽게 해결할 수 있다. 그러니 간선이 추가되고 삭제되는 쿼리를 넣어보자. 쿼리당 $O(\Delta)$ 시간에 문제를 해결하는 것은 쉽다:간선이 삭제되면 아무것도 하지 않는다.간선이 추가되었고, 만약 두 정점의 색이 다르다면, 한 정점에 대해서 남는 색을 배정해 준다. 남는 색을 찾아줘야 하기 때문에 $O(\Delta)$ 시간이 필요하다.더 빠른 알고리즘은 없을까? 이 문제를 처음 다룬 것은 내가 알기로는 Bhattacharya et al. 2018 이고, 당시에는 expected amortized $O(\log \Delta..
알고리즘을 모델링하는 여러 방법 중 하나는 Decision Tree이다. Decision Tree에서 알고리즘은 입력의 특정 부분을 읽어서 읽은 결과에 따라 YES / NO verdict를 결정하고, 비교 결과에 따라서 두 상태 중 하나로 분기한다. 예를 들어서 비교 정렬에서는 $x_i, x_j$ 를 읽은 다음에, $x_i - x_j$ 의 부호에 따라서 YES / NO verdict를 결정하고, 이 결과에 따라서 두 개의 자식 상태 중 하나로 분기한다.Decision Tree의 최대 깊이는 보통 알고리즘 시간 복잡도의 lower bound를 구성하는데 자주 쓰인다. 비교 정렬에서는 결과 상태가 최소 $n!$ 개이니, 최대 깊이가 적어도 $\log_2 (n!) = O(n \log n)$ 이고, 그래서 모든..
- Total
- Today
- Yesterday
