DSA: GRAPH
Graph — bu Node (Vertex) va ular orasidagi Edge'lardan tashkil topgan data structure.
Masalan:
A — B
| |
C — D
Vertex / Node — obyekt yoki nuqta.
Masalan: A, B, C, D.
Edge — node'lar orasidagi bog‘lanish.
Masalan: A — B.
GRAPH TURLARI
- Undirected Graph — yo‘nalishsiz graph:
A — B
A dan B ga ham, B dan A ga ham bog‘lanish mavjud.
- Directed Graph — yo‘nalishli graph:
A → B
A dan B ga borish mumkin, lekin B dan A ga shart emas.
- Weighted Graph — edge'larning qiymati yoki og‘irligi bor:
A — 5 — B
5 — masofa, narx, vaqt va hokazo bo‘lishi mumkin.
GRAPHNI SAQLASH USULLARI
- Adjacency List
Har bir node o‘zining qo‘shnilarini saqlaydi:
A → B, C
B → A, D
C → A
D → B
Bu usul Linked List tushunchasiga yaqin.
- Adjacency Matrix
Node'lar orasidagi bog‘lanish jadval ko‘rinishida saqlanadi:
A B C D
A 0 1 1 0
B 1 0 0 1
C 1 0 0 0
D 0 1 0 0
1 — bog‘lanish bor.
0 — bog‘lanish yo‘q.
GRAPH TRAVERSAL
Graph ichidagi node'larni birma-bir ko‘rib chiqish Traversal deyiladi.
BFS — Breadth-First Search
Qavatma-qavat yuradi.
Queue ishlatadi.
A / \ B C | D
BFS: A → B → C → D
DFS — Depth-First Search
Bitta yo‘ldan imkon qadar chuqur ketadi.
Stack yoki Recursion ishlatadi.
DFS: A → B → D → C
QISQACHA:
GRAPH
|
├── Node / Vertex — nuqta
├── Edge — bog‘lanish
|
├── Directed — A → B
├── Undirected — A — B
├── Weighted — A — 5 — B
|
├── Adjacency List — qo‘shnilar ro‘yxati
├── Adjacency Matrix — jadval
|
├── BFS — Queue, qavatma-qavat
└── DFS — Stack/Recursion, chuqurlikka
Graph real hayotdagi shaharlar va yo‘llar, odamlar va aloqalar, web sahifalar va linklar, networklar kabi bog‘liqliklarni modellashtirishda ishlatiladi.
Hali izoh yo'q. Birinchi bo'ling!