티스토리 뷰
리눅스 실습 시간에 배운 Run-Length Encoding 알고리즘 간단하게 복습
기본적인 개념은 "중복되는 문자를 한 문자로 치환시키는 것" 이다.
예를들면 텍스트 파일의 내용이
" AAABCDDDDDOS " 로 되어있다고 하면
" A3BCD5OS " 로 이렇게 중복되는 문자를 숫자로 치환하는것이다.
하지만 압축을 했으면 복호화의 과정이 필요한데
만약 저렇게 되어있을경우 3이 실제로 입력된 문자인지 치환된 문자인지 구별하기 어렵다는점이
있다.
따라서 치환된부분을 탈출문자 (Escape) 문자를 이용하여 나타낼 수 있다.
" *3ABC*5DOS " 이렇게 *로 나타내는것이다.
그래서 탈출문자로 문자이기때문에 거의 쓰이지않는문자를 쓰는게 중요하다.
코드 예시
그런데 리눅스로 파일크기를 계산해보니
오히려 원본파일보다 크기가 커졌다...
복호화를 하니까 원래크기로 돌아왔긴 하지만 압축의 의미가 없는것같다..
'프로그래밍 > 알고리즘' 카테고리의 다른 글
Run Length Decoding , 압축 복원 (0) | 2017.05.20 |
---|---|
동적 계획법 (DP) (0) | 2016.08.26 |
깊이 우선 탐색 (DFS) (0) | 2016.08.26 |
탐욕법 ( Greedy ) (0) | 2016.08.26 |
백 트래킹 ( Backtracking ) (0) | 2016.08.24 |
댓글