✨Lý thuyết đồ thị

Lý thuyết đồ thị

nhỏ|phải|Hình vẽ một đồ thị có 6 đỉnh và 7 cạnh

Trong toán học và tin học, lý thuyết đồ thị (tiếng Anh: graph theory) nghiên cứu các tính chất của đồ thị. Một cách không chính thức, đồ thị là một tập các đối tượng được gọi là các đỉnh (hoặc nút) nối với nhau bởi các cạnh (hoặc cung). Cạnh có thể có hướng hoặc vô hướng. Đồ thị thường được vẽ dưới dạng một tập các điểm (các đỉnh nối với nhau bằng các đoạn thẳng (các cạnh).

Đồ thị biểu diễn được rất nhiều cấu trúc, nhiều bài toán thực tế có thể được biểu diễn bằng đồ thị. Ví dụ, cấu trúc liên kết của một website có thể được biểu diễn bằng một đồ thị có hướng như sau: các đỉnh là các trang web hiện có tại website, tồn tại một cạnh có hướng nối từ trang A tới trang B khi và chỉ khi A có chứa 1 liên kết tới B. Do vậy, sự phát triển của các thuật toán xử lý đồ thị là một trong các mối quan tâm chính của khoa học máy tính.

Cấu trúc đồ thị có thể được mở rộng bằng cách gán trọng số cho mỗi cạnh. Có thể sử dụng đồ thị có trọng số để biểu diễn nhiều khái niệm khác nhau. Ví dụ, nếu đồ thị biểu diễn một mạng đường giao thông, các trọng số có thể là độ dài của mỗi con đường. Một cách khác để mở rộng đồ thị cơ bản là quy định hướng cho các cạnh của đồ thị (như đối với các trang web, A liên kết tới B, nhưng B không nhất thiết cũng liên kết tới A). Loại đồ thị này được gọi là đồ thị có hướng. Một đồ thị có hướng với các cạnh có trọng số được gọi là một lưới.

Các lưới có nhiều ứng dụng trong khía cạnh thực tiễn của lý thuyết đồ thị, chẳng hạn, phân tích lưới có thể dùng để mô hình hoá và phân tích mạng lưới giao thông hoặc nhằm "phát hiện" hình dáng của Internet - (Xem thêm các ứng dụng đưới đây. Mặc dù vậy, cũng nên lưu ý rằng trong phân tích lưới, thì định nghĩa của khái niệm "lưới" có thể khác nhau và thường được chỉ ra bằng một đồ thị đơn giản.)

Lịch sử

Một trong những kết quả đầu tiên trong lý thuyết đồ thị xuất hiện trong bài báo của Leonhard Euler về Bảy cây cầu ở Königsberg, xuất bản năm 1736. Bài báo này cũng được xem như một trong những kết quả topo đầu tiên trong hình học, tức là, nó không hề phụ thuộc vào bất cứ độ đo nào. Nó diễn tả mối liên hệ sâu sắc giữa lý thuyết đồ thị và tôpô học.

Năm 1845, Gustav Kirchhoff đưa ra Định luật Kirchhoff cho mạch điện để tính điện thế và cường độ dòng điện trong mạch điện.

Năm 1852 Francis Guthrie đưa ra bài toán bốn màu về vấn đề liệu chỉ với bốn màu có thể tô màu một bản đồ bất kì sao cho không có hai nước nào cùng biên giới được tô cùng màu. Bài toán này được xem như đã khai sinh ra lý thuyết đồ thị, và chỉ được giải sau một thế kỉ vào năm 1976 bởi Kenneth Appel và Wolfgang Haken. Trong khi cố gắng giải quyết bài toán này, các nhà toán học đã phát minh ra nhiều thuật ngữ và khái niệm nền tảng cho lý thuyết đồ thị.

Định nghĩa

Cách vẽ đồ thị

nhỏ|Cách biểu diễn đơn đồ thị có hướng|317x317px Đồ thị được biểu diễn đồ họa bằng cách vẽ một điểm cho mỗi đỉnh và vẽ một cung giữa hai đỉnh nếu chúng được nối bởi một cạnh. Nếu đồ thị là có hướng thì hướng được chỉ bởi một mũi tên.

Không nên lẫn lộn giữa một đồ hình của đồ thị với bản thân đồ thị (một cấu trúc trừu tượng, không đồ họa) bởi có nhiều cách xây dựng đồ hình. Toàn bộ vấn đề nằm ở chỗ đỉnh nào được nối với đỉnh nào, và bằng bao nhiêu cạnh. Trong thực hành, thường rất khó để xác định xem hai đồ hình có cùng biểu diễn một đồ thị không. Tùy vào bài toán mà đồ hình này có thể phù hợp và dễ hiểu hơn đồ hình kia.

Các cấu trúc dữ liệu đồ thị

Có nhiều cách khác nhau để lưu trữ các đồ thị trong máy tính. Sử dụng cấu trúc dữ liệu nào thì tùy theo cấu trúc của đồ thị và thuật toán dùng để thao tác trên đồ thị đó. Trên lý thuyết, người ta có thể phân biệt giữa các cấu trúc danh sách và các cấu trúc ma trận. Tuy nhiên, trong các ứng dụng cụ thể, cấu trúc tốt nhất thường là kết hợp của cả hai. Người ta hay dùng các cấu trúc danh sách cho các đồ thị thưa (sparse graph), do chúng đòi hỏi ít bộ nhớ. Trong khi đó, các cấu trúc ma trận cho phép truy nhập dữ liệu nhanh hơn, nhưng lại cần lượng bộ nhớ lớn nếu đồ thị có kích thước lớn.

Các cấu trúc danh sách

  • Danh sách liên thuộc (Incidence list) - Mỗi đỉnh có một danh sách các cạnh nối với đỉnh đó. Các cạnh của đồ thị được có thể được lưu trong một danh sách riêng (có thể cài đặt bằng mảng (array) hoặc danh sách liên kết động (linked list)), trong đó mỗi phần tử ghi thông tin về một cạnh, bao gồm: cặp đỉnh mà cạnh đó nối (cặp này sẽ có thứ tự nếu đồ thị có hướng), trọng số và các dữ liệu khác. Danh sách liên thuộc của mỗi đỉnh sẽ chiếu tới vị trí của các cạnh tương ứng tại danh sách cạnh này.
  • Danh sách kề (Adjacency list) - Mỗi đỉnh của đồ thị có một danh sách các đỉnh kề nó (nghĩa là có một cạnh nối từ đỉnh này đến mỗi đỉnh đó). Trong đồ thị vô hướng, cấu trúc này có thể gây trùng lặp. Chẳng hạn nếu đỉnh 3 nằm trong danh sách của đỉnh 2 thì đỉnh 2 cũng phải có trong danh sách của đỉnh 3. Lập trình viên có thể chọn cách sử dụng phần không gian thừa, hoặc có thể liệt kê các quan hệ kề cạnh chỉ một lần. Biểu diễn dữ liệu này thuận lợi cho việc từ một đỉnh duy nhất tìm mọi đỉnh được nối với nó, do các đỉnh này đã được liệt kê tường minh.

Các cấu trúc ma trận

  • Ma trận liên thuộc (Incidence matrix) - Đồ thị được biểu diễn bằng một ma trận [b_{ij}] kích thước p × q, trong đó p là số đỉnh và q là số cạnh, b_{ij} = 1 chứa dữ liệu về quan hệ giữa đỉnh v_i và cạnh xj. Đơn giản nhất: b{ij} = 1 nếu đỉnh v_i là một trong 2 đầu của cạnh x_j, bằng 0 trong các trường hợp khác.
  • Ma trận kề (Adjaceny matrix) - một ma trận N × N, trong đó N là số đỉnh của đồ thị. Nếu có một cạnh nào đó nối đỉnh v_ivới đỉnh vj thì phần tử M{i, j} bằng 1, nếu không, nó có giá trị 0. Cấu trúc này tạo thuận lợi cho việc tìm các đồ thị con và để đảo các đồ thị.
  • Ma trận dẫn nạp (Admittance matrix) hoặc ma trận Kirchhoff (Kirchhoff matrix) hay ma trận Laplace (Laplacian matrix) - được định nghĩa là kết quả thu được khi lấy ma trận bậc (degree matrix) trừ đi ma trận kề. Do đó, ma trận này chứa thông tin cả về quan hệ kề (có cạnh nối hay không) giữa các đỉnh lẫn bậc của các đỉnh đó.

Các bài toán đồ thị

Tìm đồ thị con

Một bài toán thường gặp, được gọi là bài toán đồ thị con đẳng cấu (subgraph isomorphism problem), là tìm các đồ thị con trong một đồ thị cho trước. Nhiều tính chất của đồ thị có tính di truyền, nghĩa là nếu một đồ thị con nào đó có một tính chất thì toàn bộ đồ thị cũng có tính chất đó. Chẳng hạn như một đồ thị là không phẳng nếu như nó chứa một đồ thị hai phía đầy đủ (complete bipartite graph ) K{3,3} hoặc nếu nó chứa đồ thị đầy đủ K{5}. Tuy nhiên, bài toán tìm đồ thị con cực đại thỏa mãn một tính chất nào đó thường là bài toán NP-đầy đủ (NP-complete problem).

  • Bài toán đồ thị con đầy đủ lớn nhất (clique problem) (NP-đầy đủ)
  • Bài toán tập con độc lập (independent set problem) (NP-đầy đủ)

Tô màu đồ thị

  • Định lý bốn màu (four-color theorem)
  • Định lý đồ thị hoàn hảo mạnh (strong perfect graph theorem)
  • Bài toán Erdős-Faber-Lovász conjecture (hiện chưa ai giải được)
  • Bài toán total coloring conjecture (hiện chưa ai giải được)
  • Bài toán list coloring conjecture (hiện chưa ai giải được)

Các bài toán đường đi

  • Bài toán bảy cây cầu Euler (Seven Bridges of Königsberg) còn gọi là "Bảy cây cầu ở Königsberg"
  • Cây bao trùm nhỏ nhất (Minimum spanning tree)
  • Cây Steiner
  • Bài toán đường đi ngắn nhất
  • Bài toán người đưa thư Trung Hoa (còn gọi là "bài toán tìm hành trình ngắn nhất")
  • Bài toán người bán hàng (Traveling salesman problem) (NP-đầy đủ) cũng có tài liệu (tiếng Việt) gọi đây là "Bài toán người đưa thư"

Luồng

  • Định lý luồng cực đại lát cắt cực tiểu
  • Reconstruction conjecture

Visibility graph problems

  • Museum guard problem

Các bài toán phủ

Các bài toán phủ là các thể hiện cụ thể của các bài toán tìm đồ thị con. Chúng có quan hệ chặt chẽ với bài toán đồ thị con đầy đủ hoặc bài toán tập độc lập.

  • Bài toán phủ tập (Set cover problem)
  • Bài toán phủ đỉnh (Vertex cover problem)

Các thuật toán quan trọng

  • Thuật toán Bellman-Ford
  • Thuật toán Dijkstra
  • Thuật toán Ford-Fulkerson
  • Thuật toán Kruskal
  • Thuật toán láng giềng gần nhất
  • Thuật toán Prim

Các lĩnh vực toán học có liên quan

  • Lý thuyết Ramsey
  • Toán tổ hợp (Combinatorics)

Ứng dụng

Lý thuyết đồ thị được ứng dụng nhiều trong phân tích lưới. Có hai kiểu phân tích lưới. Kiểu thứ nhất là phân tích để tìm các tính chất về cấu trúc của một lưới, chẳng hạn nó là một scale-free network hay là một small-world network. Kiểu thứ hai, phân tích để đo đạc, chẳng hạn mức độ lưu thông xe cộ trong một phần của mạng lưới giao thông (transportation network).

Lý thuyết đồ thị còn được dùng trong nghiên cứu phân tử. Trong vật lý vật chất ngưng tụ, cấu trúc ba chiều phức tạp của các hệ nguyên tử có thể được nghiên cứu một cách định lượng bằng cách thu thập thống kê về các tính chất lý thuyết đồ thị có liên quan đến cấu trúc tô pô của các nguyên tử. Ví dụ, các vành đường đi ngắn nhất Franzblau (Franzblau's shortest-path rings).

Các lĩnh vực con

Lý thuyết đồ thị rất đa dạng và có nhiều lĩnh vực con. Trong đó có:

  • Lý thuyết đồ thị đại số (Algebraic graph theory)
  • Lý thuyết đồ thị tô pô (Topological graph theory)
  • Lý thuyết đồ thị hình học (Geometric graph theory)
  • Lý thuyết đồ thị cực trị (Extremal graph theory)
  • Lý thuyết đồ thị mê-tríc (Metric graph theory)
  • Lý thuyết đồ thị xác suất (Probabilistic graph theory)

Các nhà lý thuyết đồ thị quan trọng

👁️ 2 | 🔗 | 💖 | ✨ | 🌍 | ⌚
nhỏ|phải|Hình vẽ một đồ thị có 6 đỉnh và 7 cạnh Trong toán học và tin học, **lý thuyết đồ thị** (tiếng Anh: _graph theory_) nghiên cứu các tính chất của đồ thị. Một cách
:_Bài này chỉ viết về các định nghĩa cơ bản. Để hiểu rộng hơn, xin xem lý thuyết đồ thị. Về ý nghĩa biểu diễn hàm số trên hệ tọa độ, xem đồ thị hàm
Lưu ý: Danh sách **thuật ngữ lý thuyết đồ thị** này chỉ là điểm khởi đầu cho những người mới nhập môn làm quen với một số thuật ngữ và khái niệm cơ bản. Bài
Trong lý thuyết đồ thị, tồn tại một **phép đồng phôi** (tiếng Anh: _homeomorphism_, còn gọi là **phép biến đổi tôpô**) giữa hai đồ thị _G_ và _G_′nếu tồn tại một đồ thị _H_ sao
:_Bài này viết về thuật ngữ "bậc" dùng trong lý thuyết đồ thị. Mời xem các bài bậc (toán học) hoặc bậc để đọc về các nghĩa khác._ Trong Lý thuyết đồ thị, **bậc** của
phải|khung|Một cây có dán nhãn với 6 đỉnh và 5 cạnh **Cây** là khái niệm quan trọng trong lý thuyết đồ thị, cấu trúc dữ liệu và giải thuật. Cây là một đồ thị mà
Trong lý thuyết đồ thị, một **lát cắt** là một cách phân chia tập hợp các đỉnh của một đồ thị thành hai tập hợp con không giao nhau. **Tập hợp cắt** của lát cắt
Một đường đi trong G là một dãy luân phiên các đỉnh và cạnh: x_\text{1} u_\text{1} x_\text{2} u_\text{2}...x_\text{m-1} u_\text{m-1} x_\text{m} (x_\text{i} là đỉnh và u_\text{i} là cạnh). Trong đồ thị thỏa mãn điều
phải|Một đồ thị đơn có chu trình. Trong lý thuyết đồ thị, **chu trình** trong đồ thị là một dây chuyền đóng. Đồ thị chỉ gồm một chu trình với n đỉnh được gọi là
phải|Một đồ thị đầy đủ K5 (5 đỉnh). Nếu đây là một đồ thị con thì tập đỉnh của nó sẽ tạo nên một clique kích thước 5. thumb|Đồ thị _G_ có: 23 clique 1
**Lý thuyết độ phức tạp tính toán** (tiếng Anh: _computational complexity theory_) là một nhánh của lý thuyết tính toán trong lý thuyết khoa học máy tính và toán học tập trung vào phân loại
nhỏ|[[Trường Trung học phổ thông Nguyễn Thị Minh Khai, một địa điểm gắn liền với truyền thuyết đô thị Việt Nam về hồn ma áo tím.]] **Truyền thuyết đô thị Việt Nam** là những câu
nhỏ|phải|[[Đồ thị Petersen có sắc số bằng 3.]] Trong Lý thuyết đồ thị, **tô màu đồ thị** (tiếng Anh: _graph coloring_) là trường hợp đặc biệt của gán nhãn đồ thị, mà trong đó mỗi
**Truyền thuyết đô thị Nhật Bản** là những câu chuyện được lưu truyền trong dân gian Nhật Bản và được cho là có thật, dù chưa có bằng chứng xác thực. Những truyền thuyết đô
**Đồ thị Turán** là một đồ thị nhiều phía đầy đủ tạo thành bằng cách chia đỉnh thành tập con, với kích thước gần nhau nhất có thể, và nối hai đỉnh bằng một cạnh
Trong lý thuyết đồ thị, một **đồ thị phẳng** là một đồ thị có thể được nhúng vào mặt phẳng, tức là có thể được vẽ trên mặt phẳng sao cho các cạnh chỉ gặp
thumb|right|Một ví dụ mạng với 8 đỉnh và 10 cạnh **Lý thuyết mạng** là một nghiên cứu đồ thị như là cách thể hiện các quan hệ đối đối xứng hay đồ thị có hướng
nhỏ | _[[Trẻ em mắt đen_, một trong những truyền thuyết thành thị nổi tiếng nhất trên thế giới.]] **Truyền thuyết đô thị** (còn gọi là **truyền thuyết thành thị**, **truyền thuyết thời hiện đại**;
nhỏ|Đồ thị ngẫu nhiên có hướng, 20 nút, xác suất p = 0,1, trường hợp 1. Trong toán học, một **đồ thị ngẫu nhiên** là một đồ thị được sinh ra bởi một quá trình
Trong Lý thuyết đồ thị, **phép đồng cấu đồ thị** (tiếng Anh: _graph homomorphism_) là ánh xạ giữa hai đồ thị trong khi tôn trọng cấu trúc của chúng. Cụ thể hơn, nó ánh xạ
thumb|Ví dụ về đồ thị hai phía không có chu trình Trong Lý thuyết đồ thị, **đồ thị hai phía** (**đồ thị lưỡng phân** hay **đồ thị hai phần**) (tiếng Anh: bipartite graph) là một
Cuốn sách Lý thuyết đồ thị và ứng dụng cài đặt bởi ngôn ngữ mạnh PYTHON gồm nội dung như sau Chương 1 Các định nghĩa, phân loại và một số khái niệm cơ bản
Trong lý thuyết đồ thị, đồ thị **Petersen** là 1 đồ thị vô hướng với 10 đỉnh và 15 cạnh. Nó thường được sử dụng làm minh họa trong khi trình bày các lý thuyết
Tính liên thông (connectivity) là một trong những tính chất quan trọng nhất của đồ thị nói riêng và lý thuyết đồ thị nói chung. ## Định Nghĩa Một đồ thị được gọi là liên
Trong lý thuyết đồ thị, một **đồ thị hai phía đầy đủ** (tiếng Anh: Complete bipartite graph hoặc biclique) là một dạng đồ thị hai phía đặc biệt, trong đó mỗi đỉnh của tập thứ
Trong lý thuyết đồ thị, một **đồ thị chính quy**, còn gọi là **đồ thị đều** (tiếng Anh: _regular graph_) là một đồ thị trong đó mỗi đỉnh có số láng giềng bằng nhau, nghĩa
thumb|phải|[[Đồ thị Petersen là đồ thị cạnh đơn vị, nó có thể vẽ trong mặt phẳng với độ dài tất cả các cạnh đều bằng một.]] **Đồ thị cạnh đơn vị** (tiếng Anh: _unit distance
thumb|Một đồ thị có hướng đơn giản Trong toán học, và cụ thể hơn trong lý thuyết đồ thị, **đồ thị có hướng** (tiếng Anh: **directed graph** hay **digraph**) là một đồ thị được tạo
Trong Lý thuyết đồ thị, **đồ thị cánh bướm** (tiếng Anh: _butterfly graph_) hay còn gọi là **đồ thị hình nơ** (tiếng Anh: _bowtie graph_) là một đồ thị phẳng, có 5 đỉnh và 6
Trong lý thuyết đồ thị, **đồ thị bánh xe** (tiếng Anh: _wheel graph_) W_n được tạo thành từ đồ thị chu trình C_{n-1} bằng cách thêm 1 đỉnh và các cạnh nối đỉnh đó với
## Giới thiệu :Khi giải quyết nhiều bài toán lý thuyết đồ thị, ta luôn phải duyệt qua tất cả các đỉnh của đồ thị đó. Cho nên, cần có thuật toán duyệt toàn bộ
Hình:Cycle Graphs.PNG| Các đồ thị chu trình C_3,C_4,C_5,C_6. Trong lý thuyết đồ thị, **đồ thị chu trình** (tiếng Anh: _Cycle graph_) chính là chu trình đơn. Nó có hình dạng của đa
Trong lý thuyết độ phức tạp tính toán (_Computational complexity theory_), **Đồ thị con đẳng cấu** là một bài toán quyết định (_decision problem_) thuộc loại NP-đầy đủ (_NP-complete_). Phát biểu của bài toán quyết
**Lý thuyết về thị trường lemon** là lý luận kinh tế học đề cập đến hiện tượng người mua do thiếu thông tin về các hàng hóa và dịch vụ trên thị trường nên đã
**Định lý năm màu** (còn gọi là _định lý bản đồ năm màu_): Mọi đồ thị phẳng (G) đều có số màu \gamma(G) \le 5 \,. Là một kết quả từ Lý thuyết đồ
Trong lý thuyết đồ thị, **định lý Kirchhoff**, hay **định lý Kirchhoff cho ma trận và cây**, đặt tên theo Gustav Kirchhoff, là một định lý về số cây bao trùm của một đồ thị.
Trong lý thuyết đồ thị, **định lý Kuratowski**, được phát triển bởi nhà toán học người Ba Lan Kazimierz Kuratowski, là một đặc tính của đồ thị phẳng. ## Định lý 1 Đồ thị đủ
Trong lý thuyết đồ thị, có hai định lý được gọi là **định lý Dirac** (tiếng Anh: _Dirac's theorem_), cả hai đều được đặt theo tên nhà toán học Gabriel Andrew Dirac: :1. Cho _G_
**Giả thuyết Kahn–Kalai**, hay còn gọi là **giả thuyết ngưỡng kì vọng**, là một giả thuyết trong nhánh lý thuyết đồ thị và cơ học thống kê, được đề xuất bởi Jeff Kahn và Gil
**Phép đẳng cấu đồ thị** (tiếng Anh: _graph isomorphism_) là một song ánh giữa các tập đỉnh của hai đồ thị GH: : f: V(G) \rightarrow V(H) với tính chất rằng cặp đỉnh
} ## Bối cảnh thực tế Bài toán tìm đường đi ngắn nhất giữa hai đỉnh của đồ thị liên thông có nhiều ứng dụng thực tế như: * Bài toán chọn hành trình
Trong toán học, **đồ thị đối ngẫu** của một đồ thị mặt phẳng G là một đồ thị G' trong đó có một đỉnh tương ứng cho mỗi miền mặt phẳng của đồ thị G,
vừa|phải|Với _n_ bằng 5 Một đồ thị có e đỉnh, và có thể gán nhãn cho mỗi đỉnh với một số tự nhiên bất kỳ nằm giữa 0 và e sao cho: * mỗi đỉnh
thumb|Một đồ thị vô hướng với 3 đỉnh (vòng tròn màu xanh viền đen) và 3 cạnh. **Đồ thị vô hướng** là một đồ thị mà các cạnh của nó không có hướng. Mỗi cạnh
## Đồ thị tăng luồng * Giả sử f là một luồng trên mạng G = (V, E). Từ mạng G = (V, E) ta xây dựng đồ thị có trọng số trên cung Gf
Trong toán học, **đa đồ thị** (_multigraph_ hay _pseudograph_) là một đồ thị được phép có nhiều cạnh (còn gọi là cạnh song song), nghĩa là các cạnh có cùng một nút kết thúc. Do
**Đồ thị đầy đủ** n đỉnh (tiếng Anh: _complete graph_), ký hiệu là K_n (chữ _K_ lấy từ tiếng Đức _komplett_), là đồ thị đơn vô hướng mà giữa hai đỉnh bất kì của nó
**Lý thuyết dây** là một thuyết hấp dẫn lượng tử, được xây dựng với mục đích thống nhất tất cả các hạt cơ bản cùng các lực cơ bản của tự nhiên, ngay cả lực
nhỏ|[[Đồ thị Cayley của nhóm tự do có hai phần tử sinh. Đây là nhóm hyperbol có biên Gromov là tập Cantor. Tương tự với đồ thị Cayley, nhóm hyperbol và biên của nó là
**Lý thuyết số** là một ngành của toán học lý thuyết nghiên cứu về tính chất của số nói chung và số nguyên nói riêng, cũng như những lớp rộng hơn các bài toán mà