2012-06-27 6 views
3

줄마다 한 단어로 된 큰 파일이 있습니다. 전체 파일이 정렬되고 압축해야합니다. GZIP을 사용하면 결과가 꽤 좋을 것입니다. 그러나 우리가 정렬 된 단어의 목록을 다루고 있다는 것을 더 잘 알게 될지 궁금합니다.정렬 된 단어 목록을 압축하는 방법은 무엇입니까?

[...] 
ABAISSAT 
ABAISSATES 
ABAISSE 
ABAISSEE 
ABAISSEES 
ABAISSEMENT 
ABAISSEMENTS 
ABAISSENT 
ABAISSER 
ABAISSERA 
ABAISSERAI 
ABAISSERAIENT 
ABAISSERAIS 
[...] 

겠습니까 접두사 다음 GZIP을 더 나은 결과를 사용하여 파일을 압축 :

여기에 정렬 된 단어의 내 목록의 미리보기입니까?

[...] 
ABAISS AT ATES E EE EES EMENT EMENTS ENT ER ERA ERAI ERAIENT ERAIS 
[...] 

내가 설명하는 종류의 압축을 사용하여 내 단어 목록을 압축 할 수있게 해주는 알고리즘은 무엇입니까? 내가 데이터를 압축 할 수있는 다른 생각?

P. 나는 Trie를 사용하는 것에 대해 생각하고 그것을 구현했습니다. Trie의 최종 크기는 목록 자체와 거의 같았고 목록을로드 할 시간은 매우 길었습니다. 이러한 이유로 나는 그 길을 가지 않기로 결정했다.

+1

시도해 볼 수는 있지만 일반적으로 GZIP에서 얻을 수있는 것보다 좋지 않거나 약간 우수합니다. – nhahtdh

+0

어떤 목적으로 파일을 압축 하시겠습니까? 단순히 디스크 공간을 절약하려고하십니까? 프로그래밍 방식으로 압축 된 구조를 조작하려고하십니까? 목표는 무엇입니까? – Shredderroy

+0

Bzip과 7zip은 일반적으로 gzip보다 더 나은 압축률을 제공합니다. – Shredderroy

답변

1

두 연속 단어의 차이를 계산하고 전체 목록에 적용하고 GZIP 압축 (첫 번째 단어를 시작점으로 저장해야 함) 기능을 만들 수 있습니다.

함수는 어떻게 생겼을까요? 확실하지 않으면, 당신은 그것으로 실험해야 할 것입니다.

연속적인 단어의 차이는 정보면에서 작다는 생각입니다.

이것은 연속적인 프레임이 매우 유사 할 것이라는 점에서 비디오 압축에 사용 된 개념 아이디어와 비슷합니다 (기술 중 하나임).

+0

정수에 적용되는 유사한 알고리즘을 제안하는 http://stackoverflow.com/a/523785/627806을 참조하십시오. 분명히 두 개의 문자열 사이의 차이보다 두 정수의 차이를 찾는 함수를 결정하는 것이 더 쉽습니다. –

6

front compression과 같은 것으로 생각되는 것 같습니다. 각 항목은 이전 항목과 공유되는 가장 왼쪽 문자 수와 그 뒤에 나머지 공유되지 않은 문자가 오는 횟수입니다. 데이터를 사용한 예 :

0, ABAISSAT 
8, ES 
6, E 
7, E 
etc. 

그 결과 여전히 gzipping (또는 다른 압축)이 필요합니다.

관련 문제