Chuyên đề thuật toán đồ thị trong lập trình căn bản

127 2.3K 24
Chuyên đề thuật toán đồ thị trong lập trình căn bản

Đ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

PDF được tạo bằng bộ công cụ mã nguồn mở mwlib. Xem http://code.pediapress.com/ để biết thêm thông tin. PDF generated at: Wed, 14 May 2014 15:48:20 UTC Thuật toán đồ thị Nội dung Bài Đại cương 1 Lý thuyết đồ thị 1 Thuật ngữ lý thuyết đồ thị 5 Đồ thị (lý thuyết đồ thị) 12 Ma trận kề 16 Danh sách kề 22 Tìm kiếm trong đồ thị 24 Tìm kiếm theo chiều sâu 24 Tìm kiếm theo chiều rộng 33 Sắp xếp tô pô 35 Tính liên thông của đồ thị vô hướng 38 Thành phần liên thông 38 Thuật toán Karger 40 Tính liên thông của đồ thị có hướng 42 Thành phần liên thông mạnh 42 Thuật toán Kosaraju 43 Đường đi ngắn nhất 44 Bài toán đường đi ngắn nhất 44 Thuật toán Dijkstra 45 Thuật toán Bellman-Ford 47 Giải thuật tìm kiếm A* 53 Bài toán đường đi rộng nhất 56 Cây bao trùm nhỏ nhất 59 Cây bao trùm nhỏ nhất 59 Thuật toán Borůvka 63 Thuật toán Kruskal 65 Thuật toán Prim 72 Chu trình 76 Đường đi Euler 76 Đường đi Hamilton 81 Bài toán người bán hàng 85 Thuật toán Christofides 95 Chu trình trung bình nhỏ nhất 96 Ghép cặp trên đồ thị hai phía 97 Bài toán hôn nhân bền vững 97 Ghép cặp trên đồ thị tổng quát 99 Thuật toán Edmonds 99 Luồng trong mạng 103 Luồng trên mạng 103 Định lý luồng cực đại lát cắt cực tiểu 106 Thuật toán Ford-Fulkerson 108 Thuật toán Edmonds–Karp 110 Thuật toán Dinitz 112 Các lớp đồ thị đặc biệt 115 Đồ thị phẳng 115 Chú thích Nguồn và người đóng góp vào bài 120 Nguồn, giấy phép, và người đóng góp vào hình 121 Giấy phép Bài viết Giấy phép 124 1 Đại cương Lý thuyết đồ thị 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ị 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à qui đị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ị. Lý thuyết đồ thị 2 Cách vẽ đồ thị Đồ 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 kích thước p × q, trong đó p là số đỉnh và q là số cạnh, chứa dữ liệu về quan hệ giữa đỉnh và cạnh . Đơn giản nhất: nếu đỉnh là một trong 2 đầu của cạnh , 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ới đỉnh thì phần tử 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 đó. Lý thuyết đồ thị 3 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 ) hoặc nếu nó chứa đồ thị đầy đủ . 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) Lý thuyết đồ thị 4 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 •• nguyễn văn lê •• Frank Harary •• Denes König •• W.T. Tutte • Sách trắng về lý thuyết đồ thị [1] các nhà lý thuyết đồ thị khác và danh sách ấn bản phẩm của họ. Lý thuyết đồ thị 5 Tham khảo [1] http:/ / www1. cs. columbia. edu/ ~sanders/ graphtheory/ people/ alphabetic. html Liên kết ngoài • Sách trực tuyến về Lý thuyết đồ thị (http:/ / www. math. uni-hamburg. de/ home/ diestel/ books/ graph. theory/ ) • Hướng dẫn về lý thuyết đồ thị (http:/ / www. utm. edu/ departments/ math/ graph/ ) • Bài giảng của một môn học về các thuật toán đồ thị (http:/ / www. cs. wpi. edu/ ~dobrush/ cs507/ presentation/ 2001/ Project10/ ppframe. htm) • Dữ liệu test chuẩn cho các bài toán đồ thị con đầy đủ lớn nhất (Maximum Clique), tập con độc lập lớn nhất (Maximum Independent Set), phủ đỉnh nhỏ nhất (Minimum Vertex Cover) và tô mầu đỉnh (Vertex Coloring) (http:/ / www. nlsde. buaa. edu. cn/ ~kexu/ benchmarks/ graph-benchmarks. htm) • Sưu tập ảnh số 1: một số mạng lưới thực (http:/ / www. nd. edu/ ~networks/ gallery. htm) • Các tạp chí lý thuyết đồ thị (http:/ / www1. cs. columbia. edu/ ~sanders/ graphtheory/ writings/ journals. html) Thuật ngữ lý thuyết đồ thị 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 này không trình bày các định nghĩa chính thức của các khái niệm và thuật ngữ này. Ví dụ một đồ thị đơn với tập đỉnh V = {1, 2, 3, 4, 5, 6} và tập cạnh E = Bản mẫu:1,2, {1,5}, {2,3}, {2,5}, {3,4}, {4,5}, Bản mẫu:4,6. B • Bậc (degree hoặc valency) Bậc của đỉnh v trong đồ thị G, ký hiệu d G (v), là số cạnh liên thuộc với v, trong đó, khuyên được tính hai lần. Một đỉnh có bậc 0 là đỉnh cô lập. Đỉnh có bậc 1 là một đỉnh treo hay lá. Trong đồ thị ví dụ, các đỉnh 1 và 3 có bậc là 2, các đỉnh 2, 4 và 5 có bậc bằng 3, đỉnh 6 có bậc 1. Nếu tập cạnh E là hữu hạn thì tổng giá trị bậc của các đỉnh gọi là bậc của đồ thị. Bậc của đồ thị bằng hai lần số cạnh. Số các đỉnh bậc lẻ luôn là số chẵn. Bậc cực đại của đồ thị G, ký hiệu Δ(G), là bậc lớn nhất của các đỉnh trong đồ thị; bậc cực tiểu, δ(G), là bậc nhỏ nhất của các đỉnh trong đồ thị. Trong đồ thị có hướng Γ, bậc ngoài d Γ + (v), số cung xuất phát từ đỉnh v, và bậc trong d Γ - (v), số cung đi vào đỉnh v. Bậc d Γ (v) của đỉnh v bằng tổng bậc ngoài và bậc trong của đỉnh đó. Bậc ngoài cực đại và cực tiểu được ký hiệu Δ + (Γ) và δ + (Γ); bậc trong cực đại và cực tiểu, Δ - (Γ) và δ - (Γ). Trong ngữ cảnh rõ ràng, có thể bỏ qua chỉ số dưới Γ • Bất biến đồ thị (graph invariant) là một tính chất của một đồ thị G, thường là một số hoặc một đa thức chỉ phụ thuộc vào lớp đẳng cấu của G. Ví dụ: bậc của đồ thị. Thuật ngữ lý thuyết đồ thị 6 C • Cạnh(Edge): Cạnh nối đỉnh x với đỉnh y là một tập gồm hai phần tử {x,y}, thường được vẽ dưới dạng một đoạn thẳng nối hai đỉnh. Cạnh nối hai đỉnh x và y được ký hiệu là xy (không phải x⋅y). Tập cạnh của G thường được ký hiệu là E(G), hoặc E nếu không có nguy cơ hiểu nhầm. • Cạnh có hướng là một cặp đỉnh có thứ tự. Trong mỗi cặp có thứ tự đó, đỉnh thứ nhất được gọi là đỉnh đầu, đỉnh thứ hai là đỉnh cuối. Cạnh vô hướng không quan tâm đến hướng và coi hai đỉnh như nhau. • Cạnh lá: Cạnh nối với một đỉnh lá. • Cạnh cắt: xem Cầu. • Cạnh kề nhau : Hai cạnh của một đồ thị được xem là kề nhau nếu chúng có một đỉnh chung. • Cặp ghép: (matching): một cặp ghép M của đồ thị G = (V,E) là một tập các cạnh đôi một không kề nhau của G. • Cặp ghép hoàn hảo (perfect matching): là cặp ghép phủ tất cả các đỉnh của đồ thị. Nghĩa là mỗi đỉnh của đồ thị đều liên thuộc với đúng một cạnh của cặp ghép. • Cặp ghép lớn nhất, Cặp ghép tối đa: là cặp ghép chứa nhiều cạnh nhất có thể. Có thể có nhiều cặp ghép tối đa. • Cấp (order) của một đồ thị là số đỉnh của nó, nghĩa là |V(G)|. • Cầu: là một cạnh mà nếu loại bỏ nó thì đồ thị tăng số thành phần liên thông. • Cây: là một đồ thị đơn liên thông phi chu trình. • Cây bao trùm(cây khung): là một đồ thị con bao trùm có dạng cây. Chỉ có đồ thị liên thông mới có cây bao trùm. • Cây (có gốc): thường được coi như các đồ thị đơn có hướng phi chu trình với các cung hướng từ phía gốc ra phía lá. Với mỗi cung, đỉnh tại gốc cung được gọi là đỉnh cha hoặc cha, các đỉnh tại điểm cuối của cung được gọi là đỉnh con hoặc con của đỉnh tại gốc cung. • Cây con: một cây con của đồ thị G là một đồ thị con có dạng cây. • Cây k-ary:(ví dụ: nhị phân, tam phân ) là cây có gốc mà mỗi đỉnh trong đều có không quá k con. Cây đơn phân chỉ là một đường đi. Cây nhị phân là cây mà mỗi đỉnh có không quá 2 con. Cây nhị phân đầy đủ là cây mà mỗi đỉnh trong có đúng 2 con. • Chỉ số clique: Chỉ số clique ω(G) của đồ thị G là bậc của đồ thị con đầy đủ lớn nhất của G. • Chỉ số độc lập: Chỉ số độc lập của đồ thị G, ký hiệu α(G), là kích thước của tập độc lập lớn nhất của G. • Chu trình trong đồ thị: là một đường đi đóng trong đồ thị. Đồ thị chỉ gồm một chu trình với n đỉnh được gọi là đồ thị vòng, ký hiệu C n , • Chu trình bao trùm: là cách gọi khác của chu trình Hamilton. • Chu trình chẵn: là chu trình có độ dài chẵn. • Chu trình có hướng: là một chu trình đơn mà mọi cung trong đó đều cùng hướng, nghĩa là mọi đỉnh đều có bậc trong và bậc ngoài bằng 1. Có thể gọi đơn giản là chu trình khi ngữ cảnh rõ ràng. • Chu trình đơn: là chu trình đi qua mỗi đỉnh không quá một lần. Trong đồ thị ở hình trên, (1, 5, 2, 1) là một chu trình đơn. Nếu không chỉ rõ, chu trình thường được hiểu là một chu trình đơn. • Chu trình Euler: là chu trình qua tất cả các cạnh, mỗi cạnh đúng một lần. • Chu trình lẻ: là chu trình có độ dài lẻ. • Chu vi nhỏ (girth): Chu vi nhỏ của một đồ thị là độ dài của chu trình đơn ngắn nhất của đồ thị. • Chu vi lớn (circumference): Chu vi lớn của một đồ thị là độ dài của chu trình đơn dài nhất của đồ thị. Đối với đồ thị không có chu trình, chu vi lớn và chu vi nhỏ được định nghĩa bằng giá trị vô cùng ∞. • Chuỗi bậc (degree sequence): là danh sách các bậc của một đồ thị sắp xếp theo thứ tự giảm dần. (ví dụ, d 1 ≥ d 2 ≥ … ≥ d n ). Một chuỗi giảm dần các số tự nhiên được coi là hiện thực được (realizable) nếu nó là chuỗi bậc của Thuật ngữ lý thuyết đồ thị 7 một đồ thị nào đó. • Cung: là cạnh có hướng. D • Dẫn xuất (induced) Đồ thị con H của đồ thị G được coi là dẫn xuất nếu: với mỗi cặp đỉnh x và y của H, xy là một cạnh của H khi và chỉ khi xy là một cạnh của G. Nếu H được chọn dựa trên tập đỉnh S là tập con của V(G), thì H còn được ký hiệu là G[S] và được coi là dẫn xuất từ S. Đ •• Đẳng cấu Hai đồ thị G và H được coi là đẳng cấu, ký hiệu G ~ H, nếu có một quan hệ tương ứng một-một giữa hai tập đỉnh của hai đồ thị sao cho hai đỉnh của đồ thị G kề nhau khi và chỉ khi các đỉnh tương ứng của chúng trong đồ thị H cũng kề nhau. • Đỉnh: Xem Đồ thị. Đỉnh được vẽ dưới dạng một nút hoặc một điểm. Tập đỉnh của đồ thị G thường được ký hiệu là V(G), hoặc V khi không có nguy cơ hiểu nhầm. • Đỉnh cha: Xem Cây (có gốc) • Đỉnh con: Xem Cây (có gốc) • Đỉnh cắt (cut vertex): là một đỉnh mà nếu loại bỏ nó thì đồ thị tăng số thành phần liên thông. • Đỉnh gốc: là một đỉnh đặc biệt của cây có gốc. Trong trường hợp này, cây là đồ thị có hướng, đỉnh gốc là đỉnh duy nhất có bậc trong bằng 0. • Đỉnh lá: Đỉnh có bậc 1, còn được gọi là lá. Thường dùng cho cây có gốc, khi đó lá là đỉnh không có con. • Đỉnh phát (source): là đỉnh có bậc trong bằng 0. • Đỉnh thu (sink): là đỉnh có bậc ngoài bằng 0. • Đỉnh trong (internal vertex): Đỉnh không phải là đỉnh lá. • Đồ thị: Gồm một tập các đỉnh được nối với nhau bằng các cạnh. Xem chi tiết tại Đồ thị (toán học). Nếu không không được chỉ rõ trong ngữ cảnh, đồ thị được hiểu là đồ thị đơn. • Đa đồ thị: Đồ thị có đa cạnh nhưng không có khuyên. Có tài liệu quy định là: đồ thị có đa cạnh và có khuyên. • Đồ thị cha: Một đồ thị cha của G là một đồ thị chứa G với danh nghĩa một đồ thị con. Ta nói rằng đồ thị G chứa đồ thị H nếu có một đồ thị con nào đó của G chính là H hoặc đẳng cấu với H (tùy theo yêu cầu của hoàn cảnh). • Đồ thị chính quy: là đồ thị có bậc của tất cả các đỉnh bằng nhau. •• Đồ thị có hướng • Đồ thị có trọng số: Trong đồ thị có trọng số, mỗi cạnh được gắn nhãn là một số, số này được gọi là trọng số của đỉnh. Nói cách khác, đồ thị coa trọng số là một đồ thị cùng với một ánh xạ từ tập các cạnh vào tập số thực. Khi không chỉ rõ, một đồ thị luôn được coi là đồ thị không có trọng số. • Đồ thị con: Một đồ thị con của đồ thị G là một đồ thị mà tập cạnh và tập đỉnh của nó là các tập con của các thành phần tướng ứng của G. • Đồ thị con bao trùm (spanning subgraph): Đồ thị con H là một đồ thị con bao trùm của đồ thị G nếu tập đỉnh của H trùng với tập đỉnh của G. Ta nói rằng H bao trùm G. • Đồ thị đầy đủ: Đồ thị đầy đủ bậc n, ký hiệu K n , là một đồ thị đơn gồm n đỉnh trong đó hai đỉnh bất kỳ đều được nối với nhau bởi một cạnh. Có tất cả n(n-1)/2 cạnh. Đồ thị ví dụ không phải đồ thị đầy đủ. • Đồ thị đơn: là đồ thị không có đa cạnh và không có khuyên. • Đồ thị Euler có hướng: là một đồ thị có hướng mà mỗi đỉnh đều có bậc trong bằng bậc ngoài. [...]... cuối/ngọn của cạnh Đồ thị đơn và Đa đồ thị Đồ thị đơn là đồ thị mà không có khuyên và không có cạnh song song Đa đồ thị là đồ thị mà không thỏa đồ thị đơn.Đa đồ thị có hướng là một đồ thị có hướng, trong đó, nếu x và y là hai đỉnh thì đồ thị được phép có cả hai cung (x, y) và (y, x) .Đồ thị đơn có hướng (hoặc Đơn đồ thị có hướng) là một đồ thị có hướng, trong đó, nếu x và y là hai đỉnh thì đồ thị chỉ được... mỗi cạnh đều có bậc hữu hạn • Đồ thị phẳng là đồ thị có thể được vẽ trên mặt phẳng Euclid sao cho không có hai cạnh nào cắt nhau Đồ thị ví dụ là đồ thị phẳng • Đồ thị phi chu trình: là đồ thị không có chu trình Một đồ thị có hướng là phi chu trình nếu nó không chứa chu trình có hướng • Đồ thị phổ dụng (universal graph): Đồ thị phổ dụng của một lớp đồ thị K là một đồ thị đơn nhỏ nhất mà mọi đồ thị là... 14 Đồ thị (lý thuyết đồ thị) Các dạng đồ thị quan trọng • Trong một đồ thị đầy đủ mỗi cặp đỉnh đều được nối với nhau bằng một cạnh, nghĩa là đồ thị chứa tất cả các cạnh có thể • Một đồ thị phẳng có thể được vẽ trên mặt phẳng sao cho không có hai cạnh nào cắt nhau • Cây là một đồ thị liên thông không có chu trình • Đồ thị hai phía (Bipartite graph) • Đồ thị hoàn hảo (Perfect graph) • Cograph • Đồ thị. .. bước thuật toán Depth-first search trong đồ thị vô hướng, bước 2 • Bước 3: Tìm kiếm theo chiều sâu 28 Chạy từng bước thuật toán Depth-first search trong đồ thị vô hướng, bước 3 • Bước 4: Chạy từng bước thuật toán Depth-first search trong đồ thị vô hướng, bước 4 • Bước 5: Chạy từng bước thuật toán Depth-first search trong đồ thị vô hướng, bước 5 • Bước 6: Chạy từng bước thuật toán Depth-first search trong. .. Depth-first search trong đồ thị vô hướng, bước 15 • Bước 16: Chạy từng bước thuật toán Depth-first search trong đồ thị vô hướng, bước 16 • Bước 17: Chạy từng bước thuật toán Depth-first search trong đồ thị vô hướng, bước 17 • Bước 18: Chạy từng bước thuật toán Depth-first search trong đồ thị vô hướng, bước 18 • Bước 19: Tìm kiếm theo chiều sâu 32 Chạy từng bước thuật toán Depth-first search trong đồ thị vô hướng,... từng bước thuật toán Depth-first search trong đồ thị vô hướng, bước 11 • Bước 12: Chạy từng bước thuật toán Depth-first search trong đồ thị vô hướng, bước 12 • Bước 13: Chạy từng bước thuật toán Depth-first search trong đồ thị vô hướng, bước 13 • Bước 14: Chạy từng bước thuật toán Depth-first search trong đồ thị vô hướng, bước 14 • Bước 15: Tìm kiếm theo chiều sâu 31 Chạy từng bước thuật toán Depth-first... Depth-first search trong đồ thị vô hướng, bước 6 • Bước 7: Tìm kiếm theo chiều sâu 29 Chạy từng bước thuật toán Depth-first search trong đồ thị vô hướng, bước 7 • Bước 8: Chạy từng bước thuật toán Depth-first search trong đồ thị vô hướng, bước 8 • Bước 9: Chạy từng bước thuật toán Depth-first search trong đồ thị vô hướng, bước 9 • Bước 10: Chạy từng bước thuật toán Depth-first search trong đồ thị vô hướng, bước... thị là phần tử của K đều là đồ thị con của nó • Đồ thị rỗng: là đồ thị không có cạnh và không có đỉnh Hoặc, nó là một đồ thị không có cạnh nhưng có một số đỉnh bất kỳ, khi đó, nó được gọi là đồ thị rỗng đỉnh (Không có sự thống nhất giữa các tài liệu) • Đồ thị vòng: là đồ thị chứa một chu trình duy nhất đi qua tất cả các đỉnh, mỗi đỉnh đều có bậc đúng bằng 2 • Đồ thị vô hạn: là đồ thị có vô hạn cạnh hoặc... tập độc lập, hay tập ổn định, là tập các đỉnh đôi một không kề nhau Đồ thị con dẫn xuất từ một tập độc lập là một đồ thị rỗng Trong ví dụ trên, các đỉnh 1, 3 và 6 hợp thành một tập độc lập; các đỉnh 3, 5 và 6 hợp thành một tập độc lập khác Số độc lập (indepndence number) của một đồ thị là số cực đại các đỉnh của tập độc lập ứng với đồ thị đó • Đồng cấu Một đồ thị G được coi là đồng cấu với đồ thị H nếu... hoặc không cho phép khuyên hay đa cạnh Nếu đồ thị không cho phép đa cạnh (và không cho phép khuyên nếu là đồ thị có hướng), đồ thị được gọi là đồ thị đơn Mặt khác, nếu cho phép đa cạnh (và đôi khi cả khuyên), đồ thị được gọi là đa đồ thị Đôi khi, từ giả đồ thị (pseudograph) còn được dùng để hàm ý cả đa cạnh và khuyên đều 13 Đồ thị (lý thuyết đồ thị) được phép Trong các trường hợp đặc biệt, thậm chí còn

Ngày đăng: 02/07/2014, 21:20

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan