본문 바로가기

온라인 알고리즘

(17)
온라인 이분 매칭 (Online Bipartite Matching) 어떤 그래프에서 서로 정점을 공유하지 않는 간선의 부분집합을 우리는 매칭(matching)이라고 부릅니다. 매칭의 모양을 살펴보면, 각 정점이 최대 하나의 다른 정점과 짝지어진 꼴입니다. 이를 통해 왜 이러한 간선의 부분집합에 매칭이라는 이름이 붙었는지를 쉽게 유추할 수 있죠. 어떤 그래프가 주어졌을 때, 크기가 작은 매칭을 찾는 것은 간단합니다. 정의에 따르면 아무 간선을 고르지 않는 방법도 가능한 매칭이기 때문이죠. 따라서 대개 우리는 크기가 가장 큰 매칭을 찾고자 하죠. 이 문제를 우리는 최대 매칭 문제(maximum matching problem)이라고 부릅니다. 이 문제는 실생활에서 발생할 수 있는 여러 문제들을 효과적으로 나타냅니다. 이미 제 블로그의 다른 글들을 통해 이에 대한 다양한 예시를..
검색 엔진 회사가 검색어로 수익을 내는 방법 (Ad-Auctions Problem) 물론 그 외에도 다양한 방안이 있겠지만, 다음이나 네이버와 같은 검색 엔진(search engine) 회사들이 수익을 내는 가장 기본적인 방법은 광고입니다. 하지만 이들의 광고 방식은 정해진 지면에 싣거나 정해진 시간에 방송하는 전통적인 광고와는 다른 점이 있죠. 바로 각 사용자의 정보를 알고 이를 토대로 각각에게 알맞는 광고를 보여줄 수 있다는 것입니다. 이들이 활용할 수 있는 정보는 매우 다양하지만, 그 중에서도 검색 엔진 회사가 가장 쉽게 이용할 수 있는 것은 사용자의 검색어입니다. 사용자가 어떤 특정한 검색어를 입력하면, 해당 검색어에 알맞는 광고를 보여주는 것이죠. 여러분들도 검색 엔진에서 무언가를 찾을 때 이와 연관된 광고가 결과 페이지에 함께 나타나는 것을 본 경험이 있을 것입니다. 회사마다..
비순환 그래프 간선 방향 정하기 (Edge Orientation on Acyclic Graphs) 이번에 살펴볼 문제는 간단하지만 흥미로운 문제입니다. 우리에게 어떤 방향이 없는 그래프 \(G = (V, E)\)가 주어졌습니다. 이제 이 그래프의 어떤 간선 \((u, v) \in E\)를 \( \langle u, v \rangle \)이나 \( \langle v, u \rangle \)와 같이 방향을 주도록 합시다. 방향을 주는 방법은 여러 가지가 있겠지만, 그중에서 우리는 각 정점마다 들어오는 간선의 개수를 최소화 시키는 것을 구해보고자 합니다. 좀더 엄밀히 말하자면, \(G = (V, E)\)가 주어졌을 때, 우리의 목표는 각 간선 \( (u,v) \in E \)에 대해, \( \langle u, v \rangle \in A \)이거나 \( \langle v, u \rangle \in A \)를 ..
[캐싱 / Caching] LRU는 얼마나 좋은 알고리즘일까? 세세한 부분을 많이 놓치기는 하겠지만, 간략히 말해 컴퓨터는 다음과 같이 동작합니다. 메모리에서 데이터를 프로세서로 가지고 와서 사칙 연산, 대소 비교 등과 같이 어떠한 작업을 수행한 다음 결과값을 다시 메모리에 저장합니다. 여기서 많은 경우 프로세서의 수행 시간에 비해 메모리 접근 시간이 훨씬 오래 걸리기 때문에 전체 수행 시간의 병목은 얼마나 많이 메모리에 접근했는가로 결정됩니다. 캐시 메모리(cache memory)는 프로세서와 주 메모리 사이에 자그마하지만 처리 속도는 빠른 기억 장치를 의미합니다. 프로세서가 어떤 자료를 필요로 할 때 만약 캐시 메모리에 최신의 그 자료가 존재한다면 프로세서는 굳이 주 메모리에서 자료를 가지고 올 필요가 없습니다. 캐시 메모리에서 바로 가지고 오면 되니까요. 이는..
[스키 대여 문제 / Ski Rental Problem] 선형 계획법을 이용한 Randomized Algorithm 스키 대여 문제(ski rental problem)에 대해서 잘 모르시는 분들은 이 글을 읽기 전에 이전 포스트를 읽어 보시는 것을 추천드립니다. 2020/03/15 - [온라인 알고리즘/Ski rental problem] - [스키 대여 문제 / Ski rental problem] 문제 정의 & break-even algorithm [스키 대여 문제 / Ski rental problem] 문제 정의 & break-even algorithm 이번 포스트에서는 기초적인 온라인 문제 중 하나인 스키 대여 문제(ski rental problem)를 다루어 보도록 하겠습니다. 온라인 문제 및 온라인 알고리즘이 무엇인지는 이전 글을 참조해 주시기 바랍니다. 아래의.. gazelle-and-cs.tistory.co..
[스키 대여 문제 / Ski Rental Problem] 문제 정의 & Break-Even Algorithm 이번 포스트에서는 기초적인 온라인 문제 중 하나인 스키 대여 문제(ski rental problem)를 다루어 보도록 하겠습니다. 온라인 문제 및 온라인 알고리즘이 무엇인지는 이전 글을 참조해 주시기 바랍니다. 아래의 내용은 이 글을 제대로 숙지하고 있다는 전제 하에 작성되었습니다. 2020/03/14 - [온라인 알고리즘] - 온라인 알고리즘 온라인 알고리즘 일전에 유명한 온라인 문제 중 하나인 online bipartite matching을 다룬 적이 있었습니다. 당시에는 제 지식이 그렇게 깊지 않아서 제대로 설명하지 못했을뿐더러 잘못 전달한 내용도 있었습니다. 최근 개인적으.. gazelle-and-cs.tistory.com 이미 위 글에서 스키 대여 문제가 무엇인지 간략하게 소개되어 있습니다만 이..
온라인 알고리즘 (Online Algorithm) 일전에 유명한 온라인 문제 중 하나인 online bipartite matching을 다룬 적이 있었습니다. 당시에는 제 지식이 그렇게 깊지 않아서 제대로 설명하지 못했을뿐더러 잘못 전달한 내용도 있었습니다. 최근 개인적으로 온라인 알고리즘을 다시 공부하기 시작했는데, 겸사로 기존의 포스트를 내리고 다시 글을 적어보고자 합니다. 기존의 포스트는 더욱 보강하여 다시 올리도록 하겠습니다. 들어가기 일반적으로 알고리즘을 설계할 때 우리는 온전한 입력을 가정합니다. 예를 들어, 두 지점 사이의 최단 경로를 구하기 위해서는 해당 지점 및 경유할 수 있는 지점, 그리고 지점 사이의 거리가 입력으로 몽땅 주어집니다. 하지만 컴퓨터가 다루어야 하는 모든 문제들이 위 특성을 가지는 것은 아닙니다. 어떤 경우에는 처음에 ..