Quali sono gli argomenti di matematica essenziali che un programmatore dovrebbe conoscere per imparare gli algoritmi? [chiuso]

4

Essendo un ingegnere elettronico, non sono mai stato esposto a nessun algoritmo. Ora sono un programmatore esperto e voglio imparare gli algoritmi. Ho iniziato con CLRS. Ma sono stato sopraffatto dalla matematica nel libro. Quindi quali sono gli argomenti matematici minimi che dovrei sapere prima di avviare Algorithms?

Ci sono buoni tutorial o libri su questo? Ho trovato un libro sulla matematica di Donald Knuth, ma credo che sia troppo dettagliato e difficile per i principianti.

    
posta ashishjmeshram 05.02.2014 - 05:48
fonte

1 risposta

8

Ti suggerisco di restringere il tuo approccio. Ci sono così tanti algoritmi, che sono strongmente dipendenti da vari aspetti matematici, che in pratica si imbattono in un enorme problema di tempo quando si tenta di imparare tutte quelle cose.

Invece, pensa un po 'di più su perché vuoi imparare gli algoritmi. Per cosa li vuoi usare? Quali sono i domini del problema che vuoi affrontare?

Ad esempio, consideriamo tre rami matematici quasi completamente diversi: matematica discreta e non discreta e stocastico.

La matematica discreta è molto buona per i programmatori, in quanto può essere rappresentata per lo più su una macchina a causa dei suoi stati discreti diversi. Esempi importanti nel campo degli algoritmi correlati sono algoritmi di grafi, algoritmi di teoria dei numeri, ecc.

La matematica non discreta consente differenze di valori infinitesimali, che non è possibile tracciare esattamente su una macchina. Pertanto, si astraggono le funzioni ed è interessato a trovare alcuni punti come massimi, minimi, punti di intersezione, ecc. Gli algoritmi in quest'area spaziano dall'area della ricerca operativa, con algoritmi di ottimizzazione per lo più a algoritmi di natura più geometrica, come tesselations.

Stocastico d'altra parte si occupa di casualità, e quindi, un intero nuovo mondo di algoritmi si basa su quello. Da semplici approcci shotgun a algoritmi random walk più o meno coinvolti. Ma la distinzione è sempre più difficile qui, perché per esempio puoi trovare molti algoritmi randomizzati nella teoria dei grafi e nella teoria dei numeri.

Questi sono solo piccoli esempi. Ci sono molte altre aree interessanti in matematica, proprio come per gli algoritmi, che non rientrano in quanto sopra.

Quindi in sostanza, la mia risposta è che la tua domanda è fuorviante. A meno che tu non voglia dedicare tutta la tua vita agli algoritmi, ti concentri quasi sempre sugli algoritmi in una determinata area che è più importante per te o per il tuo lavoro. Alcuni non hanno bisogno di uno sfondo matematico (ad esempio, algoritmi di programmazione dinamica), mentre altri richiedono di studiare prima un sacco di matematica (facilmente visibile negli algoritmi di grafica computerizzata). Quindi ti suggerisco di decidere prima sulla direzione in cui vuoi andare, poi di imparare quella parte (di solito abbastanza difficile), e se la trovi un argomento abbastanza intrigante, puoi comunque espandere in qualsiasi altra direzione in seguito. Ma non cercare di imparare tutta la matematica solo in modo da poter eventualmente arrivare ad apprendere gli algoritmi più tardi. Non ci arriverai mai.

Un ultimo consiglio: se non hai ancora una conoscenza abbastanza chiara del campo degli algoritmi per prendere queste decisioni, potrebbe essere utile per te visitare una delle "Introduzione agli algoritmi" (o simili) lezioni offerto da qualsiasi numero di università, libri, corsi online, ecc. Non importa se capisci tutto. Se ti manca la matematica richiesta, puoi ancora capire il succo di quale tipo di problemi l'algoritmo ti può aiutare.

    
risposta data 05.02.2014 - 07:06
fonte

Leggi altre domande sui tag