是否有一种将范畴论/抽象代数与计算复杂性相结合的理论?


18

范畴论和抽象代数处理函数可以与其他函数组合的方式。复杂度理论涉及函数的计算难度。我很奇怪我没有看到任何人将这些研究领域相结合,因为它们看起来像是天生的对。有人做过吗?


作为一个激励性的例子,让我们看一下monoid。众所周知,如果一个操作是一个monoid,那么我们可以并行化该操作。

例如在Haskell中,我们可以简单地将加法定义为整数,如下所示:

instance Monoid Int where
    mempty = 0
    mappend = (+)

现在,如果我们要计算0到999的总和,可以依次执行以下操作:

foldl1' (+) [0..999]

或者我们可以并行执行

mconcat [0..999] -- for simplicity of the code, I'm ignoring that this doesn't *actually* run in parallel

但是并行化此类半体唯一有意义的原因是mappend在恒定时间内运行。如果不是这种情况怎么办?例如,列表是等分体,其中mappend的运行时间不是恒定的(或空格!)。我猜这就是为什么Haskell中没有默认的并行mconcat函数。最佳的实现取决于类半体动物的复杂性。


似乎应该有一种方便的方法来描述这两个类半体动物之间的差异。然后,我们应该能够使用这些差异来注释我们的代码,并让程序根据Monoid的复杂性自动选择最佳算法来使用。


1
Haskell中的Integer类型是多精度整数,它们加法的时间复杂度自然取决于输入整数的长度,因此说在Monoid实例中Integer的mappend在恒定时间内运行是令人误解的。
伊藤刚(Tsuyoshi Ito)

@TsuyoshiIto你是对的,我打算使用Int。固定。
Mike Izbicki 2012年

你看到这个问题了吗?
卡夫

@Kaveh我没有,谢谢你的指导。通过快速阅读,听起来好像没有人对复杂度类本身做过任何类别理论工作(并且有一些争论甚至可能意味着什么,或者这是否是一个有价值的目标)。因此,我认为这几乎可以回答我的问题的第一部分,并且只剩下代数和复杂性之间的任何相互作用。
Mike Izbicki 2012年

代数和复杂性理论之间有很多相互作用。甚至还有名为《代数复杂性理论》的书,这些书使用并将代数概念和技术应用于复杂性。此外,还有大量将复杂性理论应用于代数的著作。您必须更具体才能获得答案。
卡夫

Answers:


12

[计算复杂度和类别理论]看起来像是自然对。

考虑到计算复杂性作为研究领域的突出地位,如果他们是天生的同伴,也许有人已经发现了这种联系?

疯狂的猜测。 让我用一个关于为什么很难对计算复杂性进行分类渲染的想法来吸引读者。可以说,范畴论中的关键概念群集中在通用构造/属性(以及相关的函子,自然变换,附加等装置)周围。如果我们可以证明数学构造具有通用性,那么可以提供很多见识。因此,如果我们想采用一种分类方法来计算复杂性,就需要找到一个方便的类别,并展示如何通过使用该类别的通用构造来给出复杂性理论的关键概念(例如LOGSPACE或NP-hardness)。这尚未完成,我认为这是因为这是一个非常困难的问题。

T=T1T2T3Ti,1。相反,我们通过分别指定它们的两个组件(控件(FSM)和磁带)来构造TM。控件和磁带本身都不具有良好的代数。

让我们先来看一下磁带。有几种自然的方式来组成录音带,但似乎都没有一种对TM的组成描述起作用。

  • 像顺序添加一样将它们粘在一起。 这不是正确的概念,因为磁带是无限的,通过像序数加法一样将它们粘在一起,我们得到了一个超越无限可计算性的双重无限对象,从而导致了无限计算/超计算,这在数学上很有趣,但并不符合可行的计算。

  • 将它们并行粘贴,例如将两台3头机器变成6头机器。这并没有告诉我们组件机器之间如何交互。

  • 插入磁带。这种方法的一个问题是尚不清楚规范的交错可能是什么(如果有)。此外,交织会“混淆”现有控制,这往往会针对特定的磁带布局进行微调。因此,我们不能直接重用控件。

π

总而言之,我们距离计算复杂性的代数/分类处理还很遥远,我们需要一些概念上的改进才能到达那里。


λπλπαλπ


我想说的是,当您将图灵机视为抽象的计算机程序时,它们的组成就很清楚了。编写程序的自然方法是将一个程序称为另一个程序的子程序。更一般而言,每个程序都是可计算的有限时空函数,它接受某些格式化的输入并输出另一个格式化的字符串,可以将其输入到另一个函数中。某些垃圾输入可能会导致垃圾输出,或者某些函数无法在分配的时间和空间中执行,在这种情况下,整个程序将崩溃。
安东·费迪索夫'18

显然,并非所有程序都可以这种方式编写,这自然使我们进入了TM类别。也有可能应该放弃时空无限TM的概念,但实际上这是行不通的。是否有一些公开的概念可以反映这种结构?
安东·费迪索夫'18

@AntonFetisov您是否尝试写下详细信息?不好看
Martin Berger

2

关于形式语言之间同构的这个答案将代码理论的代数结果与类别理论的概念相结合,以研究形式语言和复杂性类之间的等价和同构的可能概念。

我自己对这些结果的解释是,对于确定性和明确的不确定性换能器,字上的同步点是不同的,甚至确定性正向和确定性后向换能器之间的同步点也不同。从同步点的角度来看,可以将这些结果与可见的下推式语言联系起来,并提出了一个问题,即除了调用和返回之外,这些语言是否还应考虑简单的分隔符(如空格或逗号)。(我的猜测是,可以通过组合的return + call来模拟分隔符,但是由于这些分隔符需要两个符号而不是一个符号,因此我不清楚这是否足够。显然还有一些语言中只有分隔符,但没有呼叫或返回符号。)


我将其设置为社区Wiki,因为它链接到我对自己的问题的答案,这当然不是很好。我正在“清理”我的最爱,而写这个简短答案是最简单的方法。
Thomas Klimpel
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.