Prosty przykład dla kogoś, kto chce zrozumieć programowanie dynamiczne [zamknięte]

96

Szukam zrozumiałego przykładu dla kogoś, kto chce się nauczyć programowania dynamicznego. Są tutaj dobre odpowiedzi na temat tego, czym jest programowanie dynamiczne . Sekwencja Fibonacciego jest świetnym przykładem, ale jest zbyt mała, aby zarysować powierzchnię. Wygląda na to, że jest to świetny temat do nauczenia, chociaż nie miałem jeszcze zajęć z algorytmów, mam nadzieję, że jest na mojej liście na wiosnę.

AraK
źródło

Odpowiedzi:

30

Zajrzyj na tę stronę: Problemy z praktyką programowania dynamicznego

Nick Dandoulakis
źródło
1
Obejrzenie tego wykładu z MIT video.mit.edu/watch/…, a następnie rozwiązanie powyższych problemów pomoże ci zrozumieć, dlaczego DP jest pomocny.
pg2286
Przykładowo, link do youtube w komentarzu jest już uszkodzony. Nowy link: youtube.com/watch?v=OQ5jsbhAv_M
AJP
Obejrzyj ten zestaw filmów, które według mnie obejmują zarówno odgórny, jak i oddolny aspekt algorytmów dość intuicyjnie: youtube.com/playlist?list=PLx-Ye3Zw0WL0O_IDmbcVHlKqJuGEfw3VG
william007
Wygląda na to, że MIT przeniósł swoją zawartość ze strony głównej na stronę MIT OpenCourseWare, więc podany link @ pg2286 jest nieprawidłowy. Link to teraz 19. Programowanie dynamiczne I Pełna lista odtwarzania Wprowadzenie do algorytmów jest również dostępna
rite2hhh
20

Oto dobry tutorial zawierający 29 rozwiązanych problemów DP ze świetnym wyjaśnieniem.

akashchandrakar
źródło
7

Ideą programowania dynamicznego jest buforowanie (zapamiętywanie) rozwiązań podproblemów, chociaż myślę, że chodzi o coś więcej.

Istnieje wiele problemów związanych z Google Code Jam, które wymagają dynamicznego programowania, aby były wydajne. Przykłady:

Witamy w Code Jam (umiarkowany)

Oszukiwanie drzewa boolowskiego (umiarkowane)

PermRLE (twardy)

Pamiętaj, że każdy z konkursów treningowych Code Jam ma sekcję „Analiza konkursów”, w przypadku której nie możesz się doczekać rozwiązania problemu.

Joey Adams
źródło
Dzięki za zasoby. Od czasu do czasu rozwiązuję jedno lub dwa pytania od eulera projektu i wydaje mi się, że naprawdę tkwię w problemach, które wymagają wiedzy o DP.
AraK
5
  1. Geeks for geeks ma świetną kolekcję problemów z programowaniem dynamicznym. Uważam, że ten zestaw jest jednym z najlepszych, jeśli przygotowujesz się do rozmowy kwalifikacyjnej.
  2. Jeśli potrzebujesz krótkich filmów instruktażowych dotyczących problemów z DP, możesz sprawdzić ten zestaw problemów z MIT.
Diptendu
źródło
4

Obliczanie odległości Levenshteina było jednym z pierwszych problemów, które rozwiązałem podczas programowania dynamicznego; Myślę, że pod względem złożoności jest to przyzwoity kolejny krok od sekwencji Fibonacciego.

http://en.wikipedia.org/wiki/Levenshtein_distance

David Winslow
źródło