Differences

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

Link to this comparison view

sd-ca:laboratoare:lab-06 [2022/04/05 21:55]
daniela.becheanu [Laborator 6 - Grafuri - Basics]
sd-ca:laboratoare:lab-06 [2024/04/12 12:13] (current)
iarina_ioana.popa [Bibliografie]
Line 2: Line 2:
  
 Responsabili Responsabili
-  * [[maximilian.banu@stud.acs.upb.ro|Maximilian Banu]] +  * [[popaiarina13@gmail.com|Iarina-Ioana Popa]] 
-  * [[becheanudaniela04@gmail.com|Daniela Becheanu]]+  * [[stef.dascalu@gmail.com|Ștefan-Teodor Dascălu]]
  
 ===== Obiective ===== ===== Obiective =====
Line 229: Line 229:
 De remarcat faptul că, pentru ambele tipuri de parcurgeri, complexitatea este cea menționată ''​O(|E|+|V|)''​ **numai în cazul în care grafurile sunt reținute ca liste de adiacență**. În acest caz, lista corespunzătoare nodului x reține numai vecinii nodului x.  De remarcat faptul că, pentru ambele tipuri de parcurgeri, complexitatea este cea menționată ''​O(|E|+|V|)''​ **numai în cazul în care grafurile sunt reținute ca liste de adiacență**. În acest caz, lista corespunzătoare nodului x reține numai vecinii nodului x. 
 În cazul matricei de adiacență,​ pentru a parcurge vecinii unui nod x, trebuie să parcurgem toate nodurile. Această limitare duce la o complexitate de ''​O(|V|^2)''​ În cazul matricei de adiacență,​ pentru a parcurge vecinii unui nod x, trebuie să parcurgem toate nodurile. Această limitare duce la o complexitate de ''​O(|V|^2)''​
-</​note> ​+</​note>​
  
-===== Schelet ​===== +===== Algoritmul Floyd-Warshall ​===== 
-{{:sd-ca:​laboratoare:​lab06_graph_1_skel.zip|}} +Algoritmul Floyd-Warshall este un algoritm folosit pentru căutarea celor mai scurte căi într-un graf orientat ce are cost pe fiecare muchie (costul poate fi pozitiv sau negativ, dar nu pot exista cicli negativi)
-===== Exerciţii =====+Algortimul compară toate căile posibile din graf între toate perechile de noduri.
  
 +=== Pseudocod ===
 +<​code>​
 +
 +dist[V][V]  ​  // Matricea de distanțe minime, inițializate cu INFINIT
 +pentru fiecare nod v
 +  dist[v][v] = 0
 +
 +pentru fiecare pereche de noduri (u, v)
 +  dist[u][v] = cost(u, v)
 +
 +pentru k între 0 și |V| – 1
 +  pentru i între 0 și |V| – 1
 +     pentru j între 0 și |V| – 1
 +        dacă (dist[i][k] + dist[k][j]) < dist[i][j] ​
 +          dist[i][j] = dist[i][k] + dist[k][j]
 +</​code>​
 +
 +
 +===== Schelet =====
 <note important>​ <note important>​
-Pentru a rezolva laboratorul folosind ​Github Classroom, ​urmați [[sd-ca:​laboratoare/​tutorial-github-classroom#​adaugarea_solutiei_unui_laborator|acești pași]]Asigurați-vă ca ați creat branchul pentru acest laborator **din branchul ''​master''​** al repository-ului vostru.+Daca folositi **Github Classroom**va rugam sa va actualizati scheletul cu cel de mai josCel din repo-ul clonat initial nu este la cea mai recenta versiune.
 </​note>​ </​note>​
 +{{:​sd-ca:​laboratoare:​lab6_skel_v2.zip|Scheletul de laborator}}
 +===== Exerciţii =====
  
 <​note>​ <​note>​
-Fiecare laborator va avea unul sau doua exerciții publice şun pool de subiecte ascunsedin care asistentul poate alege cum se formează celelalte puncte ale laboratorului.+Trebuie să vă creați cont de [[https://​lambdachecker.io | Lambda Checker]]dacă nu v-ați creat deja, pe care îl veți folosi la SD pe toată durata semestrului. Aveti grija sa selectati contestul corect la submit, si anume **[[https://​beta.lambdachecker.io/​contest/​72/​problems?​page=1 |SDA-Lab-6]]**
 </​note>​ </​note>​
  
-1) [**2.5p**] Implementați,​ plecând de la scheletul de cod, graful reprezentat prin matrice de adiacență.+1) [**2.5p**] Implementați,​ plecând de la scheletul de cod, graful reprezentat prin matrice de adiacență ​(**Graph implementation using list** pe Lambda Checker).
  
-2) [**2.5p**] Implementați,​ plecând de la scheletul de cod, graful reprezentat prin liste de adiacență.+2) [**2.5p**] Implementați,​ plecând de la scheletul de cod, graful reprezentat prin liste de adiacență ​(**Graph implementation using matrix** pe Lambda Checker).
  
-3) [**1p**] Implementați parcurgerea in adâncime (DFS) a unui graf implementat cu matrice de adiacență.+3) [**1p**] Implementați parcurgerea in adâncime (DFS) a unui graf implementat cu matrice de adiacență ​(**DFS** pe Lambda Checker).
  
-4) [**1p**] Implementați parcurgerea in lățime (BFS) a unui graf implementat cu listă de adiacență.+4) [**1p**] Implementați parcurgerea in lățime (BFS) a unui graf implementat cu listă de adiacență ​(**BFS** pe Lambda Checker).
  
-5) [**2p - bonus**] Implementați algoritmul Floyd-Warshall pe un graf reprezentat printr-o matrice de adiacență(pentru a primi punctajul, implementați soluția local, apoi urcați codul pe GitHub)+5) [**2p - bonus**] Implementați algoritmul Floyd-Warshall pe un graf reprezentat printr-o matrice de adiacență (**FloydWarshall** ​pe Lambda Checker).
 ===== Interviu ===== ===== Interviu =====
  
Line 268: Line 289:
     - [[http://​en.wikipedia.org/​wiki/​Depth-first_search | DFS ]]     - [[http://​en.wikipedia.org/​wiki/​Depth-first_search | DFS ]]
     - [[https://​en.wikipedia.org/​wiki/​Floyd%E2%80%93Warshall_algorithm | Algoritmul Floyd-Warshall ]]     - [[https://​en.wikipedia.org/​wiki/​Floyd%E2%80%93Warshall_algorithm | Algoritmul Floyd-Warshall ]]
-    - [[https://​ro.wikipedia.org/​wiki/​Algoritmul_lui_Kruskal | Algoritmul lui Kruskal ]] 
sd-ca/laboratoare/lab-06.1649184945.txt.gz · Last modified: 2022/04/05 21:55 by daniela.becheanu
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