비트마스크와 재귀의 시간복잡도 차이
2019. 5. 22. 01:57ㆍ알고리즘/암기
둘의 공통점은 긴 배열에서 요소들이 속했는지 아닌지 bool 개념을 이끌어낼 수 있다. 다만 이러한 요소들의 연산을 수행할 때는 시간복잡도가 차이가 난다. 비트마스크는 요소를 지정한 후 연산을 이끌어내지만, 재귀는 요소를 지정하는 과정에서 연산을 할 수 있다는 장점이 있다.
예를 들어 n이라는 길이에서
1) 비트마스크
for(int i=0; i<(1<<n); i++) {
for(int j=0; j<n; j++) {
sum += ...
}
}
O(N) = (2^n)*n
2) 재귀
void go(int idx, int sum) {
if(idx == n) {
...
}
go(idx + 1, sum | sumstr[idx])
go(idx, sum | sumstr[idx])
}
O(N) = (2^n)
'알고리즘 > 암기' 카테고리의 다른 글
절대/상대 오차는 10-9 까지 허용한다의 의미 (0) | 2019.05.23 |
---|---|
매개변수와 시간복잡도 (0) | 2019.05.22 |
함수 내 큰 배열 선언 오류 (0) | 2019.05.15 |
파라메트릭 서치 (0) | 2019.05.14 |
Disjoint-set (0) | 2019.05.14 |