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