무손실 압축(Lossless Compression)란?

압축한 데이터로부터 원래 데이터를 1비트도 다르지 않게 복원할 수 있는 압축 방식. 가역 압축이라고도 한다. 기호 출현 확률의 치우침을 이용하는 허프만 부호나 산술 부호, 반복을 이용하는 LZ77 등의 LZ 방식, 런 렝스 부호화가 있으며, ZIP, gzip, PNG, FLAC 등에서 쓰인다. 프로그램이나 문서, 표 데이터 등 1비트의 차이도 허용되지 않는 데이터에 사용한다. 얼마나 줄어드는지는 데이터의 중복도로 정해지며, 모든 데이터를 작게 할 수 있는 무손실 압축은 없다.

일본어 명칭: 可逆圧縮

무손실 압축(Lossless Compression)은(는) 정보 이론과 부호의 기초, 웹 기술 기초 등 2개 분야의 연습 문제 5개에 나와요.

분야: 정보 이론과 부호의 기초

도전해 보기: 무손실 압축(Lossless Compression) 관련 문제

무손실 압축과 정보원의 엔트로피의 관계에 대한 설명으로 올바른 것은?

  1. A뛰어난 무손실 압축 알고리즘을 사용하면, 어떤 내용의 파일이라도 반드시 원래보다 작게 할 수 있다
  2. B기호를 독립적으로 내는 정보원이라도, 잘 고안한 가역 부호라면 평균 부호 길이를 엔트로피보다 작게 할 수 있다
  3. C가역 부호의 평균 부호 길이는 엔트로피보다 작게 할 수 없지만, 기호를 묶어서 부호화하면 가깝게 할 수 있다
정답과 해설 보기

정답: C. 가역 부호의 평균 부호 길이는 엔트로피보다 작게 할 수 없지만, 기호를 묶어서 부호화하면 가깝게 할 수 있다

기호를 독립적으로 내는 정보원에서는 가역 부호의 1기호당 평균 부호 길이가 엔트로피 이상이 되며, 기호를 묶어서 부호화하면 엔트로피에 얼마든지 가깝게 할 수 있습니다(정보원 부호화 정리). 또한 n비트 파일은 2ⁿ가지가 있는데 그보다 짧은 비트열은 모두 합해도 2ⁿ − 1가지밖에 없으므로, 모든 파일을 짧게 할 수 있는 무손실 압축은 없습니다. 무손실 압축은 치우침이나 반복이 있는 데이터를 짧게 하는 대신, 그렇지 않은 데이터를 조금 길게 합니다.

데이터를 압축할 때, 손실 압축이 아니라 무손실 압축을 사용해야 하는 것은?

  1. A프로그램의 실행 파일을 압축하여 배포한다
  2. B동영상 스트리밍에서 영상을 회선 속도에 맞추어 작게 하여 보낸다
  3. C음악을 휴대용 플레이어로 듣기 위해 파일을 작게 한다
정답과 해설 보기

정답: A. 프로그램의 실행 파일을 압축하여 배포한다

무손실 압축은 원래 데이터를 1비트도 다르지 않게 복원할 수 있고, 손실 압축은 사람이 알아차리기 어려운 부분을 버리는 대신 크게 줄일 수 있습니다. 프로그램은 1비트라도 다르면 올바르게 동작하지 않으므로 ZIP 등의 무손실 압축을 사용합니다. 영상이나 음악은 다소의 차이를 눈이나 귀로 알아차리기 어려우므로, JPEG나 MP3, 동영상 부호화 방식 등의 손실 압축이 자주 쓰입니다.

해설 속 무손실 압축(Lossless Compression)

무손실 압축(Lossless Compression)이(가) 나오는 문제 (5)

  1. 무손실 압축과 정보원의 엔트로피의 관계에 대한 설명으로 올바른 것은?
  2. 데이터를 압축할 때, 손실 압축이 아니라 무손실 압축을 사용해야 하는 것은?
  3. 8종류의 기호를 내는 정보원의 엔트로피가 2.4비트였다. 중복도를 1 − (엔트로피 ÷ 최대 엔트로피)로 정의할 때, 이 정보원의 중복도는?
  4. ZIP이나 gzip 등에서 사용되는 LZ77 방식의 개념으로 올바른 것은?
  5. 웹 페이지에서 사용하는 이미지 형식과 그 일반적인 사용법의 조합으로 적절한 것은?

관련 용어

정보 엔트로피(Information Entropy) 손실 압축(Lossy Compression) 평균 부호 길이(Average Code Length) 정보량(Self-Information) 허프만 부호(Huffman Code) 런 렝스 부호화(Run-Length Encoding) 상호 정보량(Mutual Information) 순방향 오류 정정(FEC) 이진 대칭 채널(Binary Symmetric Channel) 접두 부호(Prefix Code)

용어집으로 돌아가기