Голландский флаг на машине Тьюринга с одной лентой и сложностью n.log(n)?

Голландская национальная проблема заключается в следующем: у меня есть последовательность символов x^k (k >= 3). Моя цель — преобразовать это предложение в голландский флаг, то есть:

ХХХ дает RWB

xxxx дает RWBB

ххххх дает RWWBB

xxxxxx дает RRWWBB

...

где R ‹= W ‹= B ‹= R+1

Я хочу спроектировать машину Тьюринга с одной лентой и сложностью n.log(n) . Дело в том, что стандартный алгоритм использует свопы и я не могу его использовать, что недоступно (недостаточно эффективно) в такой машине Тьюринга....

Вы знаете, как это сделать? :)


person Koala EnChocolat    schedule 07.11.2015    source источник
comment
Да, я знаю, как это сделать. Подумайте об эффективных унарных ‹-› бинарных преобразованиях. У меня нет времени расписывать все подробности.   -  person David Eisenstat    schedule 07.11.2015
comment
....Ага х) На самом деле у меня есть алгоритм, который записывает двоичное число для получения третьего слова. Основная проблема в том, что я могу записать это в n.log(n) (слева от слова), но когда я хочу поместить треть слова при чтении моего двоичного числа, оно имеет сложность в n^2 . Мне не удается добиться достаточной эффективности моего двоично-унарного преобразования...   -  person Koala EnChocolat    schedule 08.11.2015
comment
Возможный дубликат голландского национального флага на машине Тьюринга   -  person aronisstav    schedule 09.11.2015