Untuk meningkatkan kompresi gzip, Anda ingin string "mirip" berada dekat dalam daftar. Ada sejumlah cara untuk mendefinisikan kesamaan tersebut; biarkan saya menggambarkan yang masuk akal yang bekerja dengan baik dalam praktik. Ingat bahwa ukuran blok gzip adalah 64K. Dengan demikian, data Anda akan dibagi menjadi blok-blok 64K byte dan setiap blok akan dikompresi secara independen. Untuk mengoptimalkan kompresi, kita perlu meminimalkan jumlah k-mers yang berbeda (substring ukuran k) di setiap blok. Motivasinya adalah bahwa semua substring tersebut akan diganti dengan pengenal.
Sementara masalah di atas sulit secara teori (ini adalah varian dari partisi hypergraph), ada algoritma praktis yang cepat. Saya akan merekomendasikan pengelompokan seperti LSH yang dapat diimplementasikan dengan sekali lewati data Anda. Perhatikan bahwa penyortiran (menurut abjad) adalah cara lain untuk "mengelompokkan" string yang sama menjadi satu. Namun, algoritma pengelompokan khusus dapat berkinerja lebih baik.
Alternatifnya adalah dengan menggunakan zstd , yang (i) lebih cepat, (ii) memperoleh rasio kompresi yang lebih tinggi, dan (iii) tidak memiliki batasan pada ukuran blok (dan dengan demikian, kompres string sama baiknya terlepas dari pemesanan input).