Mi riferisco alla domanda qui: potenti algoritmi troppo complessi da implementare .
Se un algoritmo è potente, ma troppo complesso da implementare, come puoi essere sicuro che l'algoritmo sia corretto? Senza l'implementazione non sarai in grado di testare l'algoritmo in uno scenario del mondo reale e un algoritmo così complesso può contenere bug, che potrebbe invalidare l'algoritmo.
Questo è ciò che non capisco; se hai le tecniche per dimostrare la correttezza di un algoritmo, allora avresti l'algoritmo per implementarlo già, no? Oppure come possiamo essere sicuri che la tecnica di prova sia corretta?
Mi dispiace se suono elementare!
Aggiornamento da Kaveh (riprodotto qui perché l'argomento è migliore!):
Se puoi dimostrare formalmente la correttezza di un algoritmo in un sistema formale come Coq, puoi anche estrarre l'algoritmo (perché essenzialmente hai implementato l'algoritmo), ma il fatto chiave è che per la maggior parte degli algoritmi non forniamo prove formali di correttezza per l'algoritmo, utilizziamo prove informali di correttezza. Le prove possono essere false, cosa che succede di tanto in tanto e persino una prova formale di correttezza non ci renderà assolutamente sicuri che l'algoritmo sia corretto.