Позволять быть алфавитом, то есть непустым конечным множеством. Строка - это любая конечная последовательность элементов (символов) из, Например, это двоичный алфавит и это строка для этого алфавита.
Обычно, пока содержит более 1 элемента, точное количество элементов в не имеет значения: в лучшем случае мы получаем где-то другую константу. Другими словами, не имеет значения, используем ли мы двоичный алфавит, цифры, латинский алфавит или Unicode.
Есть ли примеры ситуаций, в которых важно, насколько велик алфавит?
Я заинтересован в этом потому, что случайно наткнулся на один такой пример:
Для любого алфавита мы определяем случайный оракул быть оракулом, который возвращает случайные элементы из так, что каждый элемент имеет равную вероятность быть возвращенным (таким образом, шанс для каждого элемента ).
Для некоторых алфавитов а также - возможно разных размеров - рассмотрим класс оракулов с доступом к , Мы заинтересованы в машинах оракула этого класса, которые ведут себя так же, как, Другими словами, мы хотим обратить оракула в оракула используя машину Тьюринга. Мы назовем такую машину Тьюринга программой преобразования.
Позволять а также , преобразование в оракула это просто: мы запрашиваем дважды, конвертируя результаты следующим образом: , , , , Понятно, что эта программа работает в время.
Теперь давай а также , Для этих двух языков все конверсионные программы работают в время, то есть нет программ конвертации из в которые бегут в время.
Это может быть доказано противоречием: предположим, что существует конверсионная программа от в работает в время. Это означает, что есть такой, что делает максимум запросы к ,
может сделать меньше чем запросы в определенных путях выполнения. Мы можем легко построить программу конвертации который выполняет , отслеживая, сколько раз был сделан запрос оракула. Позволять быть число оракулов. затем делает дополнительные запросы оракула, отбрасывая результаты, возвращая то, что вернулся бы.
Таким образом, есть именно пути выполнения для , Точно из этих путей выполнения приведет к возврате , Однако,не является целым числом, поэтому у нас есть противоречие. Следовательно, такой программы не существует.
В целом, если у нас есть алфавиты а также с а также тогда существует программа преобразования из в тогда и только тогда, когда все простые числа появляются в главном разложении также появляются в основной факторизации (так что показатели простых чисел при факторизации не имеют значения).
Следствием этого является то, что если у нас есть генератор случайных чисел, генерирующий двоичную строку длины мы не можем использовать этот генератор случайных чисел для генерации числа в с точно равной вероятностью.
Я придумал вышеупомянутую проблему, стоя в супермаркете, размышляя, что есть на ужин. Я задавался вопросом, могу ли я использовать броски монет, чтобы выбрать между выбором A, B и C. Как оказалось, это невозможно.