{"title":"计算 LZ 端解析:易于实现,实用高效","authors":"Patrick Dinklage","doi":"arxiv-2409.07840","DOIUrl":null,"url":null,"abstract":"The LZ-End parsing [Kreft & Navarro, 2011] of an input string yields\ncompression competitive with the popular Lempel-Ziv 77 scheme, but also allows\nfor efficient random access. Kempa and Kosolobov showed that the parsing can be\ncomputed in time and space linear in the input length [Kempa & Kosolobov,\n2017], however, the corresponding algorithm is hardly practical. We put the\nspotlight on their suboptimal algorithm that computes the parsing in time\n$\\mathcal{O}(n \\lg\\lg n)$. It requires a comparatively small toolset and is\ntherefore easy to implement, but at the same time very efficient in practice.\nWe give a detailed and simplified description with a full listing that\nincorporates undocumented tricks from the original implementation, but also\nuses lazy evaluation to reduce the workload in practice and requires less\nworking memory by removing a level of indirection. We legitimize our algorithm\nin a brief benchmark, obtaining the parsing faster than the state of the art.","PeriodicalId":501525,"journal":{"name":"arXiv - CS - Data Structures and Algorithms","volume":"2 1","pages":""},"PeriodicalIF":0.0000,"publicationDate":"2024-09-12","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":"{\"title\":\"Computing the LZ-End parsing: Easy to implement and practically efficient\",\"authors\":\"Patrick Dinklage\",\"doi\":\"arxiv-2409.07840\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"The LZ-End parsing [Kreft & Navarro, 2011] of an input string yields\\ncompression competitive with the popular Lempel-Ziv 77 scheme, but also allows\\nfor efficient random access. Kempa and Kosolobov showed that the parsing can be\\ncomputed in time and space linear in the input length [Kempa & Kosolobov,\\n2017], however, the corresponding algorithm is hardly practical. We put the\\nspotlight on their suboptimal algorithm that computes the parsing in time\\n$\\\\mathcal{O}(n \\\\lg\\\\lg n)$. It requires a comparatively small toolset and is\\ntherefore easy to implement, but at the same time very efficient in practice.\\nWe give a detailed and simplified description with a full listing that\\nincorporates undocumented tricks from the original implementation, but also\\nuses lazy evaluation to reduce the workload in practice and requires less\\nworking memory by removing a level of indirection. We legitimize our algorithm\\nin a brief benchmark, obtaining the parsing faster than the state of the art.\",\"PeriodicalId\":501525,\"journal\":{\"name\":\"arXiv - CS - Data Structures and Algorithms\",\"volume\":\"2 1\",\"pages\":\"\"},\"PeriodicalIF\":0.0000,\"publicationDate\":\"2024-09-12\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"0\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"arXiv - CS - Data Structures and Algorithms\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/arxiv-2409.07840\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"\",\"JCRName\":\"\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"arXiv - CS - Data Structures and Algorithms","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/arxiv-2409.07840","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
Computing the LZ-End parsing: Easy to implement and practically efficient
The LZ-End parsing [Kreft & Navarro, 2011] of an input string yields
compression competitive with the popular Lempel-Ziv 77 scheme, but also allows
for efficient random access. Kempa and Kosolobov showed that the parsing can be
computed in time and space linear in the input length [Kempa & Kosolobov,
2017], however, the corresponding algorithm is hardly practical. We put the
spotlight on their suboptimal algorithm that computes the parsing in time
$\mathcal{O}(n \lg\lg n)$. It requires a comparatively small toolset and is
therefore easy to implement, but at the same time very efficient in practice.
We give a detailed and simplified description with a full listing that
incorporates undocumented tricks from the original implementation, but also
uses lazy evaluation to reduce the workload in practice and requires less
working memory by removing a level of indirection. We legitimize our algorithm
in a brief benchmark, obtaining the parsing faster than the state of the art.