Một số kiểu dữ liệu trừu tượng ứng dụng trong hình học tính toán

82 12 0
Một số kiểu dữ liệu trừu tượng ứng dụng trong hình học tính toán

Đ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

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN THỊ HOA MỘT SỐ KIỂU DỮ LIỆU TRỪU TƯỢNG ỨNG DỤNG TRONG HÌNH HỌC TÍNH TỐN LUẬN VĂN THẠC SĨ Hà Nội – 2011 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN THỊ HOA MỘT SỐ KIỂU DỮ LIỆU TRỪU TƯỢNG ỨNG DỤNG TRONG HÌNH HỌC TÍNH TỐN Ngành : Cơng nghệ Thơng tin Chuyên ngành : Hệ thống Thông tin Mã số : 60 48 05 LUẬN VĂN THẠC SĨ NGƯỜI HƯỚNG DẪN KHOA HỌC: TS LÊ MINH HOÀNG Hà Nội – 2011 MỤC LỤC DANH SÁCH THUẬT NGỮ VÀ GIẢI THÍCH DANH SÁCH HÌNH VẼ MỞ ĐẦU Chương - TỔNG QUAN VỀ HÌNH HỌC TÍNH TỐN 1.1 Các tốn hình học tính tốn 1.2 Các đối tượng hình học 1.3 Một số tốn hình học thuật tốn 1.3.1 Bài toán xác định cặp đoạn thẳng cắt 1.3.2 Bài tốn tìm bao lồi 11 1.3.3 Bài tốn tìm cặp điểm gần 14 1.4 Kết luận 17 Chương - KIỂU DỮ LIỆU TRỪU TƯỢNG TRONG HÌNH HỌC TÍNH TỐN 18 2.1 Tìm kiếm phạm vi trực giao 18 2.1.1 Mơ hình quản lí đối tượng chiều 19 2.1.2 Mơ hình quản lí đối tượng hai chiều 22 2.1.3 Mơ hình quản lí đối tượng nhiều chiều 30 2.2 Cấu trúc liệu hình học 35 2.2.1 Interval trees 36 2.2.2 Priority search trees 41 2.2.3 Segment trees 45 2.3 Biến thể cấu trúc liệu hình học 51 2.3.1 Partition trees 52 2.3.2 Multi-level partition trees 57 2.3.3 Cutting trees 60 2.4 Kết luận 66 Chương - CÀI ĐẶT VÀ ĐÁNH GIÁ 68 3.1 Cài đặt Kd-trees 68 3.2 Cài đặt Range trees 70 3.3 Cài đặt Interval trees 72 3.4 Cài đặt Segment trees 74 3.5 Kết luận 76 KẾT LUẬN 77 TÀI LIỆU THAM KHẢO 78 DANH SÁCH THUẬT NGỮ VÀ GIẢI THÍCH Số Thuật ngữ Canonical subset Giải thích Tập qui chiều -Dimensional Kd-trees Kd-trees -Dimensional Range trees Range trees chiều Interval trees Cây quản lí khoảng Multi-level partition trees Cây phân vùng nhiều mức Partition trees Cây phân vùng Priority search trees Cây tìm kiếm ưu tiên Range queries Truy vấn phạm vi Range trees Cây phạm vi 10 Segment trees Cây quản lí đoạn thẳng 11 Stabbing queries Truy vấn stabbing 12 Windowing queries Truy vấn cửa sổ DANH SÁCH HÌNH VẼ Số Tên hình Trang Hình 1.1 Thứ tự giữacácđoạnthẳng với đườngthẳngquétdọc Hình 1.2 Tập hợp gồm điểm bao lồi 12 Hình 1.3 Thuật tốn cần kiểm tra7 điểm mảng 16 Hình 2.1 Giải thíchtruy vấncơ sở liệu cách hình 18 Hình 2.2 Truy vấn phạm vi chiều nhị phân tìm kiếm 20 Hình 2.3 Kd-trees: mặt phẳng chia nhị phân 23 Hình 2.4 Các nútcủa kd-trees vàvùngmặt phẳng 24 Hình 2.5 Truy vấn kd-trees hai chiều 25 Hình 2.6 Range trees hai chiều 27 Hình 2.7 Tăng tốc độ tìm kiếm cách thêm trỏ 33 Hình 2.8 Cây chínhcủarange trees phântầng 34 Hình 2.9 Các mảngliên kếtvớicác núttrongcây 34 Hình 2.10 Truy vấn cửa sổ đồ U.S 36 Hình 2.11 Phân loại đoạn thẳng liên quan với 38 Hình 2.12 Interval trees 39 Hình 2.13 Các đoạn thẳngcắt qcóđiểm đầu mút trái 40 Hình 2.14 Heap tập hợp {1,3,4,8,11,15,21,22,36} 42 Hình 2.15 Một tập hợp điểm tìm kiếm ưu tiên tương ứng 43 Hình 2.16 Truy vấn tìm kiếm ưu tiên 43 Hình 2.17 Đoạn thẳng lưu v thay lưu trữ Hình 2.18 Segment trees: mũi têntừcácnúttrỏtới tập qui Tập qui chứacác đoạnthẳng màbao trùmsàncủamột nút, khơng phải làsàncủacha 48 Hình 2.20 Mật độ dân số Hà Lan 51 Hình 2.21 Trả lời truy vấn nửa đường thẳng với nhị phân 53 Hình 2.22 Một phân vùng đơn hình tốt 54 Hình 2.23 Phân vùng mặt phẳng đơn hình tương ứng 54 Hình 2.19 47 49 Số Tên hình Trang Hình 2.24 Trả lời truy vấn phạm vi nửa mặt phẳng với partition trees 56 Hình 2.25 Đếm phạm vi nửa mặt phẳngtrongmặt phẳng đối ngẫu 60 Hình 2.26 (1/2) - cutting kích thước 10 cho tập hợp đường thẳng 61 Hình 2.27 Cáctập quivàtập conđiquatam giác 62 Hình 2.28 Tìm kiếm phạm vi tam giác 63 Hình 3.1 Sơ đồ lớp thực Kd-trees 68 Hình 3.2 Sơ đồ lớp thực Range trees 70 Hình 3.3 Sơ đồ lớp thực Interval trees 72 Hình 3.4 Sơ đồ lớp thực Segment trees 74 MỞ ĐẦU Hình học tính tốn xuất từ lĩnh vực phân tích thiết kế thuật tốn cuối năm 1970 lớn mạnh trở thành mơn học với tạp chí riêng, hội nghị riêng có cộng đồng lớn nhà nghiên cứu hoạt động Hình học tính tốn chun ngành khoa học máy tính nghiên cứu thuật tốn giải tốn hình học Hình học tính tốn có ứng dụng nhiều lĩnh vực khác đồ họa máy tính, hệ thống thơng tin địa lí, người máy, thống kê lĩnh vực khác mà thuật tốn hình học đóng vai trị Vấn đề hình học tính tốn với đầu vào mô tả kiểu tập hợp đối tượng hình học, ví dụ tập hợp điểm, tập hợp đoạn thẳng, tập hợp đỉnh đa giác theo thứ tự ngược chiều kim đồng Đầu đáp ứng với truy vấn đối tượng đường thẳng cắt nhau, đối tượng hình học mới, ví dụ bao lồi tập hợp điểm Các đối tượng hình học điểm, đường thẳng đa giác sở loạt ứng dụng quan trọng làm tăng tính thú vị tập hợp vấn đề thuật toán Ngày nay, máy tính sử dụng ngày nhiều để giải tốn hình học với quy mơ lớn Lời giải tốt cho toán thuật toán có tính chất hình học chủ yếu dựa hai thành phần Một hiểu biết thấu đáo tính chất hình học tốn, hai ứng dụng kỹ thuật thuật toán cấu trúc liệu thích hợp Trong luận văn trình bày số kiểu liệu trừu tượng cấu trúc liệu hình học tính tốn Những ứng dụng cấu trúc liệu không giới hạn đối tượng hình học mà cịn cho phép thiết kế thuật tốn hiệu quả, xử lí loại liệu khác nhiều toán khác Luận văn tổ chức thành chương sau: Chương – Trình bày tổng quan hình học tính tốn đối tượng hình học, số tốn hình học thuật tốn Chương – Mơ tả kiểu liệu trừu tượng hình học tính tốn mơ hình quản lí đối tượng chiều, hai chiều nhiều chiều Chương – Cài đặt cấu trúc liệu, kết cài đặt thử nghiệm, đánh giá hiệu suất thuật tốn chương trình Chương - TỔNG QUAN VỀ HÌNH HỌC TÍNH TỐN 1.1 Các tốn hình học tính tốn Hình họctính tốnlà mộtchun ngành củakhoa họcmáy tínhnghiên cứucácthuật tốncó nội dung hình học Một sốbài tốnhình họcphát sinh hồn tồntừviệc nghiên cứu cácthuật tốnhình học tính tốnvà cácbài tốnnàycũng đượcxemlà phần củahình học tính tốn Hình học tính tốn nghiên cứusự phức tạpcủa cácbài tốnhình học, xây dựngcấu trúc liệuđểlưu trữcác loại liệuhình học, thiết kếthuật tốncho cácbài tốnhình học khám phácác tính chấthình học Những vấn đề cốt lõi hình học tính tốn chia với nhiều cách khác nhau, theo nhiều tiêu chí khác Ở đây, phân loại tốntrong hình học tính tốn thành lớp tốn đây[1] 1.1.1 Bài toán tĩnh Trong cácbài toántĩnhcho trướcđầu vàovàđầu ratương ứngcần phải đượcxây dựng hoặcđược tìm thấy.Một sốbài toáncơ bảncủa loại nàylà: Convex Hull: Cho tập hợp điểm yêu cầu tìm đa giác lồi nhỏ chứa tất điểm Line segment intersection: Cho tập hợp đoạn thẳng yêu cầu tìm điểm cắt đoạn thẳng trongtập hợp cho trước Polygon cutting: Chia đa giác thành dạng hình học khác với tổng chiều dài chia nhỏ Delaunay triangulation Voronoi diagram: Cho tập hợp điểm u cầu tìm phân vùng khơng gian theo điểm đóng Linear programming Closest pair of points: Cho tập hợp điểm u cầutìm cặp điểm có khoảng cách nhỏ Euclidean shortest path: Nối hai điểm không gian Euclide đường ngắn Polygon triangulation: Cho trước đa giác yêu cầuphân chia phần đa giác thành tam giác Độ phức tạptính tốncholớp cácbài tốnnày làước tính thời gian vàkhông gian cần thiết để giải quyếtmột trường hợp tốnnhất định 1.1.2Bài tốn động Thêm lớpchínhlà tốnđộng,vớimục tiêu đểtìmthuật tốnhiệu quảcho việc tìm lời giảinhiều lầnsau lầnsửa đổigia tăng liệu đầu vào Các thuật toáncho toánthuộc loại nàythườngliên quan đếncấu trúcdữ liệu động Bất kỳcác tốnhình họctính tốncó thể đượcchuyển đổi thành mộtbài tốn động.Bài tốntìm kiếmphạm vicó thểđược chuyển đổi thànhbài tốntìm kiếmphạm vi động,bằng cách cung cấpbổ sunghoặcxóacác điểm.Cácbài toánbao lồi độnglà đểlưu vết cácbaolồi,chẳng hạn tập hợp điểmthay đổi động, khicác điểmđầu vàođược chènhoặcxóa 1.1.3Bài tốn truy vấn hình học Bài tốn truy vấn hình họcthường gọi làbài tốntìm kiếmhình học,đầu vàobao gồm hai phần: khơng gian tìm kiếmvà truy vấn với thay đổitrongcác trường hợpbài tốn.Khơng giantìm kiếmthườngphải đượcxử lí trước, cách mànhiều truy vấn đượctrả lờimột cách hiệu quả.Một sốbài tốntruy vấnhình họccơ bảnlà: Range Searching: Xử lí trướctập hợp điểm yêu cầuđếm số lượng cácđiểmnằm vùngtruy vấn cách hiệu Points Location: Cho phân vùngcủa không gianthành ô yêu cầu tạo racấu trúcdữ liệuhiệu quảchoô nơi điểmtruy vấnđược định vị Nearest neighbor:Cho tập hợp điểm yêu cầutìmđiểm nằm gần vớiđiểmtruy vấn cách hiệu Raytracing: Cho tập hợp đối tượngtrong không gian yêu cầu tạo racấu trúcdữ liệuhiệu quảchođối tượngcó tiatruy vấncắtđầu tiên Nếu khơng gian tìm kiếm cố định, độ phức tạp tính tốn cho tốn truy vấn hình họcđược ước tính thời gian khơng gian cần thiết để xây dựng cấu trúc liệu tìm kiếm thời gian trả lời truy vấn 1.1.4Các biến thể Một số tốncó thểđược xem làthuộcmột cácloại trên,tùy thuộcvào bối cảnh.Chẳng hạn xét toán: Point in polygon – Xác định điểm nằm hay nằm ngồi đa giác cho trước.Trong vài tình tốn truy vấn kỳ vọng hợp lí vào thứ tự truy vấn, khai thác với cấu trúc liệu hiệu ước tính độ phức tạp chặt chẽ 1.2 Các đối tượng hình học Máy tính ngày sử dụng nhiều để giải toán có quy mơ lớn hình học Các đối tượng hình học điểm, đoạn thẳng đa giác nguồn gốc tập đáng kể tốn thuật tốn 1.2.1 Điểm Trong khơng gian hai chiều, đối tượng sở điểm biểu diễn cặp số nguyên – tọa độ điểm hệ trục tọa độ Descart Một điểm mặt phẳng có tọa độ tọa độ , kí hiệu [13] 1.2.2 Đoạn thẳng Một tổ hợp lồi hai điểm phân biệt điểm cho Đoạn thẳng tập hợp tổ hợp lồi điểm đầu mút đoạn thẳng đoạn thẳng Hay viết dạng khác với và định hướng từ đến , kí hiệu , với Đoạn thẳng có hướng , kí hiệu [13] 1.2.3 Vectơ Vectơ đoạn thẳng có hướng Vectơ có điểm đầu kí hiệu điểm cuối , Khi không cần rõ điểm đầu, điểm cuối ta kí hiệu Tọa độ vectơ = với ; [13] 1.3 Một số toán hình học thuật tốn 1.3.1 Bài tốn xác định cặp đoạn thẳng cắt Thuật toánxác định cặp đoạn thẳng bất kỳtrong tập hợp đoạn thẳng cắt sử dụng “kỹ thuật quét” Trongkỹ thuật quét, đường thẳngquétdọcđiquatập hợp đối tượng hình họctừtráisangphải vàxem xét tất cảcácđiểm đầu mút củađoạn thẳng theo thứ tự từtráisangphải vàkiểm trasự cắt khichạmmộtđiểm đầu mút 1.3.1.1 Phát biểu toán Cho tập hợp đoạn thẳng mặt phẳng yêu cầu xác định có tồn cặp đoạn thẳng cắt hay không Giả sử khơng có đoạn thẳng 66 màtínhtổng trêntất concủagốclà cáccon củagốc Sốlượng chomỗicon Nếu làmộthằng số đủlớn, cơng thức truy hồi có lời giải với Định lí2.19 Cho tập hợpgồm trúc liệucho gọi điểmtrongmặt phẳng Với làcutting trees có sử , cócấu dụng lưu màcácđiểmtừ nằmtrongtam giáccó thểtruy vấnđược tínhtrongthời trữ Các điểmcó thểđược báo cáo trongthời gianbổ sung gian làsốđiểm báo cáo Cấu trúcnày đượcxây dựngtrongthời gian , với [5] 2.4 Kết luận Tìm kiếmphạm vi làmột nhữngvấn đềnghiên cứuhay hình họctính tốn Kd-trees Bentley [2] đưa vào năm 1975 với thời gian truy vấn Range trees phát độc lập Bentley [4], Lee , phân tầng mô tả Wong [20] với thời gian truy vấn Lueker [21] Willard [31] Cấu trúc liệu hiệu cho truy vấn phạm vi hai chiều range trees phân tầng mô tả Chazelle [6] với việc cải tiến thời gian lưu trữ đến vấn giữ thời gian truy Cấutrúc interval treescho cáctruy vấn đưa bởiEdelsbrunner[14] McCreight[24] Câytìm kiếmưu tiênđượcthiết kếbởiMcCreight[25] khẳng địnhcó thểsử dụng câytìm kiếmưu tiênchotruy vấn stabbinglà vấn tốt.Thực hiệntruy vấn stabbingvới phạm vitruy Segment trees đượcphát hiệnbởiBentley[3] sử dụngnhư cấu trúc liệumột chiềuchotruy vấn stabbing Vì vậy, có nhiềuphần mở rộngcủasegment trees xử lívớicác đối tượnghai chiềuvà chiều cao hơn[9, 14, 15, 29] Willard[32] ngườiđầu tiêntrình bày cấu trúcdữ liệudựatrêný tưởnggiống partition trees, phân vùngmặt phẳng thành vùng Làtốt hơnphân vùngđơn hìnhđã đượcphát triển,hiệu hơnpartition treeslà [10, 16, 18, 33] Cải tiếncó thể đượcbằng cách sử dụngcấu trúchơikhácso vớipartition trees,cụ thể làcâybao trùmvớisốlượng quathấp[11, 30] Giải pháptốt nhấtchotìm kiếmphạm vitam giácđã đượcđưa rabởiMatousek[21] 67 Chazelle[7]phát biểu rằngcómộtcấu trúc liệucho tìm kiếm phạm vi tam giác, sử dụng lưu trữ cóthời giantruy vấn Hiện cácthuật tốnnổi tiếngnhấtlàcủa Chazelle[8]chỉ vớibất kỳtham số - cuttingcủakích thước , có thểtínhtốn vớithuật tốntất địnhmà chi phíthời gian Partition treessử dụngkhơng giantuyến tínhnhưngthời giantruy vấnlàkhácao Cutting trees cóthời giantruy vấnlogaritnhưngkhơng gian lưu trữ lớn, lý tưởng làcómộtcấu trúcsử dụngkhơng giantuyến tínhvàthời giantruy vấnlogarit Kết quảcải tiến có thểởchiềucao hơnnhư:cácđiểmtrong truy vấnnửakhông gianđược báo cáo vớithời gian vớicấu trúcdữ liệusử dụnglưu trữ [23] 68 Chương - CÀI ĐẶT VÀ ĐÁNH GIÁ Mặc dù hiệu suất cấu trúc liệu hình học chứng minh lý thuyết, việc cài đặt vài thực nghiệm cần thiết để đánh giá độ lớn số ẩn ký pháp đánh giá thời gian thực giải thuật Có loại cấu trúc tiến hành thực nghiệm: Kd-trees, Range trees, Interval trees Segment trees 3.1 Cài đặt Kd-trees Mục tiêu thực nghiệm đánh giá tốc độ thuật tốn tìm láng giềng gần thuật toán truy vấn phạm vi với hỗ trợ Kd-trees 3.1.1 Cấu trúc liệu Kd-trees nhị phân nút biểu diễn điểm không gian với chiều KdTree KdNode point :CoordPoint data : void* allnodes : vector root : kdtree_node* dimension: int distance : DistanceMeasur e* KdTree_Node KdTree(nodes : vector) k_nearest_neighbors(point : CoordPoint, point : CoordPoint cutdim : int hison, loson : kdtree_node* hibound, lobound: CoordPoint dataindex : int k : int, result : vector*) DistanceMeasure distance( : CoordPoint) : double coord_distance( : double, : int) : double neighbor_search(point : CoordPoint, node :kdtree_node*, k : int) ball_within_bounds(point : CoordPoint, dist : double, node : kdtree_node*) bounds_overlap_ball(point : CoordPoint, dist : double, node : kdtree_node*) build_tree(depth : int, index_a : int, index_b : int) : kdtree_node* Hình 3.1 - Sơ đồ lớp thực Kd-trees Cài đặt cấu trúc liệu Kd-trees gồm lớp: , Trong đó: lớp , kế thừa lớp , ; 3.1.2Tiến hành thực nghiệm Thực nghiệm ứng dụng truy vấn phạm vi với đầu vào tập hợp điểm mặt phẳng phạm vi truy vấn hình chữ nhật Với truy vấn, 69 thuật toán cần đưa tất điểm nằm phạm vi hình chữ nhật Trong thực nghiệm này, người sử dụng tạo liệu đầu vào điểm kích thước hình chữ nhật ta nhận đầu điểm phù hợp với truy vấn hiển thị màu đỏ đưa kết tìm điểm nằm phạm vi truy vấn Thực nghiệm ứng dụng tìm láng giềng gần nhận đầu vào tập hợp điểm mặt phẳng đưa các điểm láng giềng gần với điểm tạo ngẫu nhiên Trong thực nghiệm này, liệu đầu vào tập hợp gồm điểm mặt phẳng tạo ra, phép tìm láng giềng tạo điểm ngẫu nhiên phân bố đồng mặt phẳng Các điểm tạo hiển thị màu vàng khoảng cách đến điểm láng giềng gần hiển thị đoạn thẳng màu đỏ Dữ liệu đầu vào tập hợp gồm 20 điểm mặt phẳng Dữ liệu đầu vào tập hợp gồm 22 điểm mặt phẳng 3.1.3Đánh giá kết thực nghiệm Qua thực nghiệm, ta thấy thời gian thực tìm kiếm phạm vi tìm kiếm láng giềng Kd-Trees nhanh Trong tìm kiếm phạm vi với khơng gian lưu trữ tuyến tính tốc độ vấn nhanh, nhiên số điểm trả nhỏ thời gian truy vấn tương đối cao 70 3.2 Cài đặt Range trees Ta biết trường hợp truy vấn chiều, thời gian trả lời range trees truy vấn phạm vi với kd-trees để trả lời truy vấn Về mặt lý thuyết đại lượng nhanh đại lượng tăng chênh lệch giá trị hai đại lượng đáng kể với giá trị lớn Để đánh giá ưu range trees so với kd-trees, ta cần tiến hành thực nghiệm với liệu kích thước lớn 3.2.1 Cấu trúc liệu Các lớpmẫu với ba đối số: , định nghĩa kiểu liệu đầu vào kiểu Kiểu định nghĩa cửa sổ truy vấn Cây sử dụng xác định tập hợp hàm theo thứ tự truy cập liệu Các hàm cung cấp lớp Tree_base Data Tree_base *sublayer_tree; Tree_base(Tree_base & sublayer_prototype); Tree_base *clone(); template virtual bool make_tree(T& begin, T& end); template virtual T window_query(Window& w, T out); Window Tree_traits Range_tree< Tree_traits> Tree_anchor Range_tree (Tree_base & sub_proto); Range_tree *clone(); template bool make_tree(T& begin, T& end); template T window_query(Window & w, T out); Tree_anchor (); Tree_anchor *clone(); template bool make_tree(T& begin, T& end); template T window_query(Window& w, T out); Hình 3.2 - Sơ đồ lớp thực Range trees Tiến hành cài đặt cấu trúc liệu Range trees gồm lớp: ; kế thừa lớp Trong đó: lớp Tree_anchor; định nghĩa sau: typedef Tree_anchor Tree_Anchor; typedef Range_Tree Range_Tree; ; 71 Lớp lớp nhận hai tham số mẫu: lớp định nghĩa loại liệu lưu trữ (các điểm) lớp nghĩa kiểu phạm vi truy vấn nhận lời gọi định định nghĩa giao diện liệu struct Data{ double point; // Dữ liệu điể m }; struct Window{ int min, max; double min_ point, max_point; }; class Point_traits{ public: typedef doubleKey; Key get_key(Data& d){return d.point;} Key get_left(Window& w){return w.min_point;} Key get_right(Window& w){return w.max_point;} bool comp(Key& key1, Key & key2){return (key1 < key2);} } 3.2.2 Tiến hành thực nghiệm Tiến hành thực nghiệm tìm kiếm phạm vi trực giao không gian hai chiều: Dữ liệu đầu vào tập hợp điểm (có thể lớn) tạo ngẫu nhiên mặt phẳng có điểm di chuyển mặt phẳng (có tọa độ thay đổi) phạm vi truy vấn hình chữ nhật Trả lời cho truy vấn phạm vi hình chữ nhật đưa tất điểm nằm phạm vi truy vấn hình chữ nhật 72 3.2.3Đánh giá kết thực nghiệm Qua thực nghiệm, việc sử dụng range trees có tốc độ truy vấn nhanh, thời gian trả lời truy vấn nói chung khơng đo đếm nhịp đồng hồ máy tính, thời gian truy vấn phụ thuộc vào số điểm khơng phụ thuộc vào kích thước phạm vi truy vấn 3.3 Cài đặt Interval trees Trong cài đặt interval trees, ta chọn ứng dụng truy vấn stabbing để đánh giá tốc độ interval trees làm việc với liệu lớn Với truy vấn stabbing, ta có tập hợp gồm đoạn thẳng song song với trục tọa độ truy vấn yêu cầu đưa tất đoạn thẳng cắt đoạn thẳng truy vấn dọc 3.3.1 Cấu trúc liệu Các lớp mẫu với ba đối số: , định nghĩa kiểu liệu đầu vào kiểu vấn Các hàm cung cấp lớp Kiểu định nghĩa cửa sổ truy Tree_base Data Tree_base *sublayer_tree; Tree_base(Tree_base & sublayer_prototype); Tree_base *clone(); template virtual bool make_tree(T& begin, T& end); template virtual T window_query(Window& w, T out); Window Tree_traits Interval_Tree Tree_anchor Interval_Tree(Tree_base & sub_proto); Interval_Tree *clone(); template bool make_tree(T& begin, T& end); template T window_query(Window& w, T out); Tree_anchor (); Tree_anchor *clone(); template bool make_tree(T& begin, T& end); template T window_query(Window& w, T out); Hình 3.3 - Sơ đồ lớp thực Interval trees Cài đặt cấu trúc liệu Interval trees bao gồm lớp: ; thừa lớp Với lớp định nghĩa ; sau: ; kế 73 typedef Tree_anchor Tree_Anchor; typedef Interval_Tree Interval_Tree; Lớp lớp nhận hai tham số mẫu: lớp định nghĩa loại liệu lưu trữ (các khoảng) lớp định nghĩa kiểu phạm vi truy vấn định nghĩa giao diện nhận lời gọi struct Data{ int min, max; // Dữ liệu khoả ng }; struct Window{ int min, max; double min_ point, max_point; }; class Interval_traits{ public: typedef int Key; Key get_left(Data& d){return d.min;} Key get_right(Data& d){return d.max;} Key get_left_win(Window& w){return w.min;} Key get_right_win(Window& w){return w.max;} bool comp(Key & key1, Key & key2){return (key1 < key2);} } 3.3.2 Tiến hành thực nghiệm Thực nghiệm tiến hành với đoạn thẳng ngẫu nhiên chuyển động mặt phẳng ( người sử dụng tự chọn) đoạn thẳng có phương song 74 song với trục tọa độ Với đoạn thẳng truy vấn dọc, thực nghiệm đưa tất đoạn thẳng cắt đoạn thẳng truy vấn 3.3.3Đánh giá kết thực nghiệm Thực nghiệm cho thấy tốc độ interval trees trả lời truy vấn stabbing nhanh, thời gian phụ thuộc vào số đoạn thẳng đầu vào , lớn (cỡ ), thời gian trả lời truy vấn stabbing không đo đếm nhịp đồng hồ máy tính 3.4 Cài đặt Segment trees Segment trees thường so sánh với interval trees chúng có nhiều ứng dụng chung Trong thực nghiệm muốn đánh giá tốc độ truy vấn stabbing trường hợp đoạn thẳng đầu vào không thiết phải có phương song song với trục tọa độ 3.4.1 Cấu trúc liệu Các lớp mẫu với ba đối số: , định nghĩa kiểu liệu đầu vào kiểu Kiểu định nghĩa cửa sổ truy vấn Cây sử dụng xác định tập hợp hàm theo thứ tự truy cập liệu Các hàm cung cấp lớp Data Window Tree_traits Tree_base Tree_base *sublayer_tree; Tree_base(Tree_base & sublayer_prototype); Tree_base *clone(); template virtual bool make_tree(T& begin, T& end); template virtual T window_query(Window& w, T out); Segment_Tree< Tree_traits> Tree_anchor Segment_Tree (Tree_base & sub_proto); Segment_Tree *clone(); template bool make_tree(T& begin, T& end); template T window_query(Window& w, T out); Tree_anchor (); Tree_anchor *clone(); template bool make_tree(T& begin, T& end); template T window_query(Window& w, T out); Hình 3.4 - Sơ đồ lớp thực Segment trees 75 Cài đặt cấu trúc liệu Segment trees bao gồm lớp: ; thừa lớp Với lớp định nghĩa ; ; kế sau: typedef Tree_anchor Tree_Anchor; typedef Segment_Tree Segment_Tree; Lớp lớp nhận hai tham số mẫu: lớp định nghĩa loại liệu lưu trữ (các khoảng) lớp định nghĩa kiểu phạm vi truy vấn định nghĩa giao diện nhận lời gọi struct Data{ int min, max; // Dữ liệu khoả ng }; struct Window{ int min, max; double min_ point, max_point; }; class Interval_traits{ public: typedef int Key; Key get_left(Data& d){return d.min;} Key get_right(Data& d){return d.max;} Key get_left_win(Window& w){return w.min;} Key get_right_win(Window& w){return w.max;} bool comp(Key & key1, Key & key2){return (key1 < key2);} } 3.4.2 Tiến hành thực nghiệm Dữ liệu đầu vào tập hợp đoạn thẳng phân biệt, không giao nhau, có phương tùy ýtrong mặt phẳng đoạn thẳng truy vấn dọc kết đưa tất đoạn thẳng cắt đoạn thẳng truy vấn dọc 3.4.3Đánh giá kết thực nghiệm Qua thực nghiệm cho thấy tốc độ Segment trees trả lời truy vấn stabbing nhanh, thời gian phụ thuộc vào số đoạn thẳng đầu vào 76 , lớn (cỡ ), thời gian trả lời truy vấn stabbing không đo đếm nhịp đồng hồ máy tính Tuy vậy, việc thực nghiệm với đoạn thẳng động gặp khó khăn segment trees yêu cầu tập đoạn thẳng đầu vào đôi không cắt Việc xử lí truy vấn stabbing trường hợp đoạn thẳng đầu vào cắt vấn đề khó để xử lí làm gia tăng thời gian thực giải thuật Ngay việc sinh đoạn thẳng chuyển động ngẫu nhiên cho chúng khơng cắt vấn đề khó, chạy thử với liệu tĩnh.Bằng việc đưa vào số lượng lớn truy vấn, đo thời gian trả lời truy vấn Về tốc độ segment trees tương đương với interval trees, nhiên việc cài đặt phức tạp nhiều 3.5 Kết luận Trong chương này, tiến hành thực nghiệm đánh giá kết thực nghiệm việc cài đặt cấu trúc liệu Kd-trees, Range trees, Segement trees Interval trees để giải toán ứng dụng Với cấu trúc liệu có ưu nhược điểm riêng tùy vào tốn ứng dụng cụ thể mà ta chọn cấu trúc liệu phù hợp làm giảm thời gian thực giải thuật 77 KẾT LUẬN Với cách tiếp cận luận văn kiểu liệu trừu tượng ứng dụng hình học tính tốn đặt vấn đề nghiên cứu số kiểu liệu trừu tượng cấu trúc liệu hình học tính tốn Những ứng dụng chúng khơng giới hạn đối tượng hình học, mà cịn cho phép thiết kế thuật tốn hiệu quả, xử lí loại liệu khác nhiều tốn khác nhau.Ngồi vai trị cấu trúc liệu quan trọng lĩnh vực hình học tính tốn, biết thuật tốn hình học tính tốn khơng thể hiệu thiếu hỗ trợ cấu trúc liệu cấu trúc liệu không ứng dụng giải tốn hình học tính tốn mà cịn nhiều tốn khác Trong luận văn này, chúng tơi trình bày vấn đề hình học tính tốn, đối tượng hình học số kỹ thuật thuật tốn giải tốn tìm cặp đoạn thẳng cắt nhau, tìm bao lồi, tìm cặp điểm gần Bên cạnh chúng tơi nghiên cứu sở lý thuyết cấu trúc liệuđể giải tốn hình học tính tốn Tìm kiếm phạm vi trực giao với phạm vi truy vấn hình chữ nhật song song với trục tọa độsử dụng cấu trúc liệu Range trees Kd-trees Cấu trúc liệu hình học Interval trees, Segment trees Priority search trees Interval trees, Segment trees dựa tiếp cận stabbing Priority search trees giải truy vấn không bị giới hạn bên trái, nghĩa phạm vi truy vấn có dạng Biến thể cấu trúc liệu hình học Partitiontrees, Multi-level partition trees, Cutting trees với phạm vi truy vấn nửa mặt phẳng hay hình tam giác Phần cuối luận văn, từ sở lý thuyết trình bày trên, tiến hành cài đặt thực nghiệm kiểu liệu trừu tượng Kd-trees, Range trees, Interval trees Segment trees Như ta biết, cấu trúc liệu vạn để giải tốn mà cấu trúc liệu có ưu nhược điểm riêng tùy vào toán cụ thể mà ta chọn cấu trúc liệu phù hợp cho tốn hình học cụ thể 78 TÀI LIỆU THAM KHẢO I Ahmed and M A Islam, “Algorithms in Computational Geometry”, Department of Computer Science and Engineering(BUET), Dhaka J L Bentley (1975), “Multidimensional binary search trees used for associative searching”, Commun ACM, 18, pp 509-517 J L Bentley (1977), “Solutions to Klee’s rectangle problems”, Technical report, Carnegie-Mellon Univ., Pittsburgh, PA J L Bentley (1979), “Decomposable searching problems”, Inform Process Lett., 8, pp 244-251 M de Berg, O Cheong, M van Kreveld, M Overmars (2000), Computational Geometry: algorithms and applications, Springer B Chazelle (1986), “Filtering search: A new approach to queryanswering”, SIAM J.Comput., 15, pp 703-724 B Chazelle (1989), “Lower bounds on the complexity of polytope range searching”, J Amer Math Soc., 2, pp 637-666 B Chazelle (1993), “Cutting hyperplanes for divide-and-conquer”, Discrete Comput Geom., 9, pp 145-158 B Chazelle, H Edelsbrunner, L Guibas, and M Sharir (1994), “Algorithms for bichromatic line segment problems and polyhedral terrains”, Algorithmica, 11, pp 116-132 10 B Chazelle, M Sharir, and E Welzl (1992), “Quasi-optimal upper bounds for simplex range searching and new zone theorems”, Algorithmica, 8, pp 407-429 11 B Chazelle and E Welzl (1989), “Quasi-optimal range searching in spaces of finite VC-dimension”, Discrete Comput Geom., 4, pp 467-489 12 J Chen (1996), Computational Geometry: Methods and applications, Computer Science Department, Texas A&M University 13 T H Cormen, C E Leiserson, R L Rivest and C Stein (2001), Introduction to Algorithms, Second Edition, MIT Press, Cambridge 14 H Edelsbrunner (1980), “Dynamic data structures for orthogonal intersection queries”, Report F59, Inst Informationsverarb., Tech Univ Graz, Graz, Austria 15 H Edelsbrunner and H A Maurer (1981), “On the intersection of orthogonal objects”, Inform Process Lett., 13, pp 177-181 79 16 H Edelsbrunner and E Welzl (1986), “Halfplanar range search in linear space and query time”, Inform Process Lett., 23, pp 289-293 17 R L Graham (1972), “An efficient algorithm for determining the convex hull of a finite planar set”, Inform Process Lett., 1, pp.132-133 18 D Haussler and E Welzl (1987), “Epsilon-nets and simplex range queries”, Discrete Comput Geom., 2, pp 127-151 19 R A Jarvis (1973), “On the identification of the convex hull of a finite set of points in the plane”, Inform Process Lett., 2, pp 18-21 20 D T Lee and C K Wong (1980), “Quintary trees: A file structure for multidimensional database systems”, ACM Trans Database Syst., 5, pp 339-353 21 G S Lueker (1978), “A data structure for orthogonal range queries”, In Proc 19th Annu IEEE Sympos Found Comput Sci., pp 28-34 22 J Matousek (1992), “Efficient partition trees”, Discrete Comput Geom., 8, pp 315-334 23 J Matousek (1992), “Reporting points in halfspaces”, Comput Geom Theory Appl., 2, pp 169-186 24 E M McCreight (1980), “Efficient algorithms for enumerating intersecting intervals and rectangles”, Report CSL-80-9, Xerox Palo Alto Res Center, Palo Alto, CA 25 E M McCreight (1985), “Priority search trees”, SIAM J Comput., 14, pp 257-276 26 D M Mount (2002), Computational Geometry, Department of Computer Science, University of Maryland 27 F P Preparata and M I Shamos (1985), Computational Geometry: An Introduction, Springer-Verlag 28 M I Shamos and D Hoey (1976), “Geometric intersection problems”, In Proceedings of the 17th Annual Symposium on Foundations of Computer Science, pp 208-215 29 V K Vaishnavi and D Wood (1982), “Rectilinear line segment intersection, layered segment trees and dynamization”, J Algorithms, 3, pp 160-176 30 E Welzl (1988), “Partition trees for triangle counting and other range searching problems”, In Proc 4th Annu ACM Sympos Comput Geom., pp 80 23-33 31 D E Willard (1978), Predicate-Oriented Database Search Algorithms, Ph.D thesis, Aiken Comput Lab., Harvard Univ., Cambridge, MA 32 D E Willard (1982), “Polygon retrieval”, SIAM J Comput., 11, pp 149165 33 A C Yao and F F Yao (1985), “A general approach to D-dimensional geometric queries”, In Proc 17th Annu ACM Sympos, Theory Comput., pp 163-168 34 http://www.cgal.org ... hai ứng dụng kỹ thuật thuật toán cấu trúc liệu thích hợp Trong luận văn trình bày số kiểu liệu trừu tượng cấu trúc liệu hình học tính tốn Những ứng dụng cấu trúc liệu khơng giới hạn đối tượng hình. .. - TỔNG QUAN VỀ HÌNH HỌC TÍNH TỐN 1.1 Các tốn hình học tính tốn Hình họctính tốnlà mộtchun ngành củakhoa họcmáy tínhnghiên cứucácthuật tốncó nội dung hình học Một sốbài tốnhình họcphát sinh hồn...ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN THỊ HOA MỘT SỐ KIỂU DỮ LIỆU TRỪU TƯỢNG ỨNG DỤNG TRONG HÌNH HỌC TÍNH TỐN Ngành : Công nghệ Thông tin Chuyên ngành : Hệ thống Thông tin Mã số

Ngày đăng: 16/03/2021, 10:18

Mục lục

  • MỤC LỤC

  • DANH SÁCH THUẬT NGỮ VÀ GIẢI THÍCH

  • DANH SÁCH HÌNH VẼ

  • MỞ ĐẦU

  • Chương 1 - TỔNG QUAN VỀ HÌNH HỌC TÍNH TOÁN

  • 1.1 Các bài toán của hình học tính toán

  • 1.1.1 Bài toán tĩnh

  • 1.1.2 Bài toán động

  • 1.1.3 Bài toán truy vấn hình học

  • 1.1.4 Các biến thể

  • 1.2 Các đối tượng hình học

  • 1.2.1 Điểm

  • 1.2.2 Đoạn thẳng

  • 1.2.3 Vectơ

  • 1.3 Một số bài toán hình học và thuật toán

  • 1.3.1 Bài toán xác định cặp đoạn thẳng bất kỳ cắt nhau

  • 1.3.2 Bài toán tìm bao lồi

  • 1.3.3 Bài toán tìm cặp điểm gần nhất

  • 1.4 Kết luận

  • Chương 2 - KIỂU DỮ LIỆU TRỪU TƯỢNG TRONG HÌNH HỌC TÍNH TOÁN

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

  • Đang cập nhật ...

Tài liệu liên quan