数据结构同构


20

免责声明:我不是CS理论家。

来自抽象代数,我习惯于处理等同于同构的事物,但是我很难将这个概念转换为数据结构。我首先以为,设置理论上的双射态射影就足够了,但是我很快遇到了麻烦-它们只是编码而不能捕捉数据结构的计算本质。

有没有更严格(但更有用)的定义?(或者,如果不是,为什么?)“构造数据结构”类别的规范定义吗?

Answers:


16

没有规范的此类类别,出于相同的原因,也没有计算的规范类别。但是,数据结构上有大量有用的代数结构。

组合物种理论是仍然更有用的更普遍的此类结构之一。一个物种是一个函子,其中是有限集和它们之间的双射的类别。您可以将物种视为按抽象位置集合索引的结构族。这就解释了 -这样的族在重命名抽象标签方面必须是不变的。然后,物种的演算基本上在函数级上重放生成函数的方法,以生成数据结构集而不是计数。F:BBB

要查看以编程语言实现的这一理论,您可以阅读Brent Yorgey在Haskell专题讨论会上发表的论文,《物种与函子和类型》,噢,我的天!。我认为Sage也有一个物种包,尽管它当然是针对计算机代数而不是编程。


14

确实,存在与同构不同的概念,它在编程中更有用。它称为“行为等效”(有时称为“观测等效”),它是通过在数据结构之间而不是在双射之间给出“模拟关系”来建立的。代数学家进来并在计算机科学中建立了一个称为“代数数据类型”的区域,在那里他们将同构和初始代数推了一段时间。最终,计算机科学家意识到他们被误导了。关于这些问题的一篇很好的论文是Sannella和Tarlecki撰写的 “论观测等效性和代数规范”

我写了一个关于逻辑关系和模拟的问题的答案,它回答了计算机科学中模拟关系的更一般的历史。欢迎您阅读并继续阅读那里给出的参考文献。雷诺兹的“编程工艺”的第5章特别具有启发性。

Holcombe 写的关于代数自动机理论的教科书有以下有趣的引用(第42页):

关于同态和商,还有许多其他结果。尽管它们具有独立的代数兴趣,但尚未证明对自动机和相关领域的研究特别有用。实际上,机器的代数理论在一个重要方面与其他代数理论所采取的方向有所不同。然而,自动机理论的重点不是机器的“外观”,而是“它们可以做什么”。 。如果两个机器都可以“做同样的事情”,我们将把它们视为密切相关,但是它们可能不是代数同构的!


考虑到霍尔科姆的引用,我注意到他基本上是在说传统代数处理“看起来”的东西,即它们的结构,但对“他们能做的”(即行为)没有把握。这似乎表明传统代数在计算机科学方面的根本局限性。可悲的是,我认为范畴论也属于同一阵营。但是范畴论具有“圣牛”的地位,谈论其局限性是不明智的。希望计算机科学家将集结更多的勇气,大声说出来。
Uday Reddy 2012年

day天,您能否详细说明类别理论的(不对称性?)看起来不太合适?
卢卡斯卢

@ŁukaszLew,如果类别理论很合适,那么您可以说所有带有类型变量X的带Lambda演算类型的表达式都是函子。但是它们不是,例如F(X)=(X-> X)不是函子。
Uday Reddy

7

与其问我们如何加强/削弱同构的概念,不如问另一个问题:问什么是计算结构之间等价的正确概念,什么是该概念的数学结构。

一大群结构是余数。诸如列表,树,自动机之类的结构,无论是有限变种还是无限变种,都可以称为结余。然后,我们可以研究各代数之间的同构或同构。

但是,即使连数之间的同构也不能说明全部。您可能会发现查找仿真,双仿真和其他逻辑关系会有所帮助。如果您严格喜欢代数方法(相对于关系方法而言),则Galois连接是一种选择。这里是一些起点。


2

免责声明:我不确定我是否理解您的问题。您是否要谈论两个数据结构之间或两个“数据结构规范”之间的同构?(这些有时也称为抽象数据类型。)

如果考虑细胞探针模型,那么我认为同构概念很容易出现。这是因为单元探针模型通过决策树对计算进行建模,因此同构易于定义。我认为,如果您考虑数据结构实现之间的同构性以及考虑数据结构规范,那么单元探针模型都会有所帮助。

有关细胞探针模型的信息,请参见Miltersen调查。(细胞探针复杂性:一项调查

如果您更多地说明了为什么需要在数据结构之间定义同构,那么可能会提供更多帮助。随时给我发消息。

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.