Sunteți pe pagina 1din 61

Algoritmica Grafurilor

Rozica-Maria Tache
rozica.tache@fmi.unibuc.ro

Curs 1

Secția Matematică, anul I


2018-2019
Cursul de azi…

 Despre curs
 Aplicații
 Istoric
 Noțiuni de bază și notații
 Grafuri standard
Algoritmica grafurilor

https://math.meta.stackexchange.com/questions/6479/a-graph-map-of-math-se
Orele alocate materiei AG
• Curs – 2 ore/săptămână
• Laborator – 2 ore/la 2 săptămâni (cu semigrupa)
• Seminar – 2 ore/la 2 săptămâni (cu grupa)
Obiectiv general
• Însușirea principalelor noțiuni și rezultate legate de teoria
grafurilor, familiarizarea cu algoritmi fundamentali de grafuri și
aplicații ale acestora
Obiective specifice
• prezentarea principalelor noțiuni și rezultate + utilitatea
acestora;

• modelarea problemelor cu ajutorul grafurilor + elaborarea de


algoritmi de grafuri pentru rezolvarea acestora;

• justificare a corectitudinii algoritmilor propuși + estimarea


eficienței acestora;

• implementarea eficientă a algoritmilor.


Evaluare
Evaluare
Nota = 7.5p (Curs) + 2.5p (Laborator)
Curs (7.5p) - examenul final (scris, în sesiune):
- subiecte din curs;
- 1 problemă de seminar.

Laborator (2.5p):
- test pe calculator (în ultimul laborator al
fiecărei grupe).
 listă orientativă cu probleme, lăsate ca
temă pe parcursul semestrului;
 acces la material cu sintaxa STL, pus la
dispoziție de profesor;
 fără acces la internet/alte surse.
Condiții de promovare a examenului (prima sesiune):
- minim 5.00 la testul de laborator;
- minim 5.00 la examen.

Restanță:
- aceleași condiții;
- se poate păstra nota obținută întâia oară la testul de
laborator / examen (dacă aceasta a fost peste 5.00).
Programa
• Grafuri – noțiuni introductive
• Secvența gradelor unui graf
• Arbori
• Parcurgerea grafurilor
• Arbori parțiali de cost minim
• Drumuri minime în graf
• Grafuri bipartite
• Grafuri planare
• Grafuri euleriene. Grafuri hamiltoniene
• Cuplaje
• Fluxuri
Bibliografie
Teorie (curs)

• J. A. Bondy, U. S. R. Murty, Graph Theory,


Springer, 2008.

• J. A. Bondy, U. S. R Murty – Graph theory


with applications, The Macmillan Press, 1976

• D. R. Popescu, Combinatorică şi teoria


grafurilor, Editura Societatea de Ştiinţe
Matematice din România, Bucureşti, 2005.
Bibliografie
Probleme (seminar)
• D. West, Introduction to Graph Theory, (2nd Edition), Prentice
Hall, 2000.
• D.R. Popescu, R. Marinescu-Ghemeci, Combinatorică şi teoria
grafurilor prin exerciții și probleme, Ed. Matrixrom, 2014

Algoritmi (laborator)
• T.H. Cormen, C.E. Leiserson, R.R. Rivest, Introducere în
algoritmi, MIT Press, trad. Computer Libris Agora
• www.infoarena.ro
• http://campion.edu.ro/arhiva/
Cursul de azi…

 Despre curs
 Aplicații
 Istoric
 Noțiuni de bază și notații
 Grafuri standard
Ce este un graf? De ce Algoritmica Grafurilor?
Ce este un graf? De ce Algoritmica Grafurilor?
Ce este un graf? De ce Algoritmica Grafurilor?

Graf neorientat Graf orientat


• nod/vârf • nod/vârf
• muchie • arc
Aplicații Transport

Problema analizei
traficului:

- găsirea unei rute în


funcție de trafic;
- estimarea
traficului;

https://play.google.com/store/apps/details?id=ca.transopolis.londonrail
Articole:
https://arxiv.org/ftp/arxiv/papers/1406/1406.4828.pdf (2015)
https://hal.archives-ouvertes.fr/hal-01643369/document (2017)
Rețea de distribuție a gazelor naturale
Aplicații

https://britishbusinessenergy.co.uk/europe-natural-gas-network/
Aplicații Bioinformatică
Rețele biologice: proteine, gene, metabolism

- interacțiunea proteinelor în
drojdia de bere;

- efectul la eliminare:
letal
nu este letal
creștere lentă
necunoscut

H. Jeong et.al., 2001


https://www.nature.com/articles/35075138
Biochemical Pathways
Metabolic Pathways

http://staff.uz.zgora.pl/jleluk/animacje/show_thumbnails.pl.htm
G2

https://web.expasy.org/cgi-bin/pathways/show_image?G2
Chimie matematică
Aplicații  industria farmaceutică
 medicină

- grafuri chimice: componente organice în care sunt păstrate doar legăturile carbon-
carbon.

Exemple:

alcani

cicloalcani benzenoizi

fenilene fulerene nanotuburi


• Instrumente pentru:
→QSPR (quantitative structure–property relationship);
(punct de fierbere, volum molar, temperatură critică, presiune critică, etc.)
→QSAR (quantitative structure–activity relationship).
(generează predicții asupra activității biologice a unui compus chimic nou)
H. Gonzales-Diaz, C.R. Munteanu, Topological Indices for Medical Chemistry, Biology, Parasitology, Neurological and Social
Networks, Transworld Research Network, Kerala, 2010

- model QSAR pentru a prezice acțiunea medicamentelor (acuratețe de 89,8%);


- Folosite date experimentale pentru peste 950 perechi virus-medicament și peste 40 de
specii de viruși incluzând: HIV-1, hepatic B, C, Papilloma, Cytomegalovirus, Herpes
Simplex, Varicella-Zoster ( cancer).

G. Grassy, B. Calas, A. Yasri, R. Lahana, J. Woo, S. Iyer, M. Kaczorek, F. Floćh, R. Buelow, Computer-assisted rational design of
immunosuppressive compounds, Nat. Biotechnol., 16 (1998) 748-752

280.000 componente
27 descriptori (ai topologiei grafului asociat componentei chimice)
26 peptide

5 sintetizate
teste clinice
una dintre aceste structuri: de 100 de ori mai activ decât cel mai bun
imunosupresor existent pe piață
Aplicații Brain network

- muchiile pot fi:


- conexiuni între diferite regiuni ale creierului;
(functional connectivity)

http://www.kurzweilai.net/rain-man-like-
brains-mapped-with-network-analysis
- dependențe statistice între semnale neurofiziologice;
(structural connectivity)

- influența pe care un sistem neuronal o exercită asupra altuia.

https://www.humanbrainmapping.org/files/2017/ED%20Courses/Course%20Materials/BrainGraphs_Fornito_Alex.pdf
Scopul: analiza grafului rezultat

A. Fornito, A. Zalesky, Breakspear, Nat. Rev. Neurosci, 2015


A. Fornito, A. Zalesky, E. Bullmore, Fundamentals of Brain Network Analysis, 2016
Network visualization
Securitate, spionaj: rețele militare,
Aplicații rețele de scrisori (Osama Bin Laden),
CDR (call detail record)
- graful operațiunilor militare americane din Afganistan, 2012:

http://www.visualcomplexity.com/vc/project.cfm?id=788
Aplicații Rețele sociale

Paul Butler, 2010

LinkedIn Facebook

Între oricare 2 persoane din lume există, în medie, 6 legături:


- graf de e-mailuri: D. Watts (2001), 48,000 utilizatori: aprox. 6;
- graful generat pentru messengerul MSN: J. Lescovec (2007), 240mil.
utilizatori: aprox. 6.6;
- graful Facebook: L. Backstrom (2012): 721 mil. utilizatori: aprox. 4.74.

http://www.philjones.biz/blog/linkedin-maps-visualiser
https://www.theverge.com/2016/2/22/11075456/facebook-population-density-maps-internet-org
Aplicații Rețele sociale
- hashtagurile care au apărut
împreună cu #Romania în
perioada 1-31 ian. 2018

http://truthy.indiana.edu/tools/networks/#?
hashtag=%23Romania&network_type=co&st
art_date=1-1-2018&end_date=1-31-2018
Detectarea de boți
Aplicații
- răspândirea hashtagului
#SB277 despre o lege
a vaccinării din California
în rețeaua Twitter

- punctele roșii sunt,


probabil, boți,
iar cele albastre
oameni

- aplicație
BotOrNot

https://theconversation.com/misinformation-on-social-media-can-technology-save-us-69264
Aplicații
Fake news
- rol hotărâtor în politică (influență asupra alegerilor)
Aplicații Internet:
- algoritmi de routare;

- web page ranking (web


search engine);

https://www.perla.hr/informacije/tekstovi/internet-wikipedija/
Aplicații
Circuite integrate: milioane de tranzistori
K. S. Suresh Kumar, Electric circuits and networks, 2009

https://www.shutterstock.com/video/clip-21678136-stock-footage-surface-
mount-technology-smt-machine-places-resistors-capacitors-transistors-led-
and.html?src=rel/21678178:6/gg
Aplicații Campionat de fotbal
FIFA 2010 World Cup

J.L. Pena, H. Touchette, A network theory analysis of football strategies, 2012


https://arxiv.org/pdf/1206.6904.pdf
Cursul de azi…

 Despre curs
 Aplicații
 Istoric
 Noțiuni de bază și notații
 Grafuri standard
Problema celor 7 poduri din Königsberg
Este posibil ca un om să facă o plimbare în care să
treacă pe toate cele 7 poduri o singură dată?

Modelare: L. Euler (1736)


- bazele teoriei grafurilor

• Graf eulerian: conține un ciclu eulerian = traseu închis care trece o singură dată prin
toate muchiile
http://think-like-a-git.net/sections/graph-theory/seven-bridges-of-konigsberg.html
Jocul icosian
– 1856 – Hamilton – “voiaj în jurul lumii” :
Există un traseu închis pe muchiile dodecaedrului care să treacă prin fiecare vârf
o singură data?

• Graf Hamiltonian: conține un ciclu hamiltonian = traseu ce trece o singură


dată prin toate vârfurile
=> renumita Problema a comis-voiajorului
http://en.wikipedia.org/wiki/File:Dodecahedron.jpg
Problema celor 4 culori
- De Morgan: 1852
Se poate colora o hartă cu patru culori astfel încât orice două țări, care au
frontieră comună ce nu se reduce la un punct, să aibă culori diferite?

Soluție: Appel și Haken răspuns afirmativ în 1976 cu ajutorul calculatorului.

http://en.citizendium.org/wiki/Four_color_theorem
Cursul de azi…

 Despre curs
 Aplicații
 Istoric
 Noțiuni de bază și notații
 Grafuri standard
Noțiuni de bază și notații
Exemple
• V - mulțime finită: Graf neorientat
- v  V: nod / vârf 2
• E - mulțime de perechi de 2 elemente din V:
6
- e = (u, v) = uv, u,v V 1
- (u,u) = buclă 3
5
Graf neorientat 4
V={1, 2, 3, 4, 5, 6}
- e = pereche neordonată: E= {(1,2), (4,5), (1,3), (6,1), (4,1), (1,5),
- (u, v) = (v, u): muchie (6,5), (2,2), (3,3)}
- u, v - capete / extremităţi
Graf orientat
Graf orientat 2
6
- e = pereche ordonată:
- (u, v) ≠ (v, u): arc 1
- u = e- - vârf iniţial / origine / 3
extremitate iniţială 5
4
V={1, 2, 3, 4, 5, 6}
- v = e+ - vârf final / terminus /
E= { (1,2), (2,1), (2,2), (2,3), (1,3),
extremitate finală (1,4), (1,6), (6,5), (5,6)}
Dar pentru aceste grafuri?

2 2
6 6
1 1
3 3
5 5
4 4
Multiset

• S o mulţime (finită) nevidă


• Multiset
– R = (S, r), r : S  ℕ funcţie de multiplicitate
• Notaţie
– R = {xr(x) | x  S}
Exemplu
- S = {1, 2, 3, 4, 5}
- R = {22, 3, 53}

• |R| = 2+1+3 = 6 – suma multiplicităților

• 1  R, r(1)=0

• r(5)=3
Multigraf 2
2 6
6
G = (V, E, r)
1 1
r:E ℕ
r(e) – multiplicitatea muchiei e 3 3
5 5
• e cu r(e) >1 = muchie multiplă 4 4

• graful fără muchii multiple și bucle: graf simplu

2
6
1
3
5
4
graful neorientat suport graful simplu suport
Adiacență. Incidență
• Fie G = (V, E) un graf neorientat
– u și v ∈ V sunt adiacente dacă uv ∈ E.
– Un vecin al lui u ∈ V este un vârf adiacent cu el.
– Notație NG(u) = mulțimea vecinilor lui u.
– O muchie e ∈ E este incidentă cu un vârf u dacă u este extremitate a lui e.
– e și f ∈ E sunt adiacente dacă există un vârf în care sunt incidente (au o
extremitate în comun).
– dG(u)=|NG(u)| - gradul nodului u.
– are loc relația: 𝑢∈𝑉 𝑑𝐺 𝑢 = 2|𝐸|.
• Fie G = (V, E) un graf orientat
– 𝑑𝐺− 𝑢 = 𝑒 ∈ 𝐸 𝑢 𝑒𝑠𝑡𝑒 𝑒𝑥𝑡𝑟𝑒𝑚𝑖𝑡𝑎𝑡𝑒 𝑓𝑖𝑛𝑎𝑙ă 𝑝𝑒𝑛𝑡𝑟𝑢 𝑒 - grad interior;
– 𝑑𝐺+ 𝑢 = 𝑒 ∈ 𝐸 𝑢 𝑒𝑠𝑡𝑒 𝑒𝑥𝑡𝑟𝑒𝑚𝑖𝑡𝑎𝑡𝑒 𝑖𝑛𝑖ț𝑖𝑎𝑙ă 𝑝𝑒𝑛𝑡𝑟𝑢 𝑒 - grad exterior;

– 𝑑𝐺 𝑢 = 𝑑𝐺+ 𝑢 + 𝑑𝐺− 𝑢 - grad;


− +
– 𝑢∈𝑉 𝑑𝐺 𝑢 = 𝑢∈𝑉 𝑑𝐺 𝑢 = |𝐸|
Nod cu dG(u)=0: nod izolat. Nod cu dG(u)=1: nod terminal.
Notații:
- grad maxim: ∆𝑮
- grad minim: 𝜹𝑮

Multisetul gradelor
• G orientat, V = {v1, v2, …, vn}

– Multisetul gradelor interioare


s  (G)  {dG (v1 ),..., dG (vn )}

– Multisetul gradelor exterioare


s  (G )  {dG (v1 ),..., dG (vn )}

• G neorientat: multisetul gradelor


Drumuri
Fie G un graf orientat

• Un drum este o secvență P de vârfuri


P = [v1, v2, …, vk-1 ,vk], unde v1,…,vkV(G)

cu proprietatea că între oricare două vârfuri consecutive există arc: (vi, vi+1)  E(G) ,
 i  {1, …, k - 1}.

• v1 și vk se numesc capetele/ extremitățile lui P.

• Notăm
– V(P) = {v1, v2, …, vk}
– ei = (vi, vi+1)
– E(P) = {e1, e2, …, ek-1}
Drumuri. Circuite
• P este drum simplu dacă nu conține un arc de mai multe ori: (vi, vi+1) ≠ (vj, vj+1) , i ≠ j.

• P este drum elementar dacă nu conține un vârf de mai multe ori: vi ≠ vj, i ≠ j.

• Dacă P=drum simplu cu capetele identice v1=vk: circuit, notat C=[v1, v2, …, vk-1 ,v1].

• Dacă C=circuit care nu conține un vârf de mai multe ori (exceptând extremitățile): circuit
elementar.

• Notații V(C), E(C).

G
1 2 P=[1, 2, 3, 4, 2, 1, 2] drum
P=[1, 2, 3, 4, 2, 5] drum simplu
P=[1, 2, 3, 4] drum elementar
C=[1, 2, 3, 2, 1] circuit
5 3 C=[1, 2, 3, 4, 1] circuit elementar
4
Drumuri. Circuite
• Lungimea lui P = l(P) = k-1 (cardinalul multisetului arcelor lui P).
• Pentru două vârfuri u și v definim distanța de la u la v astfel:
 0, daca u  v

dG ( u, v )    , daca nu exista u - v drum in G
min{ l ( P ) | P este u - v drum in G }, altfel

(cea mai mică lungime a unui u-v drum).
• Un u-v drum de lungime dG(u,v) se numește drum minim de la u la v

• Vom nota și 𝒅 𝒖, 𝒗 dacă G se deduce din context

G
1 2 P=[1, 2, 3, 4, 5] drum
P=[1, 2, 5] drum minim
𝒅𝑮 (𝟏, 𝟓)=2
5 3
4
Lanțuri. Cicluri

Pentru G graf neorientat – noțiuni similare

• Un lanț este o secvență P de vârfuri cu proprietatea că oricare două


vârfuri consecutive sunt adiacente: P = [v1, v2, …, vk-1, vk]
• lanț simplu / lanț elementar / lungime (în loc de drum)
• ciclu / ciclu elementar (în loc de circuit)
• distanță / lanț minim
Graf parțial. Subgraf. Subgraf indus

Fie G = (V, E) și G1 = (V1, E1) două grafuri


• G1 este graf parțial al lui G (vom nota G1  G) dacă
V1 = V, E1 ⊆ E
• G1 este subgraf al lui G (vom nota G1 ≺ G) dacă
V1 ⊆ V, E1 ⊆ E
• G1 este subgraf indus de V1 în G (vom nota G1=G[V1]) dacă
V1 ⊆ V,
E1 = {e| eE, e are ambele extremități în V1 }
(toate arcele/muchiile cu extremități în V1)
Graf parțial. Subgraf. Subgraf indus

graf parțial

subgraf

subgraf
indus de
{1,2,5,6}
Conexitate
Fie G = (V, E) un graf neorientat

• G este graf conex dacă între orice două vârfuri distincte există un lanț

• O componentă conexă a lui G este un subgraf indus conex maximal


(care nu este inclus în alt subgraf conex)

• Pentru cazul orientat – tare-conexitate

Notații
• G – v , v  V(G)
• G – e , e  E(G)
• G – V ' , V '  V(G)
• G – E' , E'  E(G)
•G+e
Egalitate. Izomorfism
Izomorfism
Fie G1, G2 două grafuri:
G1 = (V1, E1)
G2 = (V2, E2)
• Grafurile G1 și G2 sunt egale (G1 = G2)  V1 =V2 , E1 =E2 .
• Grafurile G1 și G2 sunt izomorfe (G1  G2) 
există f : V1  V2 bijectivă cu uv  E1  f(u)f(v)  E2 pentru orice u,v ∈ V1
(f conservă adiacența și neadiacența)
• Interpretare: se pot reprezenta în plan prin același desen

1 2 a b



4 3 c d
Izomorfism
• Observație:

G1  G2  s(G1) = s(G2)
s(G1) = s(G2)  G1  G2
Cursul de azi…

 Despre curs
 Aplicații
 Istoric
 Noțiuni de bază și notații
 Grafuri standard
Graf bipartit
• Un graf neorientat G = (V, E) se numește bipartit  există o partiție a lui V
în două submulțimi V1, V2 (bipartiție):
V = V1  V2
V1  V2 = 
astfel încât orice muchie e∈E are o extremitate în V1 și cealaltă în V2:
|e  V1| = |e  V2| =1

8 9 1 2
2 3
3 4
5
13 7 1 4 6
10 7
9
8
5
6 10 11
12 11 12 13

https://math.stackexchange.com/questions/2059091/prove-that-if-g-is-a-bipartite-graph-with-an-odd-number-of-vertices-then-g-is
Graf bipartit
Observație:

• G = (V, E) bipartit  există o colorare a vârfurilor cu două culori

c : V  {1, 2} astfel încât pentru orice muchie e=xy∈E avem c(x)  c(y)
(bicolorare)

Graf p-partit
Exemplu: graf 3-partit: 1 2
15 3
4
5
14 7 6
9
8
10 11
12 13
Grafuri standard
Pn – lanţ elementar Pn

Cn – ciclu elementar

Kn – graf complet

K3,3
Kn1,n2,...,np – graf p-partit complet
Exemplu: graf bipartit complet

n1 noduri n2 noduri

K1,5– graful stea


(notat și S5)
Exemplu:
Grafuri standard
– graf k-regulat: toate nodurile au același grad

graf 3-regulat
Graful complementar
• 𝐺 = (𝑉, 𝐸) graf neorientat

• graful complementar al lui G: 𝐺 = (𝑉, 𝐸(𝐾𝑛 ) − 𝐸)

G G
Va urma:

Secvențe de grade

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