2009-08-16 18 views
3

Beginne damit, die UVa-Probleme wieder zu lösen, um die Zeit zu vertreiben (in 6 Wochen zur Armee gehen). Ich liebe es Java zu schreiben, aber am Ende benutze ich C/C++. Das liegt nicht daran, dass IO schneller ist, keine Notwendigkeit besteht, Daten zu komprimieren, mehr Speicher oder die Verwendung von unsignierten Daten, da die Effizienz des Algorithmus zählt.Was muss ich über dynamische Programmierung wissen?

Kurz gesagt, ich bin langsam bauen, wie zu/Artikel/Code-Basis für verschiedene Kategorien von effiziente Algorithmen und DP ist nächste.

Zitat Mark Twain: Es ist nicht das, was Sie nicht wissen, das Sie in Schwierigkeiten bringt. Es ist das, was Sie sicher wissen, dass es nicht so ist.

Ich helfe Hilfe beim Aufbau der Prioritätenliste, was effiziente Algorithmen sein müssen.

+0

Nur aus Neugier, haben Sie die Zeiten von C vs Java getestet? Es gab einen Fall, in dem ein paar wirklich gute Programmierer einen Algorithmus auf eine Handvoll Sprachen portierten und in diesem Fall war Java schneller als C, bis Sie -o3 drückten. C sprang bei den höheren Optimierungsstufen voraus, aber ich glaube nicht, dass es jemals mehr als 2x bekommen hat. Ich bin nur neugierig, ob Sie getestet haben, weil es sich anhört, als ob Sie könnten und ich könnte mehr Datenpunkte entlang dieser Linien verwenden ... –

+0

Könnten Sie bitte weitere Informationen zum Begriff "dynamische Programmierung" geben? Meinst du dynamischen Versand (Polymorphismus) oder dynamische Programmgenerierung? –

+0

Dynamische Algorithmen laufen normalerweise schneller als alle Zeitanforderungen oder sie sind nicht dynamisch. Effizienz ist also kein Thema. –

Antwort

2

Der Wikipedia-Artikel auf Dynamic Programming hat einen Abschnitt mit dem Titel "Algorithms that use dynamic programming" mit vielen Beispielen.

Hier ist eine weitere gute Liste von practice problems in dynamic programming.

Da Sie auf die UVa-Problemliste verwiesen haben, sollten Sie sich unbedingt Problem 103 - Stacking Boxes ansehen. Das Problem eignet sich gut für eine Lösung unter Verwendung eines Longest Increasing Subsequence Algorithmus.

+0

Wenn Sie UVA 103 probiert haben und eine Erklärung mit einem Beispiel möchten, schauen Sie sich [diesen Blogbeitrag] an (http://ruslanledesma.com/2016/03/25/stacking-boxes.html). – mrrusof

4

This MIT lecture ist eine gute Einführung in die dynamische Programmierung, wenn Sie bereits mit Algorithmen vertraut sind.

Verwandte Themen