1. Trang chủ
  2. » Luận Văn - Báo Cáo

Các thuật toán tính diện tích và thể tích vật thể không gian và ứng dụng

82 507 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

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

Nội dung

Trong khuôn khổ của mình, luận văn sẽ trình bày về một số thuật toán tính diện tích và thể tích nhằm tính toán diện tích bề mặt cho các vật, cho các địa hình trong thực tế.. Với đề tài l

Trang 2

LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH

NGƯỜI HƯỚNG DẪN KHOA HỌC

PGS TSKH NGUYỄN XUÂN HUY

Trang 3

LỜI CAM ĐOAN

Tôi xin cam đoan luận văn là công trình nghiên cứu của riêng cá nhân tôi, kết quả của luận văn hoàn toàn là kết quả của tự bản thân tôi tìm

hiểu, nghiên cứu dưới sự hướng dẫn của giáo viên hướng dẫn PGS TSKH

Nguyễn Xuân Huy

Tôi hoàn toàn chịu trách nhiệm về tính pháp lý quá trình nghiên cứu khoa học của luận văn này

Thái Nguyên, tháng 9 năm 2015

Học viên

Phạm Hải Ninh

Trang 4

LỜI CẢM ƠN

Lời đầu tiên, em xin gửi lời biết ơn sâu sắc đến PGS TSKH Nguyễn

Xuân Huy người đã tận tình hướng dẫn, chỉ bảo, giúp đỡ em trong suốt

quá trình làm luận văn

Em cũng xin gửi lời cảm ơn đến các thầy cô giáo trường Đại học Công nghệ thông tin và Truyền thông - Đại học Thái Nguyên, các thầy cô Viện Công nghệ thông tin đã truyền đạt những kiến thức và giúp đỡ em trong suốt quá trình học của mình

Học viên xin gửi lời cảm ơn tới Ban giám hiệu trường THPT Hồng Bàng - Hải Phòng đã tạo điều kiện thuận lợi cho học viên tham gia khóa học và quá trình hoàn thành luận văn

Và học viên cũng xin gửi lời cảm ơn tới các đồng nghiệp, gia đình và bạn bè những người đã ủng hộ, động viên tạo mọi điều kiện giúp đỡ để học viên có được kết quả như ngày hôm nay

Phạm Hải Ninh

Trang 5

MỤC LỤC

Trang

LỜI CAM ĐOAN i

LỜI CẢM ƠN ii

MỤC LỤC iii

DANH MỤC CÁC KÍ HIỆU, CHỮ CÁI VIẾT TẮT v

DANH MỤC CÁC HÌNH vi

MỞ ĐẦU 1

Chương 1: CÁC KHÁI NIỆM CƠ SỞ 2

1.1 Tổng quan về đề tài 2

1.1.1 Giới thiệu đề tài 2

1.1.2 Nội dung của đề tài, các vấn đề cần giải quyết 2

1.1.3 Phương pháp nghiên cứu 3

1.1.4 Phạm vi ứng dụng 3

1.1.5 Kết quả đạt được 3

1.1.6 Bố cục của luận văn 4

1.2 Khái niệm cơ sở 5

1.2.1 Khái quát cách tính diện tích các hình cơ bản 5

1.2.2 Khái quát cách tính thể tích các hình cơ bản 10

Chương 2: MỘT SỐ THUẬT TOÁN TÍNH DIỆN TÍCH VÀ THỂ TÍCH VẬT THỂ KHÔNG GIAN 14

2.1 Thuật toán tính diện tích của đa giác theo tọa độ đỉnh 14

2.2 Thuật toán tìm diện tích hình chữ nhật tối đại 25

Trang 6

2.3 Thuật toán tính thể tích vùng nước đọng 33

Chương 3: ỨNG DỤNG VÀ THỬ NGHIỆM 46

3.1 Cơ sở lý thuyết và lựa chọn bài toán ứng dụng 46

3.2 Bài toán: Dự án xây dựng sân bay 50

3.2.1 Phát biểu bài toán 50

3.2.2 Mô tả dữ liệu 50

3.2.3 Thiết kế các bước thực hiện 51

3.3 Bài toán: Tính thể tích chứa nước cho một lòng hồ 56

3.3.1 Phát biểu bài toán 56

3.2.2 Mô tả dữ liệu 56

3.3.3 Thiết kế các bước thực hiện 57

3.4 Cài đặt chương trình 60

3.4.1 Chương trình tính diện đa giác theo tọa độ đỉnh 60

3.4.2 Chương trình tìm diện tích hình chữ nhật tối đại 61

3.4.3 Chương trình tính thể tích vùng nước đọng 63

KẾT LUẬN 66

TÀI LIỆU THAM KHẢO 67

PHỤ LỤC 68

Trang 7

DANH MỤC CÁC KÍ HIỆU, CHỮ CÁI VIẾT TẮT

(Hệ thống thông tin địa lý)

Trang 8

DANH MỤC CÁC HÌNH

Trang

Hình 1.1: Công thức tính diện tích của một số hình đặc biệt 7

Hình 1.2: Diện tích S của hình phẳng giới hạn bởi đồ thị các hàm số ( ), ( ) yf x yg x liên tục trên đoạn [a, b] và hai đường thẳng x = a, x = b 8

Hình 1.3: Công thức tính thể tích của một số khối hình đặc biệt 12

Hình 1.4: Thể tích vật thể tròn xoay giới hạn bởi đồ thị hàm số y = f(x) , trục hoành và hai đường thẳng x = a, x = b 13

Hình 2.1: Hình chữ nhật ABCD trong mặt phẳng tọa độ Oxy 16

Hình 2.2: Ngũ giác lõm ABCDE trong mặt phẳng tọa độ Oxy 17

Hình 2.3: Ngũ giác lồi ABCDE trong mặt phẳng tọa độ Oxy 18

Hình 2.4: Hình thang ABCD trong mặt phẳng tọa độ Oxy 19

Hình 2.5: Đa giác lồi, lõm trong mặt phẳng tọa độ Oxy 20

Hình 2.6: VD1 - Ma trận chứa các kí tự 0 và 1 25

Hình 2.7: VD2 - Ma trận chứa các kí tự 0 và 1 26

Hình 2.8: VD3 - Ma trận chứa các kí tự 0 và 1 27

Hình 2.9: VD1 - Ma trận và cột thể hiện độ cao của các cột vuông cạnh 1 đơn vị 34

Hình 2.10: VD2 - Ma trận và cột thể hiện độ cao của các cột vuông cạnh 1 đơn vị 35

Hình 2.11: VD3 - Ma trận và cột thể hiện độ cao của các cột vuông cạnh 1 đơn vị 36

Hình 3.1: Ma trận không gian của một file ảnh raster có cấu trúc pixel 47 Hình 3.2: Các đối tượng không gian được mã hoá trong mô hình Raster 48

Trang 9

Hình 3.3: Các điểm ảnh được mã hoá trong mô hình Raster như một ma

trận số nguyên 49

Hình 3.4: Vùng địa hình khảo sát xây dựng sân bay 51

Hình 3.5: Ma trận số nguyên thể hiện theo độ cao vùng địa hình 52

Hình 3.6: Vùng địa hình có một hồ chứa nước 58

Hình 3.7: Ma trận số nguyên theo độ cao vùng có hồ 58

Trang 10

MỞ ĐẦU

Lịch sử của Toán học gắn liền với sự phát triển của loài người, những khái niệm được hình thành hầu hết xuất phát từ đời sống thực tiễn,

từ nhu cầu tìm tòi và khám phá của con người Một ví dụ kinh điển cho sự

ra đời ngành hình học thời Ai Cập cổ đại đấy là việc chia ruộng cho người dân Nếu không có sự ra đời các khác niệm chiều dài, chiều rộng, diện tích, thể tích, và số đo góc, có lẽ những người Ai Cập khó có thể phân chia ruộng một cách công bằng

Thời xưa khi con người chưa có sự hỗ trợ của máy móc nên bản thân các bài toán phát sinh chỉ là các bài đơn giản, số lượng tính toán là cỡ nhỏ, việc tính diện tích và thể tích chỉ áp dụng đối với các hình đặc biệt Với các hình phức tạp người ta tính bằng phương pháp gần đúng hoặc chia ra thành các hình nhỏ Vì vậy các công cụ toán để sử dụng cũng là những công thức

vô cùng đơn giản và sơ khai như phép cộng, phép chia, hay khai căn một cách gần đúng

Ngày nay, cùng với sự hỗ trợ của máy tính, các bài toán con người

có thể đặt ra là vô cùng trừu tượng và phức tạp, với số lượng phép tính lớn, vượt xa ra khỏi khả năng tự nhiên của một con người Vì vậy các công cụ tính toán và các khái niệm mới cũng hết sức trừu tượng

Trong khuôn khổ của mình, luận văn sẽ trình bày về một số thuật toán tính diện tích và thể tích nhằm tính toán diện tích bề mặt cho các vật, cho các địa hình trong thực tế Đồng thời đề cập về ứng dụng của các thuật toán trên để từ đó cài đặt chương trình thử nghiệm làm rõ hơn một số nội dung về tính toán trừu tượng hoặc xử lí những khối lượng tính toán phức tạp mà con người cần tính toán

Trang 11

Chương 1: CÁC KHÁI NIỆM CƠ SỞ 1.1 Tổng quan về đề tài

1.1.1 Giới thiệu đề tài

Việc tính diện tích và tính thể tích luôn được con người quan tâm và ứng dụng trong thực tế Để xác định, tính toán về mặt định lượng trên bề mặt hay dung tích chúng ta cần phải dựa vào số đo là diện tích và thể tích Trong các lĩnh vực như xây dựng, thủy lợi, khai khoáng, con người cũng cần phải dựa vào các con số tính toán nhiều chính là diện tích và thể tích vật thể Trong thực tế những bài toán về tính diện tích và thể tích có thể có

nhiều cách tính và phương pháp tính khác nhau Với đề tài luận văn ”Các thuật toán tính diện tích và thể tích vật thể không gian và ứng dụng” nhằm

tìm hiểu các cách tiếp cận về cách tính diện tích và thể tích của các hình, các vật thể đặc biệt Đồng thời phân tích bài toán, hình thành ý tưởng và xây dựng thuật toán về cách tính diện của một đa giác khi biết tọa độ đỉnh, tìm diện tích phẳng là hình chữ nhật tối đại và tính thể tích vùng nước đọng Từ đó đề tài cũng nêu và giải quyết một số ứng dụng có trong thực tế

mà áp dụng từ các thuật toán đã trình bày

1.1.2 Nội dung của đề tài, các vấn đề cần giải quyết

- Giới thiệu tổng quan việc tính diện tích, thể tích vật thể không gian

- Tìm hiểu các thuật toán liên quan tính diện tích, thể tích vật thể không gian

- Cài đặt thử nghiệm các thuật toán đã xây dựng

- Ứng dụng và xây dựng chương trình bài toán ứng dụng trong một

số lĩnh vực có trong thực tế

Trang 12

1.1.3 Phương pháp nghiên cứu

- Phương pháp nghiên cứu lý thuyết: Tìm hiểu, tổng hợp tài liệu, phân tích, đánh giá các phương pháp

- Phương pháp đối sánh

- Phương pháp trao đổi khoa học, lấy ý kiến chuyên gia

- Phương pháp thực nghiệm: xây dựng chương trình cụ thể để thử nghiệm, phân tích, đánh giá kết quả đạt được

1.1.4 Phạm vi ứng dụng

Phạm vi nghiên cứu của đề tài được giới hạn trong việc xây dựng các phương pháp thực hiện, chú trọng vào mô hình tính toán, thuật toán và chương trình máy tính Tính toán thực nghiệm cho một khu vực địa lý cụ thể

Ứng dụng tính diện tích phẳng tối đa cho phép trên một địa hình và thể tích chứa nước của một lòng hồ

1.1.5 Kết quả đạt được

Tổng hợp một số cách tiếp cận để tính diện tích, thể tích các hình, khối hình học và các vật thể cơ bản

Phân tích bài toán, hình thành ý tưởng và xây dựng thuật toán cũng như chương trình cho các thuật toán sau: Thuật toán tính diện tích đa giác theo tọa độ đỉnh, thuật toán tìm diện tích hình chữ nhật tối đại và thuật toán tính thể tích vùng nước đọng

Thiết lập tương quan giữa các thuật toán vào thực tế để tính toán những khối lượng công việc tưởng như trừu tượng, khó tính toán

Trang 13

Nâng cao kĩ năng về phân tích dữ liệu thực tế với chương trình chạy thực nghiệm

1.1.6 Bố cục của luận văn

Bố cục của luận văn bao gồm 3 chương:

Chương 1: CÁC KHÁI NIỆM CƠ SỞ

Chương này học viên trình bày tổng quan về đề tài và tóm tắt các cách tiếp cận để tính diện tích đối với các hình đặc biệt, tính thể tích đối với các khối hình đặc biệt

Chương 2: MỘT SỐ THUẬT TOÁN TÍNH DIỆN TÍCH VÀ THỂ TÍCH VẬT THỂ KHÔNG GIAN

Chương này học viên trình bày các thuật toán sau: Thuật toán tính diện tích đa giác theo tọa độ đỉnh, thuật toán tìm diện tích hình chữ nhật tối đại và thuật toán tính thể tích vùng nước đọng

Chương 3: ỨNG DỤNG VÀ THỬ NGHIỆM

Dựa vào cơ sở lý thuyết GIS và các thuật toán được trình bày ở chương 2, trong chương này học viên trình bày cụ thể hơn về bài toán ứng dụng trong thực tế trên một vùng địa hình

Trang 14

1.2 Khái niệm cơ sở

1.2.1 Khái quát cách tính diện tích các hình cơ bản

Diện tích là độ đo dùng để đo độ lớn bề mặt của vật thể Diện tích bề mặt của một đối tượng là toàn bộ những gì ta có thể nhìn thấy của đối tượng Diện tích có đơn vị đo là bình phương của khoảng cách (khoảng cách mũ 2) Trong hệ đo lường quốc tế, nếu đơn vị đo của khoảng cách là

cm thì đơn vị đo của diện tích là cm2, nếu đơn vị đo của khoảng cách là km thì đơn vị đo của diện tích là km2, nếu đơn vị đo của khoảng cách là m thì đơn vị đo của diện tích là m2 [6]

Việc tính diện tích các khối hình chúng ta có thể có những cách tiếp cận, những cách tính khác nhau Đối với các hình đặc biệt ta thường dựa vào độ dài các thông số cơ bản của hình, có cách tính nhanh và dễ nhớ Ví như đoạn thơ sau có thể mô tả nhanh về công thức tính diện tích với một số hình đặc biệt:

Muốn tính diện tích hình thang Đáy lớn, đáy nhỏ ta mang cộng vào Rồi đem nhân với đường cao

Chia đôi kết quả thế nào cũng ra

Chữ nhật ta đã học qua Dài nhân với rộng thế là ra ngay Hình vuông quả thật là hay Cạnh nhân với cạnh ra ngay tức thì Tam giác thì có khó chi

Cao nhân với đáy ta thì chia đôi Hình tròn tính cũng dễ thôi

Trang 15

Bán kính bán kính nhân pi là thành Khối hộp làm cũng thật nhanh Muốn tìm diện tích xung quanh khó gì Sau đây là tổng quan về tính diện tích của các hình đặc biệt thông qua các yếu tố hình học cơ bản và công thức tính [6], [7]:

p   

) )

)(

( p a p b p c P

Hình tam giác (Cách 2)

sin 2

1

2

1d d

S 

Hình tứ giác

2 1

2

1

d d

S 

Hình thoi

Trang 16

h b a

Từ những công thức với các hình đặc biệt trên khi muốn tính diện tích của các hình có hình thù phức tạp người ta có thể chia hình đó thành những hình đặc biệt nhỏ khác nhau Công việc tính diện tích lúc này trở nên đơn giản hơn là tổng diện tích của các hình nhỏ đặc biệt, tuy nhiên không phải hình nào cũng có thể chia về các hình đặc biệt và việc chia có thể cho ta kết quả gần đúng chưa kể chúng ta phải sử dụng tương đối nhiều phép đo

Trong toán học người ta ứng dụng tích phân để tính diện tích của các hình, việc tính diện tích theo cách này chúng ta phải biết hoặc xác định được hàm số giới hạn hình cần tính [5]

Ví dụ 1: Diện tích hình phẳng giới hạn bởi một đường cong

Nếu hàm số y = f(x) liên tục trên đoạn [a, b] thì diện tích S của hình phẳng giới hạn bởi đồ thị hàm số y = f(x), trục hoành và hai đường thẳng

Trang 17

Ví dụ 2: Diện tích hình phẳng giới hạn bởi hai đường cong và hai đường thẳng x = a, x = b

Diện tích S của hình phẳng giới hạn bởi đồ thị các hàm số

( ), ( )

yf x yg x liên tục trên đoạn [a, b] và hai đường thẳng x = a, x = b, ta

có công thức sau:

dx x g x f

yf x yg x liên tục trên đoạn [a, b] và hai đường thẳng x = a, x = b

Trong công thức trên ta chia thành các trường hợp cụ thể (Hình1.2): Trường hợp 1: Ta có công thức khai triển của S

Trang 18

Có một cách tiếp cận khác về cách tính diện tích với một đa giác khi

đa giác đó được đặt trong hệ tọa độ Oxy và biết tọa độ (x,y) n đỉnh của đa giác trong hệ tọa độ Oxy theo tuần tự (x1,y1), (x2,y2), …, (xn,yn) Bài toán tính diện tích cho đa giác có tọa độ của các đỉnh đã biết trước và các đỉnh được sắp xếp theo thứ tự cùng chiều quay của kim đồng hồ hoặc ngược chiều quay của kim đồng hồ trên mặt phẳng tọa độ được tính theo công thức tổng quát như sau [9]:

1 1

i n

i

iy x y x y x y x

S

(Nguồn: http://en.wikipedia.org/wiki/Shoelace_formula)

Công thức trên viết lại tương đương với công thức sau:

Trang 19

)

( )

(

2

1

1 1 2

3 1 2 1 1

3 2 2

T2 = x2y1 + x3y2 + + xnyn-1 + x1ynBước 3: Tính S

1.2.2 Khái quát cách tính thể tích các hình cơ bản

Thể tích hay dung tích của một vật là lượng không gian mà vật ấy chiếm Thể tích có đơn vị đo là lập phương của khoảng cách (khoảng cách

mũ 3) Trong hệ đo lường quốc tế, nếu đơn vị đo của khoảng cách là cm thì đơn vị đo của thể tích là cm3, nếu đơn vị đo của khoảng cách là km thì đơn

vị đo của thể tích là km3, nếu đơn vị đo của khoảng cách là m thì đơn vị đo của thể tích là m3 [6]

Đối với các khối hình cơ bản trong toán học chúng ta có công thức tính thể tích theo những thông số cơ bản của hình như bảng tóm tắt sau [6], [7]:

Trang 20

h R

Thể tích hình trụ

n g a

n

cot 4

2

V = Sh Thể tích hình lăng trụ đều

2

c b a

p   

)))(

(p a p b p c

P

V = Sh Thể tích hình lăng trụ tam giác

2

c b a

p  

)))(

(p a p b p c P

Sh V

3

1

 Thể tích hình tứ diện

R R

Thể tích hình chóp cầu

Trang 21

h R

3

Rr r

R h

Thể tích hình nón cụt

n g na

cot4

1 2

Sh V

cot 4

n g na

cot 4

1

1 

S S S S h

Hình 1.3: Công thức tính thể tích của một số khối hình đặc biệt

Trong toán học người ta cũng có thể ứng dụng tích phân để tính thể tích Ví dụ việc tính thể tích vật thể tròn xoay: Hình phẳng giới hạn bởi đồ thị hàm số y = f(x), trục hoành và hai đường thẳng x = a, x = b, trong đó

Trang 22

(a < b) Quay hình phẳng (Hình 1.4) quanh trục hoành ta được một vật thể tròn xoay [5]

Thể tích của vật thể này được tính theo công thức:

f xdx V

b a

2

)(

Trang 23

Chương 2: MỘT SỐ THUẬT TOÁN TÍNH DIỆN TÍCH VÀ THỂ

TÍCH VẬT THỂ KHÔNG GIAN

Chương này học viên trình bày ba thuật toán sau: Thuật toán tính diện tích đa giác theo tọa độ đỉnh, thuật toán tìm diện tích hình chữ nhật tối đại và thuật toán tính thể tích vùng nước đọng Mỗi bài toán thuật toán học viên phân tích, lấy ví dụ để làm rõ yêu cầu của bài toán, qua đó hình thành

ý tưởng giải thuật và xây dựng thuật toán

2.1 Thuật toán tính diện tích của đa giác theo tọa độ đỉnh

 Bài toán

Cho đa giác N đỉnh theo tuần tự A1 A2 A3 AN trong mặt phẳng tọa độ Oxy, với các đỉnh Ai(xi,yi) có tọa độ nguyên và các đỉnh được sắp xếp theo thứ tự cùng chiều quay của kim đồng hồ hoặc ngược chiều quay của kim đồng hồ trên mặt phẳng tọa độ Hãy tính diện tích đa giác trên

 Phân tích bài toán

Như đã trình bày trong mục 1.2.1 về cách tính diện tích với những đa giác khác nhau khi đa giác đó nằm trong hệ tọa độ Oxy Nếu ta biết tọa độ (x,y) n đỉnh của đa giác trong hệ tọa độ Oxy theo tuần tự (x1,y1), (x2,y2),

…, (xn,yn) Bài toán tính diện tích cho đa giác có tọa độ của các đỉnh đã biết trước và các đỉnh được sắp xếp theo thứ tự cùng chiều quay của kim đồng hồ hoặc ngược chiều quay của kim đồng hồ trên mặt phẳng tọa độ Khi đó chúng ta tính theo công thức tổng quát như sau [9]:

1 1

i n

i

iy x y x y x y x

S

(Nguồn: http://en.wikipedia.org/wiki/Shoelace_formula)

Trang 24

Công thức trên được viết lại tương đương với công thức sau:

)

( )

(

2

1

1 1 2

3 1 2 1 1

3 2 2

Bước 1: Tính T1

T1 = x1y2 + x2y3 + + xn-1yn + xny1Bước 2: Tính T2

T2 = x2y1 + x3y2 + + xnyn-1 + x1ynBước 3: Tính S

Sau đây ta xét một số ví dụ minh họa:

Ví dụ 1: Tứ giác ABCD là hình chữ nhật với tọa độ các đỉnh như sau (Hình 2.1): A(4,4), B(12,4), C(12,8), D(4,8)

Áp dụng các bước trên ta lần lượt tính được T1 = xAyB + xByC + xCyD + xDyA

=4 x 4 + 12 x 8 + 12 x 8 + 4 x 4 = 16 + 96 + 96 + 16 = 224 T2 = xByA + xCyB + xDyC + xAyD

= 12 x 4 + 12 x 4 + 4 x 8 + 4 x 8

= 48 + 48 + 32 + 32 = 160

S = |T1-T2|/2 = |224-160|/2 = 64/2 = 32

Trang 25

Hình 2.1: Hình chữ nhật ABCD trong mặt phẳng tọa độ Oxy

Cũng dễ dàng nhận thấy vùng diện tích trên chính là vùng diện tích của hình chữ nhật có cạnh dài là 8 đơn vị và cạnh nhỏ là 4 đơn vị, như vậy diện tích của hình chữ nhật là 8 x 4 = 32 ứng với diện tích của 32 ô vuông nhận được

Ví dụ 2: Có ngũ giác ABCDE, đỉnh C lõm với tọa độ các đỉnh như sau (Hình 2.2): A(4,4), B(12,4),C(10,6), D(12,8), E(4,8)

Từ các cặp tọa độ trên áp dụng công thức và các bước ta lần lượt tính T1, T2 và S như sau:

T1 = xAyB + xByC + xCyD + xDyE + xEyA

= 4 x 4 + 12 x 6 + 10 x 8 + 12 x 8 + 4 x 4

= 16 + 72 + 80 + 96 + 16 = 280 T2 = xByA + xCyB + xDyC + xEyD + xAyE

Trang 26

= 12 x 4 + 10 x 4 + 12 x 6 + 8 x 4 + 4 x 4

= 48 + 40 + 72 + 32 + 32 = 224

S = |T1-T2|/2 = |280-224|/2 = 56/2 = 28

Hình 2.2: Ngũ giác lõm ABCDE trong mặt phẳng tọa độ Oxy

Ở ví dụ 2 công thức được tính với đa giác lõm, dễ nhận thấy diện tích của đa giác này bằng diện tích của hình chữ nhật trong ví dụ 1 trừ đi 4 đơn

vị ô vuông theo hình minh họa và bằng 28 đơn vị ô vuông

Ví dụ 3: Với ngũ giác ABCDE, đỉnh C lồi có tọa độ các đỉnh như sau (Hình 2.3):

Trang 27

= 4 x 4 + 12 x 6 + 14 x 8 + 12 x 8 + 4 x 4

= 16 + 72 + 112 + 96 + 16 = 312 T2 = xByA + xCyB + xDyC + xEyD + xAyE

= 12 x 4 + 14 x 4 + 12 x 6 + 4 x 8 + 8 x 4

= 48 + 56 + 72 + 32 + 32 = 240

S = |T1-T2|/2 = |312-240|/2 = 72/2 = 36

Hình 2.3: Ngũ giác lồi ABCDE trong mặt phẳng tọa độ Oxy

Dễ nhận thấy diện tích của đa giác này bằng diện tích của hình chữ nhật trong ví dụ 1 cộng thêm 4 đơn vị ô vuông theo hình minh họa và bằng

Trang 28

T1 = xAyB + xByC + xCyD + xDyA = 4 x 4 + 12 x 8 + 11 x 8 + 8 x 4

= 16 + 96 + 88 + 28 = 228 T2 = xByA+ xCyB+ xDyC+ xAyD

= 12 x 4 + 11 x 4 + 7 x 8 + 4 x 8

= 48 + 44 + 56 + 32 = 180

S = |T1-T2|/2 = |228-180|/2 = 48/2 = 24

Hình 2.4: Hình thang ABCD trong mặt phẳng tọa độ Oxy

Ở ví dụ này chính bài toán tính diện hình thang có đáy nhỏ là 4 đơn vị, đáy lớn là 8 đơn vị và chiều cao là 4 đơn vị áp dụng công thức có kết quả sau:

Trang 29

Ví dụ 5: Xét một đa giác vừa có tính chất lồi, vừa có tính chất lõm với tọa độ các đỉnh như sau (Hình 2.5):

= 12 x 4 + 10 x 4 + 12 x 6 + 8 x 8 + 6 x 8 + 4 x 10 + 4 x 8

= 48 + 40 + 72 + 64 + 48 + 40 + 32 = 344

S = |T1-T2|/2 = |408 - 344|/2 = 64/2 = 32

Hình 2.5: Đa giác lồi, lõm trong mặt phẳng tọa độ Oxy

Ở hình trên nếu lấy phần lồi bù cho phần lõm thì ta thu được diện tích của hình chính là diện tích của hình chữ nhật có chiều dài là 8 đơn vị và

Trang 30

chiều rộng là 4 đơn vị như vậy S = 8 x 4 = 32 đơn vị ô vuông khớp với kết quả tính ở trên

Qua một số ví dụ nhằm thể hiện về cách tính diện tích của đa giác theo công tổng quát đã nêu ở trên Với những đa giác có nhiều đỉnh, tọa độ các đỉnh không đơn giản chỉ là các số chẵn thì việc tính toán không đơn giản chỉ là nhìn nhận qua hình và tính toán đơn giản như minh họa mà đòi hỏi việc tính toán ở nhiều phép tính toán hoặc tính toán với số lượng lớn, lúc

đó đòi hỏi rất cần từ công cụ là máy tính với việc lập trình bằng một chương trình cụ thể mà Input chính là tọa độ của các đỉnh của đa giác trong mặt phẳng tọa độ Oxy còn Output là diện tích của đa giác đó

Ta đưa bài toán trên với dữ liệu vào và ra như sau:

- Input: Cho trong tệp DAGIAC.INP gồm ít nhất 2 dòng

+ Dòng 1: Chứa số nguyên dương N tương ứng với N đỉnh của đa giác + Dòng 2 và các dòng tiếp theo: Chứa 2 x N số nguyên tương ứng với

x1y1 x2y2 xNyN là toạ độ các đỉnh của đa giác Mỗi số ghi cách nhau một dấu cách

- Output: Ghi kết quả là diện tích đa giác ra file DAGIAC.OUT

Trang 31

Để giải bài toán trên theo dữ liệu vào như ví dụ ta lưu toạ độ các đỉnh

đa giác vào các mảng: Vì mỗi đỉnh có 2 giá trị ứng với 2 tọa độ x,y nên để đọc dữ liệu từ tệp DAGIAC.INP các cặp tọa độ ta dùng 2 mảng một chiều

Mảng thứ nhất (Mảng X) lưu các tọa độ xi, i = 1 N

Mảng thứ hai (Mảng Y) lưu các tọa độ yi, i = 1 N

Sau đó tính diện tích đa giác theo các bước:

T2 = x2y1 + x3y2 + + xNyN-1 + x1yN

Ban đầu gán T2 = x1yN chính là T2 = X[1] * Y[N]

Sử dụng vòng lặp cho i chạy từ 1 đến N-1 tính

T2 = T2 +x2y1 + x3y2 + + xNyN-1tương đương với công thức trong vòng lặp như sau : T2=T2+X[i+1] * Y[i]

Bước 3: Tính S

Trang 32

S = |T1-T2|/2

Nội dung tính T1 và T2 ở trên là sử dụng hai vòng lặp For riêng biệt tuy nhiên cả hai vòng lặp tách biệt có biến đếm i chạy từ 1 đến N-1 vì vậy khi mô tả thuật toán và trong lập trình ta có thể dùng gộp bằng một vòng lặp For

 Thuật toán

Algorithm DT_ DAGIAC

Chức năng: Tính diện tích đa giác theo tọa độ đỉnh

Input: Số nguyên dương N tương ứng với N đỉnh của đa giác và 2 x N

số nguyên tương ứng với x1y1 x2y2 xNyN là toạ độ các đỉnh của đa giác

Output: Diện tích (S) của đa giác

Method

1 Đọc dữ liệu từ tệp DAGIAC.INP

1.1 Đọc giá trị số nguyên dòng 1 vào biến N

1.2 Lưu tọa độ các đỉnh đa giác vào các mảng: Vì mỗi đỉnh có 2 giá trị ứng với 2 tọa độ x,y nên để đọc dữ liệu từ tệp DAGIAC.INP các cặp tọa độ ta dùng 2 mảng một chiều

Mảng thứ nhất (Mảng X) lưu các tọa độ xi, i = 1 N Mảng thứ hai (Mảng Y) lưu các tọa độ yi, i = 1 N

Trang 33

5 Ghi kết quả S ra tệp DAGIAC.OUT

Các bước thuật toán trên có thể được mô tả bằng sơ đồ sau:

i > N-1

T1:= T1+x[i]*y[i+1];

T2:= T2+y[i]*x[i+1];

S:=ABS(T1-T2)/2; i: = i + 1;

Đưa ra kết quả S

Trang 34

 Độ phức tạp tính toán

Trong tệp DAGIAC.INP chứa 2 x N phần tử, khi xử lí tính toán được dựa trên 2 mảng X, Y mỗi mảng gồm N phần tử Thuật toán có tối đa

N phép duyệt khi cho i chạy từ 1 tới N-1 như vậy có tối đa N phép duyệt

Vậy độ phức tạp tính toán là O(n)

2.2 Thuật toán tìm diện tích hình chữ nhật tối đại

 Bài toán

Cho một ma trận biểu diễn bằng một mảng hai chiều kích thước N x M

ô và chỉ chứa các kí tự 0 và 1 Tìm hình chữ nhật chứa toàn kí tự 1 và có diện tích lớn nhất (gọi là hình chữ nhật tối đại) [2]

 Phân tích bài toán

Từ yêu cầu của bài toán ta xét một số ví dụ sau:

Trang 35

Lúc này ma trận trên ta tìm được hình chữ nhật tối đại chứa các kí tự 1

có diện tích là 8 ô vuông và có toạ độ đỉnh trên - trái là (Cột 2, dòng 2) và đỉnh dưới – phải là (cột 3, dòng 5)

Trang 36

Khi đó ma trận trên ta tìm được hình chữ nhật tối đại chứa các kí tự 1

có diện tích là 7 ô vuông và có toạ độ đỉnh trên - trái là (Cột 1, dòng 5) và đỉnh dưới – phải là (cột 7, dòng 5)

- Input: Tệp văn bản CNMAX.INP:

+ Dòng đầu tiên chứa 2 số tự nhiên N và M,

+ N dòng sau, mỗi dòng chứa M số 0/1

3 ≤ M ≤ 70

Trang 37

3 ≤ N ≤ 10000

- Output: Tệp văn bản CNMAX.OUT:

+ Dòng đầu tiên: Diện tích của hình chữ nhật tối đại chứa toàn kí tự 1

+ Dòng thứ hai: Tọa độ cột và dòng của đỉnh trên - trái

+ Dòng thứ ba: Toạ độ cột và dòng của đỉnh dưới - phải

Ví dụ: Với ma trận 7 x 8 chứa dữ liệu như hình 2.6 thì hình chữ nhật tối đại có diện tích là 10 ô vuông, có toạ độ đỉnh trên - trái là (Cột 2, dòng 4) và đỉnh dưới – phải là (cột 6, dòng 5)

 Ý tưởng thuật toán [2], [3], [4], [8]

Để tìm được hình chữ nhật toàn 1 có diện tích lớn nhất, ta sẽ khởi tạo các mảng sau:

- Mảng H : H[i,j]: số ô 1 liên tiếp từ ô [i,j] trở lên = chiều rộng lớn nhất của HCN đáy dưới qua ô [i,j]

- Mảng L: L[i,j]: số cột toàn 1 liên tiếp có chiều cao lớn hơn hoặc bằng H[i,j] tính từ cột j sang bên trái

- Mảng R : R[i,j]: số cột toàn 1 liên tiếp có chiều cao lớn hơn hoặc bằng H[i,j] tính từ cột j sang bên phải

Trang 38

Từ đó diện tích hình chữ nhật toàn 1 mà chiều rộng = H[i,j] và đáy dưới ở hàng i là H*(L+R-1)

Vậy kết quả bài toán tìm diện tích hình chữ nhật lớn nhất toàn 1 là MAX(H*(L+R-1))

- Tính mảng H : H[i,j] = 0 nếu A[i,j] = 0

Và = H[i-1,j]+1 nếu A[i,j]=1

Trang 39

Chức năng: Tìm diện tích hình chữ nhật tối đại chứa toàn kí tự 1

Input: Ma trận biểu diễn bằng một mảng hai chiều kích thước N x M và

chỉ chứa các kí tự 0 và 1

Trang 40

Output: Tìm hình chữ nhật chứa toàn kí tự 1 và có diện tích lớn nhất

(gọi là hình chữ nhật tối đại)

Ngày đăng: 25/05/2016, 22:45

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Đặng văn Đức (2001), Hệ thống thông tin địa lý, NXB Khoa học và kỹ thuật, Hà Nội Sách, tạp chí
Tiêu đề: Hệ thống thông tin địa lý
Tác giả: Đặng văn Đức
Nhà XB: NXB Khoa học và kỹ thuật
Năm: 2001
[2] Nguyễn Xuân Huy (2010), Sáng tạo trong thuật toán và lập trình với C#, Pascal, NXB Khoa học tự nhiên và Công nghệ, Tập 1, 2, 3 Sách, tạp chí
Tiêu đề: Sáng tạo trong thuật toán và lập trình với C#, Pascal
Tác giả: Nguyễn Xuân Huy
Nhà XB: NXB Khoa học tự nhiên và Công nghệ
Năm: 2010
[3] Lê Minh Hoàng (2002), Giải thuật và lập trình, Đại học sư phạm Hà Nội Sách, tạp chí
Tiêu đề: Giải thuật và lập trình
Tác giả: Lê Minh Hoàng
Năm: 2002
[4] Đỗ Xuân Lôi (2006), Cấu trúc dữ liệu và giải thuật, NXB Đại học quốc gia Hà Nội Sách, tạp chí
Tiêu đề: Cấu trúc dữ liệu và giải thuật
Tác giả: Đỗ Xuân Lôi
Nhà XB: NXB Đại học quốc gia Hà Nội
Năm: 2006
[5] Murray Bourne, Biên dịch: Võ Hoàng Trọng (2014), Đạo hàm tích phân ứng dụng được gì, Đại học Quốc gia TP. Hồ Chí Minh Sách, tạp chí
Tiêu đề: Đạo hàm tích phân ứng dụng được gì
Tác giả: Murray Bourne, Biên dịch: Võ Hoàng Trọng
Năm: 2014
[7] Carola Giedion-Welcker (2006), An Evolution in Volume and Space, Wittenborn Sách, tạp chí
Tiêu đề: An Evolution in Volume and Space
Tác giả: Carola Giedion-Welcker
Năm: 2006

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w