Я собираюсь попробовать доказательство, чтобы показать, что это не может быть сделано.
Предположим, существует очередь Q, которая моделируется 3 стеками, A, B и C.
Утверждения
ASRT0: = Кроме того, предположим, что Q может моделировать операции {очередь, очередь} в O (1).Это означает, что существует определенная последовательность нажатий / выталкиваний стека для каждой моделируемой операции очереди / очереди.
Без потери общности предположим, что операции очереди являются детерминированными.
Пусть элементы, поставленные в очередь в Q, будут пронумерованы 1, 2, ..., в зависимости от их порядка очереди, причем первый элемент, помещенный в очередь в Q, определен как 1, второй - как2 и т. Д.
Определить
Q(0) :=
Состояние Q, когда в Q есть 0 элементов (и, следовательно, 0 элементов в A, B и C) Q(1) :=
Состояние Q (и A, B и C) после 1 операции очереди на Q(0)
Q(n) :=
Состояние Q (и A, B и C) после nоперации с очередями в Q(0)
Определить
|Q(n)| :=
количество элементов в Q(n)
(следовательно, |Q(n)| = n
) A(n) :=
состояние стека A, когда состояние Q равно Q(n)
|A(n)| :=
количество элементов в A(n)
И аналогичные определения длястеки B и C.
Тривиально,
|Q(n)| = |A(n)| + |B(n)| + |C(n)|
---
|Q(n)|
явно неограничен на n.
Следовательно, по крайней мере один из |A(n)|
, |B(n)|
или |C(n)|
не ограничено по n.
WLOG1
, предположим, что стек A неограничен, а стеки B и C. ограничены.
Определите * B_u :=
верхнюю границу B * C_u :=
верхняя граница C * K := B_u + C_u + 1
WLOG2
, для n такого, что |A(n)| > K
, выберите K элементов из Q(n)
.Предположим, что 1 из этих элементов находится в A(n + x)
для всех x >= 0
, т.е. элемент всегда находится в стеке A независимо от того, сколько операций очереди выполнено.
Затем мы можем определить
ASRT1 :=
Количество всплывающих окон, требуемых для удаления X из Q(n)
, составляет не менее Abv(n)
От(ASRT0
) и (ASRT1
), ASRT2 := Abv(n)
должны быть ограничены.
Если Abv(n)
не ограничен, то если для удаления X из Q(n)
требуется 20 декеев, потребуетсяминимум Abv(n)/20
хлопаетКоторый неограничен.20 может быть любой константой.
Следовательно,
ASRT3 := Blo(n) = |A(n)| - Abv(n)
должен быть неограниченным.
WLOG3
, мы можем выбрать K элементов снизуA(n)
, и один из них находится в A(n + x)
для всех x >= 0
X(n) :=
этого элемента, для любого заданного n
ASRT4 := Abv(n) >= |A(n)| - K
Всякий раз, когда элемент ставится в очередь Q(n)
...
WLOG4
, предположим, что B и C уже заполнены до их верхних границ.Предположим, что верхняя граница для элементов выше X(n)
была достигнута.Затем новый элемент вводит A.
WLOG5
, предположим, что в результате новый элемент должен войти ниже X(n)
.
ASRT5 :=
Количество всплывающих окон, необходимое для установкиэлемент ниже X(n) >= Abv(X(n))
Начиная с (ASRT4)
, Abv(n)
не ограничен по n.
Следовательно, число всплывающих окон, необходимое для помещения элемента ниже X(n)
, не ограничено.
Это противоречит ASRT1
, поэтому невозможно смоделировать очередь O(1)
с 3 стеками.
Т.е.
Как минимум 1стек должен быть неограниченным.
Для элемента, который остается в этом стеке, число элементов над ним должно быть ограничено, или операция удаления для удаления этого элемента будет неограниченной.
Однако,если число элементов над ним ограничено, то оно достигнет предела.В какой-то момент новый элемент должен войти под ним.
Поскольку мы всегда можем выбрать старый элемент из числа одного из самых нижних элементов этого стека, над ним может быть неограниченное количество элементов (в зависимости от неограниченного размера неограниченного стека).
Чтобы ввести новый элемент под ним, так как над ним есть неограниченное количество элементов, неограниченное количество всплывающих окон требуется, чтобы поместить новый элемент под ним.
И, таким образом, противоречие.
Существует 5 операторов WLOG (без потери общности). В некотором смысле, они могут быть интуитивно поняты, чтобы быть правдой (но, учитывая, что они 5, это может занять некоторое время). Формальное доказательство того, что общность не потеряна, может быть получено, но оно чрезвычайно длинное. Они опущены.
Я допускаю, что такое упущение может привести к тому, что заявления WLOG будут поставлены под вопрос. С паранойей программиста на ошибки, пожалуйста, проверьте операторы WLOG, если хотите.
Третий стек также не имеет значения. Важно то, что есть набор ограниченных стеков и набор неограниченных стеков. Минимум, необходимый для примера, составляет 2 стека. Количество стеков должно быть, конечно, конечным.
Наконец, если я прав, что нет доказательств, тогда должно быть более легкое индуктивное доказательство. Вероятно, основано на том, что происходит после каждой очереди (следите за тем, как это влияет на наихудший случай удаления очереди, учитывая набор всех элементов в очереди).