Этот вопрос основан на существующем вопросе о том, можно ли моделировать стек с использованием двух очередей с амортизированным раз на операцию стека. Ответ кажется неизвестным. Вот более конкретный вопрос, соответствующий особому случаю, когда сначала выполняются все операции PUSH, а затем все операции POP. Насколько эффективно можно изменить список из N элементов, используя две изначально пустые очереди? Юридические операции:
- Поставьте в очередь следующий элемент из списка ввода (в конец любой очереди).
- Удалите элемент из заголовка любой из очередей и поставьте его снова (в конец любой очереди).
- Удалите элемент из заголовка любой очереди и добавьте его в список вывода.
Если список ввода состоит из элементов , как делает минимальное количество операций , необходимым для генерации списка перевернутого выходного [ N , N - 1 , . , , , 2 , 1 ] вести себя? Доказательство того, что он растет быстрее, чем O ( N ), было бы особенно интересно, так как это решило бы исходный вопрос в отрицательной форме.
Обновление (15 января 2011 г.): проблема может быть решена в , как показано в представленных ответах и их комментариях; и нижняя оценка Ω ( N ) тривиальна. Можно ли улучшить эти границы?