Come vengono specificati i numeri reali nel calcolo?


27

Questa potrebbe essere una domanda di base, ma ho letto e cercato di capire documenti su argomenti come il calcolo dell'equilibrio di Nash e il test di degenerazione lineare e non sono sicuro di come i numeri reali siano specificati come input. Ad esempio, quando si afferma che LDT ha determinati limiti inferiori polinomiali, come vengono specificati i numeri reali quando vengono trattati come input?


1
Puoi trovare la discussione qui di interesse: en.wikipedia.org/wiki/Computable_number
Joseph Malkevitch

Qualcuno dovrebbe mettere insieme questi documenti in un e-book scaricabile gratuitamente.
Dilawar,

Risposte:


34

Non sono d'accordo con la tua risposta accettata da Kaveh. Per la programmazione lineare e gli equilibri di Nash, il virgola mobile può essere accettabile. Ma i numeri in virgola mobile e la geometria computazionale si mescolano molto male: l'errore di arrotondamento invalida i presupposti combinatori degli algoritmi, causandone spesso l'arresto anomalo. Più specificamente, molti algoritmi di geometria computazionale dipendono da test primitivi che controllano se un dato valore è positivo, negativo o zero. Se quel valore è molto vicino allo zero e il arrotondamento in virgola mobile provoca un segno sbagliato, possono succedere cose brutte.

Invece, si presume spesso che gli input abbiano coordinate intere e che i risultati intermedi siano spesso rappresentati esattamente, sia come numeri razionali con precisione sufficientemente elevata da evitare il trabocco sia come numeri algebrici. Le approssimazioni in virgola mobile a questi numeri possono essere utilizzate per accelerare i calcoli, ma solo in situazioni in cui è possibile garantire che i numeri siano sufficientemente lontani da zero che i test dei segni forniranno le risposte giuste.

Nella maggior parte degli articoli di algoritmi teorici nella geometria computazionale, questo problema viene eluso supponendo che gli input siano numeri reali esatti e che le primitive siano test esatti dei segni di radici di polinomi di basso grado nei valori di input. Ma se stai implementando algoritmi geometrici, tutto ciò diventa molto importante.


Mi è piaciuta la parte della risposta di Kaveh in cui mi ha suggerito che ci sono modelli alternativi di calcolo, poiché questo sembrava essere in linea con ciò che avevo letto nel documento che stavo guardando. Detto questo, non sapevo davvero la risposta ... Per il momento non ho accettato la risposta di Kaveh. Avevo davvero sospettato che i numeri algebrici potessero avere qualcosa a che fare con esso. Comunque, grazie per aver dedicato del tempo a ponderare sulla mia domanda ... Ci penserò e leggerò più avanti prima di accettare una risposta.
Philip White,

Non ho detto che sia un buon modello per CG, il mio punto era che anche quando gli autori affermano che gli input sono numeri reali, non sono numeri reali . Sono d'accordo con te sul fatto che non avrei dovuto includere CG tra gli altri. Ho letto un numero molto limitato di articoli CG, è il modello BSS che è ben consolidato nei documenti CG teorici?
Kaveh,

1
Perdonate la mia ignoranza, ma cosa significa BSS?
Philip White,

1
Il modello BSS è un modello teorico che presuppone la disponibilità di numeri reali arbitrari. Ciò che viene fatto in CG implica implementazioni effettive di un modello generalmente limitato ai numeri algebrici. Anche le implementazioni CG sono lontane dal costo unitario per operazione. Quindi non sono la stessa cosa. Vedi ad esempio il modello di numero reale LEDA, citeseerx.ist.psu.edu/viewdoc/…
David Eppstein

10
STsSs>tTt


8

Questa non è una risposta diretta alla tua domanda, più una risposta a Raffaello . Recentemente sono stati fatti alcuni lavori per specificare i calcoli dei numeri reali usando la coinduzione. Ecco alcuni articoli sull'argomento.

Difficilmente coprono l'intero spettro del calcolo dei numeri reali, ma si stanno compiendo progressi per eliminare vari problemi.


1
R

Buon punto. Non sono sicuro di quali siano i limiti dell'approccio coinduttivo. L'approccio è agli inizi.
Dave Clarke,

7

La complessità computazionale dei calcoli sui numeri reali è considerata da Blum, Cucker, Shub e Smale . Ecco una descrizione parziale del libro:

La teoria classica del calcolo ha le sue origini nel lavoro di Goedel, Turing, Church e Kleene ed è stata una struttura straordinariamente riuscita per l'informatica teorica. La tesi di questo libro, tuttavia, è che fornisce una base inadeguata per il moderno calcolo scientifico in cui la maggior parte degli algoritmi sono algoritmi di numeri reali. L'obiettivo di questo libro è quello di sviluppare una teoria formale del calcolo che integri i principali temi della teoria classica e che sia più direttamente applicabile ai problemi di matematica, analisi numerica e informatica scientifica. Lungo la strada, gli autori considerano problemi fondamentali come: il set di Mandelbrot è decidibile? Per semplici mappe quadratiche, Julia è un set di arresto? Qual è la vera complessità di Newton ' metodo s? Esiste un algoritmo per decidere il problema dello zaino in un numero ploinomiale di passaggi? Hilbert Nullstellensatz è intrattabile? Il problema di localizzare un polinomio zero reale di grado quattro è intrattabile? La programmazione lineare è tracciabile sui reali?

È possibile trovare una recensione di questo libro sulle notizie ACM SIGACT .


Questo libro sembra molto interessante, grazie.
Philip White,

Sei piu 'che benvenuto.
MS Dousti,

5
Vale la pena notare che il modello di calcolo BSS sui reali è controverso, per ragioni molto simili a quelle a cui si riferiva David Eppstein in un commento sopra. Ad esempio: l'assioma BSS che calcola se x <y compie un passo temporale, per reali arbitrari xey. Al contrario, approcci come TTE (Type Two Effectivity) definiscono macchine che prendono come approssimazioni di input i reali e producono approssimazioni calcolabili delle funzioni sui reali. Più passa il tempo, meglio possono diventare le approssimazioni di input e output. Questo approccio mi sembra più realistico.
Aaron Sterling,

@Aaron Sterling: conosci un buon riferimento per l'efficacia di tipo due?
Joshua Grochow,

3
@Joshua Grochow: mi dispiace non esserci arrivato prima. Il libro a cui Kaveh è legato è il "Nielsen and Chuang" di TTE. Tuttavia, è così pieno di notazione che sembrerebbe arcano a un lettore occasionale. Suggerirei invece le seguenti diapositive tutorial di Vasco Brattka: cca-net.de/vasco/cca/tutorial.pdf
Aaron Sterling,

7

Modificato / corretto in base ai commenti

Quando gli autori parlano di input di numeri reali nella programmazione lineare, calcolo dell'equilibrio di Nash, ... nella maggior parte degli articoli (articoli che non sono in tema di calcolo / complessità rispetto ai numeri reali) non significano davvero numeri reali. Sono numeri razionali e numeri che ne derivano a causa delle loro manipolazioni (numeri algebrici). Quindi puoi pensarli come rappresentati da stringhe finite.

D'altra parte, se il documento riguarda la computabilità e la complessità in analisi , allora non stanno usando il solito modello di calcolo e ci sono vari modelli incompatibili di calcolo / complessità rispetto ai numeri reali.

Se il documento non specifica un modello di calcolo su numeri reali, puoi tranquillamente supporre che sia il primo caso, cioè sono solo numeri razionali.

La geometria computazionale è diversa. Nella maggior parte degli articoli in CG, se gli autori non specificano quale sia il modello di cui si sta discutendo la correttezza e la complessità di un algoritmo, si può presumere che sia il modello BSS (aka real-RAM).

Il modello non è realistico e pertanto l'implementazione non è diretta. (Questo è uno dei motivi per cui alcune persone in CCA preferiscono i modelli teorici Ko-Friedman / TTE / Domain , ma il problema con questi modelli è che non sono veloci come il calcolo in virgola mobile nella pratica.) La correttezza e la complessità di l'algoritmo nel modello BSS non trasferisce necessariamente alla correttezza dell'algoritmo implementato.

Il libro di Weihrauch contiene un confronto tra diversi modelli (Sezione 9.8). Sono solo tre pagine e vale la pena leggerle.

(Esiste anche un terzo modo, che potrebbe essere più adatto per CG, potresti dare un'occhiata a questo documento:

Chee Yap, " Teoria del calcolo reale secondo l'EGC "

dove EGC è Calcolo geometrico esatto .)


Penso che l'articolo a cui mi interessa principalmente specifica un modello, dato che include la frase "Ora definiamo formalmente il nostro modello di calcolo". Il documento si chiama "Riduzione dei limiti per i problemi di soddisfazione" e sembra che ci sia una discussione sugli alberi delle decisioni lineari e sui polinomi di query. Quindi, penso che sia la risposta che stavo cercando lì ... grazie. Rileggerò il documento e vedrò se riesco a dargli un senso.
Philip White,

2
Non sono d'accordo. Questo è il modello sbagliato per la geometria computazionale. Vedi la mia risposta più dettagliata di seguito.
David Eppstein,

1
@Kaveh: penso che dovresti dire che sono numeri razionali , non numeri in virgola mobile. I numeri razionali esatti sono facili da rappresentare con stringhe finite, e in molte applicazioni (ad esempio quelle relative alla programmazione lineare) i risultati intermedi saranno anche numeri razionali se i tuoi input sono numeri razionali. (Naturalmente, come ha sottolineato David Eppstein, la comp. Geom. È una notevole eccezione, nel senso che i risultati intermedi di solito non sono razionali.)
Jukka Suomela,

@Jukka: hai ragione, sostituirò il virgola mobile con il razionale.
Kaveh,

5
No. Quando scrivo "numero reale", voglio dire "numero reale", e con questo intendo veramente numero reale, proprio dai numeri reali. Veramente. In particolare, nel documento di cui parla @Philip, devo supporre che gli algoritmi funzionino per input reali arbitrari , in modo da poter applicare i risultati di analisi non standard.
Jeffε

3

Non lo sono e non possono, in generale. Possiamo trattare solo un numero numerabile di input (e output e funzioni) con i nostri modelli di calcolo. In particolare, ogni input deve essere finito ma non tutti i numeri reali hanno rappresentazioni finite.

Potrei, immagino, ipotizzare un tipo di oracolo che fornisca la cifra successiva di un certo numero reale su richiesta (come un flusso). Altrimenti dovrai convivere con approssimazioni (arbitrariamente precise).


Se questo è vero, come può LDT gestire i numeri reali? Ho letto qualcosa sugli "alberi decisionali r-lineari", ma non ho davvero capito di cosa stessero parlando nel documento "Abbassi i limiti per i problemi di satsifabilità lineare".
Philip White,

Scommetto che non possono o non usano macchine di Turing (o concetti equivalenti). Le altre risposte che non sono così rigorose / generali come la mia dovrebbero far luce su questo.
Raffaello,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.