Differences

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

Link to this comparison view

pa:laboratoare:laborator-02 [2021/03/08 22:59]
darius.neatu [Importanță – aplicații practice]
pa:laboratoare:laborator-02 [2022/03/01 23:42] (current)
darius.neatu [Laborator 02 : Greedy]
Line 1: Line 1:
 ====== Laborator 02 : Greedy====== ====== Laborator 02 : Greedy======
-Responsabili:​ 
-  * [[neatudarius@gmail.com|Darius-Florentin Neațu (2017-2021)]] 
-  * [[radunichita99@gmail.com | Radu Nichita (2021)]] 
-  * [[cristianolaru99@gmail.com | Cristian Olaru (2021)]] 
-  * [[mirunaelena.banu@gmail.com ​ | Miruna-Elena Banu (2021)]] 
-  * [[maraioana9967@gmail.com | Mara-Ioana Nicolae (2021)]] 
-  * [[stefanpopa2209@gmail.com | Ștefan Popa (2018-2020)]] 
  
-Autori: 
-  * [[rotarualexandruandrei94@gmail.com| Alex Rotaru (2018)]] 
-  * [[neatudarius@gmail.com|Darius-Florentin Neațu (2018)]] 
-  * [[visanr95@gmail.com|Radu Vișan (2018)]] 
-  * [[cristb@gmail.com|Cristian Banu (2018)]] 
-  ​ 
 ===== Obiective laborator ===== ===== Obiective laborator =====
   *Înțelegerea noțiunilor de bază legate de tehnica greedy    *Înțelegerea noțiunilor de bază legate de tehnica greedy
Line 27: Line 14:
   * Toate bucățile de cod prezentate în partea introductivă a laboratorului (înainte de exerciții) au fost testate. Cu toate acestea, este posibil ca din cauza mai multor factori (formatare, caractere invizibile puse de browser etc.) un simplu copy-paste să nu fie de ajuns pentru a compila codul.   * Toate bucățile de cod prezentate în partea introductivă a laboratorului (înainte de exerciții) au fost testate. Cu toate acestea, este posibil ca din cauza mai multor factori (formatare, caractere invizibile puse de browser etc.) un simplu copy-paste să nu fie de ajuns pentru a compila codul.
   * Vă rugăm să compilați **DOAR** codul de pe GitHub. Pentru raportarea problemelor,​ contactați unul dintre maintaineri. ​   * Vă rugăm să compilați **DOAR** codul de pe GitHub. Pentru raportarea problemelor,​ contactați unul dintre maintaineri. ​
-  * Pentru orice problemă legată de conținutul acestei pagini, vă rugam să dați e-mail unuia dintre responsabili.+  * Pentru orice problemă legată de conținutul acestei pagini, vă rugăm ​să dați e-mail unuia dintre responsabili.
  
 ===== Importanță – aplicații practice ===== ===== Importanță – aplicații practice =====
Line 37: Line 24:
  
 “greedy” = “lacom”. Algoritmii de tip greedy vor să construiască într-un mod cât mai rapid soluția unei probleme. Ei se caracterizează prin luarea unor decizii rapide care duc la găsirea unei potențiale soluții a problemei. Nu întotdeauna asemenea decizii rapide duc la o soluție optimă; astfel ne vom concentra atenția pe identificarea acelor anumite tipuri de probleme pentru care se pot obține soluții optime. “greedy” = “lacom”. Algoritmii de tip greedy vor să construiască într-un mod cât mai rapid soluția unei probleme. Ei se caracterizează prin luarea unor decizii rapide care duc la găsirea unei potențiale soluții a problemei. Nu întotdeauna asemenea decizii rapide duc la o soluție optimă; astfel ne vom concentra atenția pe identificarea acelor anumite tipuri de probleme pentru care se pot obține soluții optime.
-În general există mai multe soluții posibile ale problemei. Dintre acestea se pot selecta doar anumite soluții optime, conform unor anumite criterii. Algoritmii greedy se numără printre cei mai direcți algoritmi posibili. Ideea de bază este simplă: având o problema ​de optimizare, de calcul al unui cost minim sau maxim, se va alege la fiecare pas decizia cea mai favorabilă,​ fără a evalua global eficiența soluţiei. Scopul este de a găsi una dintre acestea sau dacă nu este posibil, atunci o soluție cât mai apropiată, conform criteriului optimal impus.+În general există mai multe soluții posibile ale problemei. Dintre acestea se pot selecta doar anumite soluții optime, conform unor anumite criterii. Algoritmii greedy se numără printre cei mai direcți algoritmi posibili. Ideea de bază este simplă: având o problemă ​de optimizare, de calcul al unui cost minim sau maxim, se va alege la fiecare pas decizia cea mai favorabilă,​ fără a evalua global eficiența soluţiei. Scopul este de a găsi una dintre acestea sau dacă nu este posibil, atunci o soluție cât mai apropiată, conform criteriului optimal impus.
  
 Trebuie înțeles faptul că rezultatul obținut este optim doar dacă un optim local conduce la un optim global. În cazul în care deciziile de la un pas influențează lista de decizii de la pasul următor, este posibilă obținerea unei valori neoptimale. În astfel de cazuri, pentru găsirea unui optim absolut se ajunge la soluții supra-polinomiale. De aceea, dacă se optează pentru o astfel de soluție, algoritmul trebuie însoțit de o demonstrație de corectitudine. Trebuie înțeles faptul că rezultatul obținut este optim doar dacă un optim local conduce la un optim global. În cazul în care deciziile de la un pas influențează lista de decizii de la pasul următor, este posibilă obținerea unei valori neoptimale. În astfel de cazuri, pentru găsirea unui optim absolut se ajunge la soluții supra-polinomiale. De aceea, dacă se optează pentru o astfel de soluție, algoritmul trebuie însoțit de o demonstrație de corectitudine.
Line 261: Line 248:
   * ** complexitate spațială **: depinde de algoritmul de sortare folosit.   * ** complexitate spațială **: depinde de algoritmul de sortare folosit.
  
 +
 +Problema se poate testa pe leetcode: [[https://​leetcode.com/​problems/​minimum-number-of-arrows-to-burst-balloons/​|Minimum Number of Arrows to Burst Balloons]] (altă poveste).
  
 ===== Concluzii şi observații ===== ===== Concluzii şi observații =====
Line 394: Line 383:
 Problema 3 de la tema PA 2017. Puteți descărca enunțul și checkerul de [[https://​ocw.cs.pub.ro/​courses/​_media/​pa/​teme/​pa2017_tema1.zip|aici]]. Problema 3 de la tema PA 2017. Puteți descărca enunțul și checkerul de [[https://​ocw.cs.pub.ro/​courses/​_media/​pa/​teme/​pa2017_tema1.zip|aici]].
 </​spoiler>​ </​spoiler>​
 +
 +<spoiler Two City Scheduling>​
 +Puteți rezolva această problemă pe [[https://​leetcode.com/​problems/​two-city-scheduling/​ | leetcode]]
 +</​spoiler>​
 +
 ===== Referințe ===== ===== Referințe =====
  
 [0] Chapter **Greedy Algorithms**,​ “Introduction to Algorithms”,​ Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein [0] Chapter **Greedy Algorithms**,​ “Introduction to Algorithms”,​ Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein
  
pa/laboratoare/laborator-02.1615237181.txt.gz · Last modified: 2021/03/08 22:59 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