Sunteți pe pagina 1din 39

Analiza algoritmilor

Ștefan Trăușan-Matu
trausan@gmail.com
stefan.trausan@upb.ro
Ce au în
comun?
M.C.Escher
Ce au în comun?
• Rezolvă anumite probleme
• Sunt artefacte – produse umane
• Sunt produse inginerești M.C.Escher

• Sunt supuse unor condiții de funcționare - date


• Unele includ programe de calculator - algoritmi
• Trebuie să îndeplinească niște condiții de fiabilitate și performanță
• Necesită calcule matematice
Ce au în comun?
• Rezolvă anumite probleme
• Sunt artefacte – produse umane
• Sunt produse inginerești M.C.Escher

• Sunt supuse unor condiții de funcționare - date


• Unele includ programe de calculator - algoritmi
• Trebuie să îndeplinească niște condiții de fiabilitate și performanță
• Necesită calcule matematice
Probleme
• Analiză
• Decizii
• Optimizări
• Alocare de resurse
• Drumuri minime
• Optimalitatea rețelelor
• Construcție
• Jocuri
• Șah - DeepBlue
• GO - Monte Carlo Tree Search
• Conectivitate
• Prelucrarea limbajului natural
• Analiza erorilor
Rețele sociale
Analiza rețelelor sociale

7
Visualization of the routing paths of the Internet
(Andrew Lenharth, Donald Nguyen, And Keshav Pingali, 2016)
Analiza discuțiilor într-un forum

9
Deep learning - Gradient descend
Problemă: găsirea de comunități
într-o rețea socială
I

A
J
G

B
K

C
H
L
D

F
Idee: Detectarea componentele tare conexe
I

A
J
G

B
K

C
H
L
D

F 12
Deci, pentru o problemă trebuie
1. Să găsim o idee de abstractizare a problemei
Deci, pentru o problemă trebuie
1. Să găsim o idee de abstractizare a problemei
2. Să găsim un algoritm de rezolvare
Algoritmul lui Kosaraju pentru
determinarea componentelor tare conexe
CTC(G)
Parc-ad(G)
GT=Transpune(G)
Parc-ad(GT) în ordinea descrescătoare a timpilor de finiș de la primul
Parc-ad
Sfârșit

Componentele conexe sunt reprezentate de padurea de arbori generati


de Parc-ad(GT)
15
Deci, pentru o problemă trebuie
1. Să găsim o idee de abstractizare a problemei
2. Să găsim un algoritm de rezolvare
3. Algoritmul:
• să rezolve corect problema

M.C.Escher
Corectitudine algoritm Kosaraju (1)
Teoremă: Algoritmul CTC calculează corect componentele tare
conexe ale unui graf G = (V,E).
Dem. prin inducție după nr. de arbori de adâncime găsiți de DFS
al GT că vârfurile din fiecare arbore formează o CTC:
Fiecare pas demonstrează că arborele format în acel pas e o CTC,
presupunând că toți arborii produși deja sunt CTC.
P1: trivial pentru că arbori anteriori.
Pn => Pn+1: Fie arborele T obținut in pasul curent având rădăcina r.
Notăm Cr = {vV | (v) = r}.
17
Corectitudine algoritm Kosaraju (2)
Demonstrăm că u T u Cr:

=> u Cr => u T:
u ∈ Cr   r..u  toate nodurile din Cr ajung în același arbore DFS (Arb(r)). Dar r ∈ Cr
și r e rădăcina lui T => ∀ u ∈ Cr => u ∈ T
<= u T => u Cr: demonstrăm că w a.î. f((w)) > f(r) sau f((w)) < f(r)
(adică w Cr) => w T
Dacă f((w)) > f(r) => la d(r), w e deja pus în CTC cu rădăcina (w) pt. că nodurile
sunt considerate în ordinea inversă a timpilor de finalizare => w ∉ T
Dacă f((w)) < f(r) => w ∉ T pt. că altfel, din w ∈ T =>  r..w în GT =>  w..r în G => r ∈
R(w), => f((w)) ≥ f((r)) = f(r) => T conține doar nodurile pt. care (w) = r => T
= Cr

18
Problemă: căutarea unei căi de la intrare la ieșire

Intrare
Ieșire
Algoritm de căutare 1
Algoritm de căutare 2
Deci, pentru o problemă trebuie
1. Să găsim o idee de abstractizare a problemei
2. Să găsim un algoritm de rezolvare
3. Algoritmul:
• să rezolve corect problema
• să fie cât mai eficienți din punct de vedere al
• timpului de execuție
• spațiului ocupat
Algoritmul lui Kosaraju

Complexitate
O(n+m)
n = numar noduri
m = numar muchii
24
Algoritm de căutare 3
Deci, pentru o problemă trebuie
1. Să găsim o idee de abstractizare a problemei
2. Să găsim un algoritm de rezolvare
3. Algoritmul:
• să se termine întotdeauna, pentru orice date
• să rezolve corect problema
• să fie cât mai eficienți din punct de vedere al
• timpului de execuție
• spațiului ocupat
Concluzii – sunt necesare
• Găsirea de idei de abstractizare/modelare => ÎNȚELEGERE și CREATIVITATE
• Analfabetul viitorului nu va mai fi cel care nu știe să citească,
ci cel care nu știe să înțeleagă. (Alvin Toffler)
Concluzii – sunt necesare
• Găsirea de idei de abstractizare/modelare
• Găsirea de algoritmi
• Refolosire
• CREATIVITATE
CREATIVITATE - Gândire laterală
http://www.edwdebono.com/lateral.htm

1. "You cannot dig a hole in a different place by digging the same hole deeper"
This means that trying harder in the same direction may not be as useful as changing direction. Effort in the same direction (approach) will not
necessarily succeed.

2. "Lateral Thinking is for changing concepts and perceptions"


With logic you start out with certain ingredients just as in playing chess you start out with given pieces. But what are those pieces? In most
real life situations the pieces are not given, we just assume they are there. We assume certain perceptions, certain concepts and certain
boundaries. Lateral thinking is concerned not with playing with the existing pieces but with seeking to change those very pieces. Lateral
thinking is concerned with the perception part of thinking. This is where we organise the external world into the pieces we can then 'process'.

3. "The brain as a self-organising information system forms asymmetric patterns. In such


systems there is a mathematical need for moving across patterns. The tools and processes of
lateral thinking are designed to achieve such 'lateral' movement. The tools are based on an
understanding of self-organising information systems."
This is a technical definition which depends on an understanding of self-organising information systems.

4. "In any self-organising system there is a need to escape from a local optimum in order to
move towards a more global optimum. The techniques of lateral thinking, such as
provocation, are designed to help that change.“
Gândirea paralelă http://www.edwdebono.com/lateral.htm
Parallel thinking is best understood in contrast to traditional argument or adversarial thinking.
With 'parallel thinking' both sides (or all parties0 are thinking in parallel in the same direction. There
is co-operative and co-ordinated thinking. The direction itself can be changed in order to give a full
scan of the situation. But at every moment each thinker is thinking in parallel with all the other
thinkers. There does not have to be agreement. Statements or thoughts which are indeed
contradictory are not argued out but laid down in parallel.In the final stage the way forward is
'designed' from the parallel thought that have been laid out.
A simple and practical way of carrying out 'parallel thinking' is the Six HatsTM method which is now
being used widely around the world both because it speeds up thinking and also because it is so
much more constructive then traditional argument thinking.
10-Oct-20 32
Viitorul profesiei de IT
• https://www.forbes.com/sites/pradeepgulipalli/2019/07/25/redesigning-your-tech-
careers-for-the-ai-era/

• If you are an IT professional, you should be prepared as traditional IT careers will likely
not exist in the future. Some activities will get automated, some augmented, and others
eliminated. This will mean that some jobs will be lost, some created, and others
transformed. If you're wondering how to prepare yourself for the AI era, below is a
simple approach to redesign your careers.

• Activities such as IT infrastructure scaling, maintenance, monitoring, controls, service


desk, aspects of database administration, etc. are already being intelligently automated
using algorithms. AIOps platforms that use machine learning to automate the repetitive
aspects of ITOps are finding adoption in enterprises. Several aspects of QA, QC, audits
can be more effectively performed by AI.
În final o întrebare:
Orice problemă se poate rezolva?
Concluzii – sunt necesare
• Găsirea de idei de abstractizare/modelare
• Este o problemă care se poate rezolva?
• Găsirea de algoritmi (Refolosire; CREATIVITATE)
• să se termine întotdeauna, pentru orice date
• să rezolve corect problema
• să fie cât mai eficienți din punct de vedere al
• timpului de execuție
• spațiului ocupat
Cuprinsul cursului
• Calculabilitate
• Probleme nedecidabile Este o problemă care se
• Funcții recursive poate rezolva?
• Mulțimi recursive și recursiv enumerabile
• Predicate decidabile, semi-decidabile și nedecidabile
• Analiza complexităţii algoritmilor
• Limite asimptotice spaţiu/timp ale complexităţii algoritmilor.
• Metode generale de analiză a complexităţii: recurenţe, substituţie, teorema master.
• Analiză amortizată Cât de complex este
• Teoria complexității algoritmul găsit?
• Algoritmi nedeterminişti, complexitate angelică.
• NP-completitudine.
• Clase de dificultate (spaţială şi temporală) a problemelor şi ierarhizarea acestor clase. Studii
de caz în clasificarea problemelor.
• Verificarea corectitudinii algoritmilor: Este corect algoritmul, găsește soluția?
• Corectitudine parţială şi totală, metode generale de verificare a corectitudinii algoritmilor.
• Inducţie structurală
Cum putea găsi o soluție aproximativă care
• Algoritmi de aproximare rezolvă acceptabil problema?
Bibliografie
• Cormen T.H, Leiserson C.E, Rivest R.L and Stein C, Introduction to
algorithms, Second Edition. MIT Press, 2001
• Cormen T.H, Leiserson C.E, Rivest R.L, Introducere în algoritmi, (traducere
a primei ediţii). Agora, 2000
• Giumale C., Introducere în analiza algoritmilor, Polirom, 2004
• Lehman, E., Leighton, F.T., Meyer, A.R., Mathematics for Computer
Science, 2017, https://courses.csail.mit.edu/6.042/spring17/mcs.pdf
• Papadimitriou C. Computational Complexity, Addison Wesley, 1994.
• Hofstadter, D.R., Godel, Escher, Bach: An Eternal Golden Braid, Basic
Books (tradusă și în românește la Humanitas, 2015)
• Knuth, D., Tratat de programare a calculatoarelor. Vol. 3: Sortare și
căutare, Teora, 2000
Evaluare
• Examen 4 puncte
• Laborator 6 puncte
• 50% din fiecare punctaj - condiție de absolvire atât a
laboratorului cât și a examenului

• 0,5 puncte bonus pentru activitatea de la curs


• Răspunsuri la curs
• Test(e) curs
ATENTIE!

• Prezentarile (“slide”-urile) de la curs sunt doar o parte din continutul


cursului, nu sunt suficiente pentru pregatirea teoriei pentru examen –
la curs se mai spun si lucruri in plus

S-ar putea să vă placă și