La pratica è davvero l'unico modo, ma può essere aiutato anche da leggendo le prove. Non toccherò sulla pratica perché gli altri rispondenti hanno coperto tutto ciò a cui riesco a pensare, quindi parlerò solo di ciò che intendo leggendo.
Ai libri di testo piace molto scrivere le prove "importanti". È molto bello, perché spesso dimostrano affermazioni molto potenti e sono davvero fantasiosi. Ma proprio come non dovresti imparare ad essere una ginnasta di livello mondiale dal primo giorno emulando un olimpionico (come in, probabilmente ti romperesti la spina dorsale), non dovresti leggere nessuna prova veramente grande (all'inizio). Ciò che ho trovato è stato utile leggendo le bozze più piccole, di solito dai compiti a casa tornati (presumo che tu sia uno studente) o occasionalmente un libro di testo che sogna.
Il motivo per cui penso che la lettura di bozze è utile è perché ci sono una piccola serie di "trucchi" o "idee" che costituiscono enormi pezzi di prove scolastici, e anche quelli più avanzati. qualità struttura dei dati e relazioni di ricorrenza di solito comportano pensando correlate a prova per induzione, prove che coinvolgono computabilità con macchine a stati finiti a volte usano il principio pigeonhole, e più raramente l'idea di diagonalizzazione (molto frequente, non ti preoccupare esso). E, naturalmente, quasi ogni altra prova utilizza prova per contraddizione. Sono sicuro che ci sono altri strumenti utili che mi sono sfuggiti di mente, ma spero che tu abbia l'idea.
Capire quando, come e perché si affronta un problema con un metodo particolare o un altro è ciò che richiede pratica ed esperienza. Suggerisco di leggere le prove oltre alla pratica perché spesso può mostrarti modi creativi di usare un metodo di prova che hai già incontrato.
Come nota finale, cerca di ricordare quando hai imparato a programmare. Come sei migliorato? Dimostrare cose e programmare cose non sono troppo dissimili, secondo me. :)
Via troppo soggettivo e orientato alla discussione. – EBGreen
@EBGreen Io non la penso così. Ci sono un sacco di domande molto popolari e di lunga data che sono altrettanto soggettive e orientate alla discussione. Questa è una domanda ben formulata che ha una risposta chiara (anche se varia a persona) e potrebbe essere estremamente utile. Se ti infastidisce, forse vota per farne una domanda del wiki della comunità :) –
Penso che questa sia una domanda CS valida, strettamente correlata alla risoluzione di problemi quotidiani. +1 –