TAG

#Compression

7 posts

압축을 켤 자리와 끌 자리 - 한 장의 판단표로 접는다

CS · Compression

압축을 켤 자리와 끌 자리 - 한 장의 판단표로 접는다

압축은 늘 이득이 아니라 바이트와 CPU를 맞바꾸는 거래다. 그래서 병목이 어디냐에 따라 답이 뒤집힌다. 이 시리즈에서 본 원리를 켤지 끌지 고르는 표 한 장으로 접는다.

압축의 원리와 한계 7편

안 줄어드는 것들 - 무엇이든 반으로 줄이는 프로그램은 왜 없나

CS · Compression

안 줄어드는 것들 - 무엇이든 반으로 줄이는 프로그램은 왜 없나

압축률이 좋다는 프로그램은 많은데 '무엇이든' 줄여 준다는 것은 하나도 없다. 더 좋은 알고리즘이 아직 안 나온 게 아니라 그런 것이 있을 수 없다는 게 증명되어 있다. 그 이유가 압축의 한계를 전부 설명한다.

압축의 원리와 한계 6편

손실 압축 - 되돌릴 수 없게 버린다

CS · Compression

손실 압축 - 되돌릴 수 없게 버린다

지금까지의 압축은 한 비트도 안 잃고 되돌렸다. 되돌리기를 포기하면 훨씬 많이 줄어든다. 사진과 음악과 영상이 그 길을 갔고, 그래서 다시 저장할 때마다 나빠진다.

압축의 원리와 한계 5편

DEFLATE - 두 아이디어를 겹치면 gzip이 된다

CS · Compression

DEFLATE - 두 아이디어를 겹치면 gzip이 된다

반복 가리키기와 짧은 이름 주기는 서로 못 잡는 자리가 반대였다. 그래서 둘을 순서대로 겹친 것이 세상에서 가장 널리 쓰이는 압축이 됐다. gzip과 zip과 zlib이 서로 무엇이 다른지도 여기서 갈린다.

압축의 원리와 한계 4편

허프만 코드 - 자주 나오는 것에 짧은 이름을 준다

CS · Compression

허프만 코드 - 자주 나오는 것에 짧은 이름을 준다

반복이 하나도 없어도 아직 줄일 여지가 남아 있다. 모든 글자에 똑같은 길이를 주는 것이 낭비이기 때문이다. 짧은 이름을 나눠 주면서도 어디서 끊을지 헷갈리지 않게 만드는 방법을 본다.

압축의 원리와 한계 3편

반복을 가리킨다 - 같은 말을 두 번 적지 않는 법

CS · Compression

반복을 가리킨다 - 같은 말을 두 번 적지 않는 법

압축이 줄이는 첫째 낭비는 반복이다. 붙어 있는 반복을 개수로 접는 것에서 시작해, 아까 나온 것을 뒤돌아 가리키는 것까지 가면 zip과 gzip이 실제로 쓰는 방법이 나온다.

압축의 원리와 한계 2편

압축 - 어떤 파일은 반으로 줄고 어떤 파일은 꿈쩍도 안 한다

CS · Compression

압축 - 어떤 파일은 반으로 줄고 어떤 파일은 꿈쩍도 안 한다

같은 파일을 압축했는데 하나는 3분의 1이 되고 하나는 그대로다. 압축이 데이터를 마법으로 줄이는 게 아니라 원래 낭비되던 자리를 걷어내는 일이라서 그렇다. 무엇이 낭비인지부터 본다.

압축의 원리와 한계 1편