Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pa:laboratoare:shortest-paths-problem [2022/04/30 00:56]
darius.neatu
pa:laboratoare:shortest-paths-problem [2025/05/14 20:35] (current)
darius.neatu [Shortest-paths: variants]
Line 132: Line 132:
  
  
-> **Destinație unică** / **single-source ​shortest-paths problem**: Se dă un graf $G = (V, E)$ și un nod special $destination$,​ considerat destinație. Se cere calculul distanței de la fiecare nod la nodul **destination**. Putem reduce această problema la cea de **sursă unică** (pentru graf orientat, trebuie să folosim graful transpus).+> **Destinație unică** / **single-destination ​shortest-paths problem**: Se dă un graf $G = (V, E)$ și un nod special $destination$,​ considerat destinație. Se cere calculul distanței de la fiecare nod la nodul **destination**. Putem reduce această problema la cea de **sursă unică** (pentru graf orientat, trebuie să folosim graful transpus).
  
 \\ \\
Line 248: Line 248:
 path = RebuildPath(source,​ destination,​ p) path = RebuildPath(source,​ destination,​ p)
 </​code>​ </​code>​
- 
 Analog se reconstitue drumul și dacă suntem pe cazul cu surse multiple, destinații multiple, unde tabloul $p$ este o matrice, iar atunci când cautăm un drum care începe cu nodul $source$, folosim doar elementele de pe linia $p[source]$. Analog se reconstitue drumul și dacă suntem pe cazul cu surse multiple, destinații multiple, unde tabloul $p$ este o matrice, iar atunci când cautăm un drum care începe cu nodul $source$, folosim doar elementele de pe linia $p[source]$.
  
Line 309: Line 308:
 Mai există o varianta a problemei pe care dorim să o menționăm. Avem **k** surse (sau destinații),​ unde **k << n ** (k mult mai mic decât n - de exemplu, $k = 10$ constant) și ne interesează să găsim distanța pentru fiecare nod din graf către cea mai apropiată sursă. Mai există o varianta a problemei pe care dorim să o menționăm. Avem **k** surse (sau destinații),​ unde **k << n ** (k mult mai mic decât n - de exemplu, $k = 10$ constant) și ne interesează să găsim distanța pentru fiecare nod din graf către cea mai apropiată sursă.
  
-O abordare naivă ar rula de **k** ori un algorthm de drumuri minime (de exemplu, Dijkstra) și pentru fiecare nod ar reține minimul dintre cele k distanțe calculate pentru un nod. Complexitatea este $O(k * complexitate_algoritm$).+O abordare naivă ar rula de **k** ori un algorthm de drumuri minime (de exemplu, Dijkstra) și pentru fiecare nod ar reține minimul dintre cele k distanțe calculate pentru un nod. Complexitatea este $O(k * complexitate\_algoritm$).
  
 O optimizare pe care o putem facem, este să adaugăm un nod fictiv $S$ și să îl unim cu fiecare dintre cele **k** noduri cu muchie de cost **0**. În noul graf format, dacă vom rula un algoritm să găsim toate distanțele de la nodul **S** la celelalte noduri din graf, rezolvăm și problema inițială. O optimizare pe care o putem facem, este să adaugăm un nod fictiv $S$ și să îl unim cu fiecare dintre cele **k** noduri cu muchie de cost **0**. În noul graf format, dacă vom rula un algoritm să găsim toate distanțele de la nodul **S** la celelalte noduri din graf, rezolvăm și problema inițială.
pa/laboratoare/shortest-paths-problem.1651269382.txt.gz · Last modified: 2022/04/30 00:56 by darius.neatu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0