1. Trang chủ
  2. » Giáo án - Bài giảng

SLIDE TOÁN RỜI RẠC Chương 3 2 BIỂU DIỄN ĐỒ THỊ TRÊN MÁY TÍNH TRƯỜNG ĐẠI HỌC MỎ ĐỊA CHẤT

34 36 0

Đ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

Tiêu đề Biểu Diễn Đồ Thị Trên Máy Tính
Người hướng dẫn GV: Đặng Hữu Nghị
Trường học Trường Đại Học Mỏ Địa Chất
Định dạng
Số trang 34
Dung lượng 0,94 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

IẾP TỤC CHƯƠNG 2 CỦA MÔN TOÁN RỜI RẠC MÌNH SẼ GỬI DẾN D CÁC BẠN SLIDE BÀI GIẢNG CHƯƠNG 3.2 MÔN TOÁN RỜI RẠC CỦA TRƯỜNG ĐẠI HỌC MỎ ĐỊA CHẤT MONG RẰNG VỚI CÁC SLIDE NÀY SẼ GIÚP CÁC BẠN DỄ DÀNG CHINH PHỤC ĐƯỢC MÔN TOÁN RỜI RẠC NÀY

Trang 1

CHƯƠNG 3: LÝ THUYẾT ĐỒ THỊ

Trang 2

NỘI DUNG

3.1 •Các khái niệm cơ bản của lý thuyết đồ thị

3.2 •Biểu diễn đồ thị trên máy tính

3.3 •Các thuật toán tìm kiếm trên đồ thị

3.4 •Đồ thị Euler và đồ thị Hamilton

3.5 •Cây và cây khung của đồ thị

3.6 •Bài toán đường đi ngắn nhất

3.7 •Bài toán luồng cực đại trong mạng 2

Trang 3

BIỂU DIỄN ĐỒ THỊ TRÊN MÁY TÍNH

3.2.1 Ma trận kề Ma trận trọng số

3.2.2 Ma trận liên thuộc đỉnh - cạnh

3.2.3 Danh sách cạnh (cung)

3.2.4 Danh sách kề

Trang 5

3.2.1 MA TRẬN KỀ MA TRẬN TRỌNG SỐ

 Ví dụ:

Trang 6

• Tổng các số trên hàng i = Bán bậc ra của đỉnh i = deg+(i)

• Tổng các số trên cột i = Bán bậc vào của đỉnh i = deg-(i) 6

Trang 7

3.2.1 MA TRẬN KỀ MA TRẬN TRỌNG SỐ

 Ma trận kề của đồ thị có hướng được định nghĩa một cách hoàn toàn

tương tự

Trang 8

3.2.1 MA TRẬN KỀ MA TRẬN TRỌNG SỐ

Chú ý: Trên đây chúng ta chỉ xét đơn đồ thị Ma trận kề

của đa đồ thị có thể xây dựng hoàn toàn tương tự, chỉ

khác là thay vì ghi 1 vào vị trí a[i, j] nếu (i, j) là cạnh

của đồ thị, chúng ta sẽ ghi k là số cạnh nối hai đỉnh i và j.

8

Trang 9

3.2.1 MA TRẬN KỀ MA TRẬN TRỌNG SỐ

 Ví dụ 1:

Trang 10

3.2.1 MA TRẬN KỀ MA TRẬN TRỌNG SỐ

 Ví dụ 2:

10

Trang 11

3.2.1 MA TRẬN KỀ MA TRẬN TRỌNG SỐ

Ma trận trọng số:

 Đồ thị có trọng số là đồ thị mà mỗi cạnh (i, j) có một giá

trị c(i, j) gọi là trọng số của cạnh

 Để biểu diễn đồ thị ta sử dụng ma trận trọng số

C = {c[i, j], i, j=1 , 2, , n}

 với c[i, j]= c(i, j) nếu (i, j) Є E

 và c[i,j]=  nếu (i,j)  E trong đó số  có thể được đặt bằng

một trong các giá trị sau: 0, +, -

Trang 12

3.2.1 MA TRẬN KỀ MA TRẬN TRỌNG SỐ

 Ví dụ:

12

Trang 13

3.2.1 MA TRẬN KỀ MA TRẬN TRỌNG SỐ

 Ưu điểm lớn nhất của phương pháp biểu diễn đồ thị bằng

ma trận kề (hoặc ma trận trọng số) là để trả lời câu hỏi:

 Hai đỉnh u, v có kề nhau trên đồ thị hay không, chúng ta chỉ

phải thực hiện một phép so sánh.

 Nhược điểm lớn nhất của phương pháp này là: không

phụ thuộc vào số cạnh của đồ thị, ta luôn phải sử dụng n2

đơn vị bộ nhớ để lưu trữ ma trận kề của nó

Trang 14

3.2.1 MA TRẬN KỀ MA TRẬN TRỌNG SỐ

Qui ước khuôn dạng lưu trữ ma trận kề

 Dòng đầu tiên ghi lại số đỉnh của đồ thị

 N dòng kế tiếp ghi lại ma trận kề của đồ thị

 Hai phần tử khác nhau của ma trận kề được viết cách

nhau một vài khoảng trống

14

Trang 15

BÀI TẬP

 Hãy biểu diễn các đồ thị sau đây bằng ma trận kề

Trang 16

BÀI TẬP

 Hãy vẽ đồ thị của ma trận liền kề sau

16

Trang 17

1, nếu đỉnh i là đỉnh đầu của cung 𝑒𝑗

−1, nếu đỉnh 𝑖 là đính cuối của cung 𝑒𝑗

0, nếu đỉnh 𝑖 không là đầu mút của cung 𝑒𝑗

Trang 18

18

Trang 19

BÀI TẬP

Hãy biểu diễn đồ thị sau bằng ma trận liên thuộc

Trang 20

20

Hãy vẽ đồ thị của ma trận liên

thuộc sau

Trang 21

3.2.3 DANH SÁCH CẠNH (CUNG)

 Trong trường hợp đồ thị thưa (đồ thị có số cạnh m thoả mãn

bất đẳng thức: m < 6n) người ta thường dùng cách

biểu diễn đồ thị dưới dạng danh sách cạnh.

 Trong cách biểu diễn đồ thị bởi danh sách cạnh (cung) chúng

ta sẽ lưu trữ danh sách tất cả các cạnh (cung) của đồ thị.

 Một cạnh (cung) e=(x,y) của đồ thị tương ứng với hai biến

Dau[e], Cuoi[e].

 Để lưu trữ đồ thị ta cần sử dụng 2m đơn vị bộ nhớ.

 Nhược điểm:

Trang 22

3.2.3 DANH SÁCH CẠNH (CUNG)

22

Trang 23

3.2.3 DANH SÁCH CẠNH (CUNG)

 Biểu diễn đồ thị trọng số bằng danh sách cạnh: Bổ sung

thêm một cột là trọng số của mỗi cạnh

Trang 24

3.2.3 DANH SÁCH CẠNH (CUNG)

 Khuôn dạng lưu trữ danh sách cạnh

 Dòng đầu tiên ghi lại số N, M tương ứng với số đỉnh và

số cạnh của đồ thị Hai số được viết cánh nhau một vài

khoảng trống

 M dòng kế tiếp, mỗi dòng ghi lại một cạnh của đồ thị Đỉnh

đầu và đỉnh cuối mỗi cạnh được viết cách nhau một vài

khoảng trống.

24

Trang 25

3.2.4 DANH SÁCH KỀ

Trong cách biểu diễn dưới dạng danh sách kề, với mỗi

đỉnh v của đồ thị chúng ta lưu trữ danh sách các đinh kề

với nó, mà ta sẽ ký hiệu là Ke(v), tức là:

Ke(v) = { u ϵ V : ( v , u ) ϵ E }

 Khi đó vòng lặp thực hiện với mỗi một phần tử trong

danh sách này theo thứ tự các phần tử được xắp xếp

trong nó sẽ được viết như sau:

For u ϵ Ke(v) do

Trang 26

3.2.4 DANH SÁCH KỀ

Biểu diễn danh sách kề dựa vào mảng

 Mảng được chia thành n đoạn

 Đoạn thứ i trong mảng lưu trữ danh sách kề của đỉnh thứ i ϵV.

 Để biết một đoạn thuộc mảng bắt đầu từ phần tử nào đến

phần tử nào ta sử dụng một mảng khác dùng để lưu trữ vị trí

các phần tử bắt đầu và kết thúc của đoạn.

26

Trang 27

3.2.4 DANH SÁCH KỀ

 Trong rất nhiều thuật toán làm việc với đồ thị chúng ta

thường xuyên phải thực hiện các thao tác: Thêm hoặc

bớt một số cạnh

 Trong trường hợp này cấu trúc dũ liệu dùng ở trên là không

thuận tiện Khi đó nên chuyển sang sử dụng danh sách kề liên

kết (Linked Adjancency List)

Trang 28

3.2.4 DANH SÁCH KỀ

Biểu diễn danh sách kề bằng danh sách liên kết.

 Danh sách kề của đồ thị trong hình được mô tả như sau:

28

Trang 29

3.2.4 DANH SÁCH KỀ

Trang 33

3.2.4 DANH SÁCH KỀ

printf("\nDanh sach ke cua cac dinh cua do thi: ");

for(j=1; j<=n; j++) {

printf("\nDanh sach cac dinh ke cua dinh %d: ",j);

t = Ke[j];

while(t->next != NULL) {

printf("%6d",t->v);

t=t->next;

Trang 34

➢ m*n Đơn vị bộ nhớ

➢ Dễ dàng việc thêm bớt các cạnh, đỉnh

Ngày đăng: 17/01/2022, 08:23

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w