Lý thuyết đồ thị

Đồ thị là gì?

Đồ thị (graph) là một cấu trúc toán học gồm:

  • Tập đỉnh V (vertex / node) — đại diện cho các thực thể.
  • Tập cạnh E (edge) — đại diện cho quan hệ giữa các đỉnh.

Đồ thị có mặt ở khắp nơi: mạng lưới giao thông, mạng xã hội, sơ đồ phụ thuộc, mạch điện tử, lịch trình công việc…

Phân loại đồ thị

graph LR; subgraph Vô_hướng A1((A)) --- B1((B)); B1 --- C1((C)); A1 --- C1; end subgraph Có_hướng A2((A)) --> B2((B)); B2 --> C2((C)); C2 --> A2; end
Loại Mô tả Ký hiệu cạnh
Vô hướng Cạnh không phân biệt chiều (u, v)
Có hướng Cạnh có hướng từ u đến v (u → v)
Có trọng số Mỗi cạnh mang một giá trị (u, v, w)
DAG Đồ thị có hướng không có chu trình
Cây Đồ thị liên thông không có chu trình

Thuật ngữ cơ bản

  • Bậc đỉnh (degree): Số cạnh nối vào đỉnh. Đồ thị có hướng: bậc vào (in-degree)bậc ra (out-degree).
  • Đường đi (path): Dãy đỉnh nối nhau không lặp đỉnh.
  • Chu trình (cycle): Đường đi bắt đầu và kết thúc ở cùng một đỉnh.
  • Liên thông (connected): Có đường đi giữa mọi cặp đỉnh.
  • Thành phần liên thông: Tập con lớn nhất của đỉnh tạo thành đồ thị liên thông.
  • Cây khung (spanning tree): Cây liên thông qua tất cả đỉnh với số cạnh tối thiểu.

Ví dụ nhanh bằng code

# Đồ thị vô hướng — danh sách kề (cách biểu diễn thường dùng nhất)
do_thi = {
    'A': ['B', 'C'],
    'B': ['A', 'D'],
    'C': ['A', 'D'],
    'D': ['B', 'C']
}

# Đồ thị có hướng có trọng số — danh sách kề với trọng số
do_thi_co_trong_so = {
    0: [(1, 4), (2, 1)],    # (đỉnh_kề, trọng_số)
    1: [(3, 1)],
    2: [(1, 2), (3, 5)],
    3: []
}

print("Hàng xóm của A:", do_thi['A'])       # ['B', 'C']
print("Bậc của A:", len(do_thi['A']))        # 2

Lộ trình học lý thuyết đồ thị

Nền tảng

Kỹ thuật quan trọng

Đường đi ngắn nhất

Chủ đề nâng cao

Kiến thức liên quan

  • DFSBFS trong mục Thuật toán — Cài đặt đa ngôn ngữ, là nền tảng trước khi học các ứng dụng đồ thị.
  • Cấu trúc dữ liệu — Ma trận kề dùng mảng 2D; danh sách kề dùng từ điển và danh sách — các cấu trúc mục kia đã giới thiệu kỹ.
  • Hàm — Đệ quy — DFS đệ quy và nhiều thuật toán đồ thị sử dụng nguyên lý đệ quy trực tiếp.

Bình luận