Pe scurt
Un graf neorientat are o mulțime de vârfuri și muchii care leagă perechi de vârfuri fără sens de parcurgere impus. Pentru vârfurile și muchiile , , vârful 1 este vecin cu 2, dar nu direct cu 3. Într-un graf simplu nu există bucle sau muchii multiple.
În detaliu
Un graf neorientat este o pereche formată dintr-o mulțime de vârfuri și o mulțime de muchii; fiecare muchie leagă două vârfuri și nu are sens de parcurgere, deci și sunt aceeași muchie. Două vârfuri sunt adiacente (vecine) dacă există o muchie între ele. O muchie este incidentă cu fiecare dintre cele două extremități ale sale: este incidentă cu 1 și cu 2, dar nu cu 3. Un graf simplu nu are bucle (muchii de forma ) și nici muchii multiple. La Bac și la admitere grafurile sunt simple, cu vârfurile numerotate de la 1 la .
Exemplul 1 — matricea de adiacență. Citim vârfuri și muchii și construim matricea simetrică:
#include <iostream>
using namespace std;
int main() {
int n, m, a[11][11] = {};
cin >> n >> m;
for (int i = 0; i < m; ++i) {
int x, y;
cin >> x >> y;
a[x][y] = a[y][x] = 1;
}
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= n; ++j)
cout << a[i][j] << (j == n ? '\n' : ' ');
}
}
Programul presupune , vârfuri numerotate de la 1 la și muchii valide. Pentru intrarea 3 2, 1 2, 2 3 pe linii succesive, programul afișează 0 1 0, 1 0 1, 0 1 0, fiecare pe rândul ei. Prima muchie pune 1 atât în a[1][2], cât și în a[2][1]; a doua completează pozițiile a[2][3] și a[3][2]. Suma liniei 2 este gradul său, adică 2. La un vârf izolat, linia și coloana sunt numai zerouri, iar diagonala principală conține numai zerouri, pentru că nu există bucle.
Exemplul 2 — listele de adiacență. Pentru fiecare vârf se păstrează lista vecinilor lui. Graful cu 5 vârfuri și muchiile , , , se memorează astfel:
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n = 5, e[4][2] = {{1, 2}, {1, 3}, {2, 3}, {3, 4}};
vector<int> v[6];
for (auto& m : e) {
v[m[0]].push_back(m[1]);
v[m[1]].push_back(m[0]);
}
for (int i = 1; i <= n; ++i) {
cout << i << ":";
for (int x : v[i]) cout << " " << x;
cout << "\n";
}
}
Se afișează 1: 2 3, 2: 1 3, 3: 1 2 4, 4: 3 și 5: (vârful 5 este izolat, deci lista lui e goală). Fiecare muchie apare în două liste, deci listele conțin în total elemente. Pentru vârfuri și muchii, listele ocupă spațiu, iar matricea ocupă . Construirea matricei prin citirea muchiilor cere cu inițializarea, iar afișarea ei cere încă . Matricea răspunde în timp constant la întrebarea „există muchia ?”, în timp ce lista trebuie parcursă. Gradul unui vârf este suma liniei lui în matrice sau lungimea listei lui de vecini; în exemplu, gradele sunt .
Exemplul 3 — gradele din lista muchiilor. Gradul unui vârf este numărul muchiilor incidente cu el. Pentru graful cu cinci vârfuri și muchiile , , , , fiecare muchie mărește cu 1 gradul lui și gradul lui :
int n = 5, e[4][2] = {{1, 2}, {1, 3}, {2, 3}, {3, 4}}, g[6] = {};
for (auto& m : e) { ++g[m[0]]; ++g[m[1]]; }
for (int i = 1; i <= n; ++i) cout << g[i] << ' ';
Se afișează 2 2 3 1 0. Suma gradelor este , pentru că fiecare muchie este numărată de două ori, câte o dată la fiecare extremitate. Rezultă că suma gradelor este întotdeauna pară, deci numărul vârfurilor cu grad impar este par; în exemplu, vârfurile 3 și 4 au grad impar. Un șir de grade cu suma impară, de pildă , nu poate aparține niciunui graf.
Cazul-limită: graful complet. Într-un graf complet cu vârfuri fiecare vârf este adiacent cu toate celelalte, deci toate gradele sunt egale cu , iar numărul muchiilor este . Pentru sunt 10 muchii și gradul 4 pentru fiecare vârf; suma gradelor este .
Pentru admitere
Sunt perechi distincte de vârfuri. Pentru fiecare pereche alegem independent dacă există sau nu muchia, astfel numărul grafurilor simple neorientate cu mulțimea fixată a celor vârfuri este . Pentru , cele trei perechi dau grafuri distincte; pentru sunt . O muchie se numără o singură dată, deși matricea conține două valori simetrice. De aceea numărul valorilor 1 din matricea de adiacență este , iar suma tuturor elementelor este un număr par. Matricea unui graf simplu neorientat este simetrică față de diagonala principală, iar pe diagonală are zerouri; dacă într-un enunț apare un 1 pe diagonală sau o matrice nesimetrică, nu este vorba de un graf simplu neorientat.
Exemplu în formatul examenului. Un graf neorientat cu 5 vârfuri are muchiile , , și . Câte elemente egale cu 1 are matricea lui de adiacență?
- a) 4
- b) 8
- c) 10
- d) 25
Răspunsul corect este b). Graful are muchii, iar fiecare muchie pune 1 în două poziții, a[x][y] și a[y][x]. Rezultă elemente egale cu 1. Varianta a) numără muchiile o singură dată, deci ignoră simetria matricei. Varianta c) este numărul perechilor posibile de vârfuri, , nu al muchiilor existente, iar d) este numărul tuturor elementelor matricei, , nu al celor egale cu 1. Verificare pe linii: sumele celor cinci linii sunt gradele , , , , , iar .
Greșeli frecvente
- Greșit: muchia și sunt două muchii distincte.Corect: într-un graf neorientat sunt aceeași muchie.
- Greșit: 1 și 3 sunt vecine în exemplu.Corect: sunt legate prin 2, dar nu au muchie directă.
- Greșit: orice graf are toate perechile de vârfuri conectate direct.Corect: asta caracterizează doar un graf complet.
Testează-te pe această lecție
Lecția o citești aici, fără cont. Testele pe lecții și capitole sunt în cont, cu grile originale Didaxis și explicația fiecăreia: gratuit 10 grile pe zi, fără limită cu Premium, 49 de lei pe lună pentru fiecare copil.
Înainte și după
Surse și referințe
Redactare proprie, conform programei:
- OMECI 5099/2009, anexa 5, Informatică, p. 4–5, clasa XI intensiv; rocnee.eu
- OMECI 5099/2009, anexa 5, Informatică, p. 4–5, clasa XI; plan de încadrare: OMEC 7723/2024, anexa 2, tabelele 1–25, legislatie.just.ro; filiera tehnologică: OMEC 7724/2024, anexa 4, tabelul calificării, legislatie.just.ro
- UNSTPB, Regulament admitere licență 2026, Anexa II-1.2 p. Anx II-14 și Anexa XI-3 p. Anx XI-6–7 (PDF p. 64, 120–121); admitere.pub.ro
- OMECTS 4800/2010, anexa 2, Informatică, p. 3–4; edu.ro
Documente consultate
- UNSTPB, admitere 2026, anexa XI-3, p. Anx XI-6–7
- Programa școlară de informatică, clasa a XI-a (OMECI 5099/2009, anexa 5), CNCE, p. 4–5; rocnee.eu
- Programa de bacalaureat la informatică, matematică-informatică (anexa 2 la OMECTS 4800/2010), Ministerul Educației, p. 5–6; edu.ro
- Subiectele și baremele Bacalaureatului 2026; subiecte2026.edu.ro
Desene: Redactare proprie (desen original)
