- vừa được xem lúc

Giới thiệu về Lý thuyết đồ thị

0 0 15

Người đăng: Viblo Algorithm

Theo Viblo Asia

I. Khái niệm về đồ thị

1. Sơ lược về Lý thuyết đồ thị

Trong Toán học và Tin học, Lý thuyết đồ thị tập trung nghiên cứu về một đối tượng cơ bản là đồ thị - một đối tượng có tính ứng dụng rất cao trong thực tế. Mô hình đồ thị xuất hiện xung quanh ta, trong nhiều lĩnh vực của cuộc sống, như giao thông, cấu trúc website,...

Mô hình bài toán 7 cây cầu ở Königsberg

Người đặt nền móng cho sự phát triển của Lý thuyết đồ thị là Leonhard Euler - nhà toán học người Thụy Sĩ. Thông qua việc đưa ra lời giải cho bài toán 77 cây cầu ở Königsberg vào năm 17361736, ông đã chính thức khai sinh lý thuyết đồ thị.

Một cách trừu tượng hóa, đồ thị là một tập các đối tượng được gọi là các đỉnh (hoặc nút) được nối với nhau bằng các cạnh (hoặc cung) và được biểu diễn theo nhiều cách khác nhau trong Toán học và Tin học.

2. Định nghĩa và phân loại đồ thị

Một đồ thị là một cấu trúc rời rạc gồm tập hợp các đỉnh và các cạnh nối giữa các đỉnh đó. Có thể mô tả đồ thị theo cách hình thức như sau:

G=(V,E)G=(V,E)

tức là đồ thị GG có tập các đỉnh là VV, tập các cạnh là EE. Có thể hiểu EE là tập hợp các cặp (u,v)(u, v) với uuvv là hai đỉnh thuộc VV.

Có thể phân loại đồ thị GG theo tính chất của tập cạnh như sau:

  • GG được gọi là đơn đồ thị nếu như giữa hai đỉnh (u,v)(u, v) của VV có nhiều nhất một cạnh trong EE nối từ uu tới vv.
  • GG được gọi là đa đồ thị nếu như giữa hai đỉnh (u,v)(u, v) của VV có thể có nhiều hơn 11 cạnh nối trong EE nối từ uu tới vv. Hiển nhiên đơn đồ thị cũng là đa đồ thị.
  • GG được gọi là đồ thị vô hướng (undirected graph) nếu như các cạnh trong EE là không định hướng, tức là cạnh (u,v)(u, v)cạnh hai chiều.
  • GG được gọi là đồ thị có hướng (directed graph) nếu như các cạnh trong EE là có định hướng, tức là có thể tồn tại cạnh nối từ u tới v nhưng chưa chắc đã tồn tại cạnh nối từ v tới u. Trên đồ thị có hướng, các cạnh sẽ được gọi là các cung. Đồ thị vô hướng cũng có thể coi là đồ thị có hướng, nếu như ta coi cạnh (u,v)(u, v) bất kỳ tương ứng với hai cung (uv)(u\rightarrow v)(vu)(v \rightarrow u).

II. Các khái niệm trên đồ thị

1. Cạnh liên thuộc, đỉnh kề, bậc và khuyên

Đối với đồ thị vô hướng G=(V,E),G=(V, E), xét cạnh e=(u,v)Ee = (u, v) \in E. Ta nói rằng hai đỉnh uuvv kề nhau (adjacent), và cạnh ee này liên thuộc (incident) với hai đỉnh uuvv.

Với một đinh u thuộc đồ thị, định nghĩa bậc (degree), ký hiệu deg(u)deg(u) là số cạnh liên thuộc với uu. Trên đơn đồ thị, số cạnh liên thuộc với uu cũng chính là số đỉnh kề với uu.

Định lý 1

Giả sử G=(V,E)G=(V, E) là đồ thị vô hướng với MM cạnh khi đó tổng tất cả các bậc đỉnh trong VV sẽ bằng 2M2M.

vVdeg(v)=2M\sum_{v \in V} deg(v)=2M

Chứng minh: Khi lấy tổng tất cả các bậc đỉnh, tức là mỗi cạnh e=(u,v)e=(u, v) bất kỳ sẽ được tính một lần trong deg(u)deg(u) và một lần trong deg(v)deg(v). Từ đó suy ra điều phải chứng minh.

Hệ quả: Trên đồ thị vô hướng, số đỉnh bậc lẻ là một số chẵn.

Đối với đồ thị có hướng G=(V,E)G=(V, E), xét một cung e=(uv)Ee=(u \rightarrow v) \in E. Khi đó ta nói đỉnh u nối tới đỉnh vđỉnh v nối từ đỉnh u. Đỉnh uu được gọi là đỉnh đầu, đỉnh vv được gọi là đỉnh cuối của cung ee.

Với mỗi đỉnh u trong đồ thị có hướng, định nghĩa: Bán bậc ra (out-degree) của đỉnh uu, kí hiệu deg+(u)deg^+(u) là số cung đi ra khỏi nó; Bán bậc vào (in-degree) của đỉnh uu, kí hiệu deg(u)deg^-(u) là số cung đi vào nó.

Định lý 2

Giả sử G=(V,E)G=(V, E) là đồ thị có hướng với M cung, khi đó tổng tất cả các bán bậc ra bằng tổng tất cả các bán bậc vào và bằng MM:

vVdeg+(v)=vVdeg(v)=M\sum_{v \in V} deg^+(v)=\sum_{v \in V} deg^-(v)=M

Chứng minh: Khi lấy tổng tất cả các bán bậc ra hoặc bán bậc vào, mỗi cung (uv)(u\rightarrow v) bất kỳ sẽ được tính đúng một lần trong deg+(u)deg^+(u) và cũng được tính đúng một lần trong deg(v)deg^-(v). Từ đó suy ra điều phải chứng minh.

Ngoài ra, trên đồ thị có hướng hoặc vô hướng, trong một số trường hợp có thể có những cạnh nối một đỉnh với chính nó. Cạnh này được gọi là khuyên của đồ thị, và trong trường hợp này, thì các cạnh nối hai đỉnh phân biệt sẽ được gọi là các liên kết để tránh nhầm lẫn.

Đồ thị có khuyên ở đỉnh 3

2. Đường đi và chu trình

Một đường đi PP độ dài kk từ đỉnh v0v_0 tới đỉnh vkv_k là tập đỉnh {v0,v1,v2,...,vk}\{v_0, v_1, v_2,..., v_k\} sao cho (vi1,vi)E,i:1ik(v_{i - 1},v_i) \in E, \forall i: 1 \le i \le k. Khi đó ta nói đường đi này bao gồm các đỉnh {v0,v1,v2,...,vk}\{v_0, v_1, v_2,..., v_k\} và các cạnh {(v0,v1),(v1,v2),...,(vk1,vk)}\{(v_0, v_1), (v_1, v_2), ..., (v_{k - 1}, v_k)\}; và v0v_0 đến được vkv_k thông qua đường đi PP.

Đường đi được gọi là đường đi đơn giản (simple path) nếu tất cả các đỉnh trên đường đi đó đều phân biệt. Đường đi được gọi là đường đi đơn nếu như không có cạnh nào trên đường đi đó đi qua hơn một lần.

Một đường đi con (subpath) PP' của PP là một đoạn liên tục các đỉnh và cạnh dọc theo đường đi PP.

Đường đi PP gọi là chu trình (circuit) nếu như v0=vkv_0=v_k. Chu trình PP gọi là chu trình đơn giản (simple circuit) nếu như {v1,v2,...,vk}\{v_1, v_2,..., v_k\} đôi một khác nhau. Chu trình mà trong đó không có cạnh nào đi qua hơn một lần được gọi là chu trình đơn.

3. Tính liên thông của đồ thị

Đối với đồ thị vô hướng G=(V,E)G=(V, E) thì GG được gọi là liên thông nếu như với mọi cặp đỉnh phân biệt (u,v)(u, v), ta đều có uu đến được vv (đồng nghĩa với vv cũng đến được uu).

Đối với đồ thị có hướng G=(V,E)G=(V, E):

  • GG được gọi là liên thông mạnh (strongly connected) nếu với mọi cặp đỉnh phân biệt (u,v)(u, v), ta có uu đến được vvvv đến được uu.
  • GG được gọi là liên thông yếu (weakly connected) nếu như đồ thị vô hướng nền của nó là liên thông (tức là hủy bỏ chiều của các cạnh trên đồ thị).
  • GG được gọi là liên thông một phần (unilaterally connected) nếu như với mọi cặp đỉnh phân biệt (u,v),(u, v), có ít nhất một đỉnh đến được đỉnh còn lại.

III. Tài liệu tham khảo

Bình luận

Bài viết tương tự

- vừa được xem lúc

Thuật toán quay lui (Backtracking)

Quay lui là một kĩ thuật thiết kế giải thuật dựa trên đệ quy. Ý tưởng của quay lui là tìm lời giải từng bước, mỗi bước chọn một trong số các lựa chọn khả dĩ và đệ quy.

0 0 51

- vừa được xem lúc

Các thuật toán cơ bản trong AI - Phân biệt Best First Search và Uniform Cost Search (UCS)

Nếu bạn từng đọc các thuật toán trong AI (Artificial Intelligence - Trí tuệ nhân tạo), rất có thể bạn từng nghe qua về các thuật toán tìm kiếm cơ bản: UCS (thuộc chiến lược tìm kiếm mù) và Best First Search (thuộc chiến lược tìm kiếm kinh nghiệm). Khác nhau rõ từ khâu phân loại rồi, thế nhưng hai th

0 0 169

- vừa được xem lúc

Sử dụng vector trong lập trình C++ - giải bài toán lập trình muôn thủa

Chào buổi tối mọi người, hôm nay lang thang trên mạng bắt gặp bài toán quen thuộc một thời của quãng đường sinh viên IT. Đấy chính là câu số 1 trong đề thi dưới đây:.

0 0 57

- vừa được xem lúc

MÔ PHỎNG THUẬT TOÁN VƯƠNG HẠO TRONG PROLOG

. 1. Các luật suy diễn trong thuật toán Vương Hạo. Luật 1: Chuyển vế các giả thuyết và kết luận ở dạng phủ định. Ví dụ: p v q, !(r ^ s), !q, p v r -> s, !p <=> p v q, p v r, p -> s, r ^ s, q.

0 0 90

- vừa được xem lúc

A* Search Algorithm

What is A* Search Algorithm. How it works. . Explanation.

0 0 58

- vừa được xem lúc

Python: Jump Search

Search là một từ khóa khá là quen thuộc đối với chúng ta. Hiểu theo đúng nghĩa đen của nó chính là "Tìm kiếm".

0 0 50