Tôi sẽ cố gắng làm một bằng chứng để chứng minh rằng nó không thể được thực hiện.
Giả sử có một hàng đợi Q được mô phỏng bởi 3 ngăn xếp A, B và C.
Khẳng định
ASRT0: = Hơn nữa, giả sử rằng Q có thể mô phỏng các hoạt động {queue, dequeue} trong O (1). Điều này có nghĩa là tồn tại một chuỗi cụ thể của việc đẩy / bật ngăn xếp cho mỗi hoạt động hàng đợi / dequeue được mô phỏng.
Không mất tính tổng quát, giả sử các hoạt động xếp hàng là xác định.
Đặt các phần tử được xếp hàng vào Q được đánh số 1, 2, ..., dựa trên thứ tự hàng đợi của chúng, với phần tử đầu tiên được xếp hàng vào Q được xác định là 1, phần thứ hai là 2, v.v.
Định nghĩa
Q(0) :=
Trạng thái của Q khi có 0 phần tử trong Q (và do đó 0 phần tử trong A, B và C)
Q(1) :=
Trạng thái của Q (và A, B và C) sau 1 thao tác xếp hàng trên Q(0)
Q(n) :=
Trạng thái của Q (và A, B và C) sau n hoạt động hàng đợi trên Q(0)
Định nghĩa
|Q(n)| :=
số lượng phần tử trong Q(n)
(do đó |Q(n)| = n
)
A(n) :=
trạng thái của ngăn xếp A khi trạng thái của Q là Q(n)
|A(n)| :=
số lượng phần tử trong A(n)
Và định nghĩa tương tự cho ngăn xếp B và C.
Tầm thường
|Q(n)| = |A(n)| + |B(n)| + |C(n)|
---
|Q(n)|
rõ ràng là không giới hạn trên n.
Do đó, ít nhất một trong số |A(n)|
, |B(n)|
hoặc |C(n)|
không bị ràng buộc trên n.
WLOG1
, giả sử ngăn xếp A không bị chặn và ngăn xếp B và C bị chặn.
Xác định * B_u :=
giới hạn trên của B * C_u :=
giới hạn trên của C *K := B_u + C_u + 1
WLOG2
, với một n sao cho |A(n)| > K
, chọn K phần tử từ Q(n)
. Giả sử rằng 1 trong số các phần tử đó nằm trong A(n + x)
tất cả x >= 0
, tức là phần tử luôn ở trong ngăn xếp A cho dù có bao nhiêu thao tác xếp hàng được thực hiện.
Sau đó chúng ta có thể định nghĩa
ASRT1 :=
Số lượng pops cần thiết để dequeue X từ Q(n)
ít nhất làAbv(n)
Từ ( ASRT0
) và ( ASRT1
), ASRT2 := Abv(n)
phải được giới hạn.
Nếu Abv(n)
không bị ràng buộc, thì nếu 20 dequeues được yêu cầu để dequeue X từ Q(n)
đó, nó sẽ yêu cầu ít nhất là Abv(n)/20
pops. Đó là không giới hạn. 20 có thể là bất kỳ hằng số.
Vì thế,
ASRT3 := Blo(n) = |A(n)| - Abv(n)
phải không bị ràng buộc.
WLOG3
, chúng ta có thể chọn các phần tử K từ dưới cùng A(n)
và một trong số chúng nằm trong A(n + x)
tất cảx >= 0
X(n) :=
phần tử đó, với bất kỳ n đã cho
ASRT4 := Abv(n) >= |A(n)| - K
Bất cứ khi nào một yếu tố được xếp hàng vào Q(n)
...
WLOG4
, giả sử B và C đã được điền vào giới hạn trên của chúng. Giả sử rằng giới hạn trên cho các yếu tố trên X(n)
đã đạt được. Sau đó, một phần tử mới đi vào A.
WLOG5
, giả sử rằng kết quả là, phần tử mới phải nhập bên dưới X(n)
.
ASRT5 :=
Số lượng pops cần thiết để đặt một phần tử bên dưới X(n) >= Abv(X(n))
Từ (ASRT4)
, Abv(n)
không giới hạn trên n.
Do đó, số lượng pop cần thiết để đặt một phần tử bên dưới X(n)
là không giới hạn.
Điều này mâu thuẫn ASRT1
, do đó, không thể mô phỏng một O(1)
hàng đợi với 3 ngăn xếp.
I E
Ít nhất 1 ngăn xếp phải được liên kết.
Đối với một phần tử nằm trong ngăn xếp đó, số lượng phần tử ở trên nó phải được giới hạn hoặc thao tác dequeue để loại bỏ phần tử đó sẽ không bị chặn.
Tuy nhiên, nếu số lượng phần tử ở trên nó bị giới hạn, thì nó sẽ đạt đến giới hạn. Tại một số điểm, một yếu tố mới phải nhập bên dưới nó.
Vì chúng ta luôn có thể chọn phần tử cũ trong số một trong số ít phần tử thấp nhất của ngăn xếp đó, nên có thể có một số phần tử không giới hạn ở trên nó (dựa trên kích thước không giới hạn của ngăn xếp không giới hạn).
Để nhập một phần tử mới bên dưới nó, vì có một số phần tử không bị chặn bên trên nó, nên một số lượng pop không giới hạn được yêu cầu để đặt phần tử mới bên dưới nó.
Và do đó mâu thuẫn.
Có 5 câu lệnh WLOG (Không mất tính tổng quát). Theo một cách hiểu nào đó, chúng có thể được hiểu theo trực giác là đúng (nhưng cho rằng chúng là 5, có thể mất một thời gian). Bằng chứng chính thức rằng không có tính tổng quát bị mất có thể được rút ra, nhưng cực kỳ dài. Họ đã bỏ qua.
Tôi thừa nhận rằng thiếu sót như vậy có thể để lại các câu lệnh WLOG trong câu hỏi. Với sự hoang tưởng của các lập trình viên về các lỗi, vui lòng xác minh các câu lệnh WLOG nếu bạn muốn.
Ngăn xếp thứ ba cũng không liên quan. Vấn đề là có một tập hợp các ngăn xếp giới hạn và một tập hợp các ngăn xếp không giới hạn. Tối thiểu cần thiết cho một ví dụ là 2 ngăn xếp. Số lượng ngăn xếp tất nhiên phải là hữu hạn.
Cuối cùng, nếu tôi đúng rằng không có bằng chứng, thì sẽ có một bằng chứng quy nạp dễ dàng hơn. Có lẽ dựa trên những gì xảy ra sau mỗi hàng đợi (theo dõi xem nó ảnh hưởng như thế nào đến trường hợp xấu nhất của dequeue với tập hợp tất cả các yếu tố trong hàng đợi).