Esta puede ser una pregunta básica, pero he estado leyendo y tratando de entender documentos sobre temas como el cálculo de equilibrio de Nash y las pruebas de degeneración lineal y no he estado seguro de cómo se especifican los números reales como entrada. Por ejemplo, cuando se afirma que LDT tiene ciertos límites inferiores polinómicos, ¿cómo se especifican los números reales cuando se tratan como entrada?
27
Respuestas:
No estoy de acuerdo con tu respuesta aceptada por Kaveh. Para la programación lineal y los equilibrios de Nash, el punto flotante puede ser aceptable. Pero los números de coma flotante y la geometría computacional se mezclan muy mal: el error de redondeo invalida los supuestos combinatorios de los algoritmos, lo que con frecuencia hace que se bloqueen. Más específicamente, muchos algoritmos de geometría computacional dependen de pruebas primitivas que verifican si un valor dado es positivo, negativo o cero. Si ese valor está muy cerca de cero y el redondeo de punto flotante hace que tenga el signo incorrecto, pueden suceder cosas malas.
En cambio, a menudo se supone que las entradas tienen coordenadas enteras, y los resultados intermedios a menudo se representan exactamente, ya sea como números racionales con precisión suficientemente alta para evitar el desbordamiento o como números algebraicos. Las aproximaciones de punto flotante a estos números se pueden usar para acelerar los cálculos, pero solo en situaciones en las que se puede garantizar que los números estén lo suficientemente lejos de cero como para que las pruebas de signos den las respuestas correctas.
En la mayoría de los documentos de algoritmos teóricos en geometría computacional, este problema se evita asumiendo que las entradas son números reales exactos y que las primitivas son pruebas exactas de los signos de raíces de polinomios de bajo grado en los valores de entrada. Pero si está implementando algoritmos geométricos, todo esto se vuelve muy importante.
fuente
También puede echar un vistazo a la charla de Andrej Bauer sobre El papel del dominio de intervalo en la aritmética real exacta exacta moderna , que examina algunos de los diferentes enfoques para especificar el cálculo sobre los números reales tanto en teoría como en práctica.
fuente
Esta no es una respuesta directa a su pregunta, sino más bien una respuesta a Rafael . Ha habido bastante trabajo recientemente especificando cálculos de números reales usando coinducción. Aquí hay algunos artículos sobre el tema.
Coinducción para el cálculo exacto de números reales , Ulrich Berger y Tie Hou: TEORÍA DE LOS SISTEMAS DE COMPUTACIÓN Volumen 43, Números 3-4, 394-409, DOI: 10.1007 / s00224-007-9017-6
Razonamiento formal coinductivo en aritmética real exacta , Milad Niqui, Logical Methods in Computer Science, 4 (3: 6): 1-40, 2008.
Cálculo en forma coinductiva por Dusko Pavlovic y Martin Escardo, LICS 1998.
Apenas cubren el espectro completo del cómputo de números reales, pero se está avanzando para eliminar varios problemas.
fuente
Blum, Cucker, Shub y Smale consideran la complejidad computacional de los cálculos sobre números reales . Aquí hay una descripción parcial del libro:
Puede encontrar una reseña de este libro en ACM SIGACT News .
fuente
Editado / corregido en base a los comentarios
Cuando los autores hablan sobre entradas de números reales en la programación lineal, cálculo de equilibrio de Nash, ... en la mayoría de los artículos (documentos que no tratan el tema de la computación / complejidad sobre los números reales), en realidad no significan números reales. Son números racionales y números que surgen de ellos debido a sus manipulaciones (números algebraicos). Entonces puede pensar en ellos como representados por cadenas finitas.
Por otro lado, si el documento trata sobre la computabilidad y la complejidad en el análisis , entonces no están utilizando el modelo habitual de computación, y existen varios modelos incompatibles de computación / complejidad sobre números reales.
Si el documento no especifica un modelo de cálculo sobre números reales, puede asumir con seguridad que es el primer caso, es decir, son solo números racionales.
La geometría computacional es diferente. En la mayoría de los trabajos en CG, si los autores no especifican cuál es el modelo que se está discutiendo con respecto a la corrección y complejidad de un algoritmo, se puede suponer que es el modelo BSS (también conocido como RAM real).
El modelo no es realista y, por lo tanto, la implementación no es sencilla. (Esta es una de las razones por las que algunas personas en CCA prefieren los modelos teóricos Ko-Friedman / TTE / Domain , pero el problema con estos modelos es que en la práctica no son tan rápidos como el cálculo de punto flotante). La corrección y complejidad de El algoritmo en el modelo BSS no se transfiere necesariamente a la corrección del algoritmo implementado.
El libro de Weihrauch contiene una comparación entre diferentes modelos (Sección 9.8). Son solo tres páginas y vale la pena leerlas.
(También hay una tercera forma, que puede ser más adecuada para CG, es posible que desee echar un vistazo a este documento:
donde EGC es computación geométrica exacta ).
fuente
No son y no pueden, en general. Solo podemos tratar un número contable de entradas (y salidas y funciones) con nuestros modelos de cálculo. En particular, cualquier entrada debe ser finita, pero no todos los números reales tienen representaciones finitas.
Supongo que podría suponer algún tipo de oráculo que arroje el siguiente dígito de un cierto número real a pedido (algo así como una secuencia). De lo contrario, tendrá que vivir con aproximaciones (arbitrariamente precisas).
fuente