1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Giáo trình Toán rời rạc Chương 6

17 693 2
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Đồ Thị Và Cây
Trường học Trường Đại Học Khoa Học Tự Nhiên
Chuyên ngành Toán Rời Rạc
Thể loại Giáo Trình
Thành phố Thành Phố Hồ Chí Minh
Định dạng
Số trang 17
Dung lượng 3,08 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Giáo trình Toán rời rạc

Trang 1

Chương VI

ĐỒ THỊ VÀ CÂY

ồ thị là một chủ đề đã cũ nhưng lại có rất nhiều ứng dụng trong các ngành khoa học hiện đại và được dùng để giải rất nhiều lớp bài toán khác nhau Đặc biệt là trong công nghệ thông tin lý thuyết đồ thị có một vai trò rất quan trọng trong việc xác định các kết nối trên mạng máy tính, tối ưu hóa đường truyền dữ liệu cũng như tối ưu hóa bản thân dữ liệu được trao đổi giữa các máy tính , v.v

Đ

Trong chương trước chúng ta đã nghiên cứu một số khái niệm đầu tiên về đồ thị, chương này cung cấp cho chúng ta thêm một số khái niệm và tính chất thường dùng để giải các bài toán có áp dụng lí thuyết đồ thị Cũng cần lưu ý là nếu không có chỉ định gì đặc biệt thì đồ thị nói trong chương này là đồ thị vô hướng

I ĐỒ THỊ

Định nghĩa: Bậc của một đỉnh trong một đồ thị là số cạnh tới nối với đỉnh này.

Ví dụ:

Các đỉnh cô lập A, D có bậc 0

Bậc của đỉnh F là 3 Bậc của đỉnh B là 4 (Bậc của đỉnh có vòng được cộng thêm 2 cho mỗi vòng)

Bậc của đỉnh G là 1 Đỉnh bậc 1 gọi là đỉnh treo và cạnh tới tương ứng gọi là cạnh treo.

Bổ đề 1: Trong một đồ thị thì tổng bậc các đỉnh bằng hai lần số cạnh.

Chứng minh

Vì mỗi cạnh được tính cho 2 đỉnh có bậc khác 0

QED

Ví dụ: Có bao nhiêu cạnh trong đồ thị (vô hướng) có 10 đỉnh đều có bậc là 6? Giải: Tổng bậc tất cả các đỉnh là 6*10 = 60 nên suy ra đồ thị có tất cả 30 cạnh Bổ đề 2: Số các đỉnh bậc lẻ là số chẵn.

Chứng minh

Tổng bậc các đỉnh bậc lẻ+Tổng bậc các đỉnh bậc chẵn = 2 * số cạnh

Suy ra tổng bậc các đỉnh bậc lẻ là chẳn

Định nghĩa: Một đồ thị gọi là đồ thị đơn nếu không có cặp đỉnh nào được nối với nhau

bằng quá một cạnh

Trang 2

A D A B

C

Một số kiểu đồ thị đơn đặc biệt:

Định nghĩa: Một đồ thị đơn n đỉnh gọi là đồ thị hoàn chỉnh, kí hiệu Kn, nếu nó là một đồ thị đơn và chứa đúng một cạnh giữa mỗi cặp đỉnh phân biệt

Định nghĩa: Một đồ thị đơn gọi là đồ thị phân đôi nếu tập V các đỉnh của nó có thể phân

thành hai tập con không rỗng V1 và V2 rời nhau sao cho mọi cạnh trong đồ thị đều nối một đỉnh của V1 và một đỉnh của V2 (Không có cạnh nào nối hai đỉnh trong V1 hoặc hai đỉnh trong V2 với nhau)

Các đồ thị phân đôi

Định nghĩa: Đồ thị đơn gọi là phân đôi hoàn chỉnh, kí hiệu Km,n, nếu tập các đỉnh V của nó có thể phân thành hai tập con V1 và V2 lần lượt có m đỉnh và n đỉnh và mỗi đỉnh trong tập con này đều được nối với mọi đỉnh trong tập con kia

Ứng dụng của đồ thị trong công nghệ thông tin:

Mạng cục bộ (LAN - Local Area Network): Nhiều máy tính và các thiết bị ngoại vi đi

kèm đặt trong một tòa nhà có thể được nối với nhau thành một mạng gọi là mạng cục bộ Cấu

V2

V1

Trang 3

trúc cách thức nối các máy tính này với nhau gọi là topology mạng Một topology mạng là một kiểu đồ thị mà mỗi đỉnh là một máy tính còn các cạnh là các đường truyền (cable đồng trục / cable UTP / cable quang / vô tuyến)

Topology tuyến tính: Các máy tính được nối với nhau thành một đường Thông thường các đường truyền là coaxial thin cable (10BASE-2) hoặc coaxial thick cable sử dụng các đầu nối chữ T (T-connector)

Topology hình sao: Các máy tính được nối với nhau thành một đồ thị phân đôi hoàn chỉnh K1,n Đường truyền thường dùng cable UTP 10BASE-T với các đầu nối 10BASE-T RJ-45 và sử dụng hộp tập trung cable (gọi là HUB)

Topology vòng: Các máy tính được nối với nhau thành một chu trình không tự cắt Server là một trong các đỉnh của đồ thị Trong cấu hình Token ring, server gởi một tín hiệu, gọi là cờ (flag) luân chuyển trong MAU (Media Access Unit) mạng Workstation nào nhận được cờ này sẽ được quyền thu phát tín hiệu Topology này thường được dùng trong các hệ thống thời gian thực (real time system)

Ngoài ra có thể dùng cấu trúc hỗn hợp giữa các cấu trúc này:

Trang 4

Xử lí song song (parallel processing) : Máy tính đơn sử dụng một CPU hoạt động theo

nguyên lí Von Neumann Nghĩa là tại mỗi thời điểm chỉ có một chỉ thị máy được CPU xử lí và các chỉ thị này được xử lí tuần tự hết chỉ thị này đến các chỉ thị khác Khi máy tính hoạt động theo chế độ đa nhiệm (multitasking) thì CPU thực hiện chế độ xắt lát thời gian (time slicing) và kỹ thuật đường ống (pipeline) để giải quyết các yêu cầu ngắt dày đặt của các chương trình1 Nếu có quá nhiều chương trình tranh chấp nhau thời gian CPU sẽ xảy ra tình trạng “thắt cổ chai” và hệ thống máy tính sẽ chạy chậm đi (slow down) đáng kể Để giải quyết kịp thời các yêu cầu này hoặc là phải tăng xung nhịp của CPU (tăng tốc độ xử lí) hoặc là phải tăng số bộ

xử lí lên Nếu có nhiều bộ xử lí thì các giải thuật song song sẽ phân chia bài toán cần giải

quyết ra thành nhiều bài toán con để có thể giải đồng thời Các bài toán con này sẽ được gởi đến cho các bộ xử lí khác nhau để xử lí riêng rẽ Khi tất cả các bài toán con đã được xử lí xong thì một kết quả tổng hợp sẽ được thực hiện

Ví dụ: Một đoạn mã giả thể hiện giải thuật có sử dụng quá trình xử lí song song các

phát biểu statement_1, statement_2, , statement_n

cobegin

statement_1;

statement_2;

statement_n;

coend

Statement_m

Ví dụ: Thực hiện đoạn chương trình2:

x := a - c*d + e

y := b + d/a

z := x + e*y Xử lí trên máy tính tuần tự (một bộ xử lí) cần 7 bước:

Xử lí trên máy tính xử lí song song chỉ cần 4 bước:

1 Đề nghị người đọc xem lại các tài liệu về hệ điều hành và chế độ đa nhiệm.

2 An Introduction to Operating Systems - Harvey M Deitel -Addison Wesley-1990 - pp 319,340

Trong đoạn chương trình này các công việc được khai báo giữa cobegin coend

(statement_1,statement_2, ,statement_n) sẽ được thực hiện đồng thời trên các CPU khác nhau Khi đã thực hiện xong tất cả các công việc đó statement_m sẽ được thi hành.

Trang 5

Khi xử lí song song, dữ liệu đầu vào của bộ xử lí này có thể chính là dữ liệu đầu ra của bộ xử lí kia Do đó các bộ xử lí cần phải được liên kết với nhau theo một sơ đồ cấu trúc nào đó

Cách liên kết đơn giản nhất là liên kết hai chiều giữa từng cặp bộ xử lí tạo thành một đồ thị hoàn chỉnh Kn Tuy nhiên như vậy thì số liên kết sẽ bùng nổ quá nhiều theo số bộ xử lí Với máy tính n bộ xử lí cần đến: (n-1)+(n-2)+ +1 = (n/2)(n-1) liên kết giữa các CPU

Có thể liên kết các bộ xử lí theo đường thẳng: Mỗi bộ xử lí Pi (i≠1 và i≠n) được nối

với hai bộ xử lí kế bên Pi-1 và Pi+1 Nhưng như vậy thì cần các bước xử lí trung gian khi Pi chia sẽ dữ liệu với các Pj (Pj≠Pi-1 và Pj≠Pi+1)

Người ta dùng phổ biến cách liên kết theo mảng hai chiều, trong đó số bộ xử lí N là một số chính phương Các bộ xử lí được đánh thứ tự Pi,j trong đó i và j chạy từ 1 đến m (m =

2 N ) Mỗi Pi,j liên kết với 4 bộ xử lí láng giềng Pi+1,j, Pi-1,j, Pi,j+1 và Pi,j-1 trừ các bộ xử lí ở ngoại

vi Các liên kết có thể có được minh họa như trong đồ thị sau:

P1,1

Pm,m

Đường đi Euler và đường đi Hamilton:

Định nghĩa: Đường là một đồ thị G = <V,E,I> mà quan hệ tới I có tính chất nối đuôi3 Tính chất nối đuôi của I có thể được biểu diễn dưới dạng:

I = { (A1,y1,A2); (A2,y2,A3); ;(An-2,yn-2,An-1); (An-1,yn-1,An) } ⊆VxExV

3 Lưu ý rằng đường có thể là đồ thị con của một đồ thị khác.

Trong bước 1 các phép toán +,* và / được xử lí song song

Trong bước 2 các phép toán - và + được xử lí song song

Trang 6

Nói cách khác đường là một chuỗi cạnh nối tiếp nhau

Ta kí hiệu đường bằng chuỗi đỉnh được nối với nhau bởi đường

Đường không tự cắt là một đường có 2 đỉnh bậc 1 và mọi đỉnh còn lại đều có bậc 2

Ví dụ:

Đường DCB là đường không tự cắt

Đường ACBCD là đường tự cắt

Định nghĩa: Đường đi gọi là đơn nếu nó không chứa cạnh nào quá 1 lần.

Khái niệm liên thông:

Đồ thị liên thông là đồ thị mà mọi cặp đỉnh đều có đường nối Đồ thị không liên thông được gọi là đồ thị rời rạc

Ví dụ:

G1 là đồ thị liên thông còn G2

là đồ thị rời rạc

Khái niệm chu trình:

Định nghĩa: Chu trình là một đường có mọi đỉnh đều bậc chẵn Chiều dài của chu trình

là số cạnh của chu trình Chu trình gọi là đơn nếu nó không chứa cạnh nào quá một lần

Ví dụ:

Trong đồ thị G3 thì đường ACDFEA là một chu trình không tự cắt có chiều dài 5

Trong đồ thị G4 thì ADCBCA là một chu trình tự cắt

Hệ quả: Nếu một chu trình không tự cắt thì mọi đỉnh đều có bậc 2

Hệ quả: Chu trình là chu trình đơn nếu mọi đỉnh của nó đều bậc chẳn

Định nghĩa: Đường đi Euler trong đồ thị G là đường đi đơn chứa tất cả các cạnh của G

Chu trình Euler trong G là chu trình đơn chứa tất cả các cạnh của G

Định lí:

Một đa đồ thị liên thông sẽ có chu trình Euler nếu và chỉ nếu tất cả các đỉnh của nó đều có bậc chẳn

Ta chấp nhận định lí này

Trang 7

Giải thuật tìm chu trình Euler (Giải thuật Fleury):

Ví dụ: Tìm chu trình Euler cho đồ thị:

Bước 0: Ma trận kề cho đồ thị trên là:

M =

0 1 1 0 0 0

1 0 1 1 1 0

1 1 0 1 1 0

0 1 1 0 1 1

0 1 1 1 0 1

0 0 0 1 1 0

Bước 1: Giả sử ta chọn đỉnh (xuất phát) là đỉnh A

Bước 2: Chọn đỉnh có chỉ số nhỏ nhất trong các đỉnh có chỉ số lớn hơn A có cạnh nối với

A (bằng không chọn đỉnh có chỉ số nhỏ nhất có cạnh nối với A) Trong trường hợp này là B, thay đổi giá trị tại các vị trí có tọa độ (A,B) và (B,A) thành 0

M =

0 0 1 0 0 0

0 0 1 1 1 0

1 1 0 1 1 0

0 1 1 0 1 1

0 1 1 1 0 1

0 0 0 1 1 0

Bước 3: Ghi nhận B Ghi nhận đường d=AB

Bước 4: Đỉnh bây giờ là B

Bước 5: Ma trận khác ma trận 0? Nếu chưa quay lại bước 2, bằng không qua bước 6 Bước 6: Thông báo đường (chu trình Euler) d Qua bước 7

Bước 7: Kết thúc

Thực hiện giải thuật trên ta có dãy các ma trận là (để cho dễ theo dõi các chổ thay thế

0 bằng 1 sẽ được ghi bàng dấu “.”):

0 1 1 0 0 0

1 0 1 1 1 0

1 1 0 1 1 0

0 1 1 0 1 1

0 1 1 1 0 1

0 0 0 1 1 0

0 1 0 0 0 0 1 1 1 0

1 1 0 1 1 0

0 1 1 0 1 1

0 1 1 1 0 1

0 0 0 1 1 0

0 1 0 0 0 0 1 1 0

1 0 1 1 0

0 1 1 0 1 1

0 1 1 1 0 1

0 0 0 1 1 0

Trang 8

A B C

0 1 0 0 0

0 1 1 0

1 0 1 0

0 1 0 1 1

0 1 1 1 0 1

0 0 0 1 1 0

0 1 0 0 0 0 1 1 0

1 0 1 0

0 1 0 1

0 1 1 0 1

0 0 0 1 1 0

0 1 0 0 0 0 1 1 0

1 0 1 0

0 1 0 1

0 1 1 0

0 0 0 1 0

0 1 0 0 0

0 1 1 0

1 0 1 0

0 1 0

0 1 1 0

0 0 0 0

0 1 0 0 0 0 1 0

1 0 1 0

0 0

0 1 1 0

0 0 0 0

0 1 0 0 0 0 0

1 0 1 0

0 0

0 1 0

0 0 0 0

0 1 0 0 0

0 0

1 0 0

0 0

0 0

0 0 0 0

0 0 0 0 0 0 0 0

0 0

0 0

0 0 0 0

Kết quả thực hiện thuật toán trên là: ABCDEFDBECA

o Đồ thị phẳng

Định nghĩa 1: Một đồ thị gọi là phẳng nếu ta có thể vẽ nó trong một mặt phẳng và không có cạnh nào cắt nhau trừ tại các đỉnh.

Ví dụ:

Các đồ thị sau đây là phẳng vì ta có thể vẽ lại nó mà không có cạnh nào cắt nhau:

Trang 9

Sau khi vẽ lại:

Đồ thị sau đây (K5) không thể là đồ thị phẳng được:

C

D

E

Trang 10

Vấn đề xác minh một đồ thị có phải là phẳng hay không rất quan trọng trong việc thiết

kế các mạch in Trên các mạch như vậy các đường nối các chân linh kiện (đỉnh) không thể cắt nhau được Do đó một tiêu chuẩn nhận biết một đồ thị có là đồ thị phẳng hay không là rất cần thiết

Ta thấy rằng nếu một đồ thị có thể vẽ lại thành đồ thị phẳng thì đồ thị phẳng đó chia mặt phẳng ra làm các miền, bao gồm các miền bên trong đồ thị và miền bên ngoài Trong đồ thị phẳng bên đây ta có các miền f1, f2, f3, f4 Chú ý rằng ta luôn có một và chỉ một miền bên ngoài (trong hình này là miền f4)

o Công thức Euler và định lý Kuratowski :

Nhà toán học Euler đã chứng minh rằng một đồ thị phẳng dù được biểu diễn phẳng bằng cách nào đi nữa thì số miền chia là một hằng số

Định lý:

Cho G là một đồ thị đơn, phẳng, liên thông có e cạnh và v đỉnh Gọi f là số miền trong biểu diễn phẳng của G thì: f = e - v + 2. (*)

Chứng minh:

Ta sẽ xây dựng biểu diễn phẳng của G lần lượt từng cạnh một thành một dãy các đồ thị con phẳng Gi của G Việc bổ sung lần lượt từng cạnh một như thế được định nghĩa đệ qui như sau:

Nếu n = 1 thì Gn là một cạnh bất kì của G, ngoài ra ta xây dựng Gn+1 từ Gn bằng cách bổ sung vào Gn một cạnh mới liên thuộc với Gn và một đỉnh mới liên thuộc với cạnh mới đó nếu như chưa có cạnh mới này trong Gn Làm được như vậy vì G là một đồ thị liên thông Ta sẽ nhận được G khi đạt được Ge Với mỗi Gn ta gọi fn, en, vn là số miền, số cạnh và số đỉnh tương ứng

Ta chứng minh công thức trên bằng cách truy chứng theo n:

 n = 1

Đồ thị con G1 có v1=2, e1=1 và chỉ chia mặt phẳng ra làm một miền f1 = 1 Công thức (*) đã thỏa cho trường hợp n=1

 Giả sử công thức (*) đã được chứng minh cho trường hợp Gn (tức là đã xây dựng được tới Gn, ta có fn = en - vn +2)

Trang 11

Cho (an+1,bn+1

) là cạnh xác định bởi hai đỉnh an+1

và bn+1

cần được bổ sung vào Gn để được Gn+1 Theo cách xây dựng Gn+1 nói trên, một trong hai đỉnh này phải thuộc Gn, giả sử đó là an+1 Chỉ có hai khả năng xảy ra:

an+1 và bn+1 đều là đỉnh sẳn có trong Gn: Khi đó cả an+1 và bn+1 đều phải cùng nằm trên biên của một miền đã được chia bởi Gn (bằng không cạnh mới này sẽ cắt ít nhất một trong các cạnh sẳn có!) Cạnh nối bởi an+1 và bn+1 phải làm tăng thêm một miền trong thuộc miền trong của Gn hoặc làm tăng thêm một miền trong trước kia vốn thuộc miền ngoài của Gn nhưng lại không làm tăng số đỉnh Trong cả hai trường hợp này:

fn+1 = fn+1 = (en - vn + 2) + 1

= (en+1) - vn+1 + 2

= (en+1) - vn+1 + 2

bn+1 không thuộc Gn Vậy bn+1 phải ở trong một miền trong đã xác định bởi Gn hoặc ở miền ngoài của

Gn Trong cả hai trường hợp đã làm tăng số cạnh lên 1 đồng thời cũng làm tăng số đỉnh lên 1 nhưng không làm tăng số mặt, ie:

fn+1 = fn = (en +1) - (vn+1) + 2

= (en+1) - vn+1 +2

Vậy công thức (*) cũng đúng cho trường hợp (n+1) Theo nguyên lí truy chứng công thức Euler đã được chứng minh cho mọi giá trị n nguyên dương Nhưng Ge chính là G nên công thức đã được chứng minh cho G

Hệ quả 1: Nếu G là một đồ thị phẳng , liên thông có e cạnh, v đỉnh (v 3) thì: e 3v-6 (**)

Chứng minh:

Giả sử G chia mặt phẳng ra làm f miền Vì G là đồ thị đơn nên mỗi miền phải được giới hạn bởi ít nhất 3 cạnh (kể cả miền ngoài) và vì mỗi cạnh phải xuất hiện đúng hai lần trên biên của hai miền khác nhau nên:

2e ≥ 3f (1) Từ (1) và e -v +2 = f suy ra e - v +2 ≤ (2/3) e Hay : 3e -3v+6 2e

Vậy: e ≤ 3v-6

QED

Trang 12

Ví dụ: Đồ thị K5 có 5 đỉnh và 10 cạnh nên không thỏa bất đẳng thức (**) Suy ra K5

không phải là một đồ thị phẳng

Hệ quả 2: Nếu G là một đồ thị đơn, liên thông có e cạnh và v đỉnh (v 3), không có chu trình độ dài 3 thì e 2v -4 (***)

Chứng minh:

Nhận xét rằng vì G không có chu trình nào độ dài 3 nên mỗi miền phải được giới hạn bởi ít nhất 4 cạnh (kể cả miền ngoài) Phần còn lại của chứng tương tự trong chứng minh của hệ quả trên

QED

Ví dụ: Đồ thị K3,3 có 6 đỉnh và 9 cạnh (là đồ thị phân đôi nên không thể có chu trình độ

dài 3) nên không thỏa bất đẳng thức (***) Suy ra K3,3 không phải là một đồ thị phẳng

Công thức Euler và các hệ quả nêu trên chỉ cho chúng ta điều kiện cần để một đồ thị là phẳng mà thôi Điều đó cũng có nghĩa là chúng ta có một điều kiện đủ để xác minh một đồ thị là không phẳng Việc chứng minh một đồ thị là phẳng là việc hết sức khó khăn Tuy nhiên chúng ta có một nhận xét sau:

“Nếu một đồ thị là phẳng thì mọi đồ thị nhận được từ đồ thị đó bằng cách bỏ đi cạnh (a,b) đồng thời thêm vào đỉnh mới c và hai cạnh (a,c), (c,b) cũng là đồ thị phẳng”

Phép toán như vậy gọi là phép phân chia sơ cấp Hai đồ thị G1 và G2 nhận được từ cùng một đồ thị G sau một loạt các phép

phân chia sơ cấp gọi là đồng phôi Rõ ràng

hai đồ thị G1 và G2 “sinh đôi” từ một “trứng”

G như vậy hoặc là cùng phẳng hoặc cùng không phẳng (như G) Hơn nữa, khi G chứa một đồ thị con như K3,3 hoặc K5 thì “gien” này đủ xác định rằng G1 và G2 là không phẳng4

Một đồ thị là không phẳng nếu và chỉ nếu nó có chứa một đồ thị con đồng phôi

với K3,3 hoặc K5

Ví dụ:

Đồ thị Petersen sau đây có phải là một đồ thị phẳng hay không?

4 Do sự phức tạp của chứng minh điều ngược lại: “Mọi đồ thị không phẳng đều chứa một đồ thị con đồng phôi với K3,3 hoặc K5” nên không nêu lên chứng minh đó ở đây.

Ngày đăng: 13/11/2012, 16:19

HÌNH ẢNH LIÊN QUAN

Đồ thị đơn Không phải đồ thị đơn (đa đồ thị) - Giáo trình Toán rời rạc Chương 6
th ị đơn Không phải đồ thị đơn (đa đồ thị) (Trang 2)
Đồ thị K 4 . Đồ thị G Đồ thị Q 3 - Giáo trình Toán rời rạc Chương 6
th ị K 4 . Đồ thị G Đồ thị Q 3 (Trang 8)
Đồ thị sau đây (K 5 ) không thể là đồ thị phẳng được: - Giáo trình Toán rời rạc Chương 6
th ị sau đây (K 5 ) không thể là đồ thị phẳng được: (Trang 9)
Đồ thị con G 1  có v 1 =2, e 1 =1 và chỉ chia mặt phẳng ra làm  một miền f 1   = 1. Công thức (*) đã thỏa cho trường hợp  n=1. - Giáo trình Toán rời rạc Chương 6
th ị con G 1 có v 1 =2, e 1 =1 và chỉ chia mặt phẳng ra làm một miền f 1 = 1. Công thức (*) đã thỏa cho trường hợp n=1 (Trang 10)
Đồ thị Petersen sau đây có phải là một đồ thị phẳng hay không? - Giáo trình Toán rời rạc Chương 6
th ị Petersen sau đây có phải là một đồ thị phẳng hay không? (Trang 12)
Hình 1 Hình 2 - Giáo trình Toán rời rạc Chương 6
Hình 1 Hình 2 (Trang 13)
Hình 3 Hình 4 - Giáo trình Toán rời rạc Chương 6
Hình 3 Hình 4 (Trang 14)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w