Perché i dati in informatica sono considerati discreti?


35

Comprendo che la "struttura" dei dati dipende totalmente dall'algebra booleana, ma:

Perché i dati sono considerati un'entità matematica discreta anziché continua?

In relazione a questo:

Quali sono gli svantaggi, o invarianti, che vengono violati nella strutturazione dei dati come entità continua in dimensioni ?r

Non sono un esperto del settore in quanto sono uno studente di matematica universitario, quindi apprezzerei molto se qualcuno me lo spiegasse come se avessi cinque anni.


12
Il calcolo reale sarebbe irragionevolmente potente
harold

1
Ripassa questo capitolo se il tempo lo consente. L'autore lo spiega in modo molto facile da imparare dai segnali analogici e binari
Muhammad Sayef,

Risposte:


44

Risposta

perché i dati erano considerati un'entità matematica discreta piuttosto che continua?

Questa non è stata una scelta; è teoricamente e praticamente impossibile rappresentare valori continui e concreti in un computer digitale, o in realtà in qualsiasi tipo di calcolo.

Nota che "discreto" non significa "intero" o qualcosa del genere. "discreto" è l'opposto di "continuo". Ciò significa che per avere un computer in grado di memorizzare cose non discrete, dovresti essere in grado di memorizzare due numeri ae bdove abs(a-b) < εper qualsiasi valore arbitrariamente piccolo di ε. Certo, puoi andare fino in fondo come vuoi (usando sempre più spazio di archiviazione), ma ogni computer (fisico) ha sempre un limite superiore. Indipendentemente da ciò che fai, non puoi mai creare un computer (fisico) che memorizzi numeri risolti in modo arbitrario.

Anche se sei in grado di rappresentare numeri con costrutti matematici (ad esempio π), questo non cambia nulla. Se memorizzi un grafico o qualunque cosa rappresenti una formula matematica, allora questo è discreto come qualsiasi altra cosa.

appendice

Il resto è solo una piccola prospettiva oltre il campo dell'informatica. Come hanno mostrato i commenti, l'argomento fisico non è indiscusso e, come puoi vedere, ho formulato il mio prossimo paragrafo in un modo che non è certo se sia vero o meno. Prendilo più come motivazione che il concetto di "continuum" non è banale. La risposta di cui sopra non dipende dal fatto che lo spazio sia discreto o meno.

Si noti che tutto ciò non è tanto un problema dei computer, ma un problema con il significato di "continuo". Ad esempio, non tutti sono nemmeno d'accordo, o concordano in passato, che l' Universo sia continuo (ad esempio, la scala di Planck implica che lo spazio-tempo è discreto? ). Per alcune cose (ad esempio, l'energia afferma di elettroni e molte altre caratteristiche in Quantum (sic) Meccanica) abbiamo anche sappiamo che l'Universo non è continuo; per altri (es. posizione ...) la giuria è ancora fuori (almeno per quanto riguarda l'interpretazione dei risultati della ricerca ...). (Nonostante il problema che anche se è continuo, non potremmo misurare con precisione arbitraria => Heisenberg ecc.).

In matematica, studiare il continuum (cioè i reali) apre molti aspetti affascinanti, come la teoria della misura, che rende assolutamente impossibile archiviare effettivamente un tipo "continuo" di numero / dati.


I commenti non sono per una discussione estesa; questa conversazione è stata spostata in chat .
DW

29

I computer rappresentano un dato come un numero finito di bit (zeri e uno) e l'insieme di tutte le stringhe di bit finiti è discreto. Puoi lavorare con, diciamo, numeri reali solo se trovi una rappresentazione limitata per loro. Ad esempio, puoi dire "questi dati corrispondono al numero ", ma non puoi memorizzare tutte le cifre di in un computer. Quindi, i programmi per computer che funzionano con numeri reali funzionano in realtà solo su un sottoinsieme discreto di .π RππR


I computer digitali lo fanno, ma non i computer analogici.
Estratto il

I commenti non sono per una discussione estesa; questa conversazione è stata spostata in chat .
DW

8

Per aggiungere a tutte queste grandi risposte, è degno di nota che Alan Turing, quando definisce le sue macchine, sostiene che la quantità di simboli deve essere finita (anche se arbitrariamente grande) poiché un computer (che significa: un essere umano) non è in grado di distinguere tutti i simboli altrimenti.

Ecco alcuni estratti del suo articolo del 1936 "Su numeri calcolabili, con un'applicazione al problema di Entscheidungs":

inserisci qui la descrizione dell'immagine

E poi nella sezione 9:

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine


1
Si prega di trascrivere le immagini in modo che possano essere indicizzate dalle ricerche.
Raffaello

7

È tutto nell'implementazione.

Se ci pensate, i computer sono davvero dispositivi continui. Ciò è facilmente dimostrato dal fatto che tutte le equazioni EM che regolano il loro funzionamento sono continue. La cosa che è discreta sono i modelli che usiamo per decidere come usare questi dispositivi informatici. Le macchine astratte che usiamo per descrivere il calcolo sono tutte discrete.

L'enorme vantaggio pratico di questo è avere l'indipendenza da molte sfide del controllo di qualità. Se i nostri modelli di computer sfruttassero la piena natura continua dei loro transistor e condensatori, allora dovremmo preoccuparci di quanto bene abbiamo costruito ogni transistor ad un livello tremendo. Possiamo vederlo nel mondo dell'audio. Nel mondo in cui vivono gli audiofili, è ragionevole spendere $ 2000 per un amplificatore che potrebbe avere 10 transistor scelti con cura e abbinati che fanno esattamente la cosa continua che vogliono. In contrasto con 1.400.000.000 di transistor in una CPU Core i7 al costo di $ 400.

Poiché i nostri modelli computazionali sono discreti, possiamo modellare tutti i segnali che vediamo in un computer come un segnale discreto più un termine di errore continuo. Possiamo quindi filtrare gli errori semplicemente osservando che non sono della forma giusta per far parte del segnale discreto.

Una parte importante di questo è la rimozione di termini temporali nei nostri modelli astratti. Molti dei nostri modelli non misurano il tempo rispetto a un processo fisico, ma a un segnale "logico" noto come orologio. Se si interrompe un orologio, il sistema smette di muoversi, ma non si rompe. Finisce solo di eliminare eventuali errori analogici che potrebbe avere e rimane in attesa del prossimo impulso discreto dell'orologio. La rimozione di termini temporali continui semplifica drasticamente il calcolo e le prove sul calcolo. Invece, i nostri concetti di tempo sono misurati discretamente, come si vede nelle categorizzazioni P e NP degli algoritmi.


7

Perché:

  • I computer digitali non possono memorizzare numeri reali arbitrari.

  • I computer analogici sono afflitti da rumore termico (se elettronico), attrito (se meccanico o idraulico), disturbi, sensibilità alle variazioni di temperatura, inevitabili imperfezioni e invecchiamento. Affrontare tali difficoltà è ciò che fanno i fisici e gli ingegneri (sperimentali). La maggior parte dell'informatica astrae semplicemente la fisica.

Ecco alcuni articoli sul calcolo reale :

ed ecco un documento sul calcolo analogico :


4

Il termine "computer" nel linguaggio moderno significa "computer digitale"; l'essenza di un computer digitale è che ha un numero finito di stati discreti. Si potrebbe discutere in modo interessante se le ragioni per cui i computer digitali hanno ottenuto il favore dei computer analogici riguardavano principalmente la praticità ingegneristica o erano principalmente dovute a una migliore base dell'informatica teorica. Ma qualunque sia la ragione, i computer digitali sono ciò con cui siamo finiti, e qualsiasi utile modello matematico di un computer digitale (e quindi i suoi dati) sarà discreto piuttosto che continuo.


2

La parola dataderiva dalla parola latina datum, che significa qualcosa che è stato dato. Nel corso del tempo la forma plurale ha cambiato utilizzo ed è ora comunemente usata sia come singolare che plurale. È stato anche associato alle informazioni in modo specifico.

Si noti che esiste una differenza tra un elemento di informazione (un dato) e la sua rappresentazione.

La teoria dell'informazione si occupa (tra l'altro) di informazioni discrete rappresentate da variabili. Queste sono entità numerabili. Ad esempio, velocità, posizione, massa e così via sono tutte quantità continue, ma discrete l'una dall'altra: non c'è trasformazione tra massa e posizione. Quando queste quantità sono rappresentate numericamente, anche i loro elementi di dati, per quanto rappresentati, sono separati gli uni dagli altri.

D'altra parte, la stragrande maggioranza dei nostri computer attuali utilizza una qualche forma di carica elettrica per rappresentare le informazioni. L'addebito è presente o non lo è; c'è corrente nel circuito o non c'è. Anche questo è discreto, ma non è necessario! È semplicemente a causa del modo in cui la nostra tecnologia si è sviluppata che utilizziamo la rappresentazione binaria. È possibile che gli sviluppi nel calcolo quantistico cambieranno questo nel prossimo futuro. Non è neppure inconcepibile che i computer analogici facciano risorgere e le nostre nozioni che i numeri debbano essere rappresentati dai binari saranno spazzate via!

Riassumendo: datasono composti da informazioni discrete, ognuna delle quali è un dato; mentre ogni dato non ha bisogno di essere rappresentato usando matematica discreta, ma attualmente è puramente per coincidenza contemporanea.


1
La teoria dell'informazione può anche gestire variabili continue.
Yuval Filmus

1
Vedi ad esempio entropia differenziale .
Yuval Filmus

2

Voglio sfidare la tua premessa fondamentale:

Perché i dati sono considerati un'entità matematica discreta anziché continua?

Non lo è.

Ad esempio, lo studio di Algorithms è un sottocampo importante di Informatica e ci sono molti algoritmi che funzionano con dati continui. Probabilmente hai familiarità con l'algoritmo di Euclide per calcolare il massimo divisore comune di due numeri naturali, ma sapevi che Euclide aveva anche una versione geometrica di quello stesso algoritmo che calcola la misura comune più lunga di due linee commensurabili? Questo è un esempio di algoritmo (e quindi oggetto di studio dell'informatica) su numeri reali, cioè dati continui, anche se Euclide non ci ha pensato in questo modo.

Esistono molti modi diversi per classificare gli algoritmi, ma un modo utilizzato è classificarli in base alla loro "continuità":

  • Algoritmi digitali (algoritmi di eventi discreti su dati digitali):
    • la variante numerica dell'algoritmo di Euclide
    • divisione a mano lunga, moltiplicazione, ecc. come insegnato a scuola
    • qualsiasi programma per computer, programma di calcolo λ, Turing Machine
  • Dati non digitali, algoritmi di eventi discreti (algoritmi su dati continui, che tuttavia hanno ancora una nozione di "step", ovvero dati continui ma tempo discreto):
    • la variante geometrica dell'algoritmo di Euclide
    • algoritmi su numeri reali (ad es. procedura di eliminazione di Gauss)
    • algoritmi su funzioni continue (ad es. l'algoritmo bisection)
  • Algoritmi analogici (tempo continuo, dati continui):
    • circuiti elettrici
    • giroscopi meccanici
  • Algoritmi ibridi (qualsiasi combinazione di quanto sopra)
    • robot

Altre risposte hanno già menzionato il calcolo reale nella teoria della calcolabilità, un altro sottocampo importante dell'informatica.

Quali sono gli svantaggi, o invarianti, che vengono violati nella strutturazione dei dati come entità continua in dimensioni ?r

L'unico vero svantaggio (molto inteso) è che tali dati non possono essere rappresentati con i comuni computer digitali. Puoi pensare agli algoritmi su dati continui, ma non puoi eseguirli sui computer standard che usiamo abitualmente per eseguire algoritmi.

Questo è il motivo principale per cui i dati continui non sono "visibili" come i dati digitali.

Tuttavia, un'implementazione di un algoritmo analogico non deve in realtà essere complicata da immaginare o addirittura da costruire. Ad esempio, questa è un'implementazione di un algoritmo analogico: Bicicletta Triumph Cycledi Andrew Dressel  - Opera propria, CC BY-SA 3.0 , Link

Ora potresti dire "Aspetta, non è un computer, è una bicicletta", ma in realtà puoi usarlo come un computer analogico: calcola la moltiplicazione di un numero reale per un numero razionale fisso . Girare i giri dell'albero motore e la ruota posteriore girerà volte. Puoi usarlo per ridimensionare qualsiasi numero reale, ad es. Girare l'albero a gomiti volte e la ruota posteriore girerà volte; questo è qualcosa che non puoi fare con un computer digitale.q r q × rrqrq×rπq×π


"ci sono molti algoritmi che funzionano con dati continui" - Potremmo discutere a lungo se tali cose debbano essere chiamate "algoritmi", ma sarebbe una fiammata sulla semantica, quindi no. Il punto è che questi non sono "algoritmi" eseguiti su computer, ma su dispositivi teorici, definiti formalmente, super-Turing.
Raphael

1
Trovo la metafora della bicicletta fuorviante. Qualcosa che calcola una funzione non è un computer, che oggi assumiamo implicitamente come universale .
Raffaello

1

Per prendere una virata più astratta, qualsiasi possibile calcolo che alla fine darà un risultato, sia su un computer che nella tua testa, può gestire solo una quantità limitata di dati. Ciò significa che i dati possono essere rappresentati da una stringa di simboli. Questa stringa potrebbe essere la cifra di un numero ("42") o il testo di un programma che crea i dati ("4 * atan (1)" per ). La stringa deve essere finita o l'intera cosa non può mai essere letta per eseguire il programma.π

Ora, l'insieme di tutti i possibili dati finiti può essere messo in ordine lessicografico, il che significa che l'insieme è numerabile. Tuttavia, l'insieme di numeri reali continui non è numerabile, quindi ci sono sempre numeri nel continuum che non possono essere memorizzati da un determinato sistema di calcolo. Da ciò, possiamo concludere che la memorizzazione di un numero reale arbitrario richiede risorse infinite.


1
Penso che questo stia implorando la domanda . Considera un computer che prende il suo input da un pezzo di carta che esamina e che dà il suo output su un pezzo di carta su cui disegna. Se i dati fossero continui come suggerisce l'OP, un tale computer potrebbe essere infinitamente preciso con solo una quantità limitata di dati.
Ruakh,

@ruakh Stai parlando di qualcosa di simile a una macchina di Turing analogica, dove potrebbe, ad esempio, leggere la lunghezza esatta di una linea disegnata?
Segna H

Si, esattamente. A quanto ho capito, questo è il genere di cose che l'OP sta chiedendo.
Ruakh,

0

I dati non sono sempre considerati discreti. La programmazione scientifica spesso implica l'aritmetica in virgola mobile. Il programmatore di solito finge che le variabili coinvolte siano continue, tenendo presente il problema della stabilità numerica, che deriva dal fatto che i dati vengono archiviati con una precisione limitata.


12
Il virgola mobile è discreto ... se un programmatore finge che sia continuo, ciò significa che o i risultati non contano, o che il programmatore non ha capito cosa sta facendo.
AnoE

2
Rispetto rispettosamente.
Yuval Filmus

6
@YuvalFilmus ahimè come virgola mobile è discreto non c'è altro da dire. Ogni volta che qualcosa viene inserito in un normale computer, viene discretizzato.
Jean-Baptiste Yunès,

5
@AnoE significa che i risultati devono essere affidabili fino a una certa precisione, questo è ciò che Yuval intende con "finge". Puoi ottenere alcuni risultati utilizzabili, ma devi sfocare sulla precisione. Per grandi set ha senso. Contrasta questo con i classici problemi meccanici: sai che le tue misurazioni non sono precise. un oggetto di 3 cm non ha in realtà 3.000000000 ~ cm di Quaresima. Hai appena tagliato la precisione della tua misura in un punto ragionevole.
Mindwin

6
Non penso che la domanda riguardi come funzionano le nostre menti. Penso che riguardi come funzionano effettivamente le cose. Il motivo per cui i numeri in virgola mobile sono approssimativi è perché sono discreti. Il fatto che tu li consideri continui anche se in realtà non lo sono non aiuta a rispondere alla domanda sul perché i valori siano discreti nei computer. In una nota a margine, il tuo modo di pensare può essere pericoloso. Molti bug sono derivati ​​dal fatto che i programmatori considerano il punto mobile come continuo. Anche i numeri comuni che tendiamo a considerare precisi come 1 decimo o 1 centesimo sono approssimativi in ​​virgola mobile.
JimmyJames

-2
  • Perché un computer funzioni con i dati, i dati devono esistere nella memoria accessibile del computer
  • La memoria accessibile di un computer è limitata
  • Nella memoria accessibile di un computer possono esistere solo dati limitati
  • I valori non discreti sono infiniti

I dati in informatica sono considerati discreti.


Che cosa significano "i valori non discreti sono infiniti"? Ad esempio, è un decimale infinito non ricorrente ma può essere specificato in modo finito come . elimt(1+1/t)t
David Richerby,

La formula che hai specificato è una scorciatoia: non puoi usarla in nessun calcolo la cui vera "risposta" reale è necessaria e quindi nessun "lavoro" significativo può essere svolto dal computer. Potresti scrivere un piccolo programma di analisi del testo per accettare e sputare rappresentazioni testuali di numeri irrazionali, ma la rappresentazione numerica effettiva dei "valori" di quel numero non può essere memorizzata - più di quanto io possa scrivere "questo è l'infinito" su una distinta di carta e dire che sto tenendo tutto in mano.
Repomeister

1
Sembra che tu stia supponendo che l'unico modo per calcolare un numero reale sia produrre la sua espansione decimale. Semplicemente non è così.
David Richerby,

2
Se non hai un valore reale, stai davvero "elaborando"? Assolutamente. Qualsiasi pacchetto di algebra per computer lo fa sempre. astrattando i valori reali in quattromule scritte puoi al massimo mostrare le relazioni tra entità e non i loro valori effettivi sembra un valore reale. Se i calcoli non si risolvono mai in un valore reale, è solo un'approssimazione. Ehm, quindi, se ti dico che l'area di un cerchio di raggio 2 è , questa è "un'approssimazione" ma se ti dico che è 50.265 ... allora non è un'approssimazione? eiπ=116π
David Richerby,

1
@Repomeister Il numero di biglie sarebbe presumibilmente un numero intero, quindi è un esempio meno interessante - non hai bisogno di numeri reali per esprimerlo. Ma i computer possono fare calcoli esatti su numeri reali, un famoso risultato di Tarski (migliorato da Ben-Or, Kozen e Reif negli anni '80). In particolare, se si scrive un'espressione usando numeri interi, operatori di confronto , operatori di campo e variabili un computer può decidere se ci sono numeri reali che rendono vera l'espressione. <,,>,,=,+,,×,÷x1,x2,,xnx1,,xn
Charles
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.