Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 31 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
31
Dung lượng
102,5 KB
Nội dung
254 ChươngCấutrúcliệukiểuĐồthị ( Graph ) Trong chương nghiên cứu loại cấutrúc phi tuyến Cây trường hợp đặc biệt loại cấutrúcliệu tổng quát ,đó đồ thị( Graph) Trong chương này, nghiên cứu hai loại đồthịđồthị có hướng đồthị vơ hướng 6.1 Đồthị có hướng 6.1.1 Khái niệm Đồthị có hướng ( Directed graph ) gồm tập hợp hữu hạn phần tử gọi nút hay đỉnh, với tập hợp hữu hạn cạnh có hướng nối cặp đỉnh với Chẳng hạn cho đồthị sau đây: 254 255 Đồthị gồm nút đánh số 1,2,3,4,5 cạnh nối nút từ đến 2, đến 4, đến 5, đến 4, đến nó,4 đến 2, đến Cây coi trường hợp đặc biệt đồthị có hướng đặc trưng tính chất nút, nút gốc,khơng có cạnh hướng đến nó, tất nút lại đạt đến từ nút gốc đường 255 256 Nghĩa ,chỉ theo dãy cạnh liên tiếp Đồthị có nút "gần giống nút gốc" ( Khơng có cạnh hướng đến nó) nút 1, có nhiều đường khác từ nút đến nút Ví dụ: 1→ →3 1→ →3 1→ →2 →3 Sau ví dụ khác đồ thị: 256 257 Trong trường hợp ta có đường sau: 1→ → → 1→ → 1→ → → Đồthị có nhiều ứng dụng thực tiễn Đồthị có hướng dùng để thiết kế,phân tích sơ đồ mạng điện, biểu diễn đường găng trình tự thực hạng mục cơng trình xây dựng Ví dụ : Đồthị có hướng biểu diễn q trình lập kế hoạch sản xuất doanh nghiệp 257 258 3.1 3.2 3.3 Đặ t mục tiêu kếhoạch Nghiên cứu thịtr ờng Đ ánh giá tiềmnăng danh nghiệp 3.1 Lao đ ộng 3.2 Khả tài 3.3 Năng lực sản xuất Xâ y dựng chỉtiêu kÕho¹ch Thùc hiƯn kÕho¹ch Trong sơ đồ hình chữ nhật biểu diễn cơng đoạn qui trình lập kế hoạch ,bắt đầu từ cơng đoạn tiền kế hoạch nghiên cứu thị trường đến công đoạn cuối thực kế hoạch 6.1.2 Phương pháp cài đặt đồthị có hướng Một phương pháp thông dụng để cài đặt đồthị sử dụng ma trận kề ( Adjacency 258 259 matrix) Để xây dựng ma trận kề ,trước hết đánh số nút đồthị có hướng 1,2,2 n Ma trận kề ma trận Adj bậc n x n thành phần hàng i, cột j có giá trị có cạnh từ i đến j ,và có giá trị o khác Ví dụ : Cho đồthị có hướng sau đây: B A E C D Ta có ma trận kề : 259 260 Adj = 1 0 0 0 0 0 Để xác định giá trị A,B,C nút sử dụng thêm ma trận Data gồm cột chứa giá trị , liệu nút thứ i lưu trữ Data[i] Như có hai mảng : Adj = 1 0 0 0 0 0 260 261 Data = A B C D E Thơng thưòng ma trận kề có chứa nhiều phần tử khơng, tốn nhiều không gian nhớ để lưu trữ phần tử Chúng ta sử dụng phương pháp lưu trữ ma trận kề danh sách liên kết theo hàng( Linked Row List) có cách biểu diễn danh sách kề cho đồthị có hướng Cho đồthị có hướng sau đây: 261 262 B A E C D Danh sách kề đồthị sau: V[1] V[2] Nút đ ầu A B V[3] C V[4] D V[5] Nót dØ nh E 262 263 Một đồthị có hướng biểu diễn mảng trỏ V[1],V[2], V[n] ,mỗi trỏ cho nút đồthị có hướng Mỗi phần tử mảng V[i] đến nút đầu lưu trữ liệu cho nút chứa trỏ đến danh sách liên kết nút kề ( Nút nối với i theo hướng từ i ra) Mỗi nút kề có hai trường : trường số nguyên ,lưu trữ liệu nút trường liên kết đến nút tiếp thẻo danh sách kề Cách biểu diễn đồthị có hướng danh sách kề cài đặt với khai báo sau: Const MaxVertices= ( Số nút đồthị có hướng) Type DataType= .( Kiểuliệu nút) VertexNumber= MaxVertices; AdjPointer =^ VertexNode; VertexNode= Record Vertex: VertexNumber; 263 270 Bước Thăm nút xuất phát Bước Khởi động Queue chứa nút xuất phát Bước While( Queue không rỗng) thực bước sau đây: * Lấy nút V từ hàng đợi * Với tất nút W kề với V thực bước sau đây: if ( W chưa thăm) then a Thăm W b Thêm W vào hàng đợi Giải thuật quét đồthị có hướng Giải thuật sau thực việc quét đồthị có hướng ,thăm mõi nút lần dựa sở tìm kiếm theo chiều sâu: Khởi động tập hợp Unvisited chứa số nút đồthị While ( Unvisited khác rỗng) làm bước sau đây: a Chọn nút xuất phát từ tập Unvisited 270 271 b Dùng giải thuật tìm theo chiều sâu để thăm tất nút đạt từ nút xuất phát 6.2 Đồthị vô hướng 6.2.1 Khái niệm Đồthị vô hướng gồm tập hợp hữu hạn phần tử gọi nút hay đỉnh với tập hợp hữu hạn cạnh nối cặp đỉnh với Như , đồthị vơ hướng khác với đồthị có hướng chỗ cạnh khơng định hướng khơng có nút nối với 271 272 E A B D C Đồthị bao gồm nút A,B,C,D,E cạnh nối nút với với với với 4 với 6.2.2 Phương pháp cài đặt đồthị vô hướng Có phương pháp cài đặt đồthị vơ hướng: - Dùng ma trận kề - Dùng danh sách kề - Dùng danh sách cạnh 272 273 Dùng ma trận kề Cũng đồthị có hướng , biểu diễn đồthị vơ hướng ma trận kề Chẳng hạn , ma trận kề đồthị biểu diễn sau: Adj = 1 1 0 0 0 1 1 1 0 số hàng i cột J tồn cạnh nối nút i J Vì cạnh khơng có hướng ,số có mặt hàng J cột i Như , ma trận kề đồthị vô hướng ma trận đối xứng Dùng danh sách kề 273 274 Bây dùng danh sách kề để biểu diễn đồthị vô hướng đây: V[1] V[2] Nút đ ầu A Các nút kề B V[3] C V[4] D E V[5] Cách biểu diễn danh sách kề dồthị vô hướng khong hiệu cho phải lưu trữ thông tin thừa Nếu cạnh nối nút i J nút chứa i xuất danh sách kề nút i nút chứa J xuấ danh sách kề nút I 274 275 Dùng danh sách cạnh Một cách cài đặt hiệu đồthị vô hướng dúng danh sách cạnh Mỗi nút cạnh( Edge node) danh sách biểu diễn cạnh đồthị có dạng sau đây: V ertex[1] Link[1] Vertex[2] L ink[2] Vertex[1], Vertex[2] nút nối cạnh , Link[1] đến cạnh khác có Vertex[1] điểm cuối , Link[2] đến cạnh khác có Vertex[2] điểm cuối Người ta dùng mảng V chứa trỏ đến nút đầu lưu trữ mục liệu nút, nút đầu V[i] chứa trường liên 275 276 kết đến nút cạnh có nút thứ i điểm cuối Biểu diễn danh sách cạnh đồthị sau: e3 E e2 A B e2 e4 e6 D e5 C đánh dấu cạnh hình vẽ biểu diễn hình vẽ sau Các giải thuật tìm theo chiều sâu, chiều rộng, giải thuật quét đồ thị, giải thuật tìm đường ngắn đồthị tương tự đồthị có hướng xét mục trước Đồthị vơ hướng có nhiều ứng dụng việc mô sơ đồ mạng điện , hệ thống giao thông liên lạc vv 276 277 Các nút đ ầu V[1] V[2] A C V[4] D e1 e3 e4 B V[3] V[5] Các nút cạnh e2 E e5 e6 4 277 278 Câu hỏi tập chương Bài Tìm đồthị có hướng biểu diễn ma trận kề Adj ma trận liệu Data cho đây: Adj = 1 0 0 1 0 1 0 0 278 279 A B C D E Data = Bài Tìm đồthị có hướng cho ma trận kề sau đây: Adj = 1 0 1 0 0 0 279 280 Data = A B C D Bài Cho danh sách kề ,hãy vẽ đồthị có hướng tương ứng: v[1] v[2] v[3] v[4] A B C D 280 281 v[1] v[2] v[3] v[4] A B 3 C 4 D Bài Với đồthị sau đây,hãy ra: - Biểu diễn ma trận kề - Biểu diễn danh sách kề - Biểu diễn danh sách cạnh a/ C B A E D 281 282 4 3 Bài Cho ma trận kề sau Hãy vẽ đồthị tương ứng: Adj = 1 1 0 0 1 0 0 1 282 283 Adj = 1 1 1 1 1 1 Bài Với danh sách kề sau ,hãy vẽ đồthị tương ứng: v[1] v[2] v[4] v[3] A B C D 3 283 284 v[1] v[2] v[3] A B C 284 ... danh sách kề cho đồ thị có hướng Cho đồ thị có hướng sau đây: 261 262 B A E C D Danh sách kề đồ thị sau: V[1] V[2] Nút đ ầu A B V[3] C V[4] D V[5] Nót dØ nh E 262 263 Một đồ thị có hướng biểu... xuất phát 6. 2 Đồ thị vô hướng 6. 2.1 Khái niệm Đồ thị vô hướng gồm tập hợp hữu hạn phần tử gọi nút hay đỉnh với tập hợp hữu hạn cạnh nối cặp đỉnh với Như , đồ thị vô hướng khác với đồ thị có hướng... thuật quét đồ thị, giải thuật tìm đường ngắn đồ thị tương tự đồ thị có hướng xét mục trước Đồ thị vơ hướng có nhiều ứng dụng việc mô sơ đồ mạng điện , hệ thống giao thông liên lạc vv 2 76 277 Các