1 / 17

Algoritmul lui Prim

Algoritmul lui Prim. Prezentarea Algoritmului.

ishana
Download Presentation

Algoritmul lui Prim

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Algoritmullui Prim

  2. 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) ;

  3. 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

  4. 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

  5. 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

  6. 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

  7. 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

  8. 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

  9. 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

  10. 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

  11. 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

  12. 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

  13. 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

  14. Arborele de cost minim, cu rădăcina 6, estecel din figura de maijos. Prima Pagină a Exemplului

  15. 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

  16. 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;}

  17. RealizatoriiProiectului • Laza Andrei • Andrei Cosmin

More Related