it-swarm.it

Come apprendo algoritmi e strutture dati?

Questo è in seguito a la mia domanda precedente dove ho chiesto è necessario imparare algoritmi e strutture di dati. Sento di si.

Ora lavoro in un ambiente in cui non avrò mai la possibilità di impararlo sperimentando, praticamente o in qualsiasi incarico. Qual è l'approccio giusto come i libri giusti, il giusto tipo di problemi, il giusto tipo di risorse che posso passare per dare sei mesi o un anno o due per imparare algoritmi e strutture di dati? E anche plasmare la mia mente in modo tale da poter mettere in relazione problemi con strutture dati e algoritmi.

38
sushil bharwani

Leggi.

No, davvero, leggi.

Leggi tutto sull'algoritmo e sul design che puoi trovare. Ci sono libri fenomenali là fuori. I libri dell'algoritmo di Sedgewick sono buoni. Anche il manuale di progettazione algoritmi di Skiena è buono. Insieme, questi libri mi seguono su ogni libreria in ogni lavoro a cui vado, insieme a The Mythical Man-Month.

Quindi chiedi.

Parla con le persone che rispetti. Chiedi loro quali punti di decisione avevano e perché hanno preso le decisioni che hanno preso. I bravi saranno sempre in grado di dirti "Ho scelto di fare X perché è meglio di A, B in questi modi. Avrei potuto andare con C, ma ho pensato che fosse una scelta migliore per questo".

Quindi, fallo.

Costruisci roba. Costruisci cose che non userai mai. Costruisci cose che non ti serviranno mai. Vai a scrivere un programma che risolva un puzzle di Sudoku. Ora vai di nuovo. E di nuovo. Costruiscilo in 5 modi completamente diversi. Costruisci un programma che genera rompicapo di Sudoku e alimentalo nei solutori. Trova quale solutore è il più veloce. E poi...

Scopri perché.

Il "cosa" non è quasi mai importante. Voglio dire, sì, è fondamentale per terminare il progetto a portata di mano, ma alla fine se conosci il "cosa" senza sapere il "perché", allora potresti non averlo mai fatto. Hai un punto elenco sul tuo curriculum. Vai a prendere un biscotto e congratulati con te stesso. Il "perché" è molto più importante del "cosa".

E per la cronaca, Sudoku è stato un esempio. Ho trascorso molto tempo libero durante l'esercizio con una tonnellata di enigmi logici su Kongregate e ho imparato molto sulla strada.

http://www.Amazon.com/Bundle-Algorithms-Parts-1-5-Fundamentals/dp/020172684X/http://www.Amazon.com/Algorithm-Design -Manual-Steven-Skiena/dp/1848000693 /http://www.Amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959/

40
Hounshell

Algoritmi

Ho preso lezioni di magia in un ambiente di gruppo quando avevo dodici anni. Il mago si chiamava Joe Carota. Una volta ha fatto un trucco e io ho sbottonato, "Come hai fatto?" Ha detto qualcosa quel giorno che è rimasto con me da allora.

La risposta di Joe, "Michael, se vuoi davvero sapere come viene fatto quel trucco devi capire come lo faresti tu stesso."

Ovviamente non è quello che volevo sentire ma mi ha focalizzato sulla risoluzione dei problemi. Questo è stato il problem solving dal mio punto di vista. Se il mio primo tentativo di risolvere il problema ha avuto diciassette passaggi ed è stato davvero divertente, la buona notizia è che ho risolto il problema.

Quindi, esaminando la soluzione che avevo sviluppato e cercando modi per affinare quella soluzione, imparerei come ottimizzare il risultato finale. Più tardi nella mia vita di programmazione per computer ho scoperto che questo processo è stato chiamato "perfezionamento graduale". Penso che oggi lo chiamino refactoring.

Funzionava allora funziona ancora adesso.

qui il seguente link ti reindirizza a una delle classi DS e Algorithms di maggior successo di MIT che abbia mai seguito).

http://academicearth.org/courses/introduction-to-algorithms

Spero che ti piacerà questa serie di video. In bocca al lupo !!!

9
Tharindu Rusira

Vedi se riesci a seguire un corso online o essere tutorato. In caso contrario, questo è spuntato in una rapida ricerca su Google. Ho appena preso un corso su di esso la scorsa primavera (prima in assoluto, sono passato da EE al software) e non è stato troppo difficile da prendere se capisci bene i puntatori .

2
Stephen Furlani

Se non sei in grado di seguire un corso su questo, ti consiglio l'Algorithm Design Manual. C'è un PDF gratuito qui , ma vale la pena ottenere il libro reale se hai intenzione di programmare professionalmente.

2
Jason Baker

Inizia a lavorare sulla risoluzione di problemi classici, ad esempio sfera online , il sito potrebbe non sembrare così bello ma ragazzo, questi sono problemi di programmazione classici che richiedono molte delle importanti strutture di dati e algoritmi in uso oggi.

Le soluzioni possono essere inviate in una varietà di linguaggi di programmazione da C/C++ a JavaScript, LISP, Smalltalk, assemblatore + circa altri 40. Quindi puoi concentrarti interamente sulla risoluzione del problema con qualunque linguaggio di programmazione ti senti a tuo agio.

1
Ernelli

[~ ~] # [CLR ~ ~ #]

Questa è di gran lunga la mia risorsa preferita. L'ho usato nel mio corso di algoritmi di informatica e ho finito per acquistare il libro 4 anni dopo per leggere da solo per prepararmi al mio M.S. Corsi Comp Sci. Non è facile da leggere in alcun modo, ma se lavori per capire alcune delle matematiche/prove presentate e quindi implementa lo pseudo-codice nelle tue lingue preferite, vale la pena il prezzo piuttosto alto. Anche il manuale di progettazione degli algoritmi menzionato da altri è un'ottima risorsa per l'apprendimento dell'identificazione dei problemi, ma ho scoperto che CLRS è migliore per i dettagli puri.

1
Kurtis

Cerca di iscriverti a un corso di laurea in strutture dati e algoritmi, è sempre bene imparare questi concetti insieme ad altri.

1
Martijn Verburg

Puoi sempre provare qualcosa del genere: http://codekata.pragprog.com/

Ho sempre imparato meglio pensandolo invece di leggere. Tuttavia, è necessario disporre di documentazione/materiale di lettura disponibile per cercare risposte.

0
RobotHumans

Compra questo libro , prestalo o rubalo! Il resto seguirà :)

Introduzione agli algoritmi di Rivest e Cormen. Inizialmente sarà molto difficile seguire una volta superata la spiegazione di Mergesort nell'introduzione. Tutto ti si svolge magnificamente.

Inoltre migliorerai di più se risolvi i problemi indicati nel libro. Non ho mai voluto davvero separarmi dal libro anche dopo essermi laureato. È così buono.

0
Venki