Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 94 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
94
Dung lượng
1,01 MB
Nội dung
Chun đề CÁC THUẬT TỐN TRÊN ðỒ THỊ Trên thực tế có nhiều tốn liên quan tới tập ñối tượng mối liên hệ chúng, địi hỏi tốn học phải đặt mơ hình biểu diễn cách chặt chẽ tổng quát ngơn ngữ kí hiệu, đồ thị: mơ hình tốn học gồm đỉnh biểu diễn ñối tượng cạnh biểu diễn mối quan hệ ñối tượng Leonhard Euler Những ý tưởng ñồ thị ñược ñưa từ kỉ 1707-1783 thứ XVIII nhà toán học Thuỵ Sĩ Leonhard Euler, năm 1736, ơng dùng mơ hình đồ thị để giải tốn bảy cầu Kưnigsberg (Seven Bridges of Kưnigsberg) Bài tốn với tốn mã ñi tuần (Knight Tour) ñược coi tốn lí thuyết đồ thị Rất nhiều tốn lí thuyết đồ thị trở thành tiếng thu hút ñược quan tâm lớn cộng đồng nghiên cứu Ví dụ tốn bốn màu, tốn đẳng cấu đồ thị, tốn người du lịch, tốn người đưa thư Trung Hoa, tốn đường ngắn nhất, luồng cực đại mạng v.v… Trong phạm vi chun đề, khơng thể trình bày tất phát triển suốt gần 300 năm, xem xét lí thuyết đồ thị góc độ người lập trình, tức khảo sát thuật tốn dễ dàng cài đặt máy tính số ứng dụng Cơng việc người lập trình ñọc hiểu ñược ý tưởng thuật toán cài đặt chương trình tốn tổng quát trường hợp cụ thể 126 Các khái niệm 1.1 ðồ thị ðồ thị mơ hình biểu diễn tập đối tượng mối quan hệ hai ngơi đối tượng: , Có thể định nghĩa đồ thị G cặp , : , Trong tập ñỉnh (vertices) biểu diễn ñối tượng gọi tập cạnh (edges) biểu diễn mối quan hệ ñối tượng Chúng ta quan tâm tới mối quan hệ hai (pairwise relations) đối tượng nên coi tập cặp , với hai ñỉnh biểu diễn hai ñối tượng có quan hệ với Một số hình ảnh đồ thị: Có thể phân loại đồ thị , theo đặc tính số lượng tập cạnh : Hình 5-1 Ví dụ mơ hình đồ thị • • • • ñược gọi ñơn ñồ thị (hay gọi tắt ñồ thị) hai ñỉnh , có nhiều cạnh nối từ tới ñược gọi ña ñồ thị (multigraph) hai ñỉnh , có nhiều cạnh nối (Hiển nhiên ñơn ñồ thị ña ñồ thị) Nếu có nhiều cạnh nối hai đỉnh , cạnh gọi cạnh song song (parallel edges) gọi đồ thị vơ hướng (undirected graph) cạnh khơng định hướng, tức cạnh nối hai ñỉnh , cạnh nối hai đỉnh , Hay nói cách khác, tập gồm cặp , khơng tính thứ tự: , , gọi đồ thị có hướng (directed graph) cạnh có định hướng, tức có cạnh nối từ đỉnh tới ñỉnh chưa ñã có cạnh nối từ ñỉnh tới ñỉnh Hay nói cách khác, tập gồm cặp , 127 có tính thứ tự: , , Trong đồ thị có hướng, cạnh cịn gọi cung (arcs) ðồ thị vơ hướng coi đồ thị có hướng ta coi cạnh nối hai ñỉnh , tương ñương với hai cung , , Hình 5-2 ví dụ đơn đồ thị/đa đồ thị có hướng/vơ hướng Có hướng Vơ hướng Có hướng Vơ hướng ða đồ thị ðơn đồ thị Hình 5-2 Phân loại đồ thị Như ñịnh nghĩa ñồ thị , cấu trúc rời rạc, tức tập tập khơng q đếm được, ta đánh số thứ tự 1, 2, 3… cho phần tử tập V ñồng phần tử tập với số thứ tự chúng Hơn nữa, ñứng phương diện người lập trình cho máy tính ta quan tâm ñến ñồ thị hữu hạn ( tập hữu hạn) mà thơi, từ sau, khơng thích thêm nói tới đồ thị, ta hiểu ñó ñồ thị hữu hạn 1.2 Các khái niệm a) Cạnh liên thuộc, ñỉnh kề, bậc ðối với ñồ thị vô hướng , Xét cạnh , , ta nói hai ñỉnh kề (adjacent) cạnh liên thuộc (incident) với ñỉnh ñỉnh Với đỉnh đồ thị vơ hướng, ta ñịnh nghĩa bậc (degree) , kí hiệu deg số cạnh liên thuộc với Trên ñơn ñồ thị số cạnh liên thuộc với số ñỉnh kề với 128 Giả sử , đồ thị vơ hướng, tổng tất bậc ñỉnh hai lần số cạnh: ðịnh lí 5-1 ! deg 2|| "# (1) Khi lấy tổng tất bậc ñỉnh tức cạnh , tính lần deg lần deg Từ suy kết Chứng minh Hệ Trong ñồ thị vơ hướng, số đỉnh bậc lẻ số chẵn ðối với đồ thị có hướng , Xét cung , , ta nói nối tới nối từ , cung ñi khỏi ñỉnh ñi vào đỉnh ðỉnh gọi ñỉnh ñầu, ñỉnh ñược gọi ñỉnh cuối cung Với đỉnh đồ thị có hướng, ta ñịnh nghĩa: Bán bậc (out-degree) kí hiệu deg & số cung khỏi nó; bán bậc vào (in-degree) kí hiệu deg ' số cung vào đỉnh Giả sử , đồ thị có hướng, ñó tổng tất bán bậc ñỉnh tổng tất bán bậc vào số cung đồ thị ðịnh lí 5-2 ! deg & ! deg ' || "# "# (2) Khi lấy tổng tất bán bậc hay bán bậc vào, cung , tính lần deg & tính lần deg ' Từ suy kết Chứng minh b) ðường chu trình Một dãy đỉnh: ( )* , + , … , - cho /'+ , / , 0: ñược gọi ñường ñi (path), ñường ñi gồm ñỉnh * , + , … , - cạnh * , + , + , 5 , … , -'+ , - Nếu có đường ta nói - đến (reachable) từ * hay * ñến ñược - , kí hiệu * - ðỉnh * ñược gọi ñỉnh ñầu ñỉnh - gọi ñỉnh cuối ñường ñi ( Các ñỉnh + , 5 , … , -'+ ñược gọi ñỉnh ñường ñi ( 129 Một ñường ñi gọi ñơn giản (simple) hay ñường ñi ñơn tất đỉnh đường hồn tồn phân biệt (dĩ nhiên cạnh đường ñi hoàn toàn phân biệt) ðường ñi ( )* , + , … , - trở thành chu trình (circuit) * - Trên đồ thị có hướng, chu trình ( gọi chu trình đơn có cung đỉnh + , 5 , … , - hồn tồn phân biệt Trên đồ thị vơ hướng, chu trình ( gọi chu trình đơn ñỉnh + , 5 , … , hoàn toàn phân biệt c) Một số khái niệm khác ðẳng cấu Hai ñồ thị , , ñược gọi ñẳng cấu (isomorphic) tồn song ánh :: ; < cho số cung nối với số cung nối : với : ðồ thị , ñồ thị (subgraph) ñồ thị , < = < = ðồ thị ðồ thị > ?, > ñược gọi ñồ thị cảm ứng (induced graph) từ ñồ thị tập ? = > @, : , ?A trường hợp cịn nói > đồ thị hạn chế ? Với đồ thị vơ hướng , , ta gọi phiên có hướng (directed version) đồ thị có hướng ,