Chương 6 cấu trúc dữ liệu kiểu đồ thị

31 239 1
Chương 6   cấu trúc dữ liệu kiểu đồ 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

254 Chương Cấu trúc liệu kiểu Đồ thị ( Graph ) Trong chương nghiên cứu loại cấu trúc phi tuyến Cây trường hợp đặc biệt loại cấu trúc liệ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ểu liệ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

Ngày đăng: 28/06/2018, 20:38

Từ khóa liên quan

Mục lục

  • Giải thuật tìm theo chiều sâu

    • Dùng ma trận kề

    • Dùng danh sách kề

    • Dùng danh sách các cạnh

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

Tài liệu liên quan