最佳可调整阵列

IF 1.2 3区 计算机科学 Q3 COMPUTER SCIENCE, THEORY & METHODS SIAM Journal on Computing Pub Date : 2024-09-17 DOI:10.1137/23m1575792
Robert E. Tarjan, Uri Zwick
{"title":"最佳可调整阵列","authors":"Robert E. Tarjan, Uri Zwick","doi":"10.1137/23m1575792","DOIUrl":null,"url":null,"abstract":"SIAM Journal on Computing, Volume 53, Issue 5, Page 1354-1380, October 2024. <br/> Abstract. A resizable array is an array that can grow and shrink by the addition or removal of items from its end, or both its ends, while still supporting constant-time access to each item stored in the array given its index. Since the size of an array, i.e., the number of items in it, varies over time, space-efficient maintenance of a resizable array requires dynamic memory management. A standard doubling technique allows the maintenance of an array of size [math] using only [math] space, with [math] amortized time, or even [math] worst-case time, per operation. Sitarski, and (apparently independently) Brodnik, Carlsson, Demaine, Munro, and Sedgewick describe much better solutions that maintain a resizable array of size [math] using only [math] space, still with [math] time per operation. Brodnik et al. give a simple proof that this is best possible. We distinguish between the space needed for storing a resizable array, and accessing its items, and the temporary space that may be needed while growing or shrinking the array. For every integer [math], we show that [math] space is sufficient for storing and accessing an array of size [math], if [math] space can be used briefly during grow and shrink operations. Accessing an item by index takes [math] worst-case time, while grow and shrink operations take [math] amortized time. Using an exact analysis of a growth game, we show that for any data structure from a wide class of data structures that uses only [math] space to store the array, the amortized cost of grow is [math], even if only grow and access operations are allowed. The time for grow and shrink operations cannot be made worst-case unless [math].","PeriodicalId":49532,"journal":{"name":"SIAM Journal on Computing","volume":null,"pages":null},"PeriodicalIF":1.2000,"publicationDate":"2024-09-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":"{\"title\":\"Optimal Resizable Arrays\",\"authors\":\"Robert E. Tarjan, Uri Zwick\",\"doi\":\"10.1137/23m1575792\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"SIAM Journal on Computing, Volume 53, Issue 5, Page 1354-1380, October 2024. <br/> Abstract. A resizable array is an array that can grow and shrink by the addition or removal of items from its end, or both its ends, while still supporting constant-time access to each item stored in the array given its index. Since the size of an array, i.e., the number of items in it, varies over time, space-efficient maintenance of a resizable array requires dynamic memory management. A standard doubling technique allows the maintenance of an array of size [math] using only [math] space, with [math] amortized time, or even [math] worst-case time, per operation. Sitarski, and (apparently independently) Brodnik, Carlsson, Demaine, Munro, and Sedgewick describe much better solutions that maintain a resizable array of size [math] using only [math] space, still with [math] time per operation. Brodnik et al. give a simple proof that this is best possible. We distinguish between the space needed for storing a resizable array, and accessing its items, and the temporary space that may be needed while growing or shrinking the array. For every integer [math], we show that [math] space is sufficient for storing and accessing an array of size [math], if [math] space can be used briefly during grow and shrink operations. Accessing an item by index takes [math] worst-case time, while grow and shrink operations take [math] amortized time. Using an exact analysis of a growth game, we show that for any data structure from a wide class of data structures that uses only [math] space to store the array, the amortized cost of grow is [math], even if only grow and access operations are allowed. The time for grow and shrink operations cannot be made worst-case unless [math].\",\"PeriodicalId\":49532,\"journal\":{\"name\":\"SIAM Journal on Computing\",\"volume\":null,\"pages\":null},\"PeriodicalIF\":1.2000,\"publicationDate\":\"2024-09-17\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"0\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"SIAM Journal on Computing\",\"FirstCategoryId\":\"94\",\"ListUrlMain\":\"https://doi.org/10.1137/23m1575792\",\"RegionNum\":3,\"RegionCategory\":\"计算机科学\",\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"Q3\",\"JCRName\":\"COMPUTER SCIENCE, THEORY & METHODS\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"SIAM Journal on Computing","FirstCategoryId":"94","ListUrlMain":"https://doi.org/10.1137/23m1575792","RegionNum":3,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"Q3","JCRName":"COMPUTER SCIENCE, THEORY & METHODS","Score":null,"Total":0}
引用次数: 0

摘要

SIAM 计算期刊》,第 53 卷第 5 期,第 1354-1380 页,2024 年 10 月。 摘要可调整大小的数组是一种数组,它可以通过增加或移除其末端或两端的项目来实现增长和收缩,同时仍然支持在给定索引的情况下对数组中存储的每个项目进行恒定时间访问。由于数组的大小(即其中的项数)会随时间而变化,因此需要对可调整大小的数组进行动态内存管理,才能实现空间效率维护。标准的加倍技术只需[数学]空间就能维护大小为[数学]的数组,每次操作只需[数学]摊销时间,甚至[数学]最坏情况下的时间。Sitarski 和 Brodnik、Carlsson、Demaine、Munro 和 Sedgewick(显然是独立的)描述了更好的解决方案,只用[数学]空间就能维护一个大小为[数学]的可调整数组,每次操作仍然需要[数学]时间。布罗德尼克等人给出了一个简单的证明,即这是最好的解决方案。我们区分了存储可调整大小的数组和访问其项所需的空间,以及数组增长或收缩时可能需要的临时空间。对于每一个整数[math],我们证明,如果[math]空间可以在数组增长和收缩操作时短暂使用,那么[math]空间足以存储和访问大小为[math]的数组。通过索引访问一个项目需要[math]最坏情况时间,而增长和收缩操作需要[math]摊销时间。我们通过对增长游戏的精确分析表明,对于只使用[math]空间存储数组的各种数据结构,即使只允许进行增长和访问操作,增长的摊销成本也是[math]。除非[math],否则增长和收缩操作的时间无法达到最坏情况。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
查看原文
分享 分享
微信好友 朋友圈 QQ好友 复制链接
本刊更多论文
Optimal Resizable Arrays
SIAM Journal on Computing, Volume 53, Issue 5, Page 1354-1380, October 2024.
Abstract. A resizable array is an array that can grow and shrink by the addition or removal of items from its end, or both its ends, while still supporting constant-time access to each item stored in the array given its index. Since the size of an array, i.e., the number of items in it, varies over time, space-efficient maintenance of a resizable array requires dynamic memory management. A standard doubling technique allows the maintenance of an array of size [math] using only [math] space, with [math] amortized time, or even [math] worst-case time, per operation. Sitarski, and (apparently independently) Brodnik, Carlsson, Demaine, Munro, and Sedgewick describe much better solutions that maintain a resizable array of size [math] using only [math] space, still with [math] time per operation. Brodnik et al. give a simple proof that this is best possible. We distinguish between the space needed for storing a resizable array, and accessing its items, and the temporary space that may be needed while growing or shrinking the array. For every integer [math], we show that [math] space is sufficient for storing and accessing an array of size [math], if [math] space can be used briefly during grow and shrink operations. Accessing an item by index takes [math] worst-case time, while grow and shrink operations take [math] amortized time. Using an exact analysis of a growth game, we show that for any data structure from a wide class of data structures that uses only [math] space to store the array, the amortized cost of grow is [math], even if only grow and access operations are allowed. The time for grow and shrink operations cannot be made worst-case unless [math].
求助全文
通过发布文献求助,成功后即可免费获取论文全文。 去求助
来源期刊
SIAM Journal on Computing
SIAM Journal on Computing 工程技术-计算机:理论方法
CiteScore
4.60
自引率
0.00%
发文量
68
审稿时长
6-12 weeks
期刊介绍: The SIAM Journal on Computing aims to provide coverage of the most significant work going on in the mathematical and formal aspects of computer science and nonnumerical computing. Submissions must be clearly written and make a significant technical contribution. Topics include but are not limited to analysis and design of algorithms, algorithmic game theory, data structures, computational complexity, computational algebra, computational aspects of combinatorics and graph theory, computational biology, computational geometry, computational robotics, the mathematical aspects of programming languages, artificial intelligence, computational learning, databases, information retrieval, cryptography, networks, distributed computing, parallel algorithms, and computer architecture.
期刊最新文献
Optimal Resizable Arrays Stronger 3-SUM Lower Bounds for Approximate Distance Oracles via Additive Combinatorics Resolving Matrix Spencer Conjecture up to Poly-Logarithmic Rank Complexity Classification Transfer for CSPs via Algebraic Products Optimal Sublinear Sampling of Spanning Trees and Determinantal Point Processes via Average-Case Entropic Independence
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
已复制链接
已复制链接
快去分享给好友吧!
我知道了
×
扫码分享
扫码分享
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1