ALGORITMUL LUI PRIM PREZENTAREA ALGORITMULUI Algoritmul lui Prim
- Slides: 17
ALGORITMUL LUI PRIM
PREZENTAREA ALGORITMULUI Algoritmul lui Prim este un algoritm din teoria grafurilor care găsește arborele parțial de cost minim al unui graf conex ponderat. Înseamnă găsirea submulțimei muchiilor care formează un arbore ce include toate vârfurile și al cărui cost este minim. Pasul 1: - se alege un vârf de start (x); - se marchează vârful ȋntr-un vector viz, ȋn care vedem nodurile prin care am trecut (viz[x]=1); - se inițializează vectorul s astfel : s[x]=0, s[i]=x (pentru i!=x ); → la final, vectorul s va reprezenta și vectorul de tați; Pasul 2: - se alege muchia de cost minim cu un capăt selectat; - se marchează capătul neselectat; - se actualizează vectorii viz și s; - se reia pasul 2 de n-2 ori (n fiind numărul de noduri din graf) ;
EXEMPLU Pentru graful următor se va aplica Algoritmul lui Prim, plecând din nodul 6, iar la sfârșit se va afișa arborele rezultat. s: 6 6 6 0 6 6 6 1 2 3 4 5 6 7 8 9 10 11 viz: 0 0 0 0 0 1 2 3 4 5 6 7 8 9 10 11 Prezentarea Algoritmului
s: 5 5 6 0 6 6 6 1 2 3 4 5 6 7 8 9 10 11 viz: 0 0 1 1 0 0 0 1 2 3 4 5 6 7 8 9 10 11 Prima Pagină a Exemplului
s: 5 5 1 5 6 0 6 6 6 1 2 3 4 5 6 7 8 9 10 11 viz: 1 0 0 0 1 2 3 4 5 6 7 8 9 10 11 Prima Pagină a Exemplului
s: 5 3 1 5 6 0 6 3 6 6 6 1 2 3 4 5 6 7 8 9 10 11 viz: 1 0 1 1 0 0 0 1 2 3 4 5 6 7 8 9 10 11 Prima Pagină a Exemplului
s: 5 3 1 5 6 0 6 3 8 6 8 1 2 3 4 5 6 7 8 9 10 11 viz: 1 0 1 1 0 0 0 1 2 3 4 5 6 7 8 9 10 11 Prima Pagină a Exemplului
s: 5 3 1 5 6 0 6 3 11 11 8 1 2 3 4 5 6 7 8 9 10 11 viz: 1 0 1 1 0 0 1 1 2 3 4 5 6 7 8 9 10 11 Prima Pagină a Exemplului
s: 5 3 1 5 6 0 6 3 11 11 8 1 2 3 4 5 6 7 8 9 10 11 viz: 1 0 1 1 2 3 4 5 6 7 8 9 10 11 Prima Pagină a Exemplului
s: 5 3 1 5 6 0 6 3 11 11 8 1 2 3 4 5 6 7 8 9 10 11 viz: 1 1 1 0 1 1 2 3 4 5 6 7 8 9 10 11 Prima Pagină a Exemplului
s: 5 3 1 5 6 0 10 3 11 11 8 1 2 3 4 5 6 7 8 9 10 11 viz: 1 1 1 0 1 1 1 2 3 4 5 6 7 8 9 10 11 Prima Pagină a Exemplului
s: 5 3 1 7 6 0 10 3 11 11 8 1 2 3 4 5 6 7 8 9 10 11 viz: 1 1 1 0 1 1 1 1 2 3 4 5 6 7 8 9 10 11 Prima Pagină a Exemplului
s: 5 3 1 7 6 0 10 3 11 11 8 1 2 3 4 5 6 7 8 9 10 11 viz: 1 1 1 2 3 4 5 6 7 8 9 10 11 Prima Pagină a Exemplului
Arborele de cost minim, cu rădăcina 6, este cel din figura de mai jos. Prima Pagină a Exemplului
AI GRESIT NODUL ALES. INCEARCĂ DIN NOU. Alege nodul pe care l-ai ales ȋnainte de cel greșit. 6 5 1 3 8 2 11 9 10 7
CODUL ALGORITMULUI int a[50], s[100], viz[100], oo=4000, n; void Prim(int x) {int i, j, p, min, k, c=0; viz[x]=1; for(i=1; i<=n; i++) s[i]=x; s[x]=0; for(k=1; k<=n-1; k++) {min=oo; p=0; for(i=1; i<=n; i++) {if(!viz[i] && min>a[i][s[i]]) {min=a[i][s[i]]; p=i; } viz[p]=1; } for(i=1; i<=n; i++) if(!viz[i] && a[i][s[i]]>a[i][p]) s[i]=p; c=c+min; } cout<<c<<endl; }
- Algoritmul greedy
- Algoritmul lui prim
- Algoritmul lui prim
- Proprietatile algoritmului
- Structura calculatorului personal
- Prezentarea unui blog
- Matricea costurilor
- Abdomen impartire
- Algoritmul kruskal
- Arborescente
- Algoritmul bellman ford
- Algoritmul kmp
- Algoritmul dijkstra
- Ce este algoritmul
- Calculator matematic cu radical
- Algoritmul des
- Razvan stoenescu
- Sustinerea unui discurs