Come posso migliorare la mia ingegnosità algoritmica?
-
28-09-2020 - |
Domanda
Durante il sottomarino ho sentito che la mia educazione è stata costruita per lo più di applicare la teoria esistente ai problemi del mondo reale (cioè algoritmo design / analisi).Ho visto derivazioni di molti algoritmi e prove della loro complessità, ma sono spesso lasciato infastidito dalla domanda su come si arriva a scoprire un algoritmo.Sembra scoraggiante immaginare di sviluppare un nuovo algoritmo dato l'ingenuità coinvolta nel curare un approccio efficace.Mi chiedo se ci sono modi per addestrare quell'ingegnuità.
La mia domanda è, come posso coltivare le competenze necessarie per sviluppare approcci originali a problemi quantitativi?Ci sono risorse che si concentrano su queste abilità?
Soluzione
Sembra che la programmazione competitiva possa aiutarti. O solo la parte "programmazione" di esso. Se vuoi affinare le tue capacità di problem solving (e quindi la tua capacità di inventare idee originali), sembra che la risoluzione dei problemi competitivi sia il modo di andare, dal momento che progettano da questa abilità.
Avresti bisogno di due tipi di risorse: archivi problematici e materiali teorici.
Per gli archivi problematici Posso suggerire di provare
- .
- timus.Anline (problemi che richiedono alcune intuizioni intelligenti / osservazioni iniziano dopo ~ 270 difficoltà)
- codeforces.org (tabulazione con problemi, varietà più ricca di problemi, ma la qualità complessiva è un po 'più bassa di quella sul timus )
- onlineJudge.org (in UHunt c'è un tavolo con problemi che coprono una grande varietà di problemi; un supplemento per il Prenota la programmazione competitiva 3)
- urionlinejudge.com.br (ha alcuni grandi problemi)
anche, c'è atcoder.co.jp che è come codeforces ma indirizza principalmente i problemi relativi alla matematica .
La chiave per trovare idee originali è sapere cosa hanno già inventato le persone. Se capisci queste idee e puoi applicarle relativamente facilmente, allora A) può inventare un'idea intelligente combinando queste idee più antiche in modo intelligente e B) puoi cercare le idee fondamentalmente nuove in modo molto più efficiente perché sai cosa non lo è Una nuova idea e ciò che non è il nuovo modo di pensare a trovare nuove idee.
Se sei d'accordo con il paragrafo precedente, allora avrai bisogno di risorse dove potrai imparare nuovi concetti e idee. La chiave con questo è non solo comprendere il teorema o l'algoritmo, ma anche capire l'intuizione e la prova (s). Le prove offrono espressione esplicita su come trovare e come essere sicuro che l'idea funzioni. Capire i trucchi e gli algoritmi (del pensiero) utilizzati nelle prove è la chiave per inventare le tue idee.
Intuizione, d'altra parte, è un'intuizione implicita, è qualcosa che collega i problemi, le sue prove (o un sottoinsieme di prove) e l'argomento del problema in generale. Dico questo in modo che tu non penseresti che l'intuizione sia qualcosa di magico o che se non l'hai capito quando leggi una prova, allora non lo avresti mai capito. Per acquisire è necessario eseguire questi passaggi
- .
- Prima di vedere la soluzione, prova a pensarlo per almeno 30 minuti (per me, Doodling aiuta molto a trovare soluzioni intuitive)
- Allora, se ritieni che alcune idee che pensi possano lavorare al 100%, ma non puoi raggiungerli nel tuo cervello, non arrenderti e tenerlo a loro fino a quando non vai a dormire. Se non sarai in grado di dormire pensando al problema, allora sei sicuro di avere qualche intuizione quando ti svegli. ( https://psychology.stackexchange.com/a/13366 + la mia esperienza).
- Senza alcuna dipendenza dal fatto che tu abbia risolto il problema o non dopo una procedura del genere, quando aprirai le prove (s), sarai in grado di assorbire e analizzarli molto più efficientemente, dal momento che leggi Non conoscere le idee ma per scoprire perché le tue idee non funzionano, quanto sei chiuso tu, dove hai commesso un errore nel tuo pensiero, cosa hai perso, perché quella cosa che ti sei concentrato troppo non era pertinente , cosa hai dovuto sapere per risolverlo comunque, ecc. Ecc .... (questo è come sq3r < / A> Metodo funziona anche, ti fa in discussione il testo prima e solo allora consente di leggerlo come un modo per rispondere alle domande; una lettura attiva, invece della lettura passiva).
- Se sei stato in grado di estrarre qualche intuizione guidata dalle prove, congratulazioni! Ora, dimentica questo problema e torna dopo due o tre giorni e risolvi un altro problema simile o un po 'più difficile sullo stesso argomento. In questo modo "impronta" questa intuizione nel tuo cervello, per così dire, per un tempo relativamente lungo (vedi, Ripetizione distanziata )
- Se non hai allora non essere triste. Hai capito più o meno come funzionano le prove. Ciò significa che l'unica cosa che è rimasta è di unirli in qualche modo con l'intuizione. Per fare ciò continuare a risolvere i problemi sullo stesso argomento generale (stringhe, grafici, teoria dei numeri, ecc.). L'intuizione non è destinata ad un problema concreto (se lo fosse, l'intuizione non sarebbe in grado di aiutare a risolvere altri problemi), se capirai le intuizioni dietro altri problemi, quindi naturalmente capirai l'intuizione dietro il problema originale !
Va bene, così. Con questo, sarai in grado di cogliere le vecchie idee in modo efficiente, capire l'intuizione e l'ingenuit
y dietro di loro. Queste sono risorse plausibili (anche se penso che potresti già usarli):- .
- Introduzione agli algoritmi. Cormen
- geekforgeeks.com
- wikipedia.com (seriamente, hanno grandi articoli su alcuni algoritmi)
- visualgo.net (specialmente, se sei uno studente visivo;)
Dalla mia esperienza a questo punto, sarai in grado di venire con idee originali da solo e naturalmente. Sarai in grado di vedere chiaramente le connessioni tra le idee e inizieranno a inserirsi solo nella tua testa. La risoluzione dei problemi sosterrà i percorsi neurali nel tuo cervello e non dimenticherà la base teorica e l'intuizione che hai costruito. La risoluzione dei problemi costruirà anche nuove connessioni neurali e porterà gioia durante la scoperta di nuove intuizioni.
Infine, voglio dire che se la tua intuizione non è nulla che tu abbia imparato prima, allora ha valore. Se combini due idee insieme, anche se fosse semplice, avrai una nuova idea e avrà valore. Ogni volta che ti inventa tali idee, in ogni caso, crei qualcosa di prezioso. Se il tuo obiettivo sarebbe quello di venire con qualcosa di prezioso, allora avrai successo ogni volta. Se il tuo obiettivo sarebbe quello di inventare una "intuizione originale", allora sarai veloce per essere gravemente demotivato, dal momento che non importa cosa farai, probabilmente avrai probabilmente (all'inizio di sicuro). Alla fine, se segui questi passaggi o qualcosa di simile, non puoi non essere migliore! Sicuramente, in qualche modo in futuro, ogni decimo delle tue idee sarà veramente originale;)