Maximum Flow



Comment

Min Cut edge weighted 그래프에서 st-cut 이란 vertices 를 두개의 disjont sets 으로 나누는 것이다. 이때 s, t 는 각각 다른 집합 A, B 에 속해있다. (http://en.wikipedia.org) capacity 란 컷으로 나뉘어진 두 집합 A, B 를 기준으로 A 에서 B 로 가기 위한 모든 edge 의 weight…

Read this article

Substring Search Algorithm



Comment

Intro to Substring Search N 길이의 텍스트에서 M 길이의 패턴을 찾는 문제다. 일반적으로 N >> M 이다. N 이 좀 많이 (무한히) 길기 때문에 지난시간까지 배운 알고리즘을 적용하기가 좀 힘들다. (1) suffix sort 를 쓰려고 보니 suffixes 를 만드는 것 자체가 어렵다. 따라서 manber-myers MSD 도 패스. (2) R-way…

Read this article

R-way, Ternary Search Tries



Comment

String Symbol Table 지난 시간에 symbol-table 의 구현으로 red-black tree, hash table 의 성능을 살펴봤었다. red black tree 는 search, insertion, delete 에 compareTo 를 이용해 log N, hash table 은 equals, hashCode 를 이용해 1 (under uniform hashing assumption) 의 성능을 확인했다. red black tree 의 경우에는 rank 같은…

Read this article

Radix Sort, Suffix Sort



Comment

Strings in Java 문자열은 Character (문자) 의 나열이다. C 에서 하나의 캐릭터는 8-bit 인데, 자바의 경우에는 16-bit unsigned integer 로 표시한다. 스트링의 길이를 얻기 위해 length, 인덱싱 하기 위해 charAt, 서브스트링을 얻기 위해 substring 의 메소드를 지원한다. public final class String implements Comparable<String> { private char values; private…

Read this article

Graph Challenges, Minimum Spanning Trees, Shortest Paths



Comment

Graph Process Challenge 1 Is a graph bipartite? 그래프가 bipartite 인가 하는 문제는, 그래프의 노드를 이렇게 두 그룹으로 나눌 수 있느냐 하는 문제다. (http://en.wikipedia.org) 알고리즘이 얼마나 어려운가는 이렇게 나눠볼 수 있겠는데 Any programmer could do it Typical diligen algorithms student could do it Hire an expert Intractable…

Read this article