Grafuri Neorientate

Teorie • Explicații • Pseudocod • C++

1. Ce sunt grafurile neorientate?

Un graf neorientat este o structură folosită în informatică și matematică pentru reprezentarea conexiunilor dintre obiecte.

Un graf este format din:

Într-un graf neorientat muchiile NU au direcție. Dacă nodul A este conectat cu B, atunci și B este conectat cu A.

Exemplu: muchia (1,2) permite deplasarea atât din 1 în 2, cât și din 2 în 1.

2. Reprezentarea unui graf neorientat

Grafurile neorientate pot fi reprezentate în două moduri importante:

Matrice de adiacență

Este o matrice pătratică unde:

0 1 1 0
1 0 0 1
1 0 0 1
0 1 1 0

Observăm că matricea este simetrică. Acest lucru se întâmplă deoarece muchiile sunt reciproce.

3. Proprietățile grafurilor neorientate

Dacă există drum între orice două noduri, atunci graful se numește graf conex.

4. Gradul unui nod

Gradul unui nod reprezintă numărul de muchii care pleacă din acel nod.

Exemplu: Dacă nodul 3 este conectat cu nodurile 1, 2 și 5, atunci gradul nodului 3 este 3.

5. Exemplu explicat

Presupunem următorul graf:

1 — 2
| |
3 — 4

Nodul 1 este vecin cu 2 și 3.

Nodul 4 este vecin cu 2 și 3.

Deoarece muchiile sunt neorientate, relațiile funcționează în ambele direcții.

6. Exemplu în pseudocod

Program pentru afișarea vecinilor unui nod folosind matricea de adiacență:

Citire n Pentru i ← 1 până la n execută Pentru j ← 1 până la n execută Citește a[i][j] Citește nod Pentru i ← 1 până la n execută Dacă a[nod][i] = 1 atunci Afișează i

7. Exemplu în C++

Același algoritm implementat în C++:

#include <iostream> using namespace std; int main() { int n; cin >> n; int a[100][100]; for(int i = 1; i <= n; i++) { for(int j = 1; j <= n; j++) { cin >> a[i][j]; } } int nod; cin >> nod; cout << "Vecinii nodului sunt: "; for(int i = 1; i <= n; i++) { if(a[nod][i] == 1) { cout << i << " "; } } return 0; }

8. Avantajele grafurilor neorientate

9. Concluzie

Grafurile neorientate sunt foarte importante deoarece permit reprezentarea conexiunilor dintre obiecte fără direcție.

Pentru a rezolva probleme cu grafuri, trebuie să înțelegi noțiuni precum: matricea de adiacență, gradul unui nod, vecinii și conexitatea.