Đặt là một bảng chữ cái, tức là một tập hữu hạn không trống. Chuỗi là bất kỳ chuỗi phần tử (ký tự) hữu hạn nào từ . Ví dụ: là bảng chữ cái nhị phân và là một chuỗi cho bảng chữ cái này.
Thông thường, miễn là chứa nhiều hơn 1 phần tử, số phần tử chính xác trong không thành vấn đề: tốt nhất là chúng ta kết thúc với một hằng số khác ở đâu đó. Nói cách khác, nó không thực sự quan trọng nếu chúng ta sử dụng bảng chữ cái nhị phân, số, bảng chữ cái Latinh hoặc Unicode.
Có ví dụ về các tình huống trong đó quan trọng là bảng chữ cái lớn như thế nào?
Lý do tôi quan tâm đến điều này là vì tôi tình cờ vấp phải một ví dụ như vậy:
Đối với bất kỳ bảng chữ cái chúng tôi xác định nhà tiên tri ngẫu nhiên là một nhà tiên tri trả về các phần tử ngẫu nhiên từ , sao cho mọi phần tử đều có cơ hội được trả về như nhau (vì vậy cơ hội cho mọi phần tử là ).
Đối với một số bảng chữ cái và - có thể có các kích cỡ khác nhau - hãy xem xét loại máy tiên tri có quyền truy cập vào . Chúng tôi quan tâm đến các cỗ máy tiên tri trong lớp này hoạt động giống như . Nói cách khác, chúng tôi muốn chuyển đổi một nhà tiên tri thành một nhà tiên tri bằng máy Turing. Chúng tôi sẽ gọi một máy Turing như vậy là một chương trình chuyển đổi.
Đặt và . Chuyển đổi thành một nhà tiên tri rất dễ dàng: chúng tôi truy vấn hai lần, chuyển đổi kết quả như sau: , , , . Rõ ràng, chương trình này chạy trong thời gian .
Bây giờ hãy và Σ = { 0 , 1 , 2 } . Đối với hai ngôn ngữ này, tất cả các chương trình chuyển đổi chạy trong O ( ∞ ) thời gian, tức là không có các chương trình chuyển đổi từ O Σ 1 đến O Σ 2 chạy trong O ( 1 ) thời gian.
Điều này có thể được chứng minh bởi sự mâu thuẫn: giả sử có tồn tại một chương trình chuyển đổi từ O Σ 1 đến O Σ 2 chạy trong O ( 1 ) thời gian. Điều này có nghĩa là có một d ∈ N sao cho C thực hiện tối đa d truy vấn thành Σ 1 .
có thể thực hiện ít hơn d truy vấn trong các đường dẫn thực hiện nhất định. Chúng ta có thể dễ dàng xây dựng chương trình chuyển đổi C ′ thực thi C , theo dõi số lần truy vấn orory được thực hiện. Gọi k là số lượng truy vấn tiên tri. C ′ sau đó thực hiện d - k các truy vấn tiên tri bổ sung, loại bỏ kết quả, trả về những gì C sẽ trả về.
Bằng cách này, có chính xác đường dẫn thực hiện cho . Chính xác trong các đường dẫn thực thi này sẽ dẫn đến trả về . Tuy nhiên, không phải là số nguyên, vì vậy chúng tôi có mâu thuẫn. Do đó, không có chương trình như vậy tồn tại.
Tổng quát hơn, nếu chúng ta có bảng chữ cái và với và , thì tồn tại một chương trình chuyển đổi từ sang nếu và chỉ khi tất cả các số nguyên tố xuất hiện trong hệ số nguyên tố của cũng xuất hiện trong hệ số nguyên tố của (vì vậy số mũ của các số nguyên tố trong hệ số không quan trọng).
Hậu quả của điều này là nếu chúng ta có một trình tạo số ngẫu nhiên tạo ra một chuỗi nhị phân có độ dài , chúng ta không thể sử dụng trình tạo số ngẫu nhiên đó để tạo một số trong với xác suất chính xác bằng nhau.
Tôi nghĩ ra vấn đề trên khi đứng trong siêu thị, suy nghĩ xem nên ăn gì cho bữa tối. Tôi tự hỏi liệu tôi có thể sử dụng tung đồng xu để quyết định giữa lựa chọn A, B và C. Hóa ra, điều đó là không thể.