Computer Science > Data Structures and Algorithms
[Submitted on 10 Oct 2020 (v1), revised 13 Nov 2020 (this version, v2), latest version 20 Oct 2021 (v3)]
Title:Decode efficient prefix codes
View PDFAbstract:Data compression is used in a wide variety of tasks, including compression of databases, large learning models, videos, images, etc. The cost of decompressing (decoding) data can be prohibitive for certain real-time applications. In many scenarios, it is acceptable to sacrifice (to some extent) on compression in the interest of fast decoding. In this work, we introduce and study a novel problem of finding a prefix tree having the best decode time under the constraint that the code length does not exceed a certain threshold for a natural class of memory access cost functions that use blocking (also referred to as lookup tables), i.e., these decoding schemes access multiple prefix tree entries in a single access, using associative memory table look-ups. We present (i) an exact algorithm for this problem that is polynomial in the number of characters and the codelength; (ii) a strongly polynomial pseudo approximation algorithm that achieves the best decode time by relaxing the codelength constraint by a small factor; and (iii) a more efficient version of the pseudo approximation algorithm that achieves near optimal decode time by relaxing the codelength constraint by a small factor. All our algorithms are based on dynamic programming and capitalize on an interesting structure of the optimal solution. To the best of our knowledge, there is no prior work that gives any provable theoretical guarantees for minimizing decode time along with the code length. We also demonstrate the performance benefits of our algorithm on different types of real-world data sets, namely (i) a deep learning model (Mobilenet-V2); (ii) image and (iii) text data. We also implement and evaluate the performance of our algorithms on the GPU.
Submission history
From: Rishikesh Gajjala [view email][v1] Sat, 10 Oct 2020 14:01:21 UTC (1,714 KB)
[v2] Fri, 13 Nov 2020 07:10:25 UTC (1,659 KB)
[v3] Wed, 20 Oct 2021 04:56:10 UTC (117 KB)
Current browse context:
cs.DS
References & Citations
Bibliographic and Citation Tools
Bibliographic Explorer (What is the Explorer?)
Litmaps (What is Litmaps?)
scite Smart Citations (What are Smart Citations?)
Code, Data and Media Associated with this Article
CatalyzeX Code Finder for Papers (What is CatalyzeX?)
DagsHub (What is DagsHub?)
Gotit.pub (What is GotitPub?)
Papers with Code (What is Papers with Code?)
ScienceCast (What is ScienceCast?)
Demos
Recommenders and Search Tools
Influence Flower (What are Influence Flowers?)
Connected Papers (What is Connected Papers?)
CORE Recommender (What is CORE?)
arXivLabs: experimental projects with community collaborators
arXivLabs is a framework that allows collaborators to develop and share new arXiv features directly on our website.
Both individuals and organizations that work with arXivLabs have embraced and accepted our values of openness, community, excellence, and user data privacy. arXiv is committed to these values and only works with partners that adhere to them.
Have an idea for a project that will add value for arXiv's community? Learn more about arXivLabs.