1. Trang chủ
  2. » Công Nghệ Thông Tin

SLIDE GIỚI THIỆU THUẬT TOÁN THAM LAM

12 949 2

Đ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

Định dạng
Số trang 12
Dung lượng 1,12 MB

Nội dung

Giới thiệu Trong khoa học máy tính, thuật toán Prim là một thuật toán tham lam để tìm cây bao trùm nhỏ nhất của một đồ thị vô hướng có trọng số liên thông.. Nghĩa là nó tìm một tập hợp

Trang 1

Nhóm: 1

GVHD: Nguyễn Thanh Cẩm

SVTH: Trịnh Lâm Vũ

Trang 2

Giới thiệu

Trong khoa học máy tính, thuật toán Prim là một thuật toán tham lam để tìm cây bao trùm nhỏ nhất của một đồ thị vô hướng có trọng số liên thông Nghĩa là nó tìm một tập hợp các cạnh của đồ thị tạo thành một cây chứa tất cả các đỉnh, sao cho tổng trọng số các cạnh của cây là nhỏ nhất.

Trang 3

Mô tả

Mô tả: Thuật toán xuất phát từ một cây chỉ chứa đúng một đỉnh và mở rộng từng bước một, mỗi bước thêm một cạnh mới vào cây, cho tới khi bao trùm được tất cả các đỉnh của

đồ thị Còn được gọi là thuật toán lân cận gần nhất Thuật toán đúng chỉ dừng lại khi n đỉnh thu được bằng n đỉnh

nhập vào và n-1 cạnh

Trang 4

Chi tiết thuật toán

Các bước:

- Đầu vào: Một đồ thị có tập hợp đỉnh V và cạnh E

- Khởi tạo: V (mới) = x, x là một cạnh bất kỳ, E (mới) = {}

- Lặp lại cho tới khi V(mới) = V

+ Chọn cạnh (u,v) có độ dài nhỏ nhất thỏa mãn u thuộc V (mới) và v không thuộc V (mới)

+ Thêm v vào V (mới) và thêm cạnh (u,v) vào E (mới).

- Xuất ra V (mới) và E (mới)

Trang 5

Ví dụ minh họa

Bước 1: Nhập vào đồ thị gồm V và E

- Tập hợp đỉnh V = {A,B,C,D,E,F} – 6 Đỉnh

- Tập hợp cạnh E = {(A,B:5)(B,C:8)(C,D:15)(D,E:10)(E,A:9) (A,F:4)(B,F:7)(C,F:12)(D.F:7)(E,F:3)} – 10 Cạnh

* Chú thích

O : Cạnh đang đượct xét

O : Cạnh và đỉnh đã được chọn

Trang 6

Ví dụ minh họa

Bước 2: Khởi tạo V(mới) chứa {B} và E(mới) { }

(Lựa chọn đỉnh B là đỉnh ngẫu nhiên trong đồ thị đưa vào V(mới))

Bước 3: Lựa chọn cạnh (u,v) nhỏ nhất

Có các cạnh (B,A), (B,C) và (B,F)

Chọn cạnh (B,A) vì có độ dài nhỏ nhất

Thêm A vào V(mới) và (B,A) vào E(mới)

Tiếp tục xét các cạnh (u,v) mới

Với điều kiện u thuộc V(mới) và v k thuộc

V(mới)

Lúc này V(mới) = {B,A} , E(mới) = {(B,A:5)}

Trang 7

Ví dụ minh họa

Bước 3: Tiếp tục xét ta có:

(B,C),(A,F),(A,E),(B,F) trong đó (A,F) là cạnh có độ dài ngắn nhất Thêm F vào V(mới) và (A,F) vào E(mới)

Lúc này V(mới) = {B,A,F}, E(mới) = {(B,A:5)(A,F:4)}

Trang 8

Ví dụ minh họa

Bước 3: Tiếp tục xét ta có:

(B,C),(F,C),(F,D),(F,E),(A,E) trong đó ta thấy cạnh (F,E) có độ dài ngắn nhất, lựa chọn F,E

Thêm E vào V(mới) và (F,E) vào E(mới)

Lúc này V (mới) = {B,A,F,E}

E (mới) = {(B,A:5)(A,F:4)(F,E:3)}

Trang 9

Ví dụ minh họa

Bước 3: Tiếp tục xét ta có:

(B,C),(F,C),(F,D),(E,D) trong đó ta thấy cạnh (F,D) có độ dài ngắn nhất, lựa chọn F,D

Thêm D vào V(mới) và (F,D) vào E(mới)

Lúc này V (mới) = {B,A,F,E,D}

E (mới) = {(B,A:5)(A,F:4)(F,E:3)(F,D:7)

}

Trang 10

Ví dụ minh họa

Bước 3: Tiếp tục xét ta có:

(B,C),(F,C),(D,C) trong đó ta thấy cạnh (B,C) có độ dài ngắn nhất, lựa chọn B,C

Thêm C vào V(mới) và (B,C) vào E(mới)

Lúc này V (mới) = {B,A,F,E,D,C}

E(mới) = {(B,A:5)(A,F:4)(F,E:3)(F,D:7)

(B,C:8)}

V (mới) = V (ban đầu) : 6 đỉnh

Ngừng lặp thuật toán

Trang 11

Ví dụ minh họa

Bước 4: Xuất kết quả

V(mới) = {B,A,F,E,D,C} – 6 đỉnh

E(mới) = {(B,A:5)(A,F:4)(F,E:3)(F,D:7)(B,C:8)} – 5 cạnh

Độ dài của cây khung nhỏ nhất: 5+4+3+7+8 = 27

Ngày đăng: 23/06/2017, 18:28

TỪ KHÓA LIÊN QUAN

w