E N D
PrezentareaAlgoritmului 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 vedemnodurileprin care am trecut (viz[x]=1); • se inițializeazăvectorul s astfel : s[x]=0, s[i]=x (pentrui!=x ); → la final, vectorul s vareprezentașivectorul de tați; Pasul 2: • se alegemuchia de cost minim cu un capăt selectat; • se marchează capătulneselectat; • se actualizeazăvectoriivizși s; • se reiapasul 2 de n-2 ori (n fiind numărul de noduri din graf) ;
Exemplu Pentrugrafulurmător se vaaplicaAlgoritmullui Prim, plecând din nodul 6, iar la sfârșit se vaafișa arborelerezultat. s: 6 6 6 6 6 06 6 6 6 6 1 2 3 4 5 67 8 9 10 11 viz: 0 0 0 0 010 0 0 0 0 1 2 3 4 5 6 7 8 9 10 11 PrezentareaAlgoritmului
s: 5 5 6 5 6 0 6 6 6 6 6 1 2 3 4 5 67 8 9 10 11 viz: 0 0 0 0 1 1 0 0 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 6 6 1 2 3 4 5 67 8 9 10 11 viz: 1 0 0 0 1 1 0 0 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 67 8 9 10 11 viz: 1 0 1 0 1 1 0 0 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 67 8 9 10 11 viz: 1 0 1 0 1 1 0 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 12 3 4 5 67 8 9 10 11 viz: 1 0 1 0 1 1 0 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 311 11 8 12 3 4 5 67 8 9 10 11 viz: 1 0 1 0 1 1 0 11 0 1 1 2 3 4 5 6 7 89 10 11 Prima Pagină a Exemplului
s: 5 3 1 5 6 0 6 311 11 8 1 2 3 4 5 67 8 9 10 11 viz: 111 0 1 1 0 11 0 1 123 4 5 6 7 89 10 11 Prima Pagină a Exemplului
s: 531 5 6 0 10 311118 1 2 3 4 5 67 8 9 1011 viz: 111 0 1 1 0 1111 123 4 5 6 7 891011 Prima Pagină a Exemplului
s: 531 7 6 0 10311118 1 2 3 4 5 678 9 1011 viz: 111 0 1 111111 123 4 5 6 7891011 Prima Pagină a Exemplului
s: 531 7 6 0 10311118 1 2 345 678 9 1011 viz: 111 11 111111 123 4 5 6 7891011 Prima Pagină a Exemplului
Arborele de cost minim, cu rădăcina 6, estecel din figura de maijos. Prima Pagină a Exemplului
Ai gresitnodul ales. Incearcă din nou. Alegenodulpe care l-ai ales ȋnainte de celgreșit. 6 5 1 3 8 2 11 9 10 7
CodulAlgoritmului int a[50][50], s[100], viz[100], oo=4000, n; void Prim(int x) {inti, 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;}
RealizatoriiProiectului • Laza Andrei • Andrei Cosmin