Đồ thị có hướng (Directed Graph) là một tập các đỉnh (node) và các cạnh (edge), trong đó mỗi cạnh có chiều, tức là chỉ đi được từ đỉnh A đến đỉnh B, không đi ngược lại.
Ví dụ: Nếu có một cạnh từ A đến B thì bạn chỉ đi được A → B, không đi được B → A (trừ khi có cạnh ngược lại).
Danh sách kề là một cách phổ biến để biểu diễn đồ thị trong lập trình. Thay vì sử dụng ma trận, ta lưu trữ:
$graph = [
'A' => ['B' => 1, 'C' => 4],
'B' => ['C' => 2, 'D' => 5],
'C' => ['D' => 1],
'D' => []
];
'A' => ['B' => 1, 'C' => 4]
: từ đỉnh A có thể đi đến:
'B' => ['C' => 2, 'D' => 5]
: từ B đi được:
'C' => ['D' => 1]
: từ C đi được D với trọng số 1'D' => []
: từ D không đi đâu được nữa (nút lá)Đỉnh | Đi được tới | Trọng số |
---|---|---|
A | B | 1 |
A | C | 4 |
B | C | 2 |
B | D | 5 |
C | D | 1 |
D | - | - |
Đây là đồ thị có hướng, vì ví dụ A → B không có nghĩa là B → A.