识别Watson-Crick回文的空间复杂性


10

我有以下算法问题:

确定识别作为Watson-Crick回文的DNA字符串的空间图灵复杂性。

Watson-Crick回文是指其原始字符串反向排列的字符串。的补体被定义信明智的,通过DNA启发:A是T的补体和C是G.一个简单的例子的用于WC-回文的补ACGT。

我提出了两种解决方法。

一个需要空间。O(n)

  • 一旦机器完成读取输入。输入磁带必须以相反的顺序复制到工作磁带上。
  • 然后,机器将从左侧读取输入和工作带,并比较每个条目,以验证工作带中的单元格是输入单元格的补充。这需要空间。O(n)

另一个需要空间。O(logn)

  • 在读取输入时。计算输入磁带上的条目数。
  • 输入磁带读完后
    • 将信件的补语复制到工作带上
    • 将字母L复制到工作带的末尾
  • (循环点)如果计数器= 0,请清除工作带并输入是,然后暂停
  • 如果输入磁带显示L
    • 将输入头向左移动计数器指示的次数(需要第二个计数器)
  • 如果输入磁带显示R
    • 将输入头向右移动计数器指示的次数(需要第二个计数器)
  • 如果保存在工作带上的值的单元格与输入磁带上的当前单元格匹配
    • 将计数器减2
    • 向左或向右移动一个,分别取决于R或L在工作带上
    • 将L或R的补语复制到工作带以代替当前的L或R
    • 继续循环
  • 如果值不匹配,请清除工作带并输入否,然后暂停

这大约占空间,用于存储两个计数器,当前补码和值L或R。2logn+2

我的问题

第一个需要线性时间和空间。第二个需要时间和空间。我从报价中得到了问题,并提出了这两种方法,但是我不知道该选择哪种方法。我只需要说明问题的空间复杂性。n22logn

我感到困惑的原因

我倾向于说第二个是最好的选择,因为它在时间上比较好,但是答案仅来自我很幸运并想出一种算法。看起来,如果我想给某些东西添加空间复杂性,那么不需要运气就可以得出正确的算法。我想念什么吗?我是否应该甚至提出解决问题的方法来解决空间的复杂性?


我认为,如果为算法提供伪代码,问题会更好。看看这里寻求帮助的格式。
拉斐尔

Answers:


8

免责声明以下算法未将标准模型用于亚线性空间复杂度(请参阅WP:DSPACE),因为它会写入输入磁带。此外(Watson-Crick)回文集不在。但是,它是用于许多实际目的的就地解决方案(例如,如果每个字母都用C表示)。DSPACE(O(1))=REGchar

为了表明问题具有特定的空间复杂度,通常需要提出一种具有该空间复杂度的算法。这可能需要反复试验,但是更好的方法是对所要解决的问题有充分的了解,并在算法和复杂性方面有丰富的经验。

对于此特定示例,存在第三种算法,该算法不需要任何其他空间,并且需要时间复杂度。该算法将是恒定空间。O(n2)

提示:当可以使用输入所占用的空间时,为什么还要使用额外的空间?

提示:在字符串上来回滑动,一次检查一个字符–使用Turing Machine的状态来记住要检查的字符,并擦除已经检查过的字符。


多数民众赞成在我的第二个算法。要在字符串上来回移动,您需要计数器。对于长度输入,您需要log n空间来存储计数器。除非我有误会,否则似乎您无法在字符串中来回移动,而又不跟踪已比较的部分
justausr 2012年

3
为什么需要存储柜台?
戴夫·克拉克2012年

如果我到达输入的末尾并且它是10个字符长。我需要返回10个字符并保存输入中的最后一个字符。一旦到达起点,我将比较并复制第二个字符,并向右移动7次,并验证第二个字符与第9个字符匹配。除非我一直不跟上,我怎么知道它是7次?
justausr 2012年

1
磁头一次只能位于磁带上的一个位置,但是TM的状态可以记住磁头所看到的内容,并且可以用其他字符标记磁带,以指示已访问过磁带的哪些部分(在算法的某些阶段)。
戴夫·克拉克

1
我没明白你的意思。如果要擦除或标记输入流中的字符(带有相同的标记),则由于用完了输入字符串,可以轻松确定何时完成输入字符串的处理。
戴夫·克拉克

3

提出问题的方式应该为空间复杂度设定一个上限和一个下限

第一部分通常是通过为您的问题提出一种算法来完成的,但是将其简化其他一些经过深入研究的问题也可以(也间接产生一种算法)。由于您不考虑复杂性(时间和空间),因此即使时间增加,空间也很重要。因此,您找到了的上限。O(logn)

第二部分通常比较棘手,但是您可以轻松地证明恒定的空间是不够的,因为这会使您的语言变得规则。将抽水引理与,其中是假设的抽水数即可解决问题。这仍然在和之间留下了很大的差距。alb2lallω(1)O(logn)

我发现了一个练习(请参阅练习6),它提供了一些提示。如果我正确解释了它们的提示,请尝试证明每种输入大小都存在许多不同的Myhill-Nerode关系等价类。这类似于一个论点,即您不能区分长度为字符串(其中是您的磁带字母,而您的空间复杂度)。这将为您提供的下限。cΓs(n)nΓs(n)Ω(logn)


请注意,由于此操作是微不足道的,因此您无需关心字母的补码,因此可以将适用于普通回文的所有内容修改为几种其他状态来解决您的问题。


0

在您的情况下,回文式的经典时空折衷也很有可能保持。该结果表明,识别空间回文的图灵机必须花费时间,即 在您的情况下,第一种算法的,第二种算法的。还可以显示空间的下限是。我一直找不到最佳的上限-也就是说,是否有使用对数空间和时间,或者通常来说,值是多少Ω Ñ 2 /小号时间 × 空间 = Ω Ñ 2Ť 小号= Θ Ñ 2Ť 小号= Θ Ñ 2日志Ñ Ω 日志Ñ ø Ñ 2 /登录Ñ 小号Ω Ñ 2 /小号SΩ(n2/S)

Time×Space=Ω(n2).
TS=Θ(n2)TS=Θ(n2logn)Ω(logn)O(n2/logn)S我们可以达到时间。作为练习,您可以尝试查找其他可对两种算法进行插值的混合算法。Ω(n2/S)
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.