C'est peut-être une question fondamentale, mais j'ai lu et essayé de comprendre des articles sur des sujets tels que le calcul de l'équilibre de Nash et les tests de dégénérescence linéaire et je ne savais pas comment les nombres réels sont spécifiés en entrée. Par exemple, quand il est indiqué que LDT a certaines bornes inférieures polynomiales, comment les nombres réels sont-ils spécifiés lorsqu'ils sont traités en entrée?
cc.complexity-theory
computability
na.numerical-analysis
computing-over-reals
computable-analysis
Philip White
la source
la source
Réponses:
Je ne suis pas d'accord avec votre réponse acceptée par Kaveh. Pour la programmation linéaire et les équilibres de Nash, la virgule flottante peut être acceptable. Mais les nombres à virgule flottante et la géométrie de calcul se mélangent très mal: l'erreur d'arrondi invalide les hypothèses combinatoires des algorithmes, les faisant fréquemment planter. Plus précisément, de nombreux algorithmes de géométrie de calcul dépendent de tests primitifs qui vérifient si une valeur donnée est positive, négative ou nulle. Si cette valeur est très proche de zéro et que l'arrondi en virgule flottante lui donne le mauvais signe, de mauvaises choses peuvent se produire.
Au lieu de cela, les entrées sont souvent supposées avoir des coordonnées entières, et les résultats intermédiaires sont souvent représentés exactement, soit sous forme de nombres rationnels avec une précision suffisamment élevée pour éviter le débordement, soit sous forme de nombres algébriques. Des approximations en virgule flottante de ces nombres peuvent être utilisées pour accélérer les calculs, mais uniquement dans des situations où les nombres peuvent être garantis suffisamment éloignés de zéro pour que les tests de signe donnent les bonnes réponses.
Dans la plupart des articles sur les algorithmes théoriques en géométrie computationnelle, ce problème est contourné en supposant que les entrées sont des nombres réels exacts et que les primitives sont des tests exacts des signes de racines de polynômes de faible degré dans les valeurs d'entrée. Mais si vous implémentez des algorithmes géométriques, tout cela devient très important.
la source
Vous pouvez également consulter l'exposé d'Andrej Bauer sur Le rôle du domaine d'intervalle dans l'arithmétique réelle moderne , qui examine certaines des différentes approches pour spécifier le calcul sur les nombres réels à la fois en théorie et en pratique.
la source
Ce n'est pas une réponse directe à votre question, plutôt une réponse à Raphaël . Il y a eu pas mal de travaux récemment spécifiant des calculs de nombres réels utilisant la coinduction. Voici quelques articles sur le sujet.
Coinduction pour le calcul du nombre réel exact , Ulrich Berger et Tie Hou: THÉORIE DES SYSTÈMES INFORMATIQUES Volume 43, numéros 3-4, 394-409, DOI: 10.1007 / s00224-007-9017-6
Coinductive Formal Reasoning in Exact Real Arithmetic , Milad Niqui, Logical Methods in Computer Science, 4 (3: 6): 1–40, 2008.
Calcul sous forme coinductive par Dusko Pavlovic et Martin Escardo, LICS 1998.
Ils couvrent à peine le spectre complet du calcul des nombres réels, mais des progrès sont en cours pour éliminer divers problèmes.
la source
La complexité de calcul des calculs sur des nombres réels est considérée par Blum, Cucker, Shub et Smale . Voici une description partielle du livre:
Vous pouvez trouver une critique de ce livre sur ACM SIGACT News .
la source
Modifié / corrigé en fonction des commentaires
Lorsque les auteurs parlent d'entrées de nombres réels dans la programmation linéaire, de calcul d'équilibre de Nash, ... dans la plupart des articles (articles qui ne traitent pas du calcul / de la complexité par rapport aux nombres réels), ils ne signifient pas vraiment des nombres réels. Ce sont des nombres rationnels et des nombres qui en découlent en raison de leurs manipulations (nombres algébriques). Vous pouvez donc les considérer comme représentés par des chaînes finies.
D'un autre côté, si l'article porte sur la calculabilité et la complexité de l'analyse , ils n'utilisent pas le modèle habituel de calcul, et il existe différents modèles incompatibles de calcul / complexité sur des nombres réels.
Si l'article ne spécifie pas de modèle de calcul sur des nombres réels, vous pouvez supposer en toute sécurité qu'il s'agit du premier cas, c'est-à-dire qu'il ne s'agit que de nombres rationnels.
La géométrie informatique est différente. Dans la plupart des articles de CG, si les auteurs ne précisent pas quel est le modèle qui, en ce qui le concerne, l'exactitude et la complexité d'un algorithme sont discutées, il peut être supposé être le modèle BSS (aka real-RAM).
Le modèle n'est pas réaliste et la mise en œuvre n'est donc pas simple. (C'est l'une des raisons pour lesquelles certaines personnes au CCA préfèrent les modèles théoriques Ko-Friedman / TTE / Domain , mais le problème avec ces modèles est qu'ils ne sont pas aussi rapides que le calcul à virgule flottante dans la pratique.) La justesse et la complexité de l'algorithme dans le modèle BSS ne se transfère pas nécessairement à l'exactitude de l'algorithme implémenté.
Le livre de Weihrauch contient une comparaison entre différents modèles (section 9.8). Il ne fait que trois pages et mérite d'être lu.
(Il existe également une troisième méthode, qui peut être plus adaptée à la CG, vous pouvez consulter ce document:
où EGC est le calcul géométrique exact .)
la source
Ils ne le sont pas et ne le peuvent pas, en général. Nous ne pouvons traiter qu'un nombre dénombrable d'entrées (et de sorties et de fonctions) avec nos modèles de calcul. En particulier, toute entrée doit être finie mais tous les nombres réels n'ont pas de représentations finies.
Vous pourriez, je suppose, supposer une sorte d'oracle qui donne le prochain chiffre d'un certain nombre réel sur demande (qch comme un flux). Sinon, vous devrez vivre avec des approximations (arbitrairement précises).
la source