3
识别Watson-Crick回文的空间复杂性
我有以下算法问题: 确定识别作为Watson-Crick回文的DNA字符串的空间图灵复杂性。 Watson-Crick回文是指其原始字符串反向排列的字符串。的补体被定义信明智的,通过DNA启发:A是T的补体和C是G.一个简单的例子的用于WC-回文的补ACGT。 我提出了两种解决方法。 一个需要空间。O(n)O(n)\mathcal{O}(n) 一旦机器完成读取输入。输入磁带必须以相反的顺序复制到工作磁带上。 然后,机器将从左侧读取输入和工作带,并比较每个条目,以验证工作带中的单元格是输入单元格的补充。这需要空间。O(n)O(n)\mathcal{O}(n) 另一个需要空间。O(logn)O(logn)\mathcal{O}(\log n) 在读取输入时。计算输入磁带上的条目数。 输入磁带读完后 将信件的补语复制到工作带上 将字母L复制到工作带的末尾 (循环点)如果计数器= 0,请清除工作带并输入是,然后暂停 如果输入磁带显示L 将输入头向左移动计数器指示的次数(需要第二个计数器) 如果输入磁带显示R 将输入头向右移动计数器指示的次数(需要第二个计数器) 如果保存在工作带上的值的单元格与输入磁带上的当前单元格匹配 将计数器减2 向左或向右移动一个,分别取决于R或L在工作带上 将L或R的补语复制到工作带以代替当前的L或R 继续循环 如果值不匹配,请清除工作带并输入否,然后暂停 这大约占空间,用于存储两个计数器,当前补码和值L或R。2logn+22logn+22\log n+2 我的问题 第一个需要线性时间和空间。第二个需要时间和空间。我从报价中得到了问题,并提出了这两种方法,但是我不知道该选择哪种方法。我只需要说明问题的空间复杂性。n22n22\frac{n^2}{2}lognlogn\log n 我感到困惑的原因 我倾向于说第二个是最好的选择,因为它在时间上比较好,但是答案仅来自我很幸运并想出一种算法。看起来,如果我想给某些东西添加空间复杂性,那么不需要运气就可以得出正确的算法。我想念什么吗?我是否应该甚至提出解决问题的方法来解决空间的复杂性?