Чи можна перевірити, чи є обчислюване число раціональним чи цілим?


18

Чи можливо алгоритмічно перевірити, чи є обчислюване число раціональним чи цілим? Іншими словами, чи можливо бібліотеці, яка реалізує обчислювані числа, надавати функції isIntegerабо isRational?

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

Редагувати: Обчислюване число x задається функцією fx(ϵ) яка може повернути раціональне наближення x з точністю ϵ : |xfx(ϵ)|ϵ , для будь-якого ϵ>0 . З огляду на таку функцію, чи можна перевірити, чи xQ або xZ ?

computability  computing-over-reals  lambda-calculus  graph-theory  co.combinatorics  cc.complexity-theory  reference-request  graph-theory  proofs  np-complete  cc.complexity-theory  machine-learning  boolean-functions  combinatory-logic  boolean-formulas  reference-request  approximation-algorithms  optimization  cc.complexity-theory  co.combinatorics  permutations  cc.complexity-theory  cc.complexity-theory  ai.artificial-intel  p-vs-np  relativization  co.combinatorics  permutations  ds.algorithms  algebra  automata-theory  dfa  lo.logic  temporal-logic  linear-temporal-logic  circuit-complexity  lower-bounds  permanent  arithmetic-circuits  determinant  dc.parallel-comp  asymptotics  ds.algorithms  graph-theory  planar-graphs  physics  max-flow  max-flow-min-cut  fl.formal-languages  automata-theory  finite-model-theory  dfa  language-design  soft-question  machine-learning  linear-algebra  db.databases  arithmetic-circuits  ds.algorithms  machine-learning  ds.data-structures  tree  soft-question  security  project-topic  approximation-algorithms  linear-programming  primal-dual  reference-request  graph-theory  graph-algorithms  cr.crypto-security  quantum-computing  gr.group-theory  graph-theory  time-complexity  lower-bounds  matrices  sorting  asymptotics  approximation-algorithms  linear-algebra  matrices  max-cut  graph-theory  graph-algorithms  time-complexity  circuit-complexity  regular-language  graph-algorithms  approximation-algorithms  set-cover  clique  graph-theory  graph-algorithms  approximation-algorithms  clustering  partition-problem  time-complexity  turing-machines  term-rewriting-systems  cc.complexity-theory  time-complexity  nondeterminism 

3
Як дається обчислюване число?
Цуйосі Іто

10
Як вказано номер, звичайно, актуально. Як приклад нерозумний, якщо вхід містить прапор, чи число є цілим чи ні, рішення про те, чи є вхід цілим чи ні, є тривіальним.
Цуйосі Іто


3
(1) "Звідки ти знаєш, що це ціле число?" Чому я повинен турбуватися? Ви нічого не сказали про вимоги щодо операцій. (2) "Якщо ви бачите дві відповіді поки що, вони нічого не згадують про реалізацію". Я не знаю, що ви маєте на увазі під "реалізацією" тут, або чому це речення має відношення до моїх коментарів.
Цуйосі Іто

16
Я сподіваюсь, що моя відповідь породжує цю дискусію. Цуйосі, ви помиляєтесь, актуально, які операції обчислюються. Ми не реалізуємо реальні числа у вакуумі, а для того, щоб ними маніпулювати . За вашими словами, ми могли просто використовувати тип блоку, щоб реалізувати все. Так, ми могли б, але тоді деякі операції не були б обчислювані, і це саме той критерій, за яким ми оцінюємо уявлення.
Андрій Бауер

Відповіді:


32

Легко заплутатися в тому, що означає "представляти" чи "реалізовувати" реальне число. Насправді ми спостерігаємо дискусію в коментарях, де представництво є спірним. Тож дозвольте мені вирішити це спочатку.

Як ми можемо знати, що реалізація правильна?

Теорія, яка пояснює, як представити речі в комп'ютері, - це реалізація . Основна ідея полягає в тому, що, задаючи множину , ми вибираємо тип даних τ і для кожного x X набір значень типу τ, які реалізують його. Ми пишемо V х X , якщо v є значенням , яке реалізує й . Наприклад (я буду використовувати Haskell без поважних причин), розумною реалізацією N може бути тип даних, де v k N, коли vXτxXτvxXvxNIntegervкNvоцінює до числа (таким чином, зокрема , не представляє натурального числа, а також не розбіжну програму). Але якийсь жартівник міг би пройти і запропонувати нам використовувати для подання натуральних чисел з T r u e42 N і F a l s en N для n 42 . Чому це неправильно? Нам потрібен критерій .к¯-42BoolTrue42NFalsenNn42

У випадку "джокер-номерів" легко помітити, що доповнення неможливо здійснити. Припустимо, я кажу вам, що я маю два числа, обидва представлені . Чи можете ви дати реалізатор на їх суму? Ну, це залежить від того, чи буде сума 42, але ви не можете сказати. Оскільки додавання є "важливою частиною того, що є природними числами", це неприпустимо. Іншими словами, реалізація стосується не множин, а структур , тобто ми повинні представляти множини таким чином, щоб можна було також реалізувати відповідну структуру. Дозвольте наголосити на цьому:False

Ми реалізуємо структури, а не голі набори. Тому ми повинні мати можливість реалізувати всю структуру разом з операціями та всіма аксіомами, щоб реалізація була правильною.

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

Приклад: подання натуральних чисел

Для натуральних чисел відповідна структура описується аксіомами Пеано, а найважливішою аксіомою, яку потрібно реалізувати, є індукція (але також , наступник, + і × ). Ми можемо обчислити, використовуючи зрозумілість, що робить реалізація індукції. Виявляється, це карта (де ще невідомий тип даних, який представляє натуральні числа)0+×nat

induction : 'a -> (nat -> 'a -> 'a) -> 'nat -> 'a

задовольняючи induction x f zero = xі induction x f (succ n) = f n (induction x f n). Все це виходить з реалізації. У нас є критерій: реалізація натуральних чисел є правильною, коли вона дозволяє реалізувати аксіоми Пеано. Аналогічний результат буде отриманий , якщо ми використовували характеристику чисел в якості вихідної алгебри для функтора .X1+X

Правильне виконання реальних чисел

Звернемо увагу на реальні цифри та питання, що знаходиться під рукою. Перше запитання - "яка відповідна структура дійсних чисел?" Відповідь: Архімед Коші заповнив упорядковане поле . Це усталене значення "реальних чисел". Ви не можете його змінити, це було зафіксовано іншими для вас (у нашому випадку альтернативні випробування Дедекінда виявляються ізоморфними реалій Коші, які ми тут розглядаємо.) Ви не можете забрати будь-яку його частину, вам заборонено говорити "Мені не важливо впроваджувати доповнення" або "Мене не хвилює замовлення". Якщо ви це зробите, ви повинні називати це не "справжніми числами", а чимось на кшталт "реальні числа, де ми забуваємо лінійний порядок".

Я не збираюся вникати в усі деталі, але дозвольте мені просто пояснити, як різні частини структури дають різні операції над реалізацією:

  • архимедова аксіома про обчислення раціональних наближень дійсних чисел
  • структура поля дає звичайні арифметичні операції
  • лінійний порядок дає нам полуразрешімую процедуру для тестування x<y
  • повнота Коші дає нам функцію , lim : (nat -> real) -> realяка приймає (подання) швидку послідовність Коші і повертає його межа. (Послідовність швидка, якщо | x n - x m |(xn)n для всіх m , n .)|хн-хм|2хв(н,м)м,н

Те, що ми не отримуємо, є тестовою функцією на рівність. Там немає нічого аксіом для дійсних чисел , який запитує , що вирішується. (Навпаки, аксіоми Пеано означають, що натуральні числа можна вирішити, і ви можете довести це, використовуючи лише як цікаву вправу).=eq : nat -> nat -> Boolinduction

Справа в тому, що звичайне десяткове подання дій, якими користується людство, є поганим, оскільки з ним ми навіть не можемо реалізувати додавання. Невдача плаваюча точка з нескінченною мантісою (вправа: чому?). Однак, що працює, - це підпис з цифрами, тобто такий, в якому ми допускаємо як негативні, так і позитивні цифри. Або ми могли б використовувати послідовності раціоналів, які задовольняють швидкий тест Коші, як зазначено вище.

Представлення Цуйосі також реалізує щось, але не R

Розглянемо наступне подання дій: справжній представлений парою ( q , b ), де ( q n ) n - швидка послідовність Коші, що переходить у x, а b - булева, що вказує, чи x . Дійсно, згідно інтерпретації реалізації, об'єднання реалізується прапором, який вказує, в якій частині союзу ми перебуваємо. До речі, Z( Rх(q,б)(qн)нхбх є цілим числом. Щоб це було зображення дій, нам довелося б реалізувати додавання, але, як виявляється, ми не можемо обчислити булеві прапори. Тож це не представлення реал. Але це все ще являє собою щось, а саме підмножину реалій Z(RZ) єНЕдорівнювати R , якщо ви не вірите в виключеному третьому, що не може бути реалізований і тому є неактуальним для цієї дискусії. Наскомп'ютери змушуютьробити речі інтуїтивно.Z(RZ)R

Ми не можемо перевірити, чи дійсне є цілим числом

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

Теорема: Тестування того, чи дійсне є цілим числом, не вирішується.

Доказ. Припустимо, ми могли б перевірити, чи дійсне є цілим числом (звичайно, реальність реалізується за допомогою швидкої послідовності Коші). Ідея, яка дозволить вам довести набагато більш загальну теорему, якщо ви хочете, - побудувати швидку послідовність Коші нецілих чисел, яка сходиться на ціле число. Це легко, просто візьміть x n = 2 - n . Далі розв’яжіть задачу зупинки наступним чином. Давши машину Тюрінга T , визначте нову послідовність ( y n ) n через y n = { x n, якщо  T(xn)nxn=2nT(yn)n Тобто нова послідовність виглядає як послідовність(xn)n дотих пір, покипрацюєT, але потім вона "застрягає" наxm,якщоTзупиняється на кроціm. Дуже важливо, що нова послідовність - це також швидка послідовність Коші (і ми можемо довести це, не знаючи, чиT

yn={xnif T has not stopped within n stepsxmif T stopped in step m and mn
(xn)nTxmTmT зупиняється ). Тому ми можемо обчислити його межу z=limnyn, тому що наше представлення реалій є правильним. Перевірте, чи є цілим числом. Якщо це так, то воно повинно бути 0, і це відбувається лише в тому випадку, якщо T працює вічно. В іншому випадку z не є цілим числом, тому T, мабуть, зупинився. QED.z0TzT

Вправа: адаптуйте наведені докази, щоб показати, що ми не можемо перевірити на раціональні числа. Потім адаптуйте його, щоб показати, що ми не можемо перевірити на що-небудь нетривіальне (це трохи складніше).

Іноді люди плутаються у всьому цьому тестовому бізнесі. Вони вважають, що ми довели, що ніколи не можемо перевірити, чи дійсне значення є цілим числом. Але, безумовно, 42 справжнє, і ми можемо сказати, чи є цілим числом. Насправді, будь-яке конкретне дійсне ми придумаємо, , 88 ln 89 , e π sin1188ln89 та ін., Ми можемо прекрасно сказати, чи є цілими числами. Точномиможемо сказати, оскільки унасє додаткова інформація: ці результати не даються нам як послідовності, а як символічні вирази, з яких ми можемо обчислити біт Цюсі. Як тільки єдина інформація, яку ми маємо про реальну, - це послідовність раціональних наближень, що сходяться до неї (а яніeπ163 маю на увазі символічний вираз, що описує послідовність, а чорний ящик, який виводить -й член на вхід n ), то ми буде настільки ж безпорадним, як машини.nn

Мораль розповіді

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


16
Якби мої відповіді були дружинами, я могла відповісти лише один раз. Або принаймні мені доведеться видалити попередню відповідь, перш ніж я напишу наступну.
Андрій Бауер

5
@Max: перші подібні теореми дали Крейзель, Лакомб і Шенфілд (подивіться теорему KLS). Незалежно Тстеїтін дав теорему, яка узагальнила KLS і явно мала форму "кожна обчислювана карта обчислено неперервна".
Андрій Бауер

6
Мені потрібно написати підручник - (Google google google). Гаразд, добре, у вас є власність. Дій!
Jeffε

10
@Tsuyoshi: У питанні було використано встановлену фразу "реальне число" без кваліфікації. Структура дійсних чисел є стандартною. Ви можете розглянути інші структури, але ви не вільні неправильно трактувати стандартну термінологію.
Андрій Бауер

21
Технічно кажучи, ви праві, слово "справжнє" не вживалося. Але ви помиляєтесь щодо визначення дійсних чисел. Або я б сказав так: погана математика думати, що реалі - це певна множина, яка приходить першою, лише за нею має бути якась структура. Так само, як ми визначаємо групи, кільця, топологічні простори тощо за їх структурою, так і ми повинні визначати спеціальні об'єкти з точки зору їх універсальних властивостей (натуральні числа - це початкове семірування, цілі числа початкового кільця, раціональні вихідні поля, числа то .....).
Андрій Бауер

10

Я схильний вважати, що це неможливо:

Нехай - обчислюване ірраціональне число. Розглянемо TM M . Ви можете побудувати функцію, яка виконує M на ϵ , і паралельно обчислює х із зростанням точності. Якщо M зупиняється, він припиняє обчислювати х , інакше він продовжується.xMMϵxMx

Вирішення, чи ця функція обчислює раціональне число, еквівалентно задачі зупинки.


Я не розумію вашої відповіді, чи не могли б ви докладніше розробити детальніше? Я не розумію, як ви пов'язуєте це з проблемою зупинки, і що ще важливіше, я думаю, що немає причини, щоб коли-небудь зупинявся (навіть якщо x - ціле число). Мх
dbarbosa

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

2
Дійсно, моя відповідь стосується уявлень, розміщених у запитанні, будь вони практичними чи ні. @dbarbosa - Я поясню: давши TM , слідкуйте за конструкцією у відповіді. Тоді, припустимо, протиріч, що ви можете вирішити, представляє машина, що виводиться, раціональною чи ні. Якщо це раціонально, це означає, що в якийсь момент М зупинився і ми перестаємо обчислювати число. З іншого боку, якщо це нераціонально, то M не зупиняється. Таким чином, ми знаємо, чи зупиняється М , вирішуючи задачу зупинки, яка, як відомо, не можна визначити. MMMM
Шоул

10

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

Обчислювані функції безперервні. IsRational та IsInteger не є безперервними, а тому не піддаються обчисленню.

IsInteger є напіврозрахунковим : існує процедура, яка в підсумку виведе "false", якщо вхід не є цілим числом, але запуститься назавжди, якщо вхід є цілим числом. Ця процедура просто розглядає кожне наближення і перевіряє, чи є ціле число в межах помилки. Ця функція є безперервною, коли ми використовуємо топологію Сірпіньського на {true, false} (тобто {false} - це відкритий набір, але {true} - ні).


Дякую за відповідь. Я не розумію неперервного => не обчислюваного, я здогадуюсь, що ви використовували (мабуть, широко відому) теорему, про яку я не знаю або про яку не пам’ятаю. Чи можете ви надати більш детальну інформацію про цей крок?
dbarbosa

1
"computable => kontinuation", здається, є народною теоремою - я не можу знайти оригінальне цитування. Теорія обчислення нескінченних об'єктів та зв'язків з топологією досить добре описані (ІМО) у цих слайдах курсу Браттка ( math.uni.wroc.pl/~pkowa/slides/brattka.pdf ). У пропозиції 2 на слайдах зазначено, що всі обчислювані функції послідовностей натуралів є неперервними; у поєднанні з теоремою 12 отримують результат для функцій інших типів.
Макс

6

Не можна визначити, чи дане обчислюване число дорівнює нулю .

(Отже, ваш оракул раціонального наближення повертає 0 для кожного ε, який ви спробували? Можливо, ви просто не дали йому достатньо малого ε.)

Таким чином, не можна визначити, чи задане число, що обчислюється, від –½ до + ½ - ціле число.


2

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

F:R{Yes,No}

F(r)={YESrQNOo.w.

обчислюється.

rk2nr[k2n,k+12n]n .

Тоді ваша функція не є безперервною і тому не піддається обчисленню.

M0n[12n,12n]MMmM[12m,12m]MMNOYESM[12m,12m]MYESM

Доказ того, що будь-яка обчислювальна функція повинна бути безперервною, є подібним.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.