Як можна визначити, чи має


130

Нам дали наступну вправу.

Дозволяє

f(н)={10н зустрічається в десятковому поданні π0ще

Доведіть, що обчислюється.f

Як це можливо? Наскільки я знаю, ми не знаємо, що вміст містить кожну послідовність цифр (або яка), і алгоритм, безумовно, не може вирішити, що деяка послідовність не відбувається. Тому я вважаю, що не обчислюється, оскільки основна проблема є лише напіврозв'язною.πf


32
Пробачте мене за те, що я цілком неосвічений, я, очевидно, пропускаю якусь основоположну точку питання, але чи не 0 ^ n завжди 0? Оскільки 32-й десятковий знак, якщо pi дорівнює 0, чи не означає це, що f (n) завжди повертає 1?
Cory Klein

68
@CoryKlein: це формальне позначення мови ; суперскрипт означає -кратне конкатенацію, тобто . - це лише символ, а не число. n a 5 = a a a a a 0нна5=ааааа0
Рафаель

Відповіді:


133

Є лише дві можливості розглянути.

  • Для кожного натурального цілого н рядок 0н з'являється в десятковому поданні π . У цьому випадку алгоритм, який завжди повертає 1, завжди правильний.

  • Існує найбільше ціле число N таке , що 0N з'являється в десятковому поданні π . У цьому випадку наступний алгоритм (зі значенням N жорстко закодований) завжди правильний:

    Zeros-in-pi(n):
     if (n > N) then return 0 else return 1
    

Ми не маємо уявлення, яка з цих можливостей є правильною, або яке значення N є правильним у другому випадку. Тим не менш, один із цих алгоритмів гарантовано є правильним. Таким чином, існує алгоритм, який визначає, чи з'являється рядок з н нулів у π ; проблема вирішується.


Зверніть увагу на тонку різницю за допомогою наступного ескізу, запропонованого galais :

  1. Візьміть випадкову машину Тьюрінга і випадковий вхід.
  2. Або обчислення будуть продовжуватися назавжди, або зупиняться в якийсь момент, і є (постійна) обчислювальна функція, що описує кожне з цих способів поведінки.
  3. ???
  4. Прибуток!

Алекс десять Брінк пояснює:

слідкуйте за твердженням теореми Халтінга: в ній сказано, що не існує єдиної програми, яка може вирішити, чи припиняється дана програма. Ви можете легко зробити дві програми такими, що або одна обчислює, чи припиняється дана програма: перша завжди говорить "вона зупиняється", друга "не зупиняється" - одна програма завжди права, ми просто не можемо обчислити, яку з них з них є!

sepp2k додає:

У випадку прикладу Алекса жоден з алгоритмів не поверне правильний результат для всіх вхідних даних. У випадку з цим питанням одна з них буде. Ви можете стверджувати, що проблема вирішується, оскільки ви знаєте, що існує алгоритм, який створює правильний результат для всіх даних. Не має значення, чи знаєте ви, хто такий алгоритм. 10


Коментарі не для розширеного обговорення; ця розмова переміщена до чату .
Жиль

12
Що трапилося б, якби хтось довів, що вислів "Для кожного додатного цілого числа n рядок 0 ^ n з'являється у десятковому поданні π" є недоказаним? Чи все-таки ми говоримо, що ця проблема вирішується, незважаючи на те, що жодного правильного алгоритму не вдалося побудувати?
Інші

4
@ Інші Так, ми б.
JeffE

1
@JeffE Добре. Чи можливий доказ в інтуїціоністській логіці? Або тут потрібен закон виключеної середини?
Інші

@ Інші Якщо я правильно зрозумів, ідея така: Якщо ми для кожного визначаємо машину Тюрінга M N як у першій частині відповіді, то ми знаємо, що один з них обчислює цю функцію. Ми не знаємо, який із них (і якби ваше твердження було доведено, ми навіть знали, що неможливо дізнатися, який саме), але ми все ще знаємо, що існує така машина Тьюрінга , тому функція обчислюється. NМN
JiK

14

Просто розміщуємо невелику детальну відповідь на відповідь Джеффа.

Ми знаємо, що існують дві функції / випадки, які можуть обчислити функцію f (n):

  1. Функція, яка завжди повертає true (для всіх n існує n число послідовних 0)
  2. Функція, яка поверне значення true, якщо n менше цілого числа N, де N визначено як максимальну довжину послідовних 0, що існують у заданому ірраціональному номері (інакше повернеться помилковим).

Одна і єдина з цих функцій може бути правильною. Ми не знаємо, які, але точно знаємо, що відповідь існує. Обчислюваність вимагає, щоб існувала функція, яка може визначити відповідь протягом кінцевої кількості кроків.

Кількість кроків у випадку 1 тривіально пов'язана з просто поверненням 1.

NТN(н)н<NNNТN(н)н<N

Хоча вибір між двома випадками може бути неможливим (хоча один здається більш імовірним, ніж інший), ми знаємо, що саме один з них повинен бути правильним.

Як бічна примітка: наше рішення передбачає, що, хоча ми не можемо визначити, яка функція буде отримувати правильне значення, суть обчислюваності не покладається на конструктивність доказу. Чистого існування достатньо.


9
Не всі математики приймають це - наприклад, інтуїціоністи цього не роблять.
reinierpost

P¬P

5

Крок 5 наступної спроби доказування є невиправданим, а насправді неправильним - контрприклад можна знайти тут . (спасибі, Ювал; це здавалося, що це найдешевша частина ескізу). Тут я залишив відповідь, оскільки вважаю помилку повчальною.


По-перше: відповіді JeffE достатньо; f обчислюється в будь-якому випадку.


π
π
π

π
π


10
ππ

1
Ах, небезпека індуктивних стрибків: P Добрий улов, дякую.
Стівен Воріс

1
До речі, якщо висновок невірний, чи має сенс для мене його видалити або залишити та визнати через редагування, що він неправильний?
Стівен Воріс

4
πбб

2
@DavidRicherby Велика відкрита проблема, ви кажете? Так, це добре знати. Я думаю, що це досить розумна помилка, тому що свідченням того, наскільки хитра проблема полягає в тому, на чому ґрунтується питання ОП, - очевидно, я можу помилитися і в цьому, враховуючи суттєвий результат.
Стівен Воріс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.