Programare dinamică

Curs
8/10 (1 vot)
Conține 1 fișier: pdf
Pagini : 11 în total
Cuvinte : 2974
Mărime: 400.05KB (arhivat)
Puncte necesare: 0
Profesor îndrumător / Prezentat Profesorului: Ruxandra Marinescu

Extras din curs

Metoda programãrii dinamice

Problemã generalã

Fie A si B douã multimi oarecare.

Fiecãrui element x.A urmeazã sã i se asocieze o valoare v(x).B.

Initial v este cunoscutã doar pe submultimea X.A, X.O.

Pentru fiecare x.AX sunt cunoscute:

Ax.A : multimea elementelor din A de a cãror valoare depinde v(x);

fx : functie care specificã dependenta de mai sus. Dacã Ax={a1,...,ak}, atunci v(x)=fx(v(a1),...,v(ak)).

Se mai dã z.A.

Se cere sã se calculeze, dacã este posibil, valoarea v(z).

Exemplu. Considerãm:

A={1,2,...,5};

X={1,2};

A3={1,2,4}; A4={1,2}; A5={1,3};

Elementele din X au asociatã valoarea 1.

Fiecare functie fx calculeazã v(x) ca fiind suma valorilor elementelor din Ax. Alegem z=5. O ordine posibilã de a considera elementele lui AX astfel încât sã putem calcula valoarea asociatã lor este: 4,3,5. Astfel:

v(4) = v(1) + v(2) = 2,

v(3) = v(4) + v(1) + v(2) = 4,

v(5) = v(1) + v(3) = 5

Lucrurile devin mai clare dacã reprezentãm problema pe un graf de dependente. Vârfurile corespund elementelor din A, iar descendentii unui vârf x sunt vârfurile din Ax. Vârfurile din X apar subliniate.

Problema enuntatã nu are totdeauna solutie, asa cum se vede pe graful de dependente de mai jos, în care existã un circuit care nu permite calculul lui v în z=3.

4

5

3

2

1

1

3

4

2

2

Observatii:

- A poate fi chiar infinitã;

- B este de obicei N, Z, R, {0,1} sau un produs cartezian;

- fx poate fi un minim, un maxim, o sumã etc.

Pentru orice x.A, spunem cã x este accesibil dacã, plecând de la X, poate fi calculatã valoarea v(x). Evident, problema are solutie dacã si numai dacã z este accesibil.

Pentru orice x.A, notãm prin Ox multimea vârfurilor observabile din x, adicã multimea vârfurilor y pentru care existã un drum de la y la x (a elementelor de a cãror valoare depinde valoarea lui x).

Problema enuntatã are solutie dacã si numai dacã:

1) Oz nu are circuite;

2) vârfurile din Oz în care nu sosesc arce fac parte din X.

. Încercare de rezolvare cu metoda Divide et Impera

Este folositã o procedurã DivImp, apelatã prin DivImp(z).

procedure DivImp(x)

for toti y.AxX

DivImp(y)

calculeazã v(x) conform functiei fx

end;

Apare un avantaj: sunt parcurse doar vârfurile din Oz. Dezavantajele sunt însã decisive pentru renuntarea la aceastã încercare:

- algoritmul nu se terminã pentru grafuri ciclice;

- valoarea unui vârf poate fi calculatã de mai multe ori, ca de exemplu pentru situatia:

Este evident cã problema se transpune imediat la grafurile de dependentã: se cere o parcurgere a vârfurilor grafului astfel încât dacã existã un arc de la i la j, atunci i trebuie vizitat/prelucrat înaintea lui j (adicã o sortare topologicã a vârfurilor grafului indus de vârfurile observabile din z).

3

. Solu.ie: Sortarea topologicã pentru graful indus de vârfurile observabile din z

Etapele sunt urmãtoarele:

- identificãm Gz = subgraful asociat lui Oz ;

- aplicãm sortarea topologicã.

Observatii:

- problema are solutie dacã si numai dacã graful este aciclic;

- dacã existã solutie, ea nu este neapãrat unicã.

Ar fi totusi mai bine dacã :

- am cunoaste de la început Gz;

- forma grafului ar permite o parcurgere mai simplã.

Preview document

Programare dinamică - Pagina 1
Programare dinamică - Pagina 2
Programare dinamică - Pagina 3
Programare dinamică - Pagina 4
Programare dinamică - Pagina 5
Programare dinamică - Pagina 6
Programare dinamică - Pagina 7
Programare dinamică - Pagina 8
Programare dinamică - Pagina 9
Programare dinamică - Pagina 10
Programare dinamică - Pagina 11

Conținut arhivă zip

  • Programare Dinamica.pdf

Alții au mai descărcat și

Manual Grafuri

1. Preliminarii 1.1. Algoritmi Toti algoritmii descrisi în cadrul acestei lucrari folosesc structuri de date de tip graf. Unele descrieri sînt...

Manual Limbaj C

1. Generalitati asupra limbajului C 1.1. Introducere Limbajul C a fost creat la începutul anilor '70 de catre Brian W Kernigham si Dennis M...

Protocoale Peer to Peer

Protocolul P2P implică interacţiunea a două entităţi prin schimbul de mesaje, numite PDU (Protocol Data Unit). Fiecare PDU conţine un antet...

Noțiuni despre Algoritmi și Programare Structurată

2.1. Noţiuni introductive Rezolvarea problemelor cu ajutorul calculatorului presupune parcurgerea mai multor etape: 1. analiza problemei (cu...

Variabile

6. Variabile Prin variabilă se înţelege o dată a cărei valoare se poate schimba pe parcursul execuţiai programului. Unei variabile i se atribuie...

Instrucțiunile limbajului C++

5. Operaţii de intrare/ieşire În C, spre deosebire de alte limbaje, sistemul intrare/ieşire nu este parte a limbajului, ci este introdus printr-un...

Instrucțiuni

O instrucţiune este o parte a programului care poate fi executată. Aceasta înseamnă că o instrucţiune specifică o acţiune. Standardul ANSI C şi cel...

Instrucțiuni de intrare

7. Instrucţiuni de iterare Instrucţiunile de iterare (ciclare) permit ca un grup de instrucţiuni să se execute repetat, până se îndeplineşte o...

Te-ar putea interesa și

Teoria și Practica Riscului în Banca Comercială

ÎNTRODUCERE Actualitatea temei de cercetare şi gradul de studiere a acesteia Actualitatea temei de cercetare În anii 90 ai secolului trecut, în...

Abordarea Sistemelor Energocibernetice în Concepție Arhemică în Vederea Creșterii Eficienței Investițiilor

Data fiind importanta strategica a Sectorului Energetic National în dezvoltarea pe baze durabile a economiei românesti, evolutia acestuia trebuie...

Validarea datelor de intrare și manipularea erorilor în programarea web

INTRODUCERE Într-o epocă modernă ca aceasta în care se poate rezolva totul cu ajutorul internetului printr-un simplu ”click” - o singură apăsare a...

Site Web Dinamic-Educational Sportiv

INTRODUCERE Utilizarea unui serviciu de un tip oarecare in Internet implica prezenta a doi parteneri hardware (calculatoare ) care comunica: •...

Programare dinamică

Programarea dinamica face parte dintr-o categorie de metode matematice numite metode de scufundare.O problemã de programare dinamicã contine...

Marketing Direct

1.Metode de culegere si prelucrare a datelor Toate adaptarile modelarii matematice la fenomenele economice concrete au la baza o conceptie mai...

Structuri de Date și Algoritmi

1. Conceptul de dată În informatică, prin dată, se desemnează un model de reprezentare a informaţiei, model cu care se poate opera pentru a obţine...

Structuri de Date și Alogoritmi

EXTENSII ALE LIMBAJULUI C++ A. Operaţii de intrare-ieşire specifice limbajului C++ I. Noţiuni teoretice Limbajul C++ furnizează o bibliotecă...

Ai nevoie de altceva?