Strategie per non perdere la comprensione della TCS


19

Sono uno studente universitario che frequenta un corso di teoria del calcolo e ho seri problemi a produrre contenuti una volta che mi viene chiesto. Sono in grado di seguire il libro di testo (Introduzione alla teoria del calcolo di Michael Sipser) e le lezioni; tuttavia, quando mi viene chiesto di provare qualcosa o di fornire una descrizione formale di una TM specifica, mi viene solo da soffocare.

Cosa posso fare in tali situazioni? Immagino che il mio problema sia quello di comprendere pienamente i concetti astratti al punto da poterli effettivamente utilizzare. Esiste un modo strutturato per avvicinarsi a un nuovo concetto astratto e infine costruire intuizione?


5
mi batte. questa sembra una domanda ragionevole per questo sito.
Suresh,

4
Ho votato per chiudere. Il problema principale che vedo è che la domanda non riguarda in realtà l'informatica; riguarda come imparare l'informatica. Quest'ultimo non ha una risposta obiettiva, perché ogni persona avrà il suo modo migliore. I tre voti da chiudere sono tutti assegnati al motivo "troppo localizzato", ma penso che questa domanda sia anche fuori tema, dal momento che non si tratta di informatica.
Carl Mummert,

1
Penso che questa domanda abbia un merito ed è il tipo di domanda con cui mi trovo a lottare intensamente. Penso che ottenere indicazioni su questo tipo di problemi da una comunità di fiducia sia qualcosa con cui molti studenti di CS lottano. Capisco l'obiezione alla domanda però. Mi sembra che la domanda sia abbastanza a portata di mano nella sezione meta di questo sito.
BrotherJack,

6
@CarlMummert: ogni domanda sull'informatica è una domanda su come imparare l'informatica.
JeffE,

2
La domanda è eccessivamente ampia nella sua forma attuale. Focalizza la tua domanda, ad es. Chiedi risorse (ad es. Libri problematici) per aiutarti a migliorare la tua capacità di risolvere la domanda nel corso, o se hai un esempio specifico focalizzati su quel problema e chiedi intuizione o metodi per affrontare problemi simili.
Kaveh,

Risposte:


15

L'astrazione è praticamente pane e burro nell'informatica, ma sfortunatamente è difficile insegnare esplicitamente.

Secondo me, la comprensione dei concetti è più importante della capacità di calcolare meccanicamente o provare cose. Certo, è necessario conoscere alcuni metodi elementari, ma la carne si trova altrove.

Prima di tutto, devi capire il contenuto in una certa misura. A tal fine, ho trovato utile porre la seguente domanda ogni volta che qualcosa non ti è chiaro:

  • Perché lo stiamo facendo?
  • Per cosa lo useremo?
  • A quali cose simili si riferisce questo?
  • Come lo spiegano altre fonti ?
  • Cosa non capisco esattamente ?

Dopo aver risposto a queste domande (o aver scoperto le domande di follow-up e averle trattate allo stesso modo) e avere ancora problemi, vai dai tuoi insegnanti (o qui). Ormai dovresti essere in grado di formulare una domanda focalizzata e formulata con precisione; rispondere a tali domande è il lavoro dei tuoi insegnanti (e la filosofia di StackExchange).

Oltre a ciò, è esercizio ed esperienza. Prova a riprodurre le prove dopo averle lette; fai attenzione a non impararli a memoria ma a distillare le idee importanti da loro. Dopo qualche tempo, dovresti essere in grado di riprodurre tutte le prove di base riempiendo gli spazi tra i passaggi principali. Anche più tardi, inizierai a vedere schemi in dichiarazioni e prove. Questo è il modo in cui le persone guardano un'affermazione e dicono "Oh sì, certo, usa il metodo X con il teorema Y e poi usa Z per ottenere quello che vuoi". È il riconoscimento di schemi alimentato da anni di formazione. Essere pazientare.

Per quanto riguarda gli esercizi di base, vai a trovare libri di testo con alcuni. Dalla parte superiore della mia testa posso fare riferimento a Concrete Mathematics di Graham, Knuth e Patashnik. Questo libro non è solo una preziosa cassetta degli attrezzi per gli informatici, ma contiene anche molti esercizi con soluzioni (!). Ricorda di provare a risolverli prima di cercare le risposte e di riprodurre le risposte che dovevi cercare.

Un altro libro utile è Introduzione agli algoritmi di Cormen, Leiserson, Rivest e Stein. È incluso un capitolo considerevole sulle basi matematiche. Contiene anche molti esercizi; le soluzioni sono disponibili tramite la pagina collegata (contenuto supplementare). C'è anche una videoconferenza di uno degli autori che può andare bene con il libro.

Per lezioni introduttive sulle prove, dai un'occhiata a Prove di algebra lineare su Khan Academy . Non li ho guardati, ma speriamo che siano sia di base che utili. Ci sono molte altre prove su Khan Academy; Immagino solo che le prove di algebra lineare potrebbero adattarsi al meglio all'informatica. Non esitate a guardare anche gli altri.


7
Concordo sul fatto che la comprensione dei concetti è più importante della capacità di calcolare o provare cose. Ma la comprensione è il risultato della pratica con calcoli e prove, non un sostituto per quella pratica.
JeffE,

Grazie per la comprensione. Prenderò il tuo consiglio con affetto e proverò a migliorare in base a quello.
trigoman

Per esigenze più basilari, il Libro delle prove può essere un riferimento prezioso.
Raffaello

8

A volte scopro che le persone che non vanno bene in teoria, sbagliano solo le basi (nelle prime 1-3 lezioni, hanno pensato che il materiale fosse molto semplice, quindi non hanno prestato troppa attenzione, ma poi, alla lezione 5-7 le cose accelerano ed è troppo tardi per ricapitolare).

Come ha detto @fbernardo, potrebbe essere una buona idea iniziare dall'inizio. NON per quanto riguarda FLA (non serve a nulla quando si studia TC, IMHO), ma sicuramente aprire Sipser e iniziare a risolvere le domande una per una, secondo il loro ordine. Con l'esperienza otterrai intuizione e strumenti di base indispensabili per concetti più avanzati.

Se non riesci ad affrontare le domande di base di Sipser del primo capitolo (non i capitoli degli automi, se studi sulle TM), allora potresti non avere concetti ancora più fondamentali, come i metodi di prova di base (induzione, ecc.) O il set di base- teoria e matematica discreta.

Buona fortuna, comunque!


3

Il mio unico consiglio sarebbe di iniziare dall'inizio. Nel mio corso usiamo anche il libro di Sipser, secondo me è un buon libro. Ma abbiamo un corso prima di TC, chiamato FLA (Formal Languages ​​an Automaton) che ha dato una migliore intuizione e un background su TC. Quindi, ancora una volta, tutti imparano a prezzi diversi e tu hai un ottimo libro. Qualsiasi altra domanda specifica puoi sempre trovare aiuto qui. :)


2

Fai una domanda generale nel tuo titolo e poi almeno due punti base / specifici nella domanda, e penso che ci siano buone (separate) risposte a ognuna:

  • come provare cose
  • creare una descrizione formale del comportamento di una MT

Qui ci si rivolge solo al primo elemento (che è intrinsecamente ampio e lo merita) - il suo tipo di elefante nella stanza dell'educazione STEM (scienza, tecnologia, ingegneria, matematica) che si riduce e viene spesso sorpreso in modo sorprendente . Potrebbe sembrare che nessuno sappia davvero come insegnare a costruire prove. Questo soggetto inizia nelle classi di geometria, trigonometria e calcolo, ma raramente ne è un elemento rigoroso. la maggior parte degli insegnanti lo considera facoltativo. Sembra che un'intera classe dedicata a "come provare cose" sarebbe un'aggiunta eccellente o addirittura critica o un cambiamento nell'educazione STEM.

Ecco alcuni riferimenti che ho scoperto durante una rapida ricerca di come provare cose e penso che ci siano molte altre buone risorse. Al giorno d'oggi ci sono anche molti video sull'argomento che potrebbero essere mostrati tramite ricerche, ma non ho mai visto una bella organizzazione completa di video di tipo "come provare cose".

Una parte fondamentale della dimostrazione è padroneggiare le basi della matematica e usarle tutte come strumenti o parti di costruzione. Ad esempio sapere cos'è un set, cos'è una tupla, qual è la differenza / somiglianza, quando useresti uno ma non l'altro, ecc.

Un altro approccio è quello di trattarlo come un trapano. Fai molte prove pratiche da solo, a partire da facile a difficile (vorrei sapere di più libri come questo, non sembrano essercene molti).


1
Aggiungi il classico di Pólya "Come risolverlo". È anche utile (specialmente per i laureati) cercare la scrittura matematica, ad esempio Knuth et al "Scrittura matematica". Questa abilità è troppo spesso data per scontata.
vonbrand
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.