Tải bản đầy đủ (.pdf) (90 trang)

bài toán cây bao trùm trên đồ thị và ứng dụng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (5.17 MB, 90 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

luận văn thạc sĩ

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

luận văn thạc sĩ

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

luận văn thạc sĩ

CƠNG TRÌNH ĐƯỢC HỒN THÀNH TẠI

<b>TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP. HCM </b>

Cán bộ hướng dẫn khoa học : TS. Võ Văn Tuấn Dũng

Luận văn Thạc sĩ được bảo vệ tại Trường Đại học Công nghệ TP. HCM ngày … tháng … năm …

Thành phần Hội đồng đánh giá Luận văn Thạc sĩ gồm:

<i>(Ghi rõ họ, tên, học hàm, học vị của Hội đồng chấm bảo vệ Luận văn Thạc sĩ) </i>

Xác nhận của Chủ tịch Hội đồng đánh giá Luận sau khi Luận văn đã được sửa chữa (nếu có).

<b>Chủ tịch Hội đồng đánh giá LV </b>

fgf fgxx fgfg45 fg fsdf gr fgf gfg fgf rt d gdf gdfg dh dff gdf dfddfg 54545 f df ddf d dfdf df dfd fd dfd ddgdgdd dd d d fdfd 454 dhfg fgfgf

<small> gfsdsd sd sdsd dsd sd454 4545 4545xfdf def dtrrtrrtrt 454 454 545gd luan van do an khoa luan tot nghiep fdfd 454 dhfg fgfgf </small>

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

luận văn thạc sĩ

<b>NHIỆM VỤ LUẬN VĂN THẠC SĨ </b>

Họ tên học viên: Trương Bá Thái Giới tính: Nam Ngày, tháng, năm sinh: 15/01/1980 Nơi sinh: Thanh Hóa Chun ngành: Cơng nghệ thơng tin MSHV: 1341860018

<b>I- Tên đề tài: Bài Toán Cây Bao Trùm Trên Đồ Thị và Ứng Dụng II- Nhiệm vụ và nội dung: </b>

Tìm hiểu các thuật tốn về tìm cây bao trùm trên đồ thị: thuật toán Borůvka, thuật toán Prim và thuật toán Kruskal. Nghiên cứu và xây dựng ứng dụng bài toán người du lịch dựa vào cây bao trùm nhỏ nhất.

<i><b>III- Ngày giao nhiệm vụ: 18/8/2014 </b></i>

<b>IV- Ngày hoàn thành nhiệm vụ: 15/3/2015 V- Cán bộ hướng dẫn: TS. Võ Văn Tuấn Dũng </b>

<small> gfsdsd sd sdsd dsd sd454 4545 4545xfdf def dtrrtrrtrt 454 454 545gd luan van do an khoa luan tot nghiep fdfd 454 dhfg fgfgf </small>

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

luận văn thạc sĩ

<b>LỜI CAM ĐOAN </b>

Tơi xin cam đoan đây là cơng trình nghiên cứu của riêng tôi. Các số liệu, kết quả nêu trong luận văn là trung thực và chưa từng được ai công bố trong bất kỳ cơng trình nào khác.

Tơi xin cam đoan rằng mọi sự giúp đỡ cho việc thực hiện luận văn này đã được cảm ơn và các thơng tin trích dẫn trong luận văn đã được chỉ rõ nguồn gốc.

<b>Học viên thực hiện Luận văn </b>

<b>Trương Bá Thái </b>

fgf fgxx fgfg45 fg fsdf gr fgf gfg fgf rt d gdf gdfg dh dff gdf dfddfg 54545 f df ddf d dfdf df dfd fd dfd ddgdgdd dd d d fdfd 454 dhfg fgfgf

<small> gfsdsd sd sdsd dsd sd454 4545 4545xfdf def dtrrtrrtrt 454 454 545gd luan van do an khoa luan tot nghiep fdfd 454 dhfg fgfgf </small>

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

luận văn thạc sĩ

Tác giả luận văn xin chân thành cảm ơn phòng sau đại học cùng toàn thể giáo sư, tiến sĩ, cán bộ trường Đại học Công nghệ TP.HCM đã tận tình giảng dạy, giúp đỡ và tạo mọi điều kiện thuận lợi trong quá trình học tập tại trường.

Học viên thực hiện Luận văn

Trương Bá Thái

<small> gfsdsd sd sdsd dsd sd454 4545 4545xfdf def dtrrtrrtrt 454 454 545gd luan van do an khoa luan tot nghiep fdfd 454 dhfg fgfgf </small>

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

luận văn thạc sĩ

Bài toán cây bao trùm nhỏ nhất có thể được xây dựng hiệu quả nhờ sử dụng các thuật toán dựa trên chiến thuật “tham lam”. Có nhiều thuật tốn tìm cây bao trùm nhỏ nhất. Một trong những thuật toán đầu tiên thuộc về Borůvka (1926). Hai thuật toán khá quen thuộc là thuật toán Kruskal (1956) và thuật toán Prim (1957). Bài toán người du lịch được nghiên cứu dựa vào xấp xỉ dùng cây bao trùm nhỏ nhất được trình bày trong luận văn là bài tốn NP khó.

fgf fgxx fgfg45 fg fsdf gr fgf gfg fgf rt d gdf gdfg dh dff gdf dfddfg 54545 f df ddf d dfdf df dfd fd dfd ddgdgdd dd d d fdfd 454 dhfg fgfgf

<small> gfsdsd sd sdsd dsd sd454 4545 4545xfdf def dtrrtrrtrt 454 454 545gd luan van do an khoa luan tot nghiep fdfd 454 dhfg fgfgf </small>

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

luận văn thạc sĩ

The problem of the minimum spanning tree can be constructed efficiently using algorithms based on the strategy "greedy". There are many algorithms to find the minimum spanning tree. One of the first algorithm belongs Borůvka (1926). Two algorithms familiar la Kruskal algorithm (1956) and Prim algorithm (1957). The problem of the study tour is based on the approximation using the minimum spanning tree is presented in the thesis is NP problem.

<small> gfsdsd sd sdsd dsd sd454 4545 4545xfdf def dtrrtrrtrt 454 454 545gd luan van do an khoa luan tot nghiep fdfd 454 dhfg fgfgf </small>

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

luận văn thạc sĩ

1.2 Mục đích, đối tượng và phạm vi nghiên cứu ... 12

1.3 Ý nghĩa khoa học và thực tiễn của đề tài ... 12

1.4 Cấu trúc của luận văn ... 12

Chương 2. KHÁI NIỆM CƠ BẢN VỀ ĐỒ THỊ ... 14

2.4 Cây và cây bao trùm của đồ thị ... 33

Chương 3. BÀI TOÁN CÂY BAO TRÙM NHỎ NHẤT ... 37

3.1 Nội dung và ý nghĩa bài toán ... 37

fgf fgxx fgfg45 fg fsdf gr fgf gfg fgf rt d gdf gdfg dh dff gdf dfddfg 54545 f df ddf d dfdf df dfd fd dfd ddgdgdd dd d d fdfd 454 dhfg fgfgf

<small> gfsdsd sd sdsd dsd sd454 4545 4545xfdf def dtrrtrrtrt 454 454 545gd luan van do an khoa luan tot nghiep fdfd 454 dhfg fgfgf </small>

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

luận văn thạc sĩ

3.1.2 Một số ứng dụng của cây bao trùm nhỏ nhất ... 38

3.2 Một số thuật giải ... 39

3.2.1 Thuật toán Borůvka ... 40

3.2.2 Thuật toán Kruskal ... 43

3.2.3 Thuật toán Prim ... 48

3.3 Bài Toán xấp xỉ nhờ cây bao trùm nhỏ nhất(MST-based approximation) ... 54

3.3.1 Thuật tốn Christofides ... 56

3.3.2 Phân tích thuật tốn ... 57

Chương 4. ỨNG DỤNG THUẬT TOÁN CHRISTOFIDES VÀO BÀI TOÁN NGƯỜI DU LỊCH ... 64

4.1 Phân tích yêu cầu ... 64

4.1.1 Sơ đồ Use Case ... 65

4.1.2 Đặc tả chi tiết ... 65

4.2 Đặc Tả Cấu Trúc Dữ Liệu ... 70

4.2.1 Lượt đồ quan hệ dữ liệu ... 71

4.2.2 Đặc tả cấu trúc bảng ... 72

4.3 Cài đặt và đánh giá hiệu quả thuật toán Christofides ... 72

4.3.1 Cài đặt thuật toán Christofides ... 72

4.3.2 Đánh giá hiệu quả thuật tốn Christofides ... 74

4.4 Tính năng chính của chương trình ... 76

4.4.1 Màn hình chọn các địa điểm ... 76

<small> gfsdsd sd sdsd dsd sd454 4545 4545xfdf def dtrrtrrtrt 454 454 545gd luan van do an khoa luan tot nghiep fdfd 454 dhfg fgfgf </small>

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

luận văn thạc sĩ

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

luận văn thạc sĩ

<b>9. Danh mục các từ viết tắt </b>

<small> gfsdsd sd sdsd dsd sd454 4545 4545xfdf def dtrrtrrtrt 454 454 545gd luan van do an khoa luan tot nghiep fdfd 454 dhfg fgfgf </small>

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

luận văn thạc sĩ

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

luận văn thạc sĩ

Hình 3.2 Đồ thị áp dụng thuật toán Christofides 54

<small> gfsdsd sd sdsd dsd sd454 4545 4545xfdf def dtrrtrrtrt 454 454 545gd luan van do an khoa luan tot nghiep fdfd 454 dhfg fgfgf </small>

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

luận văn thạc sĩ

Hiện nay có rất nhiều tài liệu, sách, giáo trình đã viết về lý thuyết đồ thị với những nội dung, đầy đủ giúp cho những người muốn nghiên cứu về lý thuyết đồ thị tham khảo. Tuy nhiên hầu hết các tài liệu đều chỉ nghiên cứu về lý thuyết và xây dựng các thuật toán chung cho các bài tốn mà chưa có tài liệu viết về các ứng dụng các thuật toán để giải các bài toán ứng dụng cụ thể.

Bài toán cây bao trùm nhỏ nhất là bài tốn có vai trị trung tâm trong lý thuyết tối ưu tổ hợp, nẩy sinh trong nhiều ứng dụng và xuất hiện như một bài toán con trong nhiều bài tốn về hình học và tổ hợp. Bài tốn này quan trọng khơng chỉ vì nó là mơ hình cơ bản trong lý thuyết tối ưu về mạng mà cịn vì nó được dùng như một hình mẫu điển hình trong tối ưu tổ hợp đã kích thích nhiều hướng nghiên cứu mới.

Với sự xuất hiện ngày càng nhiều các hệ thống như: hệ thống mạng điện, mạng sản xuất và phân phối hàng hóa, mạng giao thơng, ... nếu độ dài của của cạnh biểu thị chi phí (đi lại, vận chuyển hàng hóa, bưu phẩm, chi phí, ...) giữa hai đầu mút của cạnh đó, thì chi phí trên cây bao trùm được xác định bằng tổng chi phí của

<b>mọi cạnh thuộc đường duy nhất trên cây nối chúng. Vì vậy, tơi đã chọn đề tài “BÀI TỐN CÂY BAO TRÙM TRÊN ĐỒ THỊ VÀ ỨNG DỤNG” để nghiên cứu. </b>

fgf fgxx fgfg45 fg fsdf gr fgf gfg fgf rt d gdf gdfg dh dff gdf dfddfg 54545 f df ddf d dfdf df dfd fd dfd ddgdgdd dd d d fdfd 454 dhfg fgfgf

<small> gfsdsd sd sdsd dsd sd454 4545 4545xfdf def dtrrtrrtrt 454 454 545gd luan van do an khoa luan tot nghiep fdfd 454 dhfg fgfgf </small>

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

luận văn thạc sĩ

1.2 Mục đích, đối tượng và phạm vi nghiên cứu

Từ động cơ nghiên cứu nêu trên luận án tìm hiểu các định nghĩa và khái niệm cơ bản thường dùng trong lý thuyết đồ thị. Tìm hiểu các thuật tốn về tìm cây bao trùm trên đồ thị: thuật toán Borůvka, thuật toán Prim và thuật toán Kruskal. Nghiên cứu bài toán người du lịch dựa vào cây bao trùm nhỏ nhất. Đây là vấn đề trọng tâm và là mục tiêu nghiên cứu của luận án.

1.3 Ý nghĩa khoa học và thực tiễn của đề tài

Luận văn này tập trung chủ yếu vào bài toán cây bao trùm nhỏ nhất và một số mở rộng của nó. Bài tốn này khá đơn giản, có nhiều thuật tốn giải hiệu quả và có nhiều ứng dụng phong phú, đồng thời gợi mở nhiều vấn đề lý thú. Ngoài ra, luận văn giới thiệu khái quát những khái niệm cơ bản của lý thuyết đồ thị.

1.4 Cấu trúc của luận văn

Luận văn bao gồm 5 chương:

<b>Chương 1: Mở đầu, trình bày lý do chọn đề tài, mục tiêu, phạm vi và những </b>

đóng góp chính của luận văn; giới thiệu cấu trúc của luận văn.

<b>Chương 2: Khái niệm cơ bản về lý thuyết đồ thị, trình bày những định </b>

nghĩa và khái niệm cơ bản thường dùng trong lý thuyết đồ thị, đặc biệt là các khái niệm về cây bao trùm của một đồ thị và một số tính chất cơ bản của chúng.

<b>Chương 3: Bài toán cây bao trùm nhỏ nhất, Chương này đề cập tới bài toán </b>

cây bao trùm nhỏ nhất, giới thiệu một số ứng dụng trực tiếp của nó, trình bày ba thuật tốn nổi tiếng giải bài toán và cuối cùng đề cập tới một số bài tốn có liên quan đến cây

<b>Chương 4: Ứng dụng thuật toán Christofides vào bài tốn người du lịch, </b>

Trong chương này tơi xây dựng website có chức năng chọn các địa điểm cần đến, tính khoảng giữa các địa điểm, đưa ra giải pháp tìm chu trình đi qua các địa điểm.

<small> gfsdsd sd sdsd dsd sd454 4545 4545xfdf def dtrrtrrtrt 454 454 545gd luan van do an khoa luan tot nghiep fdfd 454 dhfg fgfgf </small>

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

luận văn thạc sĩ

<b>Chương 5: Kết luận và kiến nghị, là phần tổng kết, trong đó trình bày tóm </b>

lược kết quả luận văn và những đề nghị liên quan đến luận văn.

<b>Danh mục tài liệu tham khảo. Phụ lục. </b>

fgf fgxx fgfg45 fg fsdf gr fgf gfg fgf rt d gdf gdfg dh dff gdf dfddfg 54545 f df ddf d dfdf df dfd fd dfd ddgdgdd dd d d fdfd 454 dhfg fgfgf

<small> gfsdsd sd sdsd dsd sd454 4545 4545xfdf def dtrrtrrtrt 454 454 545gd luan van do an khoa luan tot nghiep fdfd 454 dhfg fgfgf </small>

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

luận văn thạc sĩ

<b>Chương 2. KHÁI NIỆM CƠ BẢN VỀ ĐỒ THỊ </b>

Chương này trình bày những định nghĩa và khái niệm cơ bản thường dùng trong lý thuyết đồ thị, đặc biệt là các khái niệm về cây bao trùm của một đồ thị và một số tính chất cơ bản của chúng. Nội dung trình bày ở chương này chủ yếu dựa vào các tài liệu [1], [2], [3] và [5].

Lý thuyết đồ thị là ngành tốn học hiện đại có ứng dụng quan trọng trong nhiều ngành khoa học, kỹ thuật hiện đại: vật lý, hóa học, sinh học, tin học, điều khiển học, …, tư tưởng cơ bản của lý thuyết đồ thị được đề xuất vào những năm đầu của thế kỷ 18 bởi nhà toán học lỗi lạc người Thụy Sỹ Lenhard Eurler. Chính ơng là người sử dụng đồ thị để giải bài toán nổi tiếng về các cái cầu ở thành phố Konigsberg.

2.1 Một số khái niệm 2.1.1 Khái niệm đồ thị

<b>Có thể hiểu đồ thị là một tập hợp các điểm, gọi là nút hay đỉnh và một tập hợp các đoạn (thẳng hay cong) nối liền một số cặp điểm này, gọi là cạnh hay cung </b>

của đồ thị. Mỗi đỉnh của đồ thị thường được ký hiệu bằng các chữ cái a,b,c…hoặc các chữ số 1, 2, 3… Cạnh nối đỉnh i với j được ký hiệu là (i,j). Một cạnh có dạng

<b>(a,a) gọi là một khuyên. Nếu đồ thị G có tập đỉnh là V và tập cạnh là E thì ta viết G </b>

= (V,E). Ta cũng dùng ký hiệu V(G) để chỉ tập đỉnh và E(G) để chỉ tập cạnh của đồ thị G. Ký hiệu n =| V(G)| là số đỉnh và m = |E(G)| là số cạnh của đồ thị.

<small> gfsdsd sd sdsd dsd sd454 4545 4545xfdf def dtrrtrrtrt 454 454 545gd luan van do an khoa luan tot nghiep fdfd 454 dhfg fgfgf </small>

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

luận văn thạc sĩ

<b>Một cạnh của đồ thị gọi là cạnh có hướng nếu có quy định rõ một mút của cạnh là đỉnh đầu, còn mút kia là đỉnh cuối. Cạnh có hướng gọi là cung, cung đi từ </b>

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

luận văn thạc sĩ

<b>hỗn hợp. Bằng cách thay một cạnh bởi hai cung có hướng ngược chiều nhau, ta có </b>

thể quy mọi đồ thị về đồ thị có hướng, hình 2.2 mơ tả một đồ thị có hướng.

<b>Hai cạnh e và e‟ cùng nối liền hai đỉnh như nhau gọi là cạnh kép. Đồ thị không có cạnh kép gọi là một đơn đồ thị. Trái lại, gọi là đa đồ thị . </b>

Trong các phần tiếp theo chủ yếu chúng ta sẽ làm việc với đơn đồ thì vơ hướng và đơn đồ thị có hướng. Vì vậy, để cho ngắn gọn, ta sẽ bỏ qua tính từ đơn khi nhắc đến chúng.

2.1.2 Các thuật ngữ cơ bản

Trong mục này sẽ trình bày một số thuật ngữ cơ bản của lý thuyết đồ thị. Trước tiên ta xét các thuật ngữ mô tả các đỉnh và cạnh của đồ thị vô hướng.

<i><b>Định nghĩa 2.1: Hai đỉnh u và v của đồ thị vô hướng G được gọi là kề nhau </b></i>

<i>nếu (u,v) là cạnh của đồ thị G. Nếu e = (u,v) là cạnh của đồ thị ta nói cạnh này liên thuộc với hai đỉnh u và v, hoặc cũng nói là nối đỉnh u và đỉnh v, đồng thời các đỉnh u và v sẽ được gọi là các đỉnh đầu của cạnh (u,v). </i>

Để có thể biết có bao nhiêu cạnh liên thuộc một đỉnh, ta đưa vào định nghĩa sau :

<i><b>Định nghĩa 2.2: Ta gọi bậc của đỉnh v trong đồ thị vô hướng là số cạnh liên </b></i>

<i>thuộc với nó và sẽ ký hiệu là deg(v). </i>

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

luận văn thạc sĩ

deg(a)= deg (d) = 1, deg(b)=deg(c)= 4, deg(f)= deg(e)= 3, deg (g) = 0.

<b>Đỉnh bậc 0 gọi là đỉnh cô lập. Đỉnh bậc 1 được gọi là đỉnh treo. Trong đồ thị </b>

trên đỉnh a, d là đỉnh treo cịn đỉnh g là đỉnh cơ lập.

<i><b>Định lý 2.1: Giả sử G = (V,E) là đồ thị vơ hướng với m cạnh. Khi đó tổng bậc </b></i>

<i><b>của tất cả các đỉnh bằng hai lần số cạnh. </b></i>

Chứng minh: Rõ ràng mỗi cạnh e = (u,v) được tính một lần trong deg(u) và một lần trong deg(v). Từ đó suy ra tổng tất cả các bậc của các đỉnh bằng hai lần số cạnh.

<b>Hệ quả 2.1: Trong đồ thị vô hướng, số đỉnh bậc lẻ ( nghĩa là có bậc là số lẻ) là một số chẵn. </b>

<b>Chứng minh: Thực vậy, gọi O và U tương ứng là tập đỉnh bậc lẻ và tập đỉnh </b>

bậc chẵn của đồ thị. Ta có theo định lý 2.1: deg (O) +deg (U) = 2m, trong đó m là số cạnh của đồ thị, do U là tập đỉnh bậc chẵn nên deg( U) sẽ là một số chẵn vì nó là tổng các số chẵn.

Do đó deg (O) cũng sẽ là một số chẵn vì deg (U) và 2m là số chẵn.

Mà O là tập đỉnh bậc lẻ và deg (O) là số chẵn nên deg (O) sẽ là tổng của một số chẵn các số hạng. Vì vậy, số đỉnh bậc lẻ phải là số chẵn.

<i><b>Định nghĩa 2.3: Nếu e = (u,v) là cung của đồ thị có hướng G thì ta có hai </b></i>

<i>đỉnh u và v kề nhau, và nói cung (u, v) nối đỉnh u với đỉnh v hoặc cũng nói cung này là đi ra khỏi đỉnh u và vào đỉnh v. Đỉnh u(v) sẽ được gọi là đỉnh đầu (cuối) của cung (u, v). </i>

Tương tự như khái niệm bậc, đối với đồ thị có hướng ta có khái niệm bán bậc ra và bán bậc vào của một đỉnh.

<i><b>Định nghĩa 2.4: Ta gọi bán bậc ra (bán bậc vào) của đỉnh v trong đồ thị có </b></i>

fgf fgxx fgfg45 fg fsdf gr fgf gfg fgf rt d gdf gdfg dh dff gdf dfddfg 54545 f df ddf d dfdf df dfd fd dfd ddgdgdd dd d d fdfd 454 dhfg fgfgf

<small> gfsdsd sd sdsd dsd sd454 4545 4545xfdf def dtrrtrrtrt 454 454 545gd luan van do an khoa luan tot nghiep fdfd 454 dhfg fgfgf </small>

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

luận văn thạc sĩ

Hình 2.4. Bán bậc ra (bán bậc vảo) đồ thị có hướng Xét đồ thị cho trong hình 2.4. Ta có :

deg<sup>–</sup>(a) = 1, deg<sup>–</sup>(b) = 2, deg<sup>–</sup>(c) = 2, deg<sup>–</sup>(d) = 2, deg<sup>–</sup>(e) = 2. deg<sup>+</sup>(a) = 3, deg<sup>+</sup>(b) = 1, deg<sup>+</sup>(c) = 1, deg<sup>+</sup>(d) = 2, deg<sup>+</sup>(e) = 2. Tương tự như khái niệm bậc của đồ thị vơ hướng ta có định lý sau:

<b>Định lý 2.2: Giả sử G = (V,E) là đồ thị có hướng với m cạnh. Khi đó tổng của </b>

tất cả các bán bậc vào và bán bậc ra bằng hai lần số cạnh.

2.1.3 Đường đi, chu trình và đồ thị liên thơng.

<b>Đường P từ đỉnh u tới đỉnh v là một dãy liên tiếp các cạnh có dạng : </b>

(a<sub>0</sub>, a<sub>1</sub>), (a<sub>1</sub>, a<sub>2</sub>), (a<sub>2</sub>, a<sub>3</sub>), …(a<sub>k-1</sub>, a<sub>k</sub>), với a<sub>0</sub> = u, a<sub>k</sub> = v và k≥ 0, trong đó các đỉnh a<small>0</small>, a<sub>1</sub>, …a<small>k</small> đều khác nhau. Để đơn giản, đôi khi ta viết P={ a<sub>0</sub>, a<sub>1</sub>, …a<small>k</small>} và nói đó là đường nối đỉnh u và đỉnh v. Đỉnh u gọi là đỉnh đầu, đỉnh v gọi là đỉnh cuối của

<b>P. Với x,y ∈ V(P) (tập các đỉnh thuộc đường P), ta ký hiệu P[x,y] là đồ thị con của </b>

P mà nó là đường trong P đi từ x tới y. Một đường nối một đỉnh tới chính nó (đỉnh

<b>đầu trùng với đỉnh cuối) gọi là một chu trình. Độ dài của đường (chu trình) là số cạnh của đường (chu trình ) đó. Đường đi hay chu trình được gọi là đơn nếu </b>

nhưkhông có cạnh nào bị lặp lại.

<b>Trên đồ thị vơ hướng cho trong hình 2.5: a, d, c, f, e là đường đi đơn độ dài 4. </b>

Còn d, e, c, a không là đường đi, do (c, e) không phải là cạnh của đồ thị. Dãy b, c,

<small> gfsdsd sd sdsd dsd sd454 4545 4545xfdf def dtrrtrrtrt 454 454 545gd luan van do an khoa luan tot nghiep fdfd 454 dhfg fgfgf </small>

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">

luận văn thạc sĩ

Trong thực tế, xét một mạng máy tính. Một câu hỏi đặt ra là hai máy bất kỳ trong mạng này có thể trao đổi thông tin với nhau hoặc là trực tiếp qua kênh nối chúng hoặc thơng qua một vài máy tính trung gian trong mạng? Nếu sử dụng đồ thị để biểu diễn mạng máy tính này (trong đó các đỉnh của đồ thị tương ứng với các máy tính, còn các cạnh tương ứng với các kênh nối) câu hỏi đó được phát biểu trong ngơn ngữ đồ thị như sau: Tồn tại hay không đường đi giữa mọi cặp đỉnh của đồ thị. Ta đi đến định nghĩa sau :

<i><b>Định nghĩa 2.5: Đồ thị vô hướng G=(V,E) được gọi là liên thông nếu ln </b></i>

<i>tìm được đường đi giữa hai đỉnh bất kỳ của nó. </i>

Như vậy hai máy tính bất kỳ trong mạng có thể trao đổi thơng tin được với nhau khi và chỉ khi đồ thị tương ứng với mạng này là đồ thị liên thơng.

<b>Trong hình 2.6 : Đồ thị G là liên thơng, cịn đồ thị H là không liên thông </b>

fgf fgxx fgfg45 fg fsdf gr fgf gfg fgf rt d gdf gdfg dh dff gdf dfddfg 54545 f df ddf d dfdf df dfd fd dfd ddgdgdd dd d d fdfd 454 dhfg fgfgf

<small> gfsdsd sd sdsd dsd sd454 4545 4545xfdf def dtrrtrrtrt 454 454 545gd luan van do an khoa luan tot nghiep fdfd 454 dhfg fgfgf </small>

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">

luận văn thạc sĩ

Hình 2.6. Đồ thị liên thông G và không liên thông H

<b>Định nghĩa 2.6: Ta gọi đồ thị con của đồ thị G = (V, E) là đồ thị H = (W, F), </b>

trong đó W⊆ V, F ⊆ E.

Trong trường hợp đồ thị là khơng liên thơng, nó sẽ rã ra thành một số đồ thị con liên thông đôi một khơng có đỉnh chung. Những đồ thị con liên thơng như vậy

<b>ta sẽ gọi là các thành phần liên thơng của đồ thị. </b>

<b>Đồ thị H trong hình 2.6 gồm 3 thành phần liên thông H1, H2, H3. </b>

Trong mạng máy tính có thể có những máy (những kênh nối) mà sự hỏng hóc của nó sẽ ảnh hưởng đến việc trao đổi thông tin trong mạng. Các khái niệm tương ứng với tình huống này sẽ được đưa ra trong định nghĩa sau:

<i><b>Định nghĩa 2.7: Đỉnh v được gọi là đỉnh rẽ nhánh (đỉnh cắt, đỉnh khớp) nếu </b></i>

<i>việc loại bỏ v cùng với các cạnh liên thuộc với nó khỏi đồ thị làm tăng số thành </i>

<i><b>phần liên thông của đồ thị. Cạnh e được gọi là cạnh cắt (cầu ) nếu việc loại bỏ nó </b></i>

<i>khỏi đồ thị làm tăng số thành phần liên thông của đồ thị. </i>

<b>Trong đồ thị G ở hình 2.6, đỉnh d và e là đỉnh rẽ nhánh, còn các cạnh (d, f) và </b>

(e, g) là cầu.

Đối với đồ thị có hướng có hai khái niệm liên thơng phụ thuộc vào việc ta có xét đến hướng trên các cung hay khơng.

<i><b>Định nghĩa 2.8: Đồ thị có hướng G= (V, A) được gọi là liên thơng mạnh nếu </b></i>

<i>ln tìm được đường đi giữa hai đỉnh bất kỳ của nó. </i>

<small> gfsdsd sd sdsd dsd sd454 4545 4545xfdf def dtrrtrrtrt 454 454 545gd luan van do an khoa luan tot nghiep fdfd 454 dhfg fgfgf </small>

</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">

luận văn thạc sĩ

<i><b>Định nghĩa 2.9: Đồ thị có hướng G = (V, A) được gọi là liên thông yếu nếu </b></i>

<i>đồ thị vơ hướng tương ứng với nó là vô hướng liên thông. </i>

Rõ ràng, nếu đồ thị là liên thơng mạnh thì nó cũng là liên thơng yếu, nhưng điều ngược lại là không luôn đúng, như chỉ ra trong đồ thị dưới đây.

<b>Trong hình 2.7, đồ thị G là liên thơng mạnh, cịn H là liên thơng yếu. </b>

Hình 2.7. Đồ thị liên thơng mạnh G, đồ thị liên thông yếu H.

Một câu hỏi đặt ra là khi nào có thể định hướng các cạnh của một đồ thị vô hướng liên thông để có thể thu được đồ thị có hướng liên thông mạnh? Ta sẽ gọi đồ

<b>thị như vậy là đồ thị định hướng được. </b>

<i><b>Định lý 2.3: Đồ thị vô hướng liên thông là định hướng được khi và chỉ khi </b></i>

<i>mỗi cạnh của nó nằm trên ít nhất một chu trình. </i>

<b>Chứng minh: </b>

<b>Điều kiện cần: Giả sử (u, v) là một cạnh của đồ thị. Từ sự tồn tại đường đi có </b>

hướng từ u đến v và ngược lại suy ra (u, v) phải nằm ít nhất trên một chu trình.

<b>Điều kiện đủ: Thủ tục sau đây cho phép định hướng các cạnh của đồ thị để </b>

thu được đồ thị có hướng liên thơng mạnh. Giả sử C là một chu trình nào đó trong đồ thị. Định hướng các cạnh trên chu trình này theo một hướng đi vịng theo nó. Nếu tất cả các cạnh của đồ thị là đã được định hướng thì kết thúc thủ tục. Ngược lại, chọn e là một cạnh chưa định hướng có chung đỉnh với ít nhất một trong số các cạnh đã định hướng. Theo giả thiết tìm được chu trình C‟ chứa cạnh e. Định hướng

fgf fgxx fgfg45 fg fsdf gr fgf gfg fgf rt d gdf gdfg dh dff gdf dfddfg 54545 f df ddf d dfdf df dfd fd dfd ddgdgdd dd d d fdfd 454 dhfg fgfgf

<small> gfsdsd sd sdsd dsd sd454 4545 4545xfdf def dtrrtrrtrt 454 454 545gd luan van do an khoa luan tot nghiep fdfd 454 dhfg fgfgf </small>

</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">

luận văn thạc sĩ

các cạnh chưa được định hướng của C‟ theo một hướng dọc theo chu trình này (khơng định hướng lại các cạnh đã có định hướng). Thủ tục trên sẽ được lặp lại cho đến khi tất cả các cạnh của đồ thị được định hướng. Khi đó ta thu được đồ thị có hướng liên thông mạnh.

2.1.4 Một số dạng đồ thị đặc biệt

<b>a/ Đồ thị đầy đủ </b>

<b>Đồ thị đầy đủ là đơn đồ thị vô hướng mà giữa hai đỉnh bất kỳ của nó ln có </b>

một cạnh nối. Đồ thị đầy đủ n đỉnh ký hiệu là K<sub>n</sub> và có tất cả n(n-1) / 2 cạnh. Các đồ

<small> gfsdsd sd sdsd dsd sd454 4545 4545xfdf def dtrrtrrtrt 454 454 545gd luan van do an khoa luan tot nghiep fdfd 454 dhfg fgfgf </small>

</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">

luận văn thạc sĩ

<b>c/ Đồ thị vòng </b>

Đồ thị vòng C<small>n</small>, n ≥ 3, gồm n đỉnh v<small>1</small>, v<sub>2</sub>, …, v<small>n</small> và các cạnh (v<sub>1</sub>, v<sub>2</sub>), (v<sub>2</sub>, v<sub>3</sub>),… (v<sub>n-1</sub>, v<sub>n</sub>), (v<sub>n</sub>, v<sub>1</sub>).

</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">

luận văn thạc sĩ

Hình 2.12. Đồ thị lập phương Q<sub>1</sub>, Q<sub>2</sub>, Q<sub>3</sub>

2.2 Biểu diễn đồ thị và tìm kiếm trên đồ thị

2.2.1 Biểu diễn đồ thị

<b>a/ Ma trận kề. </b>

Nếu các đỉnh của đồ thị được đánh số liên tiếp từ 1 đến n thì đồ thị có thể

<b>được biểu diễn bởi một ma trận vuông cấp n, gọi là ma trận kề. Cho đồ thị G = (V, </b>

E), ma trận kề của đồ thị G được định nghĩa là ma trận M= [m<sub>ij</sub> ] với 1 nếu đỉnh i kề với đỉnh j,

m<sub>i</sub><sub>j</sub><b> = </b>

0 nếu trái lại .

<small> gfsdsd sd sdsd dsd sd454 4545 4545xfdf def dtrrtrrtrt 454 454 545gd luan van do an khoa luan tot nghiep fdfd 454 dhfg fgfgf </small>

</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">

luận văn thạc sĩ

Trong cách biểu diễn này mỗi cạnh (cung) e = (x, y) của đồ thị sẽ được lưu giữ nhờ hai biến nguyên Dau (e), Cuoi (e). Nhược điểm của cách biểu diễn này là khó xác định các đỉnh của đồ thị kề với một đỉnh cho trước.

fgf fgxx fgfg45 fg fsdf gr fgf gfg fgf rt d gdf gdfg dh dff gdf dfddfg 54545 f df ddf d dfdf df dfd fd dfd ddgdgdd dd d d fdfd 454 dhfg fgfgf

<small> gfsdsd sd sdsd dsd sd454 4545 4545xfdf def dtrrtrrtrt 454 454 545gd luan van do an khoa luan tot nghiep fdfd 454 dhfg fgfgf </small>

</div><span class="text_page_counter">Trang 30</span><div class="page_container" data-page="30">

luận văn thạc sĩ

<b>Danh sách kề của đồ thị ở hình 2.13 là (0 chỉ hết danh sách) </b>

<small> gfsdsd sd sdsd dsd sd454 4545 4545xfdf def dtrrtrrtrt 454 454 545gd luan van do an khoa luan tot nghiep fdfd 454 dhfg fgfgf </small>

</div><span class="text_page_counter">Trang 31</span><div class="page_container" data-page="31">

luận văn thạc sĩ

2.2.2 Các thuật tốn tìm kiếm trên đồ thị

Nhiều thuật toán trên đồ thị được xây dựng trên cơ sở duyệt (thăm, xét…) tất cả các đỉnh của đồ thị theo thứ tự sao cho mỗi đỉnh được thăm đúng một lần (khơng trùng lặp và khơng bỏ sót). Những thuật toán như vậy sẽ được gọi là các thuật tốn tìm kiếm (Search Algorithms) trên đồ thị. Trong mục này chúng ta sẽ giới thiệu hai thuật tốn tìm kiếm cơ bản trên đồ thị: Đó là thuật tốn tìm kiếm theo chiều sâu (Depth First Search) và thuật tốn tìm kiếm theo chiều rộng (Breadth First Search)

<b>a/ Tìm kiếm theo chiều sâu (DFS = Depth First Search). </b>

Ý tưởng chính của thuật tốn có thể trình bày như sau. Ta sẽ bắt đầu tìm kiếm từ một đỉnh v<sub>0</sub> nào đó của đồ thị. Sau đó chọn u là một đỉnh tuỳ ý kề với v<sub>0</sub> và lặp lại quá trình đối với u. Ở bước tổng quát, giả sử ta đang xét đỉnh v. Nếu như trong số các đỉnh kề với v tìm được đỉnh w là chưa được xét thì ta sẽ xét đỉnh này (nó sẽ trở thành đã xét) và bắt đầu từ nó ta sẽ bắt đầu q trình tìm kiếm cịn nếu như khơng cịn đỉnh nào kề với v là chưa xét thì ta nói rằng đỉnh này đã duyệt xong và quay trở lại tiếp tục tìm kiếm từ đỉnh mà trước đó ta đến được đỉnh v (nếu v=v<sub>0</sub>, thì kết thúc tìm kiếm). Có thể nói tìm kiếm theo chiều sâu bắt đầu từ đỉnh v được thực hiện trên cơ sở tìm kiếm theo chiều sâu từ tất cả các đỉnh chưa xét kề với v

</div><span class="text_page_counter">Trang 32</span><div class="page_container" data-page="32">

luận văn thạc sĩ

Hình 2.14. Tìm kiếm theo chiều sâu

Chỉ số mới (trong ngoặc) của các đỉnh được đánh lại theo thứ tự chúng được thăm trong thuật tốn tìm kiếm theo chiều sâu. Giả thiết rằng các đỉnh trong danh sách kề của đỉnh v (Ke(v)) được sắp xếp theo thứ tự tăng dần của chỉ số.

Thuật tốn tìm kiếm theo chiều sâu trên đồ thị vơ hướng trình bày ở trên dễ dàng có thể mơ tả lại cho đồ thị có hướng. Trong trường hợp đồ thị có hướng, thủ tục DFS(v) sẽ cho phép thăm tất cả các đỉnh u nào mà từ v có đường đi đến u.

<b>b/ Tìm kiếm theo chiều rộng ( BFS = Breadth first Search ). </b>

Để ý rằng trong thuật tốn tìm kiếm theo chiều sâu đỉnh được thăm càng muộn sẽ càng sớm trở thành đã duyệt xong. Điều đó là hệ quả tất yếu của việc các đỉnh được thăm sẽ được kết nạp vào trong ngăn xếp (STACK). Tìm kiếm theo chiều rộng trên đồ thị, nếu nói một cách ngắn gọn, được xây dựng trên cơ sở thay thế ngăn xếp (STACK) bởi hàng đợi (QUEUE). Với sự cải biên như vậy, đỉnh được thăm càng sớm sẽ càng sớm trở thành đã duyệt xong (tức là càng sớm dời khỏi hàng

</div><span class="text_page_counter">Trang 33</span><div class="page_container" data-page="33">

luận văn thạc sĩ

đợi). Một đỉnh sẽ trở thành đã duyệt xong ngay sau khi ta xét xong tất cả các đỉnh kề (chƣa đƣợc thăm) với nó.

<b>Xét đồ thị xét trong hình 2.15, thứ tự thăm đỉnh của đồ thị theo thuật tốn tìm </b>

kiếm theo chiều rộng đƣợc ghi trong ngoặc. <small>3 (11) </small>

<i><b>Định nghĩa 2.10: Chu trình đơn trong đồ thị G đi qua mỗi cạnh của nó một </b></i>

<i><b>lần được gọi là chu trình Euler. Đường đi đơn trong G đi qua mỗi cạnh của nó một lần được gọi là đường đi Euler. Đồ thị được gọi là đồ thị Euler nếu có chu trình Euler và gọi là đồ thị nửa Euler nếu có đường đi Euler. </b></i>

Rõ ràng mọi đồ thị Euler luôn là nửa Euler, nhƣng điều ngƣợc lại không luôn đúng.

<small>2 (2) </small>

<small>7 (6) </small> <sup>5 (9) </sup>

<small>4 (3) </small> <sup>6 (5) </sup> <small>9 (13) 12 (4) </small> <sub>13(10) </sub>

<small>11(8) </small>

fgf fgxx fgfg45 fg fsdf gr fgf gfg fgf rt d gdf gdfg dh dff gdf dfddfg 54545 f df ddf d dfdf df dfd fd dfd ddgdgdd dd d d fdfd 454 dhfg fgfgf

<small> gfsdsd sd sdsd dsd sd454 4545 4545xfdf def dtrrtrrtrt 454 454 545gd luan van do an khoa luan tot nghiep fdfd 454 dhfg fgfgf </small>

</div><span class="text_page_counter">Trang 34</span><div class="page_container" data-page="34">

luận văn thạc sĩ

Hình 2.16. Đồ thị Euler

<b>Trong hình 2.16 đồ thị G1 là đồ thị Euler vì nó có chu trình Euler a, e, c, d, e, </b>

b, a. Đồ thị G2 khơng có chu trình Euler nhưng có đường đi Euler a, c, d, e, b, d, a, b vì thế G2 là đồ thị nửa Euler.

Điều kiện cần và đủ để một đồ thị là một đồ thị Euler được Euler tìm ra vào năm 1736 khi ơng giải quyết bài tốn bài tốn hóc búa nổi tiếng thế giới thời đó về bảy cái cầu ở thành phố Konigdberg và đây là định lý đầu tiên của lý thuyết đồ thị.

<i><b>Định lý 2.4 (Euler). Đồ thị vô hướng liên thông G là đồ thị Euler khi và chỉ </b></i>

<i><b>khi mọi đỉnh của G đều là có bậc chẵn. </b></i>

Để chứng minh định lý trước hết ta chứng minh bổ đề.

<i><b>Bổ đề 2.1: Nếu bậc của mỗi đỉnh của đồ thị G không nhỏ hơn 2 thì G chứa </b></i>

<i>chu trình. </i>

<b>Chứng minh: Nếu G có cạnh lặp thì khẳng định của bổ đề là hiển nhiên. Vì </b>

vậy giả sử G là đơn đồ thị. Gọi v là một đỉnh nào đó của G. Ta sẽ xây dựng theo qui nạp đường đi.

</div><span class="text_page_counter">Trang 35</span><div class="page_container" data-page="35">

luận văn thạc sĩ

Trong đó v<small>1</small> là đỉnh kề với v, do tập đỉnh của G là hữu hạn nên sau một số hữu hạn bước ta phải quay lại đỉnh đã xuất hiện trước đó. Gọi đỉnh đầu tiên như thế là v<sub>k</sub>. Khi đó đoạn của đường đi xây dựng nằm giữa hai đỉnh v<small>k</small> là chu trình cần tìm.

<b>Chứng minh định lý: </b>

<b>Điều kiện cần: Giả sử G là đồ thị Euler tức là tồn tại chu trình Euler P trong </b>

G. Khi đó cứ mỗi lần chu trình P đi qua một đỉnh nào đó của G bậc của đỉnh đó tăng lên 2. Mặt khác mỗi cạnh của đồ thị xuất hiện trong P đúng một lần, suy ra mỗi đỉnh của đồ thị đều là bậc chẵn.

<b>Điều kiện đủ: Quy nạp theo số đỉnh và số cạnh của G. Do G liên thông và m(v) là số chẵn nên bậc của nó khơng nhỏ hơn 2. Từ đó theo bổ đề 2.1 G phải chứa </b>

chu trình C. Nếu C đi qua tất cả các cạnh của G thì nó chính là chu trình Euler. Giả sử C không đi qua tất cả các cạnh của G, khi đó loại bỏ G tất cả các cạnh thuộc C ta thu được một đồ thị mới H vẫn là bậc chẵn. Theo giả thiết qui nạp, trong mỗi thành phần liên thông của H đều tìm được chu trình Euler. Do G là liên thơng nên trong mỗi thành phần của H có ít nhất một đỉnh chung với chu trình C. Vì vậy, ta có thể xây dựng chu trình Euler trong G như sau: bắt đầu từ một đỉnh nào đó của chu trình C, đi theo các cạnh của C chừng nào chưa gặp phải đỉnh không cô lập của H. Nếu gặp phải đỉnh như vậy ta sẽ đi theo chu trình Euler của thành phần liên thơng của H chứa đỉnh đó. Sau đó lại tiếp tục đi theo cạnh của C cho đến khi gặp phải đỉnh không cô lập của H thì lại theo chu trình Euler của thành phần liên thơng tương ứng trong H. Q trình kết thúc khi ta trở về đỉnh xuất phát, tức là thu được chu trình đi qua mỗi cạnh của đồ thị đúng một lần.

<i><b>Hệ quả 2.1: Đồ thị vô hướng liên thông G là nửa Euler khi và chỉ khi nó </b></i>

<i><b>khơng q 2 đỉnh bậc lẻ. </b></i>

<b>Chứng minh: Thực vây, nếu G có khơng q 2 đỉnh bậc lẻ thì số đỉnh bậc lẻ </b>

của nó có thể là 0 hoặc 2. Nếu G khơng có đỉnh bậc lẻ thì theo định lý Euler nó là đồ thị Euler. Giả sử G có 2 đỉnh bậc lẻ là u và v. Gọi H là đồ thị thu được từ G bằng

fgf fgxx fgfg45 fg fsdf gr fgf gfg fgf rt d gdf gdfg dh dff gdf dfddfg 54545 f df ddf d dfdf df dfd fd dfd ddgdgdd dd d d fdfd 454 dhfg fgfgf

<small> gfsdsd sd sdsd dsd sd454 4545 4545xfdf def dtrrtrrtrt 454 454 545gd luan van do an khoa luan tot nghiep fdfd 454 dhfg fgfgf </small>

</div><span class="text_page_counter">Trang 36</span><div class="page_container" data-page="36">

luận văn thạc sĩ

2.3.2 Đồ thị Hamilton

<i>Định nghĩa 2.11: Đường đi qua tất cả các đỉnh của đồ thị mỗi đỉnh đúng một </i>

<i><b>lần được gọi là đường đi Hamilton. Chu trình bắt đầu từ một đỉnh v nào đó qua tất cả các đỉnh còn lại mỗi đỉnh đúng một lần rồi quay trở về v được gọi là chu trình </b></i>

<i><b>Hamilton. Đồ thị G được gọi là Hamilton nếu nó chứa chu trình Hamilton và gọi là </b></i>

<i>đồ thị nửa Hamilton nếu nó có đường đi Hamilton. </i>

Hình 2.17. Đồ thị Hamilton

<b>Trong hình 2.17: G1 là nửa Hamilton còn G2 là Hamilton. </b>

<i><b>Định lý 2.5: (Dirak 1952) Đơn đồ thị vô hướng G với n≥2 đỉnh, mỗi đỉnh có </b></i>

<i>bậc khơng nhỏ hơn n/2 là đồ thị Hamilton. </i>

<b>Chứng minh: Thêm vào đồ thị G k đỉnh mới và nối chúng với tất cả các đỉnh </b>

của G. Giả sử k là số nhỏ nhất cần thêm vào để cho đồ thị thu đƣợc G‟ là đồ thị Hamilton. Ta sẽ chỉ ra rằng k=0.

Thực vậy, giả sử ngƣợc lại là k>0. Ký hiệu v, p, w, …, v. là chu trình Hamilton trong G‟, trong đó v,w là đỉnh của G còn P là một trong số các đỉnh mới.

<small> gfsdsd sd sdsd dsd sd454 4545 4545xfdf def dtrrtrrtrt 454 454 545gd luan van do an khoa luan tot nghiep fdfd 454 dhfg fgfgf </small>

</div><span class="text_page_counter">Trang 37</span><div class="page_container" data-page="37">

luận văn thạc sĩ

Khi đó w khơng kề với v vì nếu ngược lại ta khơng cần sử dụng p và điều đó là mâu thuẫn với giả thiết k nhỏ nhất. Hơn nữa đỉnh (w‟ chẳng hạn) kề với w không thể đi liền sau đỉnh v‟ (kề với v) vì rằng khi đó có thể thay.

<b>v  p  w ….  v’ w‟… v </b>

bởi v  v‟….  w  w‟ … v

Bằng cách đảo ngược đoạn chu trình nằm trong w và v‟. Từ đó suy ra là số đỉnh của đồ thị G‟ không kề với w là không nhỏ hơn số đỉnh kề với v (tức là ít nhất cũng là bằng n/2+k), đồng thời số đỉnh của G‟ kề với w ít ra là phải bằng n/2+k. Do khơng có đỉnh nào của G‟ vừa không kề, lại vừa kề với w, cho nên tổng số đỉnh của đồ thị G‟ (G‟ có n+k đỉnh) khơng ít hơn n+2k. Mâu thuẫn do đó đã chứng minh được định lý.

2.4 Cây và cây bao trùm của đồ thị

Đồ thị vơ hướng liên thơng khơng có chu trình gọi là cây. Khái niệm cây lần đầu tiên được Cayley đưa ra vào 1857, khi ông sử dụng chúng để đếm một dạng cấu trúc phân tử của các hợp chất hóa học trong hóa học hữu cơ. Cây còn được sử dụng rộng rãi trong rất nhiều lĩnh vực khác nhau, đặc biệt trong tin học, cây được sử dụng để xây dựng các thuật toán tổ chức các thư mục, các thuật toán cất giữ, truyền dữ liệu và tìm kiếm.

<i><b>Định nghĩa 2.12: Ta gọi cây là một đồ thị vô hướng liên thơng và khơng có </b></i>

<i>chu trình. Đồ thị vơ hướng gồm k thành phần liên thông mà mỗi thành phần liên </i>

<i><b>thông là một cây được gọi là rừng. </b></i>

fgf fgxx fgfg45 fg fsdf gr fgf gfg fgf rt d gdf gdfg dh dff gdf dfddfg 54545 f df ddf d dfdf df dfd fd dfd ddgdgdd dd d d fdfd 454 dhfg fgfgf

<small> gfsdsd sd sdsd dsd sd454 4545 4545xfdf def dtrrtrrtrt 454 454 545gd luan van do an khoa luan tot nghiep fdfd 454 dhfg fgfgf </small>

</div><span class="text_page_counter">Trang 38</span><div class="page_container" data-page="38">

luận văn thạc sĩ

<i><b>Định lý 2.6: Giả sử G = (V, E) là đồ thì vơ hướng n đỉnh. Khi đó các mệnh đề </b></i>

<i>sau đây là tương đương: </i>

1) T là cây.

2) T khơng chứa chu trình và có n-1 cạnh. 3) T liên thơng và có n-1 cạnh .

4) T liên thơng và mỗi cạnh của nó đều là cầu.

5) Hai đỉnh bất kỳ của T được nối với nhau bởi đúng một đường đi đơn. 6) T không chứa chu trình nhưng hễ cứ thêm vào một cạnh ta thu được

một chu trình.

<b>Chứng minh: ta sẽ chứng minh định lý theo sơ đồ sau: </b>

(1)=>(2)=>(3)=>(4)=>(5)=>(6)=>(1)

<b>(1)=>(2) theo định nghĩa T không chứa chu trình. Ta sẽ chứng minh bằng qui </b>

nạp theo số đỉnh n cho khẳng định: Số cạnh của cây với n đỉnh là n -1. Rõ ràng khẳng định đúng với n = 1. Giả sử n > 1. Trước hết nhận rằng trong mọi cây T có n

</div><span class="text_page_counter">Trang 39</span><div class="page_container" data-page="39">

luận văn thạc sĩ

đỉnh đều tìm được ít nhất một đỉnh là đỉnh treo (tức là đỉnh có bậc là 1). Thực vậy, gọi v<sub>1</sub>,v<sub>2</sub>,…,v<sub>k</sub> là đường đi dài nhất (theo số cạnh) trong T. Khi đó rõ ràng v<sub>1</sub> và v<sub>k</sub> là các đỉnh treo, vì từ v<small>1</small>(v<sub>k</sub>) khơng có cạnh nối với bất cứ đỉnh nào trong số các đỉnh v<sub>2</sub>,v<sub>3</sub>,…,v<sub>k</sub> (do đồ thị không chứa chu trình), cũng như với bất cứ đỉnh nào khác của đồ thị (do đường đi đang xét dài nhất). Loại bỏ v<sub>1</sub> và cạnh (v<sub>1</sub>,v<sub>2</sub>) khỏi T ta thu được cây T<sub>1</sub> với n-1 đỉnh, mà theo giả thiết qui nạp có n-2 cạnh. Vậy cây T có n-2+1=n-1 cạnh.

<b>(2) => (3) ta chứng minh bằng phản chứng. Giả sử T khơng liên thơng. Khi đó </b>

T phân rã thành k ≥ 2 phần liên thông T<small>1</small>,T<sub>2</sub>,…,T<small>k</small>. Do T khơng chứa chu trình nên mỗi T<sub>i</sub> (i=1,2,..,k) cũng khơng chứa chu trình, vì thế mỗi T<sub>i</sub> là cây. Do đó nếu gọi n(T<sub>i</sub>) và e(T<sub>i</sub>) theo thứ tự là số đỉnh và cạnh của T<sub>i</sub>, ta có:

e(T<sub>i</sub>) = n(T<sub>i</sub>)-1, i =1,2,3,…,k suy ra

n-1 = e(T) = e(T<sub>1</sub>) +…+ e(T<sub>k</sub>) = n(T<sub>1</sub>) +…+ n(T<small>k</small>)-k

= n(T) - k < n-1

Mâu thuẫn thu được chứng tỏ là T liên thông.

<b>(3) =>(4) Việc loại bỏ một cạnh bất kỳ khỏi T dẫn đến đồ thị với n đỉnh và n-2 </b>

cạnh rõ ràng là đồ thì khơng liên thông.vậy mọi cãnh trong T đều là cầu.

<b>(4) =>(5) Do T là liên thông nên hai đỉnh bất kỳ của nó được nối với nhau bởi </b>

một đường đi đơn. Nếu có cặp đỉnh nào của T có hai đường đi đơn khác nhau nối chúng, thì từ đó suy ra đồ thị chứa chu trình, và vì thế các cạnh trên chu trình này khơng phải là cầu.

<b>(5) =>(6) T không chứa chu trình, bởi vì thế nếu có chu trình thì hóa ra tìm </b>

được cặp đỉnh của T được nối với nhau bởi hai đường đi đơn. Bây giờ, nếu thêm vào T một cạnh e nối hai đỉnh u và v nào đó của T. Khi đó cạnh này cùng với đường

fgf fgxx fgfg45 fg fsdf gr fgf gfg fgf rt d gdf gdfg dh dff gdf dfddfg 54545 f df ddf d dfdf df dfd fd dfd ddgdgdd dd d d fdfd 454 dhfg fgfgf

<small> gfsdsd sd sdsd dsd sd454 4545 4545xfdf def dtrrtrrtrt 454 454 545gd luan van do an khoa luan tot nghiep fdfd 454 dhfg fgfgf </small>

</div><span class="text_page_counter">Trang 40</span><div class="page_container" data-page="40">

luận văn thạc sĩ

đi đơn nối u và v sẽ tạo thành chu trình trong T. Chu trình thu được này là duy nhất, vì thế thu được nhiều hơn một chu trình thì suy ra trong T trước đó phải có sãn chu trình.

<b>(6) =>(1) Giả sử T khơng liên thơng. Khi đó gồm ít ra là thành phần liên thơng. </b>

Vì vậy, nếu thêm vào T cạnh nối hai đỉnh thuộc hai thành phần liên thông khác nhau ta không thu được thêm một chu trình nào cả. Điều đó mâu thuẫn với giả thiết (6) định lý được chứng minh.

<b>Tóm lại. Chương này đã đề cập tới những khái niệm về đồ thị có liên quan </b>

đến bài tốn cây bao trùm nhỏ nhất được xét ở các chương sau. Cụ thể, đã trình bày và giải thích các khái niệm về đồ thị (vơ hướng, có hướng), đỉnh và cạnh (cung), đường và chu trình trong đồ thị, chu trình Euler, chu trình Hamilton.

<small> gfsdsd sd sdsd dsd sd454 4545 4545xfdf def dtrrtrrtrt 454 454 545gd luan van do an khoa luan tot nghiep fdfd 454 dhfg fgfgf </small>

</div>

×