1. Trang chủ
  2. » Công Nghệ Thông Tin

Graph và một số ứng dụng trong chương trình THPT pptx

77 752 8

Đ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

Định dạng
Số trang 77
Dung lượng 784,5 KB

Nội dung

DANH MỤC HÌNH VẼ Trang Hình 1.1 Đồ thị hàm số y = sinx 4 Hình 1.2 Đồ thị biểu diễn ví dụ 1 5 Hình 1.3 Đồ thị biểu diễn ví dụ 2 6 Hình 1.4 Đồ thị biểu diễn ví dụ 3 6 Hình 1.5 Biểu diễn phẳng của Graph 7 Hình 1.6 Biểu diễn Graph con Graph thành phần 8 Hình 1.7 Biểu diễn bậc của đỉnh 9 Hình 1.8 Dãy cạnh kế tiếp 9 Hình 1.9 Biểu diễn cạnh có hướng 12 Hình 2.1 Ma trận kề đồ thị vô hướng không trọng số đồ thị có hướng có tróng số 14 Hình 2.2 Biểu diễn cài đặt đồ thị bằng danh sách cạnh trên mảng trên danh sách móc nối 17 Hình 2.3 Đồ thị vô hướng không trọng số 20 Hình 2.4 Biểu diễn Graph bằng danh sách kề 22 Hình 2.5 Đồ thị vô hướng 24 Hình 2.6 Ma trận kề đồ thị trọng số vô hướng đồ thị trọng số có hướng 31 Hình 2.7a Đồ thị trọng số có hướng 31 Hình 2.7b Biểu diễn đồ thị trọng số bằng danh sách lân cận kề 31 Hình 2.8 Đồ thị vô hướng có trọng số ví dụ 4 33 Hình 2.9 Cây khung DFS(1) cây khung BFS(1) 37 Hình 2.10 Đồ thị vô hướng có trọng số ví dụ 5 40 MỤC LỤC Trang MỞ ĐẦU 1 Chương 1 MỘT SỐ VẤN ĐỀ VỀ LÝ THUYẾT GRAPH 4 1.1. Khái niệm cơ bản về graph 4 1.1.1. Những bài toán vấn đề dẫn đến khái niệm graph [1] 4 1.1.2. Định nghĩa graph các khái niệm cơ bản 7 1.1.3. Graph con graph thành phần 8 1.2. Phân loại graph 9 1.2.1. Graph vô hướng 9 1.2.2. Graph có hướng 12 1.3. Kết luận chương 1 13 Chương 2 MỘT SỐ THUẬT TOÁN CƠ BẢN TRÊN GRAPH 14 2.1. Biểu diễn graph trên máy tính 14 2.1.1. Biểu diễn bằng ma trận lân cận [6] 14 2.1.2. Biểu diễn bằng danh sách cạnh [6] 17 2.1.3. Biểu diễn danh sách lân cận [6] 19 2.2. Phép duyệt một graph 24 2.2.1. Tìm kiếm theo chiều sâu 24 2.2.2. Tìm kiếm theo chiều rộng 26 2.2.3. Tìm đường đi kiểm tra tính liên thông của đồ thị 28 2.3. Đồ thị trọng số 30 2.3.1. Khái niệm 30 2.3.2. Biểu diễn đồ thị trọng số 30 2.4. Đường đi trên đồ thị trọng số 32 2.4.1. Thuật toán tìm đường đi ngắn nhất từ một đỉnh đến tất cả các đỉnh khác 32 Độ phức tạp của giải thuật: Thuật toán Dijkstra tìm được đường đi ngắn nhất trên đồ thị sau thời gian cỡ O(n2). [2] 33 Ví dụ 4: Cho đồ thị vô hướng có trọng số G trong hình 2.8 dưới đấy. Tìm đường đi ngắn nhất từ đỉnh 1 đến tất cả các đỉnh khác trong G 33 Ma trận trọng số của đồ thị có dạng: 33 Kết quả tính toán theo thuật toán được trình bày trong bảng dưới đây. Quy ước viết hai thành phần của nhãn theo thứ tự: d[v], Truoc[v]. Đỉnh được đánh dấu ‘*’ là đỉnh được chọn để cố định nhãn ở bước lặp đang xét, nhãn của nó không biến đổi ở các bước tiếp theo, vì thế ta đánh dấu 34 Bước lặp 34 Đỉnh 1 34 Đỉnh 2 34 Đỉnh 3 34 Đỉnh 4 34 Khởi tạo 34 0, 1 34 10, 1 34 6, 1 34 2, 1* 34 1 34 34 5, 4 34 3, 4 * 34 34 2 34 34 5, 4 * 34 34 34 34 Nhận xét: Từ bảng kết quả ta có thể truy xuất ra được đường đi từ đỉnh 1 tới tất cả các đỉnh còn lại trong đồ thị như sau: 34 Đường đi từ đỉnh 1 tới đỉnh 2: 34 Ta có đỉnh trước đỉnh 2 là Truoc[2] = 4 vậy 4 là đỉnh trước đỉnh 2 trên đường đi này 34 Trước đỉnh 4 là Truoc[4] = 1 vậy 1 là đỉnh trước đỉnh 4 trên đường đi này 34 Dừng, ta thu được đường đi ngắn nhất từ đỉnh 1 tới đỉnh 2 là: 34 1 – 4 – 2 với độ dài đường đi ngắn nhất là d[2] = 5 34 Tương tự ta có các đường đi sau: 34 Đường đi ngắn nhất từ đỉnh 1 đến đỉnh 3 là: 1 – 4 – 3 với độ dài đường đi ngắn nhất là d[3] = 3 34 Đường đi ngắn nhất từ đỉnh 1 đến đỉnh 4 là: 1 – 4 với độ dài đường đi ngắn nhất là d[4]=2 34 2.4.2. Thuật toán Floyd tìm đường đi ngắn nhất giữa tất cả các cặp đỉnh34 - Khởi tạo: 36 36 Nhận xét: Đường đi từ đỉnh 1 tới các đỉnh còn lại trong đồ thị: 36 Đường đi từ đỉnh 1 đến đỉnh 2: 36 Trước 2 là p[1,2]=4 vậy 4 là đỉnh trước 2 trên đường đi này. 36 Trước 4 là p[1,4]=0, vậy đỉnh 1 đứng trước đỉnh 4 trên đường đi này 36 Dừng, đường đi thu được là: 1 – 4 – 2 với độ dài đường đi là d[1,2] = 5 36 Tương tự ta tìm được đường đi ngắn nhất từ đỉnh 1 đến đỉnh 3 là: 1 – 4 – 3 với độ dài d[1,3] = 3. 36 Do p[1,4] = 0 nên đường đi từ đỉnh một tới đỉnh 4 là đường đi trực tiếp với độ dài là p[1,4]= 2 36 Để tìm đường đi giữa tất cả cặp đỉnh còn lại trong đồ thị ta làm tương tự 36 2.5. Cây khung cây khung với giá trị cực tiểu 37 2.6. Kết luận chương 2 45 Chương 3 ỨNG DỤNG GRAPH GIẢI MỘT SỐ BÀI TOÁN TRONG 47 CHƯƠNG TRÌNH TIN HỌC PHỔ THÔNG 47 3.1. Giới thiệu một số bài toán về đồ thị trong chương trình tin học trung học phổ thông 47 3.2. Một số bài toán về phép duyệt đồ thị 47 3.2.1. Bài toán 1- Đếm số thành phần liên thông [4] 47 3.2.2. Bài toán 2 - Dự tiệc 50 3.2.3. Bài toán 3 - Bản đồ [2] 52 3.3. Một số bài toán về đường đi trong đồ thị 53 3.3.1. Bài toán 1 - Đường đi [4] 53 3.3.2. Bài toán 2 - Du lịch [4] 56 3.3.3. Bài toán 3 - Đến trường [7] 58 3.4. Một số bài toán về cây khung đồ thị 61 3.4.1. Bài toán 1 - Dự án 61 3.4.2. Bài toán 2 - Thay hệ thống [4] 64 3.4.3. Bài toán 3 – Bão Sơn Tinh 66 3.5. Kết luận chương 3 70 KẾT LUẬN 71 TÀI LIỆU THAM KHẢO 72 MỞ ĐẦU 1. Lý do chọn đề tài Trên thực tế có nhiều bài toán liên quan tới một tập các đối tượng những mối liên hệ giữa chúng, đòi hỏi toán học phải đặt ra một mô hình biểu diễn một cách chặt chẽ tổng quát bằng ngôn ngữ ký hiệu, đó là đồ thị. Những ý tưởng cơ bản của nó được đưa ra từ thế kỷ thứ XVIII bởi nhà toán học Thụy Sĩ Leonhard Euler, ông đã dùng mô hình đồ thị để giải bài toán về những cây cầu Konigsberg nổi tiếng. Mặc dù Lý thuyết đồ thị đã được khoa học phát triển từ rất lâu nhưng lại có nhiều ứng dụng hiện đại. Đặc biệt trong khoảng vài chục năm trở lại đây, cùng với sự ra đời của máy tính điện tử sự phát triển nhanh chóng của Tin học, Lý thuyết đồ thị càng được quan tâm đến nhiều hơn. Đặc biệt là các thuật toán trên đồ thị đã có nhiều ứng dụng trong nhiều lĩnh vực khác nhau như: Mạng máy tính, Lý thuyết mã, Tối ưu hoá, Kinh tế học v.v Một trong các mục tiêu khi đưa tin học vào nhà trường là nhằm giúp cho học sinh có khả năng phân tích, tổng hợp, trừu tượng hóa, khái quát hóa vấn đề đặc biệt là phát triển tư duy. Hiện nay, có nhiều bài toán trong chương trình trung học phổ thông được giải quyết nhờ vận dụng lý thuyết đồ thị. Để tìm hiểu sâu về lý thuyết đồ thị ứng dụng của nó trong chương trình tin học phổ thông nên em đã chọn đề tài “Graph một số ứng dụng trong chương trình trung học phổ thông”. 2. Mục đích nghiên cứu Tìm hiểu một số vấn đề về Graph như các khái niệm cơ bản về Graph, phân loại Graph… Để hiểu sâu sắc hơn lý thuyết Graph, cài đặt một số thuật toán, từ đó ứng dụng lý thuyết Graph vào chương trình tin học phổ thông để giải quyết một số bài toán liên quan. 3. Nội dung tìm hiểu, nghiên cứu • Một số vấn đề về lý thuyết về Graph. • Một số thuật toán cơ bản trên Graph. 1 • Ứng dụng lý thuyết Graph vào giải quyết một số bài toán cụ thể trong chương trình tin học phổ thông. 4. Phương pháp nghiên cứu • Nghiên cứu tài liệu: Nghiên cứu các tài liệu về lý thuyết đồ thị các bài toán liên quan. • Phương pháp thực nghiệm: Lập trình kiểm thử, tìm hiểu thông tin trong một số Website trên mạng. • Tổng kết kinh nghiệm: Tổng kết các kiến thức đã học tập được. • Tham khảo ý kiến chuyên gia: Tiếp thu ý kiến đóng góp của các thầy cô và ý kiến của các bạn bè. Cấu trúc của đề tài Mở đầu: Nêu ra lý do chọn đề tài, phương pháp, nội dung tìm hiểu mục đích nghiên cứu, cấu trúc đề tài. Chương 1: Một số vấn đề về lý thuyết Graph. Chương 2: Một số thuật toán cơ bản trên Graph: Tìm hiểu cài đặt các thuật toán cơ bản trên Graph cụ thể như: biểu diễn Graph trên máy tính, phép duyệt Graph, tìm đường đi kiểm tra tính liên thông của Graph….Các thuật toán được cài đặt trên ngôn ngữ lập trình Pascal. Chương 3: Ứng dụng của Graph vào chương trình Tin học phổ thông: Đưa ra vận dụng lý thuyết Graph vào cài đặt một số bài toán cụ thể trong chương trình tin học phổ thông theo từng dạng: Bài toán duyệt đồ thị, bài toán về đường đi trên đồ thị, bài toán về cây khung đồ thị. Kết luận: Nêu ra những vấn đề đã tìm hiểu, một số công việc chính đã được thực hiện, hướng phát triển tiếp theo của đề tài trong tương lai. Em xin chân thành cảm ơn Thầy giáo, TS Nguyễn Mạnh Đức - Giảng viên Tin học, Khoa Toán, Đại học Sư phạm Thái Nguyên, người đã trực tiếp hướng dẫn tận tình chỉ bảo em trong suốt quá trình làm đề tài. 2 Em xin chân thành cảm ban chủ nhiệm Khoa Toán cùng các Thầy, Cô trong khoa đã tạo điều kiện để em thực hiện đề tài này. Tôi cũng xin cảm ơn các bạn sinh viên, người thân đã động viên, giúp đỡ trong thời gian thực hiện đề tài. Thái Nguyên, tháng 4 năm 2013 Sinh viên Vi Văn Sơn 3 Chương 1 MỘT SỐ VẤN ĐỀ VỀ LÝ THUYẾT GRAPH 1.1. Khái niệm cơ bản về graph 1.1.1. Những bài toán vấn đề dẫn đến khái niệm graph [1] Hai chữ “đồ thị” vẫn thường xuyên xuất hiện trong toán học cả trong đời sống hàng ngày. Trong các giờ học toán, chúng ta có nói tới đồ thị của các hàm số. Chẳng hạn, trong hình dưới có biểu diễn đồ thị của hàm số y=sinx. Trong các công sở, các nhân viên phải lập các biểu đồ theo dõi số lượng tiêu thụ điện hoặc xăng dầu hàng tháng,và họ cũng có thể gọi những biểu đồ đó là đồ thị Tóm lại khái niệm đồ thị là một khái niệm toán học khá quen thuộc đối với chúng ta nhằm biểu diễn tương quan đi lại hai đối tượng hoặc nhiều đối tượng toán học khác nhau. Lý thuyết đồ thị (theo tiếng Anh tiếng Đức đọc là: “graph”) nghiên cứu những tính chất toán học, những quan hệ mà không phụ thuộc vào bản chất riêng của những mối quan hệ này. Để tránh khỏi bị nhầm là đồ thị của hàm số, ta sử dụng thuật ngữ “graph” trong tài liệu này ở các phần tiếp theo. Graph là một mô hình toán học có thể dùng để giải quyết khá nhiều bài toán vấn đề toán học. Một graph có thể hiểu đơn giản là một hệ thống các đỉnh các cạnh nối với nhau. Gần với mô hình lí thuyết graph là các bài toán thoáng qua như những bài toán hình học mà thực chất việc giải quyết chúng không thể chỉ sử dụng những kiến thức hình học thông thường. Trên mặt phẳng, có những bài toán dường như là bài toán hình học như thế, nhưng chúng ta có thể xem xét một số ví dụ để thấy không chỉ có thể dùng kiến thức hình học để giải quyết được chúng. Việc muốn giải quyết những bài toán này 4 Hình 1.1. Đồ thị hàm số y =sinx cần đi sâu hơn nữa vào những mối quan hệ toán học của các đối tượng toán học trong bài toán. Một số ví dụ có nguồn gốc phát sinh từ các bài toán hình học mà bản chất thực sự của nó là các bài toán về lí thuyết grap. Ví dụ 1: Có ba cái nhà ba cái giếng. Mỗi nhà có ba đường đi từ nó tới ba cái giếng đó. Hỏi có thể làm những con đường đi như vậy sao cho không có hai con đường nào cắt nhau hay không? Để giải quyết bài toán này, chúng ta có thể giả sử là các nhà là các điểm A 1 , A 2 , A 3 trên mặt phẳng các giếng là các điểm B 1 , B 2 , B 3 nào đó. Các con đường đi là các đường (liên tục) nối các đỉnh A i với các đỉnh B i . Khi đó, câu hỏi của bài toán là liệu có những điểm A i tới các điểm B i trên mặt phẳng sao cho không có hai con đường nào cắt nhau hay không? Bằng cách thiết lập mô hình này, chúng ta đã thiết lập một graph có 6 đỉnh 9 cạnh. Chúng ta thấy rằng để giải bài toán này, các kiến thức hình học không còn giúp gì được cho chúng ta nữa. Bài toán đòi hỏi phải có kiến thức sâu sắc hơn về mối quan hệ nào đó của quan hệ các đỉnh các cạnh. [1] Nhưng không phải chỉ với một số bài toán hoặc một số vấn đề toán học có nguồn gốc hình học mới có thể đưa về mô hình đỉnh – cạnh như trên. Mô hình đỉnh – cạnh của chúng ta tỏ ra là mô hình rất hiệu quả để nắm bắt được chính xác bản chất toán học thật sự của nhiều đối tượng toán học. Các đỉnh được biểu diễn cho các đại lượng tham gia các cạnh nối chúng biểu diễn mối quan hệ đi lại của chúng theo một tiêu chuẩn nào đó được đưa ra. Ví dụ 2: Hãy biểu thị graph quan hệ không nguyên tố cùng nhau của các số trong tập hợp { 1, 2, 3, 4, 5, 6 }. 5 Hình 1.2. Đồ thị biểu diễn ví dụ 1 [...]... graph đơn nếu nó không có khuyên không có cạnh kép Ngoài ra, ta gọi graph điểm là graphđúng một đỉnh không có cạnh nào Graph rỗng dùng để gọi một graph không có đỉnh cạnh nào cả 1.1.3 Graph con graph thành phần Cho trước một graph G với tập đỉnh X tập cạnh E Một graph G’ với tập đỉnh X’ tập cạnh E’ được gọi là graph con của graph G nếu X’ ⊂ X E’ ⊂ E Trong trường hợp X’ là tập con... niệm về đường đi chu trình trong Graph 13 Chương 2 MỘT SỐ THUẬT TOÁN CƠ BẢN TRÊN GRAPH 2.1 Biểu diễn graph trên máy tính Để giải quyết các bài toán về graph bằng máy tính, chúng ta cần phải lưu giữ graph trong bộ nhớ Có nhiều biểu diễn cấu trúc được sử dụng để biểu diễn graph Việc lựa chọn cấu trúc nào là tùy thuộc vào các ứng dụng các phép xử lý cần tác động lên graph trong ứng dụng ấy Có hai... (p1 , p2 ,…, pk , p1) Số cạnh của chu trình được gọi là độ dài của chu trình thông thường hay được kí hiệu bởi l(C) Một khuyên lập thành một chu trình có độ dài 1 Một graph cho trước chỉ có chu trình có độ dài 2 nếu như nó có cạnh kép Trong một graph đơn mỗi chu trình có độ dài ít nhất là 3 Một graph không đơn hiển nhiên luôn có ít nhất một chu trình (có độ dài 1 hoặc 2) Trong graph đơn không phải... thì G’ được gọi là graph thành phần của G còn được gọi là graph sinh Hình 1.6 Biểu diễn Graph con Graph thành phần bởi tập đỉnh X’ Graph trong hình 1.6 có các cạnh được tô đậm là graph con của graph được biểu diễn trong hình Nếu thêm vào nó hai cạnh a b thì ta được một graph thành phần đã cho Graph rỗng là graph thành phần của mọi graph cho trước 8 1.2 Phân loại graph 1.2.1 Graph vô hướng 1.2.1.1... (liên hợp hướng vào trong) đối với đỉnh x là đỉnh xuất phát (đỉnh đích) của cung u 1.3 Kết luận chương 1 Trong chương này chúng ta đã tìm hiểu tổng quan một số vấn đề về lý thuyết đồ thị: Đưa ra một số bài vấn đề dẫn đến khái niệm Graph, đưa ra khái niệm cơ bản về Graph, Phân loại Graph, Lý thuyết về Graph vô hướng, Graph có hướng… Trong đó có các khái niệm về bậc của đỉnh, chỉ số liên thông, khái... 1.2.1.5 Chu trình của graph Khi định nghĩa đường đi nối hai đỉnh a b của một graph, ta luôn giả thiết rằng các đỉnh a b này phải khác nhau Trong trường hợp a b được nối với nhau bởi một cạnh, thì khi thêm cạnh (a, b) vào, ta thu được từ con đường đã cho một chu trình Như vậy chu trìnhmột dãy cạnh kế tiếp khép kín sao cho mỗi đỉnh của graph được đi qua không quá một lần Chu trình được kí... [6] Trong trường hợp graph có n đỉnh, m cạnh, ta có thể biểu diễn graph dưới dạng danh sách cạnh, trong cách biểu diễn này, người ta liệt kê tất cả các cạnh của graph trong một danh sách, mỗi phần tử của danh sách là một cặp (u, v) tương ứng với một cạnh của graph (Trong trường hợp graph có hướng thì mỗi cặp (u, v) tương ứng với một cung, u là đỉnh đầu v là đỉnh cuối của cung) Danh sách được lưu trong. .. Tổng các số trên hàng i = tổng các số trên cột i = Bậc của đỉnh i = dG(i) Trong trường hợp G là graph đơn, ta có thể biểu diễn ma trận lân cận A tương ứng là các phần tử logic aij = 1 nếu (i, j) ∈ E aij = 0 nếu (i, j) ∉ E Trong rất nhiều vấn đề ứng dụng của lý thuyết graph, mỗi cạnh e =(i, j) của graph được gán với một con số c(e) (còn viết là c(i, j)) gọi là trọng số của cạnh e Graph trong trường... ý rằng : trong một graph đơn vô hướng với n đỉnh thì bậc của một đỉnh bất kì luôn là một số nguyên không âm không vượt n-1 1.2.1.2 Dãy cạnh kế tiếp Cho trước một graph G với tập đỉnh V tập cạnh E Hai cạnh của một graph cho trước gọi là hai cạnh kề nhau nếu như chúng có một đỉnh chung Một dãy m cạnh ei = (Ai, Ai+1) với i=1, 2,…,m được gọi là một dãy Hình 1.8 Dãy cạnh kế tiếp cạnh nối tiếp thường... rằng một graph có thể có nhiều biểu diễn trên mặt phẳng khác nhau Trong hình 1.5 chúng ta có hai biểu diễn trên mặt phẳng khác nhau của một graph Graph được phân loại theo tính chất cạnh của chúng Trong mỗi graph các cạnh của graph thẳng hay cong, dài hay ngắn, các đỉnh ở vị trí nào, đều không phải là điều quan trọng Mà điều quan trọnggraph có bao nhiêu cạnh đỉnh nào được nối với đỉnh nào Một graph . Pascal. Chương 3: Ứng dụng của Graph vào chương trình Tin học phổ thông: Đưa ra và vận dụng lý thuyết Graph vào cài đặt một số bài toán cụ thể trong chương trình. lý thuyết đồ thị và ứng dụng của nó trong chương trình tin học phổ thông nên em đã chọn đề tài Graph và một số ứng dụng trong chương trình trung học

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

TỪ KHÓA LIÊN QUAN

w