Я спробую довести, щоб показати, що цього не можна зробити.
Припустимо, існує черга Q, яка імітується 3 стеками, A, B і C.
Твердження
ASRT0: = Крім того, припустимо, що Q може імітувати операції {черга, dequeue} в 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)|
не пов'язаний з n.
WLOG1
, припустимо, стек A не є обмеженим, а стеки B і C обмежені.
Визначте * B_u :=
верхню межу B * C_u :=
верхню межу C *K := B_u + C_u + 1
WLOG2
, для n n таких, що |A(n)| > K
виберіть з K елементів Q(n)
. Припустимо, що 1 з цих елементів знаходиться в A(n + x)
усіх x >= 0
, тобто елемент завжди знаходиться в стеці А незалежно від того, скільки операцій черги виконано.
Тоді ми можемо визначитись
ASRT1 :=
Кількість спливів, необхідних для зняття з Х, Q(n)
становить щонайменшеAbv(n)
З ( 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) :=
цей елемент, для будь-якого даного 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)
є необмеженим на n.
Тому кількість спливів, необхідних для того, щоб поставити елемент нижче, X(n)
не обмежується.
Це суперечить ASRT1
, тому неможливо імітувати O(1)
чергу з 3 стеками.
Тобто
Принаймні 1 стек повинен бути необмеженим.
Для елемента, який перебуває у цій стеці, кількість елементів над ним має бути обмежене, або операція видалення черги для видалення цього елемента не буде обмежена.
Однак якщо кількість елементів над нею обмежена, то вона досягне межі. У якийсь момент під ним повинен ввести новий елемент.
Оскільки ми завжди можемо вибрати старий елемент з числа одного з найменших елементів цього стека, над ним може бути необмежена кількість елементів (виходячи з необмеженого розміру безмежного стека).
Щоб ввести новий елемент під ним, оскільки над ним є необмежена кількість елементів, для необмеженої кількості елементів потрібна необмежена кількість спливаючих елементів.
І таким чином суперечність.
Є 5 тверджень WLOG (Без втрати загальності). У певному сенсі їх можна інтуїтивно зрозуміти як істинні (але враховуючи, що їх 5, це може зайняти деякий час). Офіційний доказ того, що жодна загальність не втрачається, може бути отриманий, але є надзвичайно тривалим. Вони опущені.
Я визнаю, що таке упущення може залишити висловлювання WLOG під питанням. Маючи параною програміста на помилки, будь ласка, перевірте заяви WLOG, якщо ви хочете.
Третя стека також не має значення. Важливо те, що існує набір обмежених стеків і безліч необмежених стеків. Мінімум, необхідний для прикладу, - 2 стеки. Кількість штабелів повинна бути, звичайно, кінцевою.
Нарешті, якщо я маю рацію, що немає доказів, тоді повинен бути простіший індуктивний доказ. Можливо, виходячи з того, що відбувається після кожної черги (слідкуйте за тим, як це впливає на найгірший випадок декуе, враховуючи набір усіх елементів у черзі).