Buon libro matematico sugli algoritmi [chiuso]


11

Sono un fanatico dell'eleganza e del rigore matematici e ora sto cercando tale letteratura sugli algoritmi e sull'analisi degli algoritmi. Ora, per me non importa molto quali algoritmi sono coperti, ma molto come sono presentati e trattati.¹ Apprezzo molto un linguaggio molto chiaro e preciso che definisce tutte le nozioni usate in modo rigoroso e astratto.

Ho scoperto che la classica Introduzione agli algoritmi di Cormen, Leiserson, Rivest e Stein è piuttosto ordinata, ma non gestisce bene la matematica ed è abbastanza informale con le sue prove e definizioni. L' introduzione alla teoria della computazione di Sipser sembra migliore al riguardo, ma non offre ancora una transizione senza soluzione di continuità dalla matematica agli algoritmi.

Qualcuno può consigliare qualcosa?


¹: Gli algoritmi dovrebbero almeno invadere la gestione dei dati necessari utilizzando strutture di dati astratte non banali classiche come grafici, matrici, insiemi, elenchi, alberi e così via - preferibilmente operando anche su tali strutture di dati. Non sarei troppo interessato se il problema dell'utilizzo e della gestione delle strutture dati fosse del tutto ignorato. Non mi interessa molto dei problemi risolti con loro, comunque.


2
Questo è soggettivo; definire "buono". Inoltre, mentre non abbiamo una politica rigorosa per le domande dell'elenco, c'è una antipatia generale . Si prega di notare anche questa e questa discussione; potresti voler migliorare la tua domanda per evitare i problemi spiegati lì. Se non sei sicuro di come migliorare la tua domanda, forse possiamo aiutarti nella chat di informatica ?
Raffaello


@Raphael Grazie. Ho usato solo la parola "buono" nel titolo, nella mia domanda ho specificato quello che voglio. Anche se intenzionalmente non sono diventato troppo specifico, dovrebbe almeno essere chiaro che il mio focus è (come accennato) sull'eleganza e il rigore matematici . Non credo che questa risposta grida per un elenco di libri, perché non dovrebbero esserci troppi libri che rientrano in quella categoria, e anche in questo caso, non credo in quello "preservare la purezza di una domanda rigorosa - struttura delle risposte "cosa succede in diversi siti di stackexchange qui - ma non è la mia chiamata, credo. Non sono sicuro di poter migliorare la domanda.
k.stm,

Inoltre, non credo che la "richiesta di riferimento" sia appropriata per la domanda. Almeno non secondo la sua descrizione: non sto cercando documenti né sono interessato a una questione specifica e ristretta. In effetti, sono abbastanza aperto su quali contenuti sono coperti, vedi la mia seconda frase. Va bene se rimuovo di nuovo il tag? Forse potrei e dovrei restringere il campo con quale tipo di algoritmi sarei contento?
k.stm

2
Forse dovresti esaminare la semantica denotazionale e la verifica del programma.
Yuval Filmus

Risposte:


7

Hendrik Lenstra ha scritto nel 1992 :

Sebbene sia desiderabile, da un punto di vista matematico rigoroso, definire cosa intendo per algoritmo e il suo tempo di esecuzione, non lo farò. La mia scusa principale è che non conosco queste definizioni da solo. Ancora peggio, non ho mai visto un trattamento della teoria appropriata che sia preciso, elegante e comodo con cui lavorare. Sarebbe un'impresa lodevole colmare questa lacuna apparente nella letteratura.

Non so se da allora siano stati compiuti progressi o se questo consenso sia addirittura considerato un "divario". Ma resta il punto che almeno alcuni eminenti matematici sono stati insoddisfatti del rigore matematico della derivazione degli algoritmi. Quindi, può darsi che non esista un libro con il livello desiderato di formalismo del PO.

La cornucopia di prospettive pratiche che abbiamo a causa di Knuth, Gries , Stepanov e altri ha lo scopo di aiutare i programmatori più della matematica e quindi inevitabilmente mancano di rigore e di soggettività.

Tuttavia, il lavoro di Stepanov è ampiamente acclamato nella Silicon Valley come uno dei migliori tentativi di sintesi scientifica.

In Elements of Programming , Alexander Stepanov e Paul McJones tentano di gettare le basi algebriche astratte degli algoritmi. Il libro inizia con un po ' informale definizioni assiomatiche in di entità, valori e loro attributi, ma in 288 pagine procede in modo deduttivo attraverso una serie di lemmi alle basi della Standard Template Library.

Il sommario, la prefazione e un capitolo di esempio sulle trasformazioni e le loro orbite possono essere trovati qui , e una lezione introduttiva qui .

Il libro più recente e rilassato di Stepanov, Dalla matematica alla programmazione generica , è strutturato più da una tabella di marcia della storia della matematica, che va dalla moltiplicazione egiziana a monoidi, semigruppi e teorema di Lagrange, sviluppando infine moderne strutture di dati con i loro iteratori e algoritmi utilizzati in la STL.


?!? "al momento non esiste una derivazione matematica precisa, elegante e conveniente del concetto di algoritmo ..." che ne dici di una macchina di Turing!
vzn,

1
Lenstra si rivolge alle macchine di Turing nel documento collegato, ma penso che l'idea sia che non forniscano un'analisi algebrica completa. La citazione è praticamente testuale, inclusa la parte "gap", se desideri leggerlo da solo. Modificherò il post per rimuovere il "consenso" suggerito, nel caso in cui debba essere considerato discutibile.

ofc am / ero consapevole del fatto che stavi citando Lenstra ma potresti aggiungere citazioni o una citazione più lunga della sua affermazione notevole / discutibile / discutibile
vzn

pensare che le macchine di Turing non possano essere derivate , al contrario formano l' assioma di un sistema computazionale (come la tesi di Church-Turing ). è tutta l'analisi di Lenstras e CS in generale che deriva dall'assioma dell'esistenza della MT.
vzn,

1
@Raphael, se la mamma dice che sarebbe una "impresa lodevole" pulire correttamente la mia stanza, l'essenza del suo discorso è "non preoccuparti di pulire la tua stanza". Ti sto fraintendendo o mi stai fraintendendo?

7

Penso che il libro che descrivi abbia un nome. È in sette volumi, solo tre e la metà dei quali sono stati pubblicati. È chiamato The Art of Computer Programming , (TAOCP) ed è scritto da Donald Knuth.

Può darsi che a volte descriverà le applicazioni. Ma puoi sempre saltarlo, e dubito che ne renda gran parte del contenuto. Non dovresti essere troppo deluso dalla matematica.


Temevo che questa risposta potesse arrivare. Ci ho guardato dentro e non mi andava bene. "Non dovresti essere troppo deluso dalla matematica." - forse, ma anche Knuth non sembra definire cose, ma piuttosto le introduce in modo informale, spiegandolo. Fantastico per far passare l'idea, non quello che mi aspetto dalla matematica, però.
k.stm,

Forse potresti contribuire al campo pubblicando la versione matematicamente offuscata del suo lavoro. Ma se ciò che ti interessa è la "transizione senza soluzione di continuità dalla matematica agli algoritmi", un argomento migliore per te potrebbe essere la teoria dei tipi. La relazione tra matematica e algoritmi è ancora un argomento di ricerca.
babou,

1
PS Se "temevi che potesse arrivare questa risposta", avresti dovuto dirlo nella tua domanda in quanto è uno dei principali libri di consultazione. Le domande complete e documentate ottengono risposte migliori.
babou,

Mi è venuto in mente solo dopo aver fatto la domanda, quando ero lontano dal mio computer. La mia osservazione sul libro di Knuth non dovrebbe essere presa in modo peggiorativo (ed è così che penso che tu l'abbia preso per il commento "pubblicare la versione matematicamente offuscata") - probabilmente sarebbe vicino alla blasfemia. La sua strada non è nemmeno quello che sto cercando. Forse non c'è proprio niente di simile a quello che immagino là fuori ...
k.stm

2
@ k.stm Bene, dimentica la cosa dell'offuscamento che è un intero argomento in sé. Il punto è che credo che l'algoritmo non sia (ancora?) Matematica. Può darsi che tu possa ottenere formalizzazione, ma è probabile che siano semplici codifiche che perdono la sostanza, con scarso beneficio. Dipende dall'argomento. Probabilmente è molto meno vero per la teoria degli automi, che ha algoritmi significativi. Il punto è che identificare adeguatamente la natura matematica astratta delle strutture non è ovvio. È una questione di comprensione, non di formalizzazione, e ci vogliono anni. Pensala come fisica
babou,
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.