У мене є така алгоритмічна проблема:
Визначте простір Тюрінга щодо складності розпізнавання струн ДНК, які є паліндромами Уотсона-Крика.
Паліндром Уотсона-Крика - це струни, перевернутим доповненням яких є оригінальний рядок. Доповненням визначається буква-навхрест, натхненний ДНК: А є доповненням Т і С є доповненням Г. Простий приклад для WC-паліндром ACGT.
Я придумав два способи вирішення цього питання.
Для одного потрібен простір.
- Як тільки машина закінчена, читаючи вхід. Вхідна стрічка повинна бути скопійована на робочу стрічку у зворотному порядку.
- Потім машина прочитає ліві вхідні та робочі стрічки і порівняє кожен запис, щоб переконатися, що комірка в робочій стрічці є компліментом комірки на вході. Для цього потрібен простір.
Інший вимагає простору .
- Під час читання введення. Порахуйте кількість записів на вхідній стрічці.
- Коли введення стрічки робиться читанням
- скопіюйте додаток листа на робочу стрічку
- скопіюйте букву L на кінець робочої стрічки
- (Точка циклу) Якщо лічильник = 0, очистіть робочу стрічку і напишіть так, тоді зупиніть
- Якщо на вхідній стрічці звучить L
- Перемістіть вхідну головку вліво на кількість разів, вказаних лічильником (потрібен другий лічильник)
- Якщо вхідна стрічка зчитує R
- Перемістіть вхідну головку праворуч на кількість разів, вказаних лічильником (потрібен другий лічильник)
- Якщо комірка, яка містить значення на робочій стрічці, відповідає поточній комірці на вхідній стрічці
- декремент лічильника на два
- Перемістіть його вліво або вправо залежно від того, якщо R або L на робочій стрічці відповідно
- скопіюйте доповнення L або R на робочу стрічку замість поточного L або R
- продовжуйте цикл
- Якщо значення не збігаються, очистіть робочу стрічку і напишіть ні, тоді зупиніть
Моє питання
Причину я плутаю
Я схильний би сказати, що другий - найкращий варіант, оскільки він кращий з точки зору часу, але ця відповідь приходить лише від того, що мені пощастить і придумаю алгоритм. Схоже, що якщо я хочу надати простору складність чогось, це не вимагатиме удачі в розробці правильного алгоритму. Я щось пропускаю? Чи потрібно мені навіть вирішити проблему, щоб відповісти на складність простору?