HC VIN NG N HNG KHOA H THNG

  • Slides: 38
Download presentation
HỌC VIỆN NG N HÀNG KHOA HỆ THỐNG THÔNG TIN QUẢN LÝ CHƯƠNG 2

HỌC VIỆN NG N HÀNG KHOA HỆ THỐNG THÔNG TIN QUẢN LÝ CHƯƠNG 2 CÁC THUẬT TOÁN CƠ SỞ

HỌC VIỆN NG N HÀNG KHOA HỆ THỐNG THÔNG TIN QUẢN LÝ 2. 6.

HỌC VIỆN NG N HÀNG KHOA HỆ THỐNG THÔNG TIN QUẢN LÝ 2. 6. Thuật toán tô màu

2. 6. 1. Một số khái niệm v Lân cận 4 § Hai điểm

2. 6. 1. Một số khái niệm v Lân cận 4 § Hai điểm ảnh được gọi là lân cận 4 nếu chúng kề nhau theo đường thẳng đứng hoặc nằm ngang v Lân cận 8 § Hai điểm ảnh được gọi là lân cận 8 nếu chúng kề nhau theo đường thẳng đứng, ngang và đường chéo. 12/5/2020 Chương 2: Các thuật toán cơ bản 3

2. 6. 2. Thuật toán tô màu loang v Cho miền kín V có

2. 6. 2. Thuật toán tô màu loang v Cho miền kín V có mầu biên Cb. Tô kín V bằng mầu tô Ct v Cho điểm P(x, y) Є V v Tư tưởng § Tô điểm P(x, y) với màu Ct § Tô lân cận 4 hoặc lân cận 8 của P nếu không phải là biên và chưa được tô § Lặp lại quá trình trên đến khi tô hết V 12/5/2020 Chương 2: Các thuật toán cơ bản 4

2. 6. 2. Thuật toán tô màu loang v Thủ tục 12/5/2020 Chương 2:

2. 6. 2. Thuật toán tô màu loang v Thủ tục 12/5/2020 Chương 2: Các thuật toán cơ bản 5

2. 6. 2. Thuật toán tô màu loang v Nhận xét § Đơn giản

2. 6. 2. Thuật toán tô màu loang v Nhận xét § Đơn giản § Tô được miền có hình dạng bất kỳ § Sử dụng đệ quy tràn stack không tô được vùng lớn 12/5/2020 Chương 2: Các thuật toán cơ bản 6

2. 6. 2. Thuật toán tô màu loang v Cải tiến § Dựa vào

2. 6. 2. Thuật toán tô màu loang v Cải tiến § Dựa vào điểm khởi tạo trong V để quyết định số lần gọi đệ quy 12/5/2020 Chương 2: Các thuật toán cơ bản 7

2. 6. 3. Thuật toán tô màu biên v Cho miền kín V có

2. 6. 3. Thuật toán tô màu biên v Cho miền kín V có mầu biên Cb. Tô kín V bằng mầu tô Ct v Cho điểm P(x, y) Є V 12/5/2020 Chương 2: Các thuật toán cơ bản 8

2. 6. 3. Thuật toán tô màu biên v Tư tưởng § Từ điểm

2. 6. 3. Thuật toán tô màu biên v Tư tưởng § Từ điểm xuất phát P(x, y) • Tăng x để xác định xmax • Giảm x để xác định xmin § Vẽ đường nối (xmin, y, xmax, y), chia V thành hai phần § Tăng y xác định xmin, xmax mới và lặp lại quá trình trên cho nửa thứ nhất § Giảm y, xác định xmin, xmax mới và lặp lại quá trình trên cho nửa thứ hai 12/5/2020 Chương 2: Các thuật toán cơ bản 9

2. 6. 3. Thuật toán tô màu biên v Thủ tục § Sinh viên

2. 6. 3. Thuật toán tô màu biên v Thủ tục § Sinh viên tự viết 12/5/2020 Chương 2: Các thuật toán cơ bản 10

2. 6. 3. Thuật toán tô màu biên v Nhận xét § Không sử

2. 6. 3. Thuật toán tô màu biên v Nhận xét § Không sử dụng đệ quy tránh tràn stack § Tô màu nhanh hơn § Khó khăn khi tô vùng phức tạp 12/5/2020 Chương 2: Các thuật toán cơ bản 11

2. 6. 4. Tô màu đường tròn v Tư tưởng § Tìm hình vuông

2. 6. 4. Tô màu đường tròn v Tư tưởng § Tìm hình vuông nhỏ nhất ngoại tiếp đường tròn • Xác định điểm trên bên trái (xc-r, yc-r) • Xác định điểm dưới bên phải (xc+r, yc+r) 12/5/2020 Chương 2: Các thuật toán cơ bản 12

2. 6. 4. Tô màu đường tròn v Tư tưởng § Cho i đi

2. 6. 4. Tô màu đường tròn v Tư tưởng § Cho i đi từ xc-r đến xc+r • Cho j đi từ yc-r đến yc+r – Tính khoảng cách d giữa hai điểm (i, j) và tâm (xc, yc) – Nếu d<r thì tô điểm (i, j) với màu muốn tô 12/5/2020 Chương 2: Các thuật toán cơ bản 13

2. 6. 4. Tô màu đường tròn v Thủ tục 12/5/2020 Chương 2: Các

2. 6. 4. Tô màu đường tròn v Thủ tục 12/5/2020 Chương 2: Các thuật toán cơ bản 14

2. 6. 5. Tô màu hình thang cơ bản v Hình thang cơ bản

2. 6. 5. Tô màu hình thang cơ bản v Hình thang cơ bản § Là hình thang có cạnh đáy song với trục tọa độ x 4, y 4 x 3, y 3 x 1, y 1 12/5/2020 x 2, y 2 Chương 2: Các thuật toán cơ bản 15

2. 6. 5. Tô màu hình thang cơ bản v Tư tưởng § Đặt

2. 6. 5. Tô màu hình thang cơ bản v Tư tưởng § Đặt ymin = y 1; ymax = y 3; m = ymax-ymin +1 § Tính hệ số góc x , y 4 Cl = (x 4 -x 1)/(y 4 -y 1) Cr = (x 3 -x 2)/(y 3 -y 2) § Đặt yi = ymin + (i-1), i=1. . m x 1, y 1 4 • Tính xil = x 1 +(yi-y 1)Cl • Tính xir = x 2 +(yi-y 2)Cr • Kẻ đoạn thẳng (xil, yil), (xir, yir) bằng màu tô 12/5/2020 Chương 2: Các thuật toán cơ bản x 3, y 3 x 2, y 2 16

2. 6. 5. Tô màu hình thang cơ bản v Thủ tục 12/5/2020 Chương

2. 6. 5. Tô màu hình thang cơ bản v Thủ tục 12/5/2020 Chương 2: Các thuật toán cơ bản 17

2. 6. 6. Tô màu đa giác v Tư tưởng § Tìm hình chữ

2. 6. 6. Tô màu đa giác v Tư tưởng § Tìm hình chữ nhật nhỏ nhất có các cạnh song với hai trục tọa độ chứa đa giác cần tô dựa vào hai tọa độ (xmin, ymin), (xmax, ymax). § xmin, ymin là hoành độ và tung độ nhỏ nhất của các đỉnh của đa giác § xmax, ymax là hoành độ và tung độ lớn nhất của các đỉnh của đa giác. 12/5/2020 Chương 2: Các thuật toán cơ bản 18

2. 6. 6. Tô màu đa giác v Tư tưởng § Cho x chạy

2. 6. 6. Tô màu đa giác v Tư tưởng § Cho x chạy từ xmin đến xmax Cho y chạy từ ymin đến ymax Xét điểm P(x, y) có thuộc đa giác không ? Nếu đúng thì tô với màu cần tô 12/5/2020 Chương 2: Các thuật toán cơ bản 19

2. 6. 6. Tô màu đa giác v Điểm trong đa giác § Là

2. 6. 6. Tô màu đa giác v Điểm trong đa giác § Là điểm có số giao điểm từ một tia bất kỳ xuất phát từ điểm đó cắt biên của đa giác phải là một số lẻ lần. § Tại các đỉnh cực trị (cực đại hay cực tiểu ) thì một giao điểm phải được tính 2 lần. § Tia có thể qua phải hay qua trái. Thông thường, chọn tia qua phải. 12/5/2020 Chương 2: Các thuật toán cơ bản 20

2. 6. 6. Tô màu đa giác v Điểm trong đa giác v Cho

2. 6. 6. Tô màu đa giác v Điểm trong đa giác v Cho đa giác W và P là điểm bất kỳ v Thuật toán 1 § B 1: Từ P, kẻ nửa đường thẳng L song với trục ox hướng sang phải § B 2: Tính số giao điểm N của nửa đường thẳng L với các cạnh của đa giác § B 3: Nếu N lẻ P nằm trong đa giác, nếu N chẵn P nằm ngoài đa giác 12/5/2020 Chương 2: Các thuật toán cơ bản 21

2. 6. 6. Tô màu đa giác v Điểm trong đa giác § Cải

2. 6. 6. Tô màu đa giác v Điểm trong đa giác § Cải tiến thuật toán • Giả sử P(x 0, y 0) và Pi có tọa độ (xi, yi), i=1, n • Cạnh (Pi, Pi+1) không cần tính giao điểm với L nếu max(xi, xi+1)<x 0 • Cạnh (Pi, Pi+1) có giao điểm với L nếu min(xi, xi+1)>x 0 (y-y 0)(yi+1 -y 0)<0 12/5/2020 Chương 2: Các thuật toán cơ bản 22

2. 6. 6. Tô màu đa giác v Điểm trong đa giác § Nhận

2. 6. 6. Tô màu đa giác v Điểm trong đa giác § Nhận xét Thuật toán 1 • Không giải quyết đúng khi L đi qua một đỉnh nào đó của đa giác • Không giải quyết đúng khi L đi qua một cạnh của đa giác v Thuật toán này không phải là thuật toán tổng quát để xác định điểm P nằm trong hay ngoài đa giác 12/5/2020 Chương 2: Các thuật toán cơ bản 23

2. 6. 6. Tô màu đa giác v Điểm trong đa giác v Thuật

2. 6. 6. Tô màu đa giác v Điểm trong đa giác v Thuật toán 2 § Từ điểm P nối với các đỉnh đa giác để tạo thành các góc theo thứ tự ngược chiều kim đồng hồ § Các góc này có giá trị dương hoặc âm tùy theo hướng đo § Tính tổng các góc • Nếu tổng các góc bằng 0 thì P nằm ngoài đa giác • Nếu tổng các góc bằng 360 o thì P nằm trong đa giác 12/5/2020 Chương 2: Các thuật toán cơ bản 24

2. 6. 6. Tô màu đa giác v Điểm trong đa giác v Thuật

2. 6. 6. Tô màu đa giác v Điểm trong đa giác v Thuật toán 2 12/5/2020 Chương 2: Các thuật toán cơ bản 25

2. 6. 6. Tô màu đa giác v Điểm trong đa giác § Xét

2. 6. 6. Tô màu đa giác v Điểm trong đa giác § Xét đa giác gồm 13 đỉnh là P 0 , P 1 , . . . , P 12 = P 0 12/5/2020 Chương 2: Các thuật toán cơ bản 26

2. 6. 6. Tô màu đa giác vĐiểm trong đa giác Gọi tung độ

2. 6. 6. Tô màu đa giác vĐiểm trong đa giác Gọi tung độ của đỉnh Pi là Pi. y § Pi. y < Min ( Pi+1. y, Pi-1. y) Pi là đỉnh cực trị (cực tiểu) § Pi. y > Max ( Pi+1. y, Pi-1. y) Pi là đỉnh cực trị (cực đại ) § Pi-1. y < Pi+1. y hay Pi-1 > Pi. y > Pi+1. y Pi là đỉnh đơn điệu. § Pi = Pi+1 và Pi. y < Min ( Pi+2. y, Pi-1. y) hay Pi > Max ( Pi+2. y, Pi-1. y) thì đoạn [Pi, Pi+1] là đoạn cực trị (cực tiểu hay cực đại ). § Pi = Pi+1 và Pi-1. y < Pi+2. y hay Pi-1 > Pi. y > Pi+2. y thì đoạn [Pi, Pi+1] là đoạn đơn điệu. 12/5/2020 Chương 2: Các thuật toán cơ bản 27

2. 6. 6. Tô màu đa giác v Điểm trong đa giác v Tư

2. 6. 6. Tô màu đa giác v Điểm trong đa giác v Tư tưởng § Với mỗi đỉnh của đa giác ta đánh dấu là 0 hay 1 theo qui ước như sau: nếu là đỉnh cực trị hay đoạn cực trị thì đánh số 0. Nếu là đỉnh đơn điệu hay đoạn đơn điệu thì đánh dấu 1. § Xét số giao điểm của tia nửa đường thẳng từ P là điểm cần xét với biên của đa giác. Nếu số giao điểm là chẵn thì kết luận điểm không thụôc đa giác. Ngược lại, số giao điểm là lẻ thì điểm thuộc đa giác. 12/5/2020 Chương 2: Các thuật toán cơ bản 28

2. 6. 7. Tô màu dòng quét v Ý tưởng § Sử dụng giao

2. 6. 7. Tô màu dòng quét v Ý tưởng § Sử dụng giao điểm giữa các biên đa giác và đường quét để nhận ra pixel có trong đa giác? 12/5/2020 Chương 2: Các thuật toán cơ bản 29

2. 6. 7. Tô màu dòng quét v Thuật toán § Cho trước đa

2. 6. 7. Tô màu dòng quét v Thuật toán § Cho trước đa giác P với n đỉnh v 0 đến vn-1(vnΞv 0) § Cho trước C là màu tô đa giác § Giao của mỗi đường quét với các cạnh đa giác thì sẽ là điểm vào hay điểm ra đa giác § Tìm ra các đoạn thẳng nằm trong đa giác để vẽ theo màu C 12/5/2020 Chương 2: Các thuật toán cơ bản 30

2. 6. 7. Tô màu dòng quét v Với mỗi dòng quét § Tìm

2. 6. 7. Tô màu dòng quét v Với mỗi dòng quét § Tìm giao điểm với các cạnh của đa giác § Sắp xếp theo chiều tăng của x § Tô các điểm ảnh giữa các cặp giao điểm 12/5/2020 Chương 2: Các thuật toán cơ bản 31

2. 6. 7. Tô màu dòng quét v Tìm giao điểm đường quét với

2. 6. 7. Tô màu dòng quét v Tìm giao điểm đường quét với cạnh đa giác § Tìm ymin và ymax của mỗi cạnh § Tính giao điểm của cạnh với đường quét đầu tiên nếu có giao nhau § Tính dx/dy § Với mỗi đường quét sau, tính giao điểm mới x=x+dx/dy 12/5/2020 Chương 2: Các thuật toán cơ bản i+1 i xi+1 32

2. 6. 7. Tô màu dòng quét v Danh sách cạnh Một dãy các

2. 6. 7. Tô màu dòng quét v Danh sách cạnh Một dãy các mục là danh sách móc nối Tất cả các cạnh được sắp xếp theo ymin của chúng Lưu giữ một bucket riêng cho mỗi đường quét Với mỗi bucket, cạnh được sắp theo tăng dần của x (của ymin) § Mỗi đường quét sẽ có một danh sách móc nối rỗng khi và chỉ khi tọa độ y thấp hơn của đoạn thẳng. § § 12/5/2020 Chương 2: Các thuật toán cơ bản 33

2. 6. 7. Tô màu dòng quét v Cấu trúc của danh sách móc

2. 6. 7. Tô màu dòng quét v Cấu trúc của danh sách móc nối § Mỗi nút trong ds móc nối có • Tọa độ y lớn hơn của cạnh (đường quét lớn nhất còn cắt cạnh) • Tọa độ x của điểm thấp hơn (tọa độ x của điểm ymin) • Số gia của x (tăng theo đường quét liền nhau) • Con trỏ tới phần tử tiếp theo (nếu cần) 12/5/2020 Chương 2: Các thuật toán cơ bản 34

2. 6. 7. Tô màu dòng quét v Sử dụng danh sách cạnh kích

2. 6. 7. Tô màu dòng quét v Sử dụng danh sách cạnh kích hoạt § Khi quét từng dòng, giá trị giao điểm x mới được tính nhờ: xi+1 = xi + 1/m § Khi có thêm cạnh sẽ cắt đường quét tiếp theo thì nó sẽ được đưa vào trong danh sách cạnh kích hoạt, cạnh không còn cắt sẽ bị loại bỏ (có thể cần sắp xếp). § Danh sách các cạnh kích hoạt với đường đang quét được sắp theo chiều tăng x. 12/5/2020 Chương 2: Các thuật toán cơ bản 35

2. 6. 7. Tô màu dòng quét v Begin § § § Xây dựng

2. 6. 7. Tô màu dòng quét v Begin § § § Xây dựng danh sách các cạnh (EL) Danh sách cạnh kích hoạt AEL = null For y: =ymin to ymax do • Hòa nhập EL[y] vào AEL và sắp xếp theo giá trị x • Tô màu đoạn nằm giữa cặp x trong AEL • For each edge trong AEL – If edge. ymax = y then » Loại edge khỏi AET – Else » Edge. x=edge. x + dx/dy – Sắp xếp AET theo giá trị x v End; 12/5/2020 Chương 2: Các thuật toán cơ bản 36

2. 6. 7. Tô màu dòng quét 12/5/2020 Chương 2: Các thuật toán cơ

2. 6. 7. Tô màu dòng quét 12/5/2020 Chương 2: Các thuật toán cơ bản 37

Xin chân thành cảm ơn! 12/5/2020 Chương 2: Các thuật toán cơ bản 38

Xin chân thành cảm ơn! 12/5/2020 Chương 2: Các thuật toán cơ bản 38