Una parte del problema può essere causato dal pensare a "problemi avidi". Ci sono algoritmi e problemi avidi in cui c'è un algoritmo avido, che porta a una soluzione ottimale. Ci sono altri problemi difficili che possono essere risolti anche da algoritmi avidi, ma il risultato non sarà necessariamente ottimale.
Ad esempio, per il problema dell'imballaggio del contenitore, ci sono molti algoritmi avidi tutti con una complessità molto migliore dell'algoritmo esponenziale, ma si può essere certi che si otterrà una soluzione inferiore a una certa soglia rispetto a alla soluzione ottimale.
Solo per quanto riguarda i problemi in cui gli algoritmi grezzi porteranno a una soluzione ottimale, la mia ipotesi sarebbe che una prova di correttezza induttiva sia totalmente naturale e facile. Per ognuno dei tuoi avidi passaggi, è abbastanza chiaro che questa era la cosa migliore da fare.
In genere i problemi con soluzioni ottimali e avide sono comunque facili, e altri ti costringeranno a escogitare un'euristica golosa, a causa dei limiti di complessità. Di solito una riduzione significativa mostrerebbe che il tuo problema è in realtà almeno NP-hard e quindi sai che dovrai trovare un euristico. Per questi problemi, sono un grande fan di provare.Implementa il tuo algoritmo e prova a scoprire se le soluzioni sono "abbastanza buone" (ideale se hai anche un algoritmo lento ma corretto puoi confrontare i risultati, altrimenti potresti aver bisogno di verità terrestri create manualmente). Solo se hai qualcosa che funziona bene, prova a pensare perché e forse anche provare a trovare una prova di limiti. Forse funziona, forse vedrai casi di confine dove non funziona e ha bisogno di raffinatezza.
fonte
2011-10-25 10:56:28
Penso che intendessi" proprietà matroid "e non "proprietà monoidale" .Puoi anche essere più specifico sulla proprietà "substruttura ottimale"? Conosco questa proprietà dalla programmazione dinamica, dove decomponi il tuo problema in vari sottoproblemi e poi ricombinalo. è difficile vedere come ci sia una somiglianza, dal momento che l'algoritmo semplifica sempre l'aggiunta alla soluzione precedente – LiKao
Hai ragione, ovviamente intendevo matroid qui. La sottostruttura MST può essere vista se si considera il problema come la rimozione dei bordi e dovendo collegare il grafico rimanente al set di vertici già inclusi. – Frank