Quali sono i primi articoli di informatica che hanno usato la complessità temporale asintotica?


22

Quando il big O è stato usato per la prima volta in informatica e quando è diventato standard? La pagina Wikipedia su questo cita Knuth, Big Omicron e Big Omega e Big Theta , SIGACT aprile-giugno 1976, ma l'inizio di quel documento recita

Molti di noi si sono abituati all'idea di usare la notazione per indicare qualsiasi funzione la cui magnitudine è delimitata da un tempo costante , per tutti i grandi .O(f(n))f(n)n

Questa citazione indica che l'idea e la notazione erano già di uso comune.

La pagina di Wikipedia cita anche articoli di matematica della fine del 1800 e dei primi del 1900, ma ciò non risponde alla domanda. In particolare, ho sentito i ricercatori che erano in giro allora (negli anni '60 e '70, non alla fine del 1800) affermando che quando è stata usata per la prima volta l'analisi asintotica, alcune persone hanno fatto marcia indietro, dicendo che il tempo dell'orologio a muro era una metrica migliore. Tuttavia, nessuno con cui ho parlato può citare i documenti specifici che hanno ottenuto un respingimento come questo e mi piacerebbe trovare prove che possano confermare o smentire queste storie.


La domanda è sulla notazione per l'analisi asintotica delle funzioni o sull'uso della complessità temporale asintotica? Penso che la domanda riguardi la seconda, ma la prima frase (e la citazione di Knuth) sembra essere la prima. O()
ShreevatsaR

2
A proposito, non rilevante per la tua domanda storica, ma un punto che non è del tutto storico: Robert Sedgewick a Princeton (che per inciso ha fatto il suo dottorato di ricerca sotto Knuth) ha in più colloqui messo in guardia contro la "grande O" notazione che chiama "teoria degli algoritmi" ", preferendo invece" analisi di algoritmi "in stile Knuth (cioè con costanti effettive). Vedi ad esempio queste diapositive (le prime 21 diapositive). Questo non è esattamente lo stesso che spingere indietro contro l'analisi asintotica e raccomandare il tempo dell'orologio da parete, ma beh, in un certo senso. Ed è un punto importante.
ShreevatsaR

Hai letto questa sezione nella storia di Wikipedia (notazioni di Bachmann – Landau, Hardy e Vinogradov) ?
drzbir,

Risposte:


2

con domande di storia ci sono in genere sottili sfumature e non è facile determinare un particolare documento che ha introdotto un particolare concetto perché tende a essere distribuito su molti collaboratori e talvolta viene riscoperto in modo indipendente quando oscuri riferimenti precoci non necessariamente si diffondono (le idee fondamentali sono così) . ma la storia in pratica va in questo modo: la notazione di Landau è un vecchio formalismo matematico (1894 / Bachman) [1] che fu importato in CS come un "concetto chiave" nei primi anni '70. verso la metà degli anni '70 questo fu in qualche modo accettato come nel tuo riferimento a Knuth e Knuth stesso fu coinvolto nella diffusione di questo concetto.

è interessante notare che la sua importazione in CS era probabilmente strettamente correlata alle distinzioni P vs NP vs Exptime scoperte nei primi anni '70 che erano altamente influenti / annunciate sul campo. fu Cobham / Edmonds che iniziò a definire la classe P all'inizio degli anni '70. [3] c'erano prime prove su Exptime ed Expspace di Stockmeyer / Meyer. [2] il teorema di Cook-Levin [4] (1971) mostrava la rilevanza fondamentale del tempo P vs NP, immediatamente supportato da Karp [5] (1972).

un primo matematico che ha lavorato nella teoria dei numeri ma anche ai margini dell'informatica era Pocklington. come in [3] sottolinea:

Tuttavia, HC Pocklington, in un articolo del 1910, [11] [12] ha analizzato due algoritmi per risolvere le congruenze quadratiche e ha osservato che uno prendeva il tempo "proporzionale a una potenza del logaritmo del modulo" e lo contrapponeva a uno che richiedeva tempo proporzionale "al modulo stesso o alla sua radice quadrata", facendo così esplicitamente una distinzione tra un algoritmo che correva nel tempo polinomiale rispetto a uno che non lo faceva.

un altro pioniere iniziale nell'analisi della complessità degli algoritmi basati su macchine per la teoria dei numeri, vale a dire il factoring, fu Derrick Lehmer, professore di matematica all'Università della California, Berkeley, e costruì / analizzò "algoritmi" di factoring (implementazioni basate su setaccio) già negli anni '20 ed è possibile che abbia descritto qualcosa di simile alla complessità computazionale del factoring in modo informale. [6]

un altro caso è una lettera "perduta" del 1956 di Godel a von Neumann che parla di misurazioni della complessità dei passaggi f (n) di una macchina per trovare prove della dimensione n . [7]

[1] Big O notation history / wikipedia

[2] Problemi di Word che richiedono tempo esponenziale. / Stockmeyer, Meyer (1973)

[3] P time class history / wikipedia

[4] Teorema di Cook-Levin / wikipedia

[5] Karps 21 NP problemi completi / wikipedia

[6] Lehmer factoring machine / sieve / wikipedia

[7] Godels ha perso la lettera / RJLipton


4
Questo non sembra rispondere alla domanda che è stata posta. La domanda era "Quali sono i primi documenti di informatica che hanno usato big-O?" Una risposta dovrebbe identificare alcuni documenti. Non vedo documenti citati qui che sono candidati per una risposta alla domanda. Dire "ci sono in genere sfumature sottili e non è facile determinare un determinato documento" non è davvero una risposta. E sicuramente c'era un documento che era il primo - deve esserci (secondo il principio del buon ordinamento) - quindi la domanda è rispondibile.
DW
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.