Xây dựng chương trình hỗ trợ giảng dạy Lý thuyết đồ thị

72 673 0
Xây dựng chương trình hỗ trợ giảng dạy Lý thuyết đồ thị

Đ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

Ubnd tỉnh phú thọ Trờng đại học hùng vơng ================ Chủ nhiệm đề tài: Ths. Lê Quang Khải Cộng tác viên: CN. Vũ Ngọc Trì CN. Nguyễn Huỳnh 1 MỞ ĐẦU 1. Lý do chọn đề tài Ngày nay công nghệ thông tin đã xâm nhập sâu rộng vào mọi lĩnh vực của đời sống xã hội, trở thành một công cụ không thể thiếu của các nhà khoa học, cán bộ chuyên môn. Sự phát triển kỳ diệu của máy tính gắn liền với sự phát triển toán học hiện đại, trong đó lý thuyết đồ thị là một bộ phận quan trọng với nhiều ứng dụng hữu ích và được nghiên cứu nhiều nhất. Toán rời rạc nói chung và lý thuyết đồ thị nói riêng là công cụ thiết yếu cho nhiều ngành khoa học kỹ thuật và là một nội dung quan trọng trong chương trình đào tạo sinh viên các ngành CNTT. Lý thuyết đồ thị, với cách tiếp cận đối tượng nghiên cứu và phương pháp tư duy khá độc đáo thực sự ngày càng hữu ích có nhiều ứng dụng phong phú. Máy tính mà bản thân nó với các quá trình làm việc mang tính rời rạc, nên điều này tương hợp gắn chặt lý thuyết đồ thị với công nghệ máy tính trong việc nghiên cứu các đối tượng có tính chất rời rạc. Tin học là công cụ đắc lực, là lĩnh vực có nhiều ứng dụng phục vụ cho nhiều ngành khác nhau trong đời sống xã hội. Cho nên việc nghiên cứu các vấn đề ứng dụng cho tin học cũng là việc nghiên cứu các ứng dụng được giải quyết như thế nào trên máy tính. Có nhiều bài toán ứng dụng, nếu được mô hình hoá bằng đồ thị thì sẽ dễ dàng giải quyết được trên máy tính, vì cấu trúc và quá trình xử lý lữu trữ thông tin trên máy tính có tính chất rời rạc không liên tục. Đồ thị đóng vai trò quan trọng làm cơ sở toán cho tin học, ứng dụng của đồ thị là rất thực tiễn và quan trọng, việc nghiên cứu lý thuyết đồ thị và các ứng dụng của nó góp phần phát triển các kỹ thuật Tin học, đặc biệt trong khâu lập trình. Vì những lý do trên tôi quyết định chọn đề tài nghiên cứu “Xây dựng chương trình hỗ trợ giảng dạy Lý thuyết đồ thị”. 2. Mục tiêu đề tài Xây dựng phần mềm máy tính giải các bài toán điển hình về đồ thị để hỗ trợ cho giảng viên Tin học giảng dạy các nội dung của học phần Lý thuyết đồ thị. 2 3. Đối tượng, phạm vi nghiên cứu 3.1 Đối tượng nghiên cứu - Lý thuyết đồ thị và thuật toán điển hình - Ngôn ngữ lập trình máy tính 3.2 Phạm vi nghiên cứu - Nội dung học phần Lý thuyết đồ thị hiện đang giảng dạy tại các lớp CNTT ở trường ĐH Hùng Vương. 4. Phương pháp nghiên cứu Phương pháp nghiên cứu lý luận. Phương pháp tổng kết kinh nghiệm Phương pháp lấy ý kiến chuyên gia. 3 PHẦN 1: LÝ THUYẾT ĐỒ THỊ CHƯƠNG 1: ĐẠI CƯƠNG VỀ ĐỒ THỊ 1.1. Khái niệm 1.1.1. Đồ thị Khái niệm đồ thị Một đồ thị G(V,E) bao gồm một tập hợp hữu hạn V các nút (đỉnh, vertices) và một tập hợp hữu hạn E các cặp đỉnh gọi là cung (cạnh, edges). Hình 1.1. Mô hình hóa bản đồ địa lý bằng đồ thị 1.1.2. Các dạng đồ thị - Các đặc điểm của cạnh để phân biệt các dạng đồ thị cụ thể: + Cạnh e 1 = (u,v) và cạnh e 2 = (t,k) trên đồ thị G gọi là cạnh lặp nếu u ≡ t và v ≡ k. + Các cạnh e thuộc E được gọi là có hướng nếu thứ tự hai đỉnh trên một cạnh trên đồ thị G được quan tâm tới: phân biệt hai cạnh e1 = (u,v) và e2 = (v,u). - Từ đó có các dạng đồ thị cơ bản: 4 Tồn tại cạnh lặp Không tồn tại cạnh lặp Cạnh có hướng Đa đồ thị có hướng Đơn đồ thị có hướng Cạnh vô hướng Đa đồ thị vô hướng Đơn đồ thị vô hướng Môn học này sẽ làm việc với đơn đồ thị có hướng và đơn đồ thị vô hướng. Do đó trong các nội dung trình bày ở các phần sau sẽ nói tắt “đồ thị” thay cho “đơn đồ thị”. - Một số dạng đơn đồ thị vô hướng đặc biệt: + Đồ thị đầy đủ K n Là đơn đồ thị vô hướng mà giữa hai đỉnh bất kì của nó luôn tồn tại cạnh nối. + Đồ thị vòng C n 5 Là đơn đồ thị vô hướng G = (V,E) với tập đỉnh V = {1, 2, 3, , n} và tập cạnh E = {(1,2); (2,3); (3,4); ; (n-1,n); (n,1)}. Hình 1.2. Các đồ thị K n , C n và W n và K 4,3 + Đồ thị bánh xe W n Là đơn đồ thị vô hướng thu được từ đồ thị C n-1 bằng cách thêm một đỉnh n nối với n-1 đỉnh của đồ thị C n-1 . + Đồ thị hai phía Là đồ thị mà tập đỉnh có thể phân hoạch thành hai tập con V = X U Y sao cho mọi cạnh thuộc E đều nối một đỉnh thuộc X với một đỉnh thuộc Y. 6 K 3 K 4 K 5 C 3 C 4 C 5 W 4 W 5 W 6 1.1.3. Các khái niệm liên quan - Cho đồ thị G = (V, E): V = {1, 2, , n} và E = {e 1 , e 2 , , e m }. Các khái niệm được trình bày dưới đây có thể dùng cho cả đồ thị có hướng và vô hướng hoặc từng dạng đồ thị cụ thể. + Đồ thị có trọng số Đồ thị G = (V,E) là đồ thị có trọng số nếu xây dựng một đơn ánh từ E đến R gán cho mỗi cạnh thuộc E một số thực đặc trưng cho cạnh đó và được gọi là trọng số của cạnh. + Cạnh Nếu (u, v) là một cặp đỉnh thuộc E thì nói có một cạnh nối u và v. Khi đó v được gọi là kề của u. ▪ Nếu G là đồ thị vô hướng, cạnh (u,v) được gọi là liên thuộc với hai đỉnh u và v. ▪ Nếu G là đồ thị có hướng, cạnh (u,v) được gọi là đi ra từ đỉnh u và đi vào đỉnh v. + Bậc của đỉnh Gọi bậc của đỉnh trong đồ thị vô hướng là số cạnh liên thuộc với nó và kí hiệu là deg(v). Định lý Tổng bậc tất cả các đỉnh trên đồ thị vô hướng bằng hai lần số cạnh của đồ thị đó: ∑deg(v) = 2m. Hệ quả Trên đồ thị vô hướng, số đỉnh bậc lẻ là một số chẵn. + Bán bậc của đỉnh Gọi bán bậc ra (vào) của đỉnh trong đồ thị có hướng là số cạnh của đồ thị đi ra (vào) đỉnh đó và kí hiệu là deg + (v) (deg - (v)). Định lý Trên đồ thị có hướng, tổng bán bậc ra của tất cả các đỉnh bằng tổng bán 7 vào của tất cả các đỉnh. + Đường đi Một đường đi từ đỉnh u đến đỉnh v trên đồ thị G là một dãy đỉnh u, u 1 , u 2 , , u i , v mà các cạnh (u, u 1 ), (u 1 , u 2 ), , (u i , v) ∈ E. + i = số lượng cung trên đường đi được gọi là độ dài của đường đi. + Đường đi đơn Một đường đi đơn trên đồ thị là một đường đi mà trên đó không có cạnh nào lặp lại. + Chu trình Một chu trình trên đồ thị G là một đường đi đơn có đỉnh đầu và đỉnh cuối trùng nhau. + Hai đỉnh liên thông Đỉnh p và q được gọi là liên thông với nhau trên đồ thị G nếu có một đường đi từ p đến q trên đồ thị đó. + Đồ thị liên thông Một đồ thị được gọi là liên thông nếu mọi cặp đỉnh của đồ thị đều liên thông. + Đồ thị con Đồ thị H = (W,F) được gọi là đồ thị con của đồ thị G = (V,E) nếu W ⊆ V và F ⊆ E. + Thành phần liên thông Đồ thị G không liên thông sẽ phân rã thành một số hữu hạn đồ thị con liên thông đôi một không có đỉnh chung. Các đồ thị con này được gọi là các thành phần liên thông của đồ thị. + Đỉnh rẽ nhánh Đỉnh u được gọi là đỉnh rẽ nhánh của đồ thị G nếu việc loại bỏ đỉnh đó cùng các cạnh liên thuộc với nó làm tăng số thành phần liên thông của đồ thị. 8 + Cầu Cạnh e được gọi là cầu của đồ thị G nếu việc loại bỏ cạnh đó làm tăng số thành phần liên thông của đồ thị. + Đồ thị đẳng cấu Hai đồ thị G 1 = (V 1 ,E 1 ) và G 2 = (V 2 ,E 2 ) được gọi là đồng cấu nếu tồn tại một song ánh f: V 1 → V 2 sao cho (u,v) ∈ E 1 khi và chỉ khi (f(u),f(v)) ∈ E 2 . 1.2. Biểu diễn đồ thị 1.2.1. Ma trận kề - Cách biểu diễn đồ thị bằng ma trận kề: + Đánh số các đỉnh thuộc V từ 1 → n. + Ma trận kề A biểu diễn G là một ma trận vuông nxn có các phần tử nhận giá trị 0 hoặc 1: a ij = 1 nếu tồn tại một cung định hướng từ v i đến v j . - Cách biểu diễn bằng ma trận kề có thể dùng cho cả đồ thị có hướng và vô hướng. Dễ thấy ma trận biểu diễn đồ thị vô hướng đối xứng qua đường chéo chính. - Nếu đồ thị là có trọng số thì các phần tử ma trận kề có thể nhận giá trị là trọng số của cung. - Có thể lựa chọn hai giá trị 0 và 1 để phân biệt sự khác nhau giữa cặp đỉnh có cạnh nối và cặp đỉnh không có cạnh nối. Trong thực tế cài đặt, tùy thuộc vào thuật toán mà có thể sử dụng các bộ giá trị khác vẫn đảm bảo sự phân biệt. - Ưu điểm: + Tốc độ truy xuất thông tin về cạnh cao. - Nhược điểm: + Đồ thị thưa có hiệu suất sử dụng tài nguyên thấp. + Tình huống cập nhật đồ thị bằng thao tác thay đổi kích thước tập đỉnh rất phức tạp: buộc phải khai báo một ma trận với kích thước mới và hủy bỏ ma trận đã sử dụng ban đầu. 9 1.2.2. Ma trận liên thuộc - Cách biểu diễn đồ thị bằng ma trận liên thuộc: + Đánh số các đỉnh thuộc V từ 1 → n. + Đánh số các cạnh thuộc E từ 1 → m. + Ma trận liên thuộc A biểu diễn G là một ma trận nxm có các phần tử nhận giá trị 0, 1 hoặc -1: i. a ij = 1 nếu đỉnh i là đỉnh đầu của cạnh e j . ii. a ij = -1 nếu đỉnh i là đỉnh cuối của cạnh e j . iii. a ij = 0 nếu đỉnh i không là đầu mút của cạnh e j . - Cách biểu diễn bằng ma trận liên thuộc chủ yếu được dùng để biểu diễn đồ thị có hướng. - Có thể lựa chọn ba giá trị 0, 1 và -1 để phân biệt sự khác nhau giữa đỉnh i và cạnh e j . Trong thực tế cài đặt, tùy thuộc vào thuật toán mà có thể sử dụng các bộ giá trị khác vẫn đảm bảo sự phân biệt. - Ưu điểm: + Tốc độ truy xuất thông tin về cạnh nhanh. + Các cạnh được sắp xếp tuyến tính hỗ trợ tốt cho các thuật toán yêu cầu quá trình duyệt lần lượt các cạnh. - Nhược điểm: + Tài nguyên bộ nhớ quá tốn kém. + Tình huống cập nhật đồ thị bằng thao tác thay đổi kích thước tập đỉnh hoặc tập cạnh rất phức tạp: buộc phải khai báo một ma trận với kích thước mới và hủy bỏ ma trận đã sử dụng ban đầu. 1.2.3. Danh sách cạnh - Cách biểu diễn đồ thị bằng danh sách cạnh: + Đánh số các đỉnh thuộc V từ 1 → n. + Đánh số các cạnh thuộc E từ 1 → m. 10 [...]... cuối trùng nhau gọi là chu trình Euler + Đồ thị Euler và nửa Euler Đồ thị có chu trình Euler được gọi là đồ thị Euler Đồ thị có đường đi Euler được gọi là đồ thị nửa Euler Định lý 1 Đồ thị vô hướng G là đồ thị Euler khi và chỉ khi mọi đỉnh của G đều có bậc chẵn Định lý 2 Đồ thị vô hướng G là đồ thị nửa Euler khi và chỉ khi G có không quá hai đỉnh bậc lẻ 1 3 3 1 5 2 5 4 2 Chu trình Euler: 1→4→2→5→4→3→1... PATH_FINDING_FLOYD 2.4 Đồ thị Hamilton 2.4.1 Khái niệm + Đường đi và chu trình Hamilton Đường đi trong G đi qua mỗi đỉnh của nó một lần được gọi là đường đi Hamilton Đường đi Hamilton có đỉnh đầu và đỉnh cuối trùng nhau gọi là chu trình Hamilton + Đồ thị Hamilton và nửa Hamilton Đồ thị có chu trình Hamilton được gọi là đồ thị Hamilton Đồ thị có đường đi Hamilton được gọi là đồ thị nửa Hamilton Định lý 1 Đồ thị vô... của một đơn đồ thị vô hướng G Hai vector (đỉnh đồ thị) có thể đi đến với nhau nếu chúng chỉ sai khác một bit duy nhất Khi đó, mã Gray sẽ cho ta một chu trình Hamilton trên đồ thị G đã cho + Xây dựng mã Gray: ta có hình vẽ sau minh họa quá trình xây dựng mã Gray: Hình 2.9 Xây dựng mã Gray 22 CHƯƠNG 3: CÂY 3.1 Khái niệm cây + Khái niệm 1 Cây là đơn đồ thị vô hướng liên thông không có chu trình + Khái... là đơn đồ thị vô hướng liên thông Cây T = (V, F) với F ⊆ E được gọi là cây phủ (cây khung) của đồ thị Định lý Số cây phủ của đồ thị Kn là nn-2 3.4.2 Xây dựng cây phủ của đơn đồ thị vô hướng - Dễ thấy, nếu chúng ta duyệt đồ thị và đảm bảo rằng không có đỉnh nào được thăm hai lần đồng thời mỗi lần thăm đỉnh mới ta kết nạp cạnh nối đỉnh mới và đỉnh thăm kề trước thì sẽ thu được một cây phủ của đồ thị -... 1→4→2→5→4→3→1 4 Đường đi Euler: 1→4→5→2→3→5→1→3 13 Hình 2.1 Đồ thị Euler và nửa Euler 2.1.2 Thuật toán tìm chu trình Euler - Cho đồ thị Euler G = (V,E) được biểu diễn bởi danh sách kề ke(u) - Trong quá trình thực hiện thuật toán sử dụng STACK để lưu các đỉnh đang xét và CE để lưu chu trình Euler được xây dựng - Giả mã thuật toán xây dựng chu trình Euler trên đồ thị G: procedure BUILD_EULER_CYCLE begin STACK :=... đô thị Hamilton Định lý 2 Đồ thị có hướng liên thông mạnh G có các đỉnh có bán bậc ra và bán 19 bậc vào không nhỏ hơn n/2 là đồ thị Hamilton 20 3 1 3 1 5 2 4 5 Chu trình Hamilton: 1→3→2→5→1 Đường đi Hamilton: 3 → 5 →1 → 4 Hình 2.7 Đồ thị Hamilton và nửa Hamilton 2.4.2 Thuật toán tìm chu trình Hamilton - Cho đồ thị Euler G = (V,E) được biểu diễn bởi danh sách kề ke(u) - Ta có giả mã thuật toán xây dựng. .. 4 Hình 1.3 Đồ thị phẳng 1.3.2 Công thức EULER - G là đồ thị phẳng liên thông với n đỉnh và m cạnh Gọi r là số miền của mặt phẳng bị chia bởi biểu diễn phẳng của G Khi đó ta có: r = m – n + 2 1.3.3 Định lí Kuratowski - Đồ thị là phẳng khi và chỉ khi nó không chứa đồ thị con đồng cấu với K3,3 hoặc K5 12 CHƯƠNG 2: CÁC BÀI TOÁN VỀ ĐƯỜNG ĐI 2.1 Đồ thị Euler 2.1.1 Khái niệm + Đường đi và chu trình Euler... loại bỏ một cạnh bất kì trên cây, chúng ta có một đồ thị có n đỉnh và n-2 cạnh Nếu loại bỏ đỉnh lá và cạnh kề với nó khỏi cây, chúng ta sẽ thu được đồ thị con có tính liên thông giống đồ thị 24 ban đầu và số cạnh cũng như số đỉnh giảm đi một Lặp lại thao tác này, ta thu được đồ thị gồm hai đỉnh và không có cạnh nào, là đồ thị không liên thông, do đó đồ thị gồm n đỉnh và n-2 cạnh là không liên thông Vậy... số ô nhớ dùng để lưu trữ đúng bằng số cạnh của đồ thị mà không bị mất mát thông tin - Ưu điểm: + Sử dụng tối ưu tài nguyên bộ nhớ - Nhược điểm: + Thao tác truy xuất thông tin về cạnh phức tạp: xét danh sách tương ứng với một đầu mút của cạnh và đầu mút còn lại có thuộc danh sách này không 1.3 Đồ thị phẳng 1.3.1 Khái niệm Đồ thị phẳng Đồ thị phẳng là đồ thị có thể được biểu diễn trên mặt phẳng sao cho... của đồ thị G cho trước, hãy tìm cây phủ với độ dài nhỏ nhất Cây phủ như vậy được gọi là cây phủ nhỏ nhất của đồ thị - Nếu chúng ta sử dụng phương pháp vét cạn: liệt kê tất cả các cây phủ có thể của đồ thị và tìm ra cây phủ nhỏ nhất, chi phí tìm kiếm sẽ ở mức không chấp nhận được Đồ thị Kn có nn-2 cây phủ, do đó độ phức tạp tính toán sẽ cỡ O(nn-2), rõ ràng không thể thực hiện được với cả những đồ thị . được đánh dấu có thể đến. 2.2.2.2. Thuật toán thử - quay lui - Thuật toán thử - quay lui dựa trên ý tưởng của thuật toán tìm kiếm theo chiều sâu. - Ý tưởng của thuật toán: đánh dấu ô (x1,y1). Đi. (3,4); ; (n-1,n); (n,1)}. Hình 1.2. Các đồ thị K n , C n và W n và K 4,3 + Đồ thị bánh xe W n Là đơn đồ thị vô hướng thu được từ đồ thị C n-1 bằng cách thêm một đỉnh n nối với n-1 đỉnh của. trị 0, 1 hoặc -1 : i. a ij = 1 nếu đỉnh i là đỉnh đầu của cạnh e j . ii. a ij = -1 nếu đỉnh i là đỉnh cuối của cạnh e j . iii. a ij = 0 nếu đỉnh i không là đầu mút của cạnh e j . - Cách biểu

Ngày đăng: 23/01/2015, 21:14

Từ khóa liên quan

Mục lục

  • MỞ ĐẦU

    • 1. Lý do chọn đề tài

    • 2. Mục tiêu đề tài

    • 3. Đối tượng, phạm vi nghiên cứu

      • 3.1 Đối tượng nghiên cứu

      • 3.2 Phạm vi nghiên cứu

      • 4. Phương pháp nghiên cứu

      • PHẦN 1: LÝ THUYẾT ĐỒ THỊ

      • CHƯƠNG 1: ĐẠI CƯƠNG VỀ ĐỒ THỊ

        • 1.1. Khái niệm

          • 1.1.1. Đồ thị

          • 1.1.2. Các dạng đồ thị

          • 1.1.3. Các khái niệm liên quan

          • 1.2. Biểu diễn đồ thị

            • 1.2.1. Ma trận kề

            • 1.2.2. Ma trận liên thuộc

            • 1.2.3. Danh sách cạnh

            • 1.2.4. Danh sách kề

            • 1.3. Đồ thị phẳng

              • 1.3.1. Khái niệm

              • 1.3.2. Công thức EULER

              • 1.3.3. Định lí Kuratowski

              • CHƯƠNG 2: CÁC BÀI TOÁN VỀ ĐƯỜNG ĐI

                • 2.1. Đồ thị Euler

                  • 2.1.1. Khái niệm

                  • 2.1.2. Thuật toán tìm chu trình Euler

                  • 2.2. Tìm đường đi trong mê cung

                    • 2.2.1. Bài toán

                    • 2.2.2. Thuật toán

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

Tài liệu liên quan