'Computer Science/Data Structures & Algorithms' 카테고리의 글 목록 (7 Page) — Archive

Computer Science/Data Structures & Algorithms

Computer Science/Data Structures & Algorithms

[Algorithms] Boyer-Moore Algorithm | 보이어-무어 알고리즘

Boyer-Moore Algorithm 보이어-무어 알고리즘 * String Matching Algorithms (문자열 매칭 알고리즘) (URL) - 전체 문자열 \(\texttt{string[1...m]}\)에서 부분 문자열 \(\texttt{pattern[1...m]}\)을 찾아내는데, 최악의 경우에는, \(\Theta(n*m)\) 시간 동안 수행되지만, 평균적으로 \(\Theta(n)\)과 \(\Theta({n \over m})\) 사이의 시간 동안 수행되어 실무에서 KMP Algorithm보다 더 자주 쓰이는 알고리즘이다. (대체로, \(\Theta({n \over m})\)에 더 가까운 성능을 보인다고 한다.) Mechanism (원리) - Mismatching이 발생했을 때, Bad-Char..

Computer Science/Data Structures & Algorithms

[Algorithms] Rabin-Karp Algorithm | 라빈-카프 알고리즘

Rabin-Karp Algorithm 라빈-카프 알고리즘 * String Matching Algorithms (문자열 매칭 알고리즘) (URL) - 전체 문자열 \(\texttt{string}\) 내에서 부분 문자열 \(\texttt{pattern}\)을 찾아내는데, Hash Algorithm을 이용하여 \(\texttt{string}\)과 \(\texttt{pattern}\)의 해시값을 비교하는 방법이다. Mechanism (원리) 1. 부분 문자열 \(\texttt{pattern}\)에 해당되는 수치값(해시값)을 계산한다. - \(\texttt{pattern}\)을 구성하는 Alphabet Set을 \(\Sigma\) 라 하면, \(\texttt{pattern}\)에 해당되는 해시값 \(\mathrm..

Computer Science/Data Structures & Algorithms

[Algorithms] String Matching Algorithm | 문자열 매칭 알고리즘

String Matching Algorithm 문자열 매칭 알고리즘 - 전체 문자열 string[n]에서 부분 문자열 pattern[m]이 존재하는지, 존재한다면 pattern이 string에서 시작되는 인덱스 값을 리턴하는 알고리즘이다. - 단순한 Brute-Force 방식의 String Matching 방법은 \O(n * m)에 비례하는 시간이 소요되며, Advanced-String Matching Algorithm은 대체로 \Theta(n + m)에 비례하는 시간이 소요된다. Brute-Force String Matching Algorithm * GitHub (URL) vector find_bf(const string &str, const string &pat) { const int strSize ..

Computer Science/Data Structures & Algorithms

[Algorithms] KMP Algorithm | KMP 알고리즘

KMP Algorithm KMP 알고리즘 * String Matching Algorithms (문자열 매칭 알고리즘) (URL) - Knuth, Morris, Pratt이 함께 개발한 String Matching Algorithm이다. - 메인 문자열 \(\texttt{string[n]}\)에서 특정 패턴\(\texttt{pattern[m]}\)이 존재하는지의 여부를 \(O(n+m)\)에 검색하는 알고리즘이다. (\(n\) : 메인 문자열의 길이, \(m\) : 검색하고자 하는 패턴 문자열의 길이) (단순한 Brute-Force Substring Matching 알고리즘은 검색을 \(O(n*m)\)에 수행한다.) - 오토마타를 이용한 String Matching 알고리즘에서는 Transition Func..

Computer Science/Data Structures & Algorithms

[Data Structures] Sparse Matrix | 희소 행렬

Sparse Matrix (smatrix) 희소 행렬 - 원소 대부분이 0인 행렬(희소 행렬; Sparse Matrix)을 효율적으로 처리할 수 있는 ADT를 구현한다. Main Specification (주요 기능) 1. Basic Matrix Operations - 행렬끼리의 덧셈, 뺄셈, 곱셈에 대한 Operator들이 Overloading되어 있다. 2. Matrix Specific Operations - 행렬의 Transpose(전치)를 수행하는 Member Function \(\texttt{transpose()}\)가 구현되어 있다. - 행렬의 Inverse Matrix(역행렬)를 구하는 Member Function \(\texttt{inverse()}\)가 구현되어 있다. \(\texttt{..

Computer Science/Data Structures & Algorithms

[Data Structures] Polynomial Model | 다항식 모델

Polynomial Model 다항식 모델 - 다항식을 표현 및 처리할 수 있는 ADT를 구현한다. Main Specification (주요 기능) 1. Basic Operations - 다항식의 앞에 '+' 혹은 '-'를 위치시켜 부호를 유지하거나 반전(Negation)시키는 Operator들이 Overloading되어 있다. - 다항식끼리의 덧셈, 뺄셈, 곱셈에 대한 Operator들이 Overloading되어 있다. 2. Mathematical Functions - 1차, 2차, 3차식에 한하여, \(f(x) = 0\) (Equation)에 대한 해를 출력하는 Member Function \(\texttt{findRoot()}\)가 구현되어 있다. - 2차식, 3차식에 한하여, Discriminan..

Computer Science/Data Structures & Algorithms

[Algorithms] Magic Square | 마방진

Magic Square 마방진 각 행의 합, 각 열의 합, 주대각선의 합이 모두 같은 n X n Matrix를 의미한다. - n X n Matrix는 1부터 \(n^2\)까지의 정수로 채워진다. Example. 5 X 5 Magic Square 15 8 1 24 17 16 14 7 5 23 22 20 13 6 4 3 21 19 12 10 9 2 25 18 11 Implementation in C++ void Magic(const int n) { const int MaxSize = 51; int square[MaxSize][MaxSize], k, l; if( (n < MaxSize) || (n < 1) ) throw "Error! n out of range"; else if( !(n%2) ) throw "..

Computer Science/Data Structures & Algorithms

[Algorithms] Permutation Generator | 순열 생성기

Permutation Generator 순열 생성기 void Permutations (char *a, const int k, const int m) { if( k == m ) { for(int i = 0; i

lww7438
'Computer Science/Data Structures & Algorithms' 카테고리의 글 목록 (7 Page)