Questions tagged «data-structures»

有关在软件应用程序中有效存储和表示数据的问题。

2
克里斯·冈崎(Chris Okasaki)的1996年论文和1999年的《纯函数数据结构》一书在内容上有什么区别?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 4年前关闭。 我想阅读纯粹的功能数据结构。我很容易找到论文(可以PDF形式免费获得),但也可以找到一本书。因此,我想知道这两个出版物之间的区别(如果有)。

4
开发人员应该完全了解哪些算法和数据结构?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 我想成为一名成功的企业Java开发人员。我应该精通哪些算法和数据结构?您会推荐什么书给我? 要成为一名成功的Java开发人员,我是否需要了解所有高级算法,例如CLRS中给出的算法? 您可以按优先级从高到低的顺序列出我应该学习的主题吗? 我必须知道: 正在搜寻? 排序? 图/树? 等等?

8
为什么通常认为使用字符串键是一个坏主意?
这一直困扰着我一段时间。大多数时候,在将数据存储在诸如哈希表之类的结构中时,程序员,书籍和文章都坚持认为用String值对所述结构中的元素进行索引是不正确的做法。然而,到目前为止,我还没有找到一个单一的资料来源来解释为什么这被认为是不好的作法。是否取决于编程语言?在底层框架上?在执行上? 举两个简单的例子,如果有帮助的话: 类似于SQL的表,其中的行由String主键索引。 .NET字典,其中的键是字符串。

4
面向数据的设计-不超过1-2个结构“成员”不切实际?
数据导向设计的常见示例是Ball结构: struct Ball { float Radius; float XYZ[3]; }; 然后他们提出了一种迭代std::vector<Ball>向量的算法。 然后它们给您同样的东西,但是在面向数据的设计中实现: struct Balls { std::vector<float> Radiuses; std::vector<XYZ[3]> XYZs; }; 这样做很好,而且如果您要先迭代所有半径,然后遍历所有位置,依次类推,那么一切都很好。但是,如何移动矢量中的球?在原始版本中,如果您有std::vector<Ball> BallsAll,则可以将任何移动BallsAll[x]到任何一个BallsAll[y]。 但是,对于面向数据的版本,要对每个属性执行相同的操作(对于Ball,则必须执行两次(半径和位置)。但是,如果您拥有更多的属性,情况会变得更糟。您必须为每个“球”保留一个索引,并且在尝试移动它时,必须在每个属性向量中进行移动。 这不会破坏面向数据设计的任何性能优势吗?

4
“大数据”的定义是什么?
有一个吗? 我能找到的所有定义都描述了数据的大小,复杂性/多样性或速度。 维基百科的定义是我找到的唯一具有实际数字的定义 大数据量是一个不断变化的目标,从2012年开始,单个数据集中的数据量从几十TB到许多PB。 但是,这似乎与下一段引用的MIKE2.0定义相矛盾,该定义表示“大”数据可能很小,并且仅飞机上创建10GB传感器的3GB数据就可以认为是大数据。 IBM尽管说过: 大数据不仅仅是规模问题。 在定义中强调大小。 奥莱利也强调了 "volume, velocity and variety"这一点。尽管解释得很好,而且更深入,但该定义似乎是对其他定义的重新混编-当然,反之亦然。 我认为《计算机周刊》的文章标题很好地总结了许多文章“什么是大数据以及如何利用它来获得竞争优势”。 但是ZDNet 从2012年开始赢得以下大奖: “大数据”是从IT市场的高性能计算领域中冒出来的一个流行语...如果一个人坐在十个技术供应商的演讲中,可能会提出十五个左右的不同定义。当然,每个定义都倾向于支持该供应商的产品和服务的需求。想象一下。 基本上,“大数据”在某种程度上是“大”形状或形式。 什么是“大”?目前可量化吗? 如果“大”是无法量化的,那么是否存在不仅仅依赖于一般性的定义?


2
这类列表/地图有数据结构吗?
也许有一个我想要的名字,但是我没有意识到。我需要与LinkedHashMapJava中类似的东西,但是如果指定的键没有值,它会返回“上一个”值。 也就是说,我有一个由整数键存储的对象列表(在我的情况下以时间为单位): ; key->value 10->A 15->B 20->C 因此,如果我要查询键0-9的值,它将返回null。特殊的部分是,如果我查询10 <= i <= 14,它将返回A。或者,对于i> = 20,它将返回C。 是否有数据结构?

2
我通常在生产软件中的哪里使用Deque?
我对在软件应用程序中的堆栈,队列和树的使用位置相当熟悉,但是我之前从未使用过Deque(双端队列)。我通常会在野外遇到什么地方?它会和Queue放在同一个地方,但又有更多的功能吗?

3
如何在数据中表达微妙的关系?
“ A”与“ B”和“ C”有关。在这种情况下,我如何证明“ B”和“ C”也可能相关? 例: 以下是有关百老汇最近一部戏剧的一些头条新闻: 大卫·马梅特(David Mamet)的格伦加里(Glengarry)格伦·罗斯(Glen Ross),由阿尔·帕西诺(Al Pacino)主演,在百老汇开幕 Al Pacino在“ Glengarry Glen Ross”中:评论家们怎么看? 阿尔·帕西诺(Al Pacino)在百老汇(Broadway turn)赢得了平淡的评论 剧院评论:Glengarry Glen Ross正在努力推销明星 Glengarry Glen Ross;嘿,谁杀死了Klieg灯? 问题: 对这些记录进行模糊字符串匹配将建立一些关系,但不会建立其他关系,即使人类读者可以从更大的数据集中从上下文中选择它们。 我如何找到暗示#3与#4相关的关系?它们都可以很容易地连接到#1,但不能互相连接。 这种数据或结构是否有(可查询的)名称?我在寻找哪种算法? 目标: 给定1,000个标题,系统会自动提示这5个项目可能都是同一件事。 老实说,我编写程序已经很久了,我不知如何正确表达这个问题。(如果有道理,我不知道不知道)。 这是一个个人项目,我正在用Python编写它。在此先感谢您的任何帮助,建议和指示!

1
决策树与神经网络
此问题是从Stack Overflow 迁移而来的,因为可以在Software Engineering Stack Exchange上回答。 迁移 7年前。 我正在实现一种机器学习结构,以尝试预测诸如银行等金融系统上的欺诈行为。这意味着可以使用许多不同的数据来训练模型。卡号,持卡人姓名,金额,国家等... 我在确定哪种结构最适合此问题时遇到了麻烦。我对决策树有一些经验,但是目前我开始质疑神经网络是否可以更好地解决此类问题。另外,如果有其他任何最佳方法,请随时启发我。 每个结构的优缺点是什么,哪种结构最适合该问题? 我也不确定这个事实,但是我认为决策树在执行速度方面比神经网络有很大的优势。这很重要,因为速度也是该项目的关键因素。

2
什么是Aguri树?
浏览一些旧的Hacker News文章时,我遇到了一个用户的帖子,内容是 Aguri树,这些树将有界大小的基数trie(例如您将在软件路由表中使用)嫁接到LRU列表,并自动从模式中合成聚合(例如来自所有IP的1000个观察值的10.0.0.0/16)插入。它们在流量分析中最为人所知,但我们也在运行时内存分析中也使用了它们。 〜tptacek 所以我决定查一下 快速的Google搜索将我带到F1驱动程序。 在Wikipedia上进行搜索会导致印度出现种姓制度,而日本也有一些商品 堆栈溢出命中0个结果/programming//search?q=aguri site:stackoverflow.com/questions aguri 所以我终于将其链接回用户,看到他的博客上有链接 http://www.matasano.com/log/1009/aguri-coolest-data-structure-youve-never-heard-of/ 但这已经死了。 那么,这个Aguri数据结构是什么?如果它是真实的数据结构,为什么在其他任何地方都没有记录呢?

6
我们如何将(分层)文件系统作为基本数据结构?
我是自学成才的,没有CS学位。在这个时代,我对数据结构的了解越多,我就越想知道,我们如何仍将文件系统,目录和文件作为OS上的基本数据存储结构? 我了解它的简单性,但如今看来,可能会有更多本机可用的选项。据我所知,唯一改善文件系统基本功能的项目是ReiserFS,您可以在其中知道文件的哪一行由谁以及何时更改。 例如,如果我可以对文件进行本机标记,则可以在其中标记图像,图表,文字处理文档,整个代码存储库,这些都属于一个项目,这对我真的很有帮助。由于我陷入了文件系统范式中,所以我知道可以将所有这些文件放到一个文件夹/目录中,但是如果它们已经存在于不同的目录中并且需要留在那儿呢?我知道那里有可以做到这一点的程序,但是为什么它们不在文件系统上? 很好的东西是文件系统中的某种关系功能,就像使用RDBMSes一样。我知道那应该是Vista / 7的一部分,但是那也不属于功能列表。 当然,任何程序都可以存储二进制文件并在其中具有任何数据结构,为什么操作系统除了文件系统的简单体系结构之外,不能提供更复杂的数据存储方式?

3
当程序员谈论“数据结构”时,它们指的是什么?
当程序员谈论“数据结构”时,他们只是在谈论诸如列表,树,哈希,图等的抽象数据类型吗? 还是该术语包括任何保存数据的结构,例如复合类型(类对象,结构,枚举等)和原始类型(布尔,整数,字符等)? 我只听说过程序员使用该术语来引用复杂的数据结构或抽象的数据类型,但是提供数据结构列表的Wikipedia文章在定义中同时包括了复合类型和原始类型,这并不是我所期望的(甚至虽然确实有道理)。 当环顾四周网上我看到,是指在编程意义上的术语“数据结构”为仅指抽象数据类型的其它地方,比如从计算机科学的州立大学石溪分校的系本次讲座哪些状态 数据结构是特定抽象数据类型的实际实现。 或这本有关数据结构的Wikibook,它在诸如此类的句子中使用该术语: 由于数据结构是更高级别的抽象,因此它们向我们提供了对数据组的操作,例如将项目添加到列表中或查找队列中优先级最高的项目 那么,为什么我在使用术语“数据结构”时只听到程序员指的是复杂的数据结构或抽象的数据类型?程序员对术语的定义是否与字典定义不同?

5
DelayQueue在现实世界中的使用
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 DelayQueue在现实世界中的用途是什么,它旨在解决哪些常见问题?


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.