类别理论,计算复杂度和组合关系?


17

我一直在尝试阅读“ 函数算法设计的珍珠 ”,然后阅读“ 编程代数 ”,在递归(和多项式)定义的数据类型与组合对象之间有着明显的对应关系,它们具有相同的递归定义并随后处于领先地位如组合物种简介中所述(我读“ 物种,函子和类型,噢,我的天哪! ”)。

那么,对于第一个问题,是否有一种方法可以从幂级数中恢复生成(递归)方程?那是事后的想法。

我对初始代数和最终共代数的概念更感兴趣,因为它们是“定义数据结构的过程”。函数式编程中有一些实用规则,涉及组成,代数之间的映射乘积以及类似内容,例如本教程所述。在我看来,这可能是解决复杂性的非常有效的方法,例如,在这种情况下恢复Master定理看起来相当简单(我的意思是,您必须做相同的论点,因此在这种情况下收益不大),以及原始代数的独特变形,以及F多项式函子的A和FA之间的代数是同构的(我误会了吗?),这使我认为,这种方法在分析E的复杂度方面可以有很多好处。对数据结构的操作。

从实践的角度来看,看起来像融合规则(基本上是相互组合代数态,子代态和一般态的方式)是用于程序转换和重构的非常强大的优化技术。我认为对这些规则的充分利用可以产生最佳程序是正确的(没有不必要的中间数据结构或其他额外操作)。

我在这里上东西吗?从学习的角度来看,以这种方式看一下计算复杂性是否是受益者?我们可以拥有“漂亮的”初始代数的结构是否因某些问题而过于局限?

我主要是想寻找一种方法来根据搜索空间的结构以及“搜索空间”和“搜索算法”通过某些“不错的”对象(例如函子的初始代数和了解在查看更复杂的结构时尝试以这种方式查看内容是否有用。


5
您可以重新格式化以使其可读吗?
列夫Reyzin

11
您的想法有两个潜在的问题。首先,并非所有数据结构都可以使用初始代数表示。任何一般的图形或复杂的指针结构都不会是任何函子的初始代数。其次,融合规则等通常只会提高代码的效率,而不会改变算法的O(-)效率(尽管我确实知道例外情况)。
戴夫·克拉克

谢谢,戴夫,我正在尝试阅读算法博弈论书,并且可以说,传统处理中的算法主要是在操作上指定的,可以这么说,并且想知道是否有通用的方法可以解决这些问题,并且初始代数等看起来对此很不错。但是,通用数据结构和函子之间缺乏对应关系是一个问题。@sclv:谢谢,我来看看!
Stefan Petrov

我想指出的是,除了复杂的指针结构之外,还有其他方法来表示图形。特别是,可以通过@DaveClarke的一系列更改或添加来归纳表示它们。我敢肯定,对于其他这样的结构也是如此,尽管我不想这么说,因为我不是初始代数及其局限性方面的专家。
Samuel Schlesinger

Answers:


7

戴夫·克拉克(Dave Clarke)的评论非常重要。通常,融合不会改变O(-)效率。但是,特别引起关注的是Liu,Cheng和Hudak的因果可换箭。用它们编写的程序在某种程度上可以通过流融合来优化为一个没有动态内存分配和中间结构的循环:http : //haskell.cs.yale.edu/?post_type=publication&p=72


6

Joyal的组合物种,Sedgwick / Falojet的分析组合学的“可容许构造”以及Yorgey的Haskell物种都很好。

UNIX差异名声的Power Series Power认真版也是由McIlroy撰写的,就像《 Haskell逻辑数学和编程之路》中有关corecursion的章节一样。

由桑德斯·麦克兰(Saunders MacLane)和乔姆斯基/舒岑贝格(Chomsky /Schützenberger)编辑的Buchi的历史著作将幂级数,代数,树和有限状态自动机联系起来。Stanley中描述的传递矩阵方法向您展示了如何从加权自动机计算生成函数。

我仍在研究在域之间(GF,加权自动机,代数,树,递归)进行有效转换的最佳方法。现在,我要向SymPy表示感谢,因为还没有一个好的Haskell符号包。

就个人而言,我已经绘制了内吸函数的迭代图,然后在其上计算了一个最小支配集,以获得确切的黑匣子搜索范围,http: //oeis.org/A186202 不知道您要搜索的是哪种复杂性结果,但是该技术在检查有限集上的任何内吸作用方面非常强大。

-14年10月2日最初在15:37回答-

看看Brent Yorgey在您引用的论文之后发表的论文。http://www.cis.upenn.edu/%7Ebyorgey/hosted/thesis.pdf

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.