Saya membaca makalah NJ Larsson, A. Moffat: Offline Dictionary-Based Compression , yang menjelaskan algoritma kompresi yang, jika saya memahaminya dengan benar, sangat mirip dengan pengkodean pasangan byte .
Diberikan string dengan panjang , saya mencoba memahami bagaimana seseorang dapat memampatkannya dalam linear, , waktu dengan metode kompresi ini. Bagaimana tepatnya hal ini dilakukan? Saya sudah membaca makalah, tetapi saya masih tidak mengerti bagaimana mereka mencapai waktu linier, jadi mungkin saya akan memahaminya menjelaskan dengan cara yang berbeda.
Kebingungan pertama saya muncul pada langkah pertama dalam algoritma, di mana kami menemukan pasangan yang paling umum, misalnya dalam abcababcabcpasangan yang paling umum abakan digantikan oleh simbol baru, katakanlah XcXXcXc. Saya tidak mengerti bagaimana kita dapat menemukan pasangan yang paling umum dengan cukup cepat. Pendekatan naif saya adalah melihat pertama pada pasangan pertama abdan kemudian menghitung jumlah kemunculan, kemudian melihat pasangan berikutnya bcdan menghitung jumlah kemunculan, dll. Namun ini sudah memberikan hanya untuk menemukan pasangan paling umum satu kali .
Selanjutnya, bahkan jika saya mengerti bagaimana menemukan pasangan paling umum dalam waktu . Masalah saya berikutnya adalah, bukankah kita harus menemukan pasangan paling umum hingga kali? Dan karenanya ini akan memberikan total waktu ?