Это может быть основной вопрос, но я читал и пытался понять статьи по таким темам, как вычисление равновесия по Нэшу и тестирование линейного вырождения, и не был уверен в том, как действительные числа указываются в качестве входных данных. Например, когда утверждается, что LDT имеет определенные полиномиальные нижние границы, как определяются действительные числа, когда они рассматриваются как входные данные?
27
Ответы:
Я не согласен с вашим принятым ответом Каве. Для линейного программирования и равновесий по Нэшу плавающая точка может быть приемлемой. Но числа с плавающей точкой и вычислительная геометрия очень плохо сочетаются: ошибка округления делает недействительными комбинаторные предположения алгоритмов, что часто приводит к их краху. Более конкретно, многие алгоритмы вычислительной геометрии зависят от примитивных тестов, которые проверяют, является ли данное значение положительным, отрицательным или нулевым. Если это значение очень близко к нулю и округление с плавающей точкой приводит к тому, что оно имеет неправильный знак, могут произойти плохие вещи.
Вместо этого часто предполагается, что входные данные имеют целочисленные координаты, а промежуточные результаты часто представлены точно, либо в виде рациональных чисел с достаточно высокой точностью, чтобы избежать переполнения, либо в виде алгебраических чисел. Аппроксимации с плавающей запятой к этим числам могут использоваться для ускорения вычислений, но только в тех случаях, когда можно гарантировать, что числа достаточно далеко от нуля, что тесты знаков дадут правильные ответы.
В большинстве теоретических работ по вычислительной геометрии эта проблема обходит стороной, предполагая, что входные данные являются точными действительными числами и что примитивы являются точными проверками знаков корней полиномов низкой степени во входных значениях. Но если вы реализуете геометрические алгоритмы, то все это становится очень важным.
источник
Вы также можете взглянуть на выступление Андрея Бауэра « Роль области интервалов в современной точной реальной арифметике» , в котором рассматриваются некоторые из различных подходов к определению вычислений над действительными числами как в теории, так и на практике.
источник
Это не прямой ответ на ваш вопрос, а скорее ответ Рафаэлю . Недавно была проведена большая работа по определению вычислений действительных чисел с использованием коиндукции. Вот несколько статей на эту тему.
Коиндукция для точного вычисления действительных чисел , Ульрих Бергер и Ти Хоу: ТЕОРИЯ ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ, том 43, номера 3-4, 394-409, DOI: 10.1007 / s00224-007-9017-6
Коиндуктивное формальное рассуждение в точной действительной арифметике , Милад Никки, Логические методы в информатике, 4 (3: 6): 1–40, 2008.
Исчисление в коиндуктивной форме , Душко Павлович и Мартин Эскардо, LICS 1998.
Они вряд ли охватывают весь спектр вычислений реальных чисел, но в настоящее время достигнут прогресс в устранении различных проблем.
источник
Вычислительная сложность вычислений над действительными числами рассматривается Блумом, Кукером, Шубом и Смейлом . Вот частичное описание книги:
Вы можете найти обзор этой книги в ACM SIGACT News .
источник
Отредактировано / исправлено на основе комментариев
Когда авторы говорят о вводе действительных чисел в линейном программировании, вычислении равновесия по Нэшу, ... в большинстве работ (работах, которые не касаются темы вычисления / сложности над действительными числами), они на самом деле не означают действительные числа. Это рациональные числа и числа, которые возникают из-за их манипуляций (алгебраические числа). Таким образом, вы можете думать о них как о представленных конечных строках.
С другой стороны, если статья посвящена вычислимости и сложности в анализе , то они не используют обычную модель вычислений, и существуют различные несовместимые модели вычислений / сложности над действительными числами.
Если в статье не указана модель вычисления по действительным числам, можно смело предположить, что это первый случай, то есть это просто рациональные числа.
Вычислительная геометрия отличается. В большинстве работ в CG, если авторы не указывают, что это за модель, в отношении которой обсуждается правильность и сложность алгоритма, можно предположить, что это модель BSS (она же настоящая RAM).
Модель не является реалистичной и, следовательно, реализация не является прямой. (Это одна из причин того, что некоторые люди в CCA предпочитают теоретические модели Ко-Фридмана / TTE / Domain , но проблема этих моделей заключается в том, что они не так быстры, как вычисления с плавающей точкой на практике.) Правильность и сложность алгоритм в модели BSS не обязательно переходит на правильность реализованного алгоритма.
Книга Вейраха содержит сравнение между различными моделями (раздел 9.8). Это только три страницы и стоит читать.
(Существует также третий способ, который может быть более подходящим для CG, вы можете взглянуть на этот документ:
где EGC - точное геометрическое вычисление .)
источник
Их нет и не может, в общем. Мы можем обрабатывать только счетное количество входов (и выходов и функций) с нашими моделями вычислений. В частности, любой вход должен быть конечным, но не все действительные числа имеют конечные представления.
Я мог бы предположить, что какой-то оракул выдаст следующую цифру определенного действительного числа по запросу (например, поток). В противном случае вам придется жить с (сколь угодно точными) приближениями.
источник