Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 68 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
68
Dung lượng
1,07 MB
Nội dung
i ĐẠI HỌC THÁI NGUYÊN TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG NGUYỄN ĐẶNG PHÚ TÌM KIẾM THÔNG TIN DỰA VÀO CẤU TRÚC DỮ LIỆU HEAP LUẬN VĂN THẠC SĨ: KHOA HỌC MÁY TÍNH Thái Nguyên - Năm 2015 Số hóa Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/ ii LỜI CAM ĐOAN Tôi xin cam đoan luận văn tự thân tìm hiểu, nghiên cứu Các tài liệu tham khảo trích dẫn thích đầy đủ Nếu không xin hoàn toàn chịu trách nhiệm Tác giả luận văn Nguyễn Đặng Phú Số hóa Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/ iii LỜI CẢM ƠN Lời xin bày tỏ lòng biết ơn chân thành đến Ban Giám Hiệu, thầy giáo, cô giáo phòng Sau đại học trường Đại học Công Nghệ Thông Tin & Truyền Thông, thầy giáo Viện Công Nghệ Thông Tin giảng dạy tạo điều kiện cho học tập, nghiên cứu hoàn thành luận văn Đặc biệt, xin bày tỏ kính trọng lòng biết ơn sâu sắc đến TS Bùi Văn Thanh, người tận tình hướng dẫn giúp đỡ suốt trình học tập, nghiên cứu hoàn thành luận văn Tôi chân thành cảm ơn thầy cô tổ Tin học, trường Trung học phổ thông chuyên Lam Sơn, Thanh Hóa, nơi công tác tạo điều kiện hỗ trợ suốt thời gian qua Tôi xin chân thành cảm ơn người thân, bạn bè giúp đỡ động viên suốt thời gian học tập thời gian thực luận văn Xin chân thành cảm ơn! Thanh Hóa, ngày 03 tháng 10 năm 2015 Số hóa Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/ iv MỤC LỤC Lời cam đoan i Lời cảm ơn iii Mục lục iv Danh mục bảng vi Danh mục hình vii MỞ ĐẦU 1 Lý chọn đề tài Đối tượng phạm vi nghiên cứu Những nội dung nghiên cứu Phương pháp nghiên cứu Ý nghĩa khoa học đề tài Chƣơng KHÁI QUÁT VỀ TÌM KIẾM VÀ VẤN ĐỀ TỔ CHỨC DỮ LIỆU 1.1 Khái quát tìm kiếm 1.1.1 Thông tin 1.1.2 Một số loại tìm kiếm thông tin 1.1.2.1 Tìm kiếm danh sách 1.1.2.3 Tìm kiếm đường 11 1.2 Tổ chức liệu tìm kiếm thông tin 13 1.2.1 Giới thiệu 13 1.2.2 Một số cấu trúc liệu 15 1.2.2.1 Stack 15 1.2.2.2 Queue 15 1.2.2.4 Heap 16 Chƣơng MỘT SỐ THUẬT TOÁN THAO TÁC TRONG HEAP 18 2.1 Biểu diễn Heap 18 Số hóa Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/ v 2.2 Khởi tạo Heap rỗng 19 2.3 UpHeap 19 2.4 DownHeap 27 2.5 Thêm phần tử vào Heap 36 2.6 Đọc phần tử đỉnh Heap 37 2.7 Lấy phần tử gốc khỏi Heap 38 2.8 Cập nhật phần tử Heap 40 2.9 Tìm kiếm đường theo lựa chọn tốt 42 Chƣơng XÂY DỰNG CHƢƠNG TRÌNH TÌM ĐƢỜNG ĐI TRONG THÀNH PHỐ THANH HÓA 46 3.1 Phân tích yêu cầu toán 46 3.2 Phân tích, lựa chọn công cụ 48 3.2.1 Mô tả liệu 48 3.2.2 Thiết kế bước thực 48 3.2.3 Ngôn ngữ lập trình 51 3.3 Một số kết chương trình 51 KẾT LUẬN 55 TÀI LIỆU THAM KHẢO 56 Số hóa Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/ vi DANH MỤC CÁC BẢNG Trang Bảng 2.1 Biểu diễn Heap mảng chiều 18 Bảng 2.2 Bảng kết tính toán theo thuật toán 44 Bảng 3.1 Trọng số cạnh đồ thị 49 Số hóa Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/ vii DANH MỤC CÁC HÌNH Trang Hình 1.1 Thông tin dạng văn Hình 1.2 Thông tin dạng hình ảnh Hình 1.3 Thông tin dạng âm Hình 1.4 Mô hình Stack thực tế 15 Hình 1.5 Mô hình Queue thực tế 16 Hình 1.6 Heap Max chứa phần tử giống 17 Hình 2.1 Chỉ số trái phải nút Heap 18 Hình 2.2 Heap Max trình UpHeap 20 Hình 2.3 Vị trí cần UpHeap 21 Hình 2.4 Gán giá trị Heap[9] = 21 Hình 2.5 Gán giá trị Heap[4] = 22 Hình 2.6 Gán giá trị Heap[2] = kết thúc 22 Hình 2.7 Sơ đồ thuật toán UpHeap 23 Hình 2.8 Đổi chỗ giá trị Heap[9] Heap[4] cho 25 Hình 2.9 Đổi chỗ giá trị Heap[4] Heap[2] cho 25 Hình 2.10 Sơ đồ thuật toán UpHeap dùng đệ qui 26 Hình 2.11 Heap Max trình UpHeap 28 Hình 2.12 Heap[1] bị thay đổi giá trị 28 Hình 2.13 Gán giá trị cho Heap[1] 29 Hình 2.14 Gán giá trị cho Heap[2] 29 Số hóa Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/ vii i Hình 2.15 Gán giá trị cho Heap[4] 30 Hình 2.16 Gán giá trị cho Heap[9] 30 Hình 2.17 Sơ đồ thuật toán DownHeap 31 Hình 2.18 Heap[1] bị thay đổi giá trị UpHeap đệ qui 33 Hình 2.19 Đổi chỗ Heap[2] Heap[1] cho 33 Hình 2.20 Đổi chỗ Heap[4] Heap[2] cho 34 Hình 2.21 Đổi chỗ Heap[9] Heap[4] cho 34 Hình 2.22 Sơ đồ thuật toán DownHeap dùng đệ quy 35 Hình 2.23 Sơ đồ thuật toán thêm phần tử vào Heap 37 Hình 2.24 Sơ đồ thuật toán đọc phần tử đỉnh Heap 38 Hình 2.25 Sơ đồ thuật toán lấy phần tử đỉnh Heap 39 Hình 2.26 Cập nhật Heap 40 Hình 2.27 Sơ đồ khối thuật toán cập nhật phần tử Heap 41 Hình 2.28 Minh họa đường 43 Hình 3.1 Bản đồ giao thông thành phố Thanh Hóa 47 Hình 3.2 Một vùng đồ giao thông thành phố Thanh Hóa 49 Số hóa Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/ MỞ ĐẦU Lý chọn đề tài Hiện nay, công nghệ thông tin với tốc độ phát triển nhanh Các nhà khoa học khẳng định chưa có ngành khoa học – công nghệ lại có nhiều ứng dụng rộng rãi công nghệ thông tin Việc ứng dụng công nghệ thông tin giáo dục trở thành mối ưu tiên hàng đầu nhiều quốc gia, có Việt Nam Sự tiến công nghệ phổ cập hệ thống phần mềm tiên tiến đưa đến thay đổi cách đào tạo chuyên gia lĩnh vực tin học Các kiến thức giải thuật coi đỉnh cao trước trở thành “bảng cửu chương” mà phải biết phải thuộc Những giải thuật dùng phức tạp không thiết phải biết nhớ lúc tra cứu, tìm kiếm chúng internet cần thiết Thử thách chỗ ta tìm giải pháp hữu hiệu giải cách có hiệu toán, vấn đề có mô hình toán học đơn giản có kích thước lớn hay không? Để đạt mục đích đó, người lập trình phải tận dụng tối đa khả mà phần cứng hệ điều hành cung cấp, khai thác tối đa khả công cụ lập trình, sử dụng linh hoạt cấu trúc liệu Trong đó, Heap cấu trúc liệu quan trọng, có nhiều ứng dụng tính toán, truy vấn sở liệu xử lí tín hiệu Bên cạnh đó, việc tìm kiếm đường tối ưu phương pháp khoa học tính toán với nguồn liệu khổng lồ kết nhanh xác Trong khuôn khổ luận văn thạc sĩ, chọn đề tài nghiên cứu: “Tìm kiếm thông tin dựa vào cấu trúc liệu Heap”, nghiên cứu Heap thực phương pháp tiếp cận mới, nhanh chóng linh hoạt để tìm đường tối ưu thành phố Thanh Hóa Số hóa Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/ 2 Đối tƣợng phạm vi nghiên cứu Đối tượng phạm vi nghiên cứu luận văn tập trung vào tìm hiểu Heap từ xây dựng ứng dụng tìm đường thành phố thành phố Thanh Hóa Những nội dung nghiên cứu Chương Khái quát tìm kiếm vấn đề tổ chức liệu Trong ngành khoa học máy tính tìm kiếm thuật toán lấy đầu vào toán trả kết lời giải cho toán đó, thường sau cân nhắc loạt lời giải Hầu hết thuật toán nghiên cứu nhà khoa học máy tính để giải toán thuật toán tìm kiếm Vấn đề tổ chức liệu công việc quan trọng, ta có thuật toán tốt chọn lựa cấu trúc liệu phù hợp để lưu trữ toán giải cách nhanh chóng Đôi toán có thuật toán tốt lại chọn lựa cấu trúc liệu không phù hợp dẫn đến việc giải toán trở nên khó khăn phức tạp Chương Một số thuật toán thao tác Heap Khi làm việc với Heap, Heap có số thao tác có hai thao tác quan trọng DownHeap UpHeap Chương Xây dựng chương trình tìm đường thành phố Thanh Hóa Đây chương trình ứng dụng tìm đường ngắn hai địa điểm thành phố Thanh Hóa Nó giúp người sử dụng chọn nhanh xác đường tối ưu Số hóa Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/ 46 Chƣơng XÂY DỰNG CHƢƠNG TRÌNH TÌM ĐƢỜNG ĐI TRONG THÀNH PHỐ THANH HÓA 3.1 Phân tích yêu cầu toán Thành phố Thanh Hóa công nhận đô thị loại I, thành phố lớn khu vực Bắc Trung Bộ với Vinh Huế Thành phố Thanh Hóa nằm hai bên bờ sông Mã hùng vĩ, phía bắc đông bắc giáp huyện Hoằng Hóa, phía nam giáp huyện Quảng Xương, phía đông nam giáp thị xã Sầm Sơn, phía tây giáp huyện Đông Sơn, phía tây bắc giáp huyện Thiệu Hóa Thành phố đô thị có quy mô dân số diện tích lớn khu vực phía bắc Việt Nam Hệ thống đô thị Thanh Hóa hình thành từ lâu đời có mối quan hệ mật thiết với Tọa lạc trung tâm đồng Thanh Hóa, thành phố tim hệ thống giao thông toàn tỉnh Tại tập trung đầu mối tất loại hình giao thông quan trọng: đường sắt Bắc - Nam chạy qua, đường quốc lộ 1A xuyên Việt chạy qua địa bàn thành phố đường cải tạo, mở rộng có dải phân cách Các trục giao thông khác là: Đại lộ Hùng Vương (đường tránh quốc lộ 1A qua địa phận thành phố); Đại lộ Nguyễn Hoàng, đường quốc lộ 47 nối thành phố với Sầm Sơn hoàn thành cải tạo, mở rộng thành đường chiều Ngoài để kết nối thành phố Thanh Hóa thị xã Sầm Sơn có hai đại lộ gấp rút thi công là: Đại lộ Nam sông Mã Đại lộ Ngã ba Voi - Sầm Sơn Một số đường lớn khác công thi công là: Đại lộ Đông Tây công trình tuyến đường vành đai hợp phần - phát triển đô thị thuộc dự án “Phát triển toàn diện kinh tế - xã hội thành phố Thanh Hóa” hoàn thành Nổi bật có cầu Nguyệt Viên nối bên bờ sông Mã đưa vào sử dụng Như cầu thứ bắc qua Số hóa Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/ 47 sông Mã, góp phần hạn chế ùn tắc, tai nạn giao thông, đồng thời mở rộng không gian đô thị, góp phần phát triển mạnh mẽ thành phố lên hướng Bắc, đưa sông Mã vào lòng thành phố Hình 3.1 Bản đồ giao thông thành phố Thanh Hóa Năm 2015 năm du lịch Quốc gia tổ chức Thanh Hóa có nhiều kiện diễn Vì có nhiều khách du lịch đến thăm quan thành phố Thanh Hóa Với mật độ giao thông phát triển thành phố khách du lịch bị lạc đường không lựa chọn đường ngắn để lại địa điểm thành phố Là người xứ Thanh, bạn giúp khách du lịch tìm hành trình đường ngắn từ địa điểm xuất phát đến địa điểm mà khách muốn thăm quan Số hóa Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/ 48 3.2 Phân tích, lựa chọn công cụ 3.2.1 Mô tả liệu Đầu vào đồ thị vô hướng chứa danh sách cạnh gồm thông số (u, v, w) Trong đỉnh u v địa điểm thành phố Thanh Hóa w độ dài đường hai chiều trực tiếp từ địa điểm u đến địa điểm v Đầu đường ngắn từ địa điểm xuất phát đến địa điểm mà khách muốn thăm quan - Input: Tệp timduong.inp gồm + Dòng đầu số nguyên dương n, m, s, t Trong n số đỉnh, m số cạnh đồ thị, s đỉnh xuất phát, t đỉnh đích + m dòng tiếp theo, dòng chứa số u, v, w Trong w trọng số cạnh (u, v) - Output: Tệp timduong.out gồm + Dòng đầu: Là độ dài đường ngắn (nếu đường ghi thông báo “Khong ton tai duong di”) + Dòng 2: Đưa hành trình đường ngắn có 3.2.2 Thiết kế bƣớc thực Bước 1: giao thông thành phố Thanh Hóa, đồ thị vô hướng có trọng số không âm mà trọng số cạnh độ dài đường trực tiếp tương ứng hai địa điểm Số hóa Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/ 49 o thông thành phố Thanh Hóa Hình 3.2 Một vùng đồ giao thông thành phố Thanh Hóa Ta coi địa điểm đỉnh đồ thị Đường trực tiếp hai chiều hai địa điểm cạnh đồ thị độ dài đường trọng số cạnh Vì ta xây dựng bảng đồ thị gồm 20 đỉnh, 39 cạnh trọng số tương ứng thể đồ sau: Bảng 3.1 Trọng số cạnh đồ thị Stt 10 11 12 13 14 15 16 17 18 Cạnh (u, v) đồ thị (1, (1, (2, (2, (2, (3, (3, (1, (1, (1, (4, (4, (4, (4, (4, (5, (5, (6, 2) 7) 9) 6) 5) 5) 20) 18) 9) 10) 7) 9) 6) 18) 14) 20) 10) 17) Số hóa Trung tâm Học liệu - ĐHTN Trọng số w tương ứng 10 20 12 13 http://www.lrc-tnu.edu.vn/ 50 Stt Cạnh (u, v) đồ thị Trọng số w tương ứng 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 (6, 7) (6, 8) (6, 9) (7, 16) (7, 8) (8, 20) (8, 9) (9, 17) (9, 10) (10, 15) (10, 12) (10, 11) (12, 19) (12, 13) (13, 14) (15, 16) (16, 20) (17, 18) (17, 20) (18,19) (19, 20) 15 18 23 18 18 32 12 34 10 Khách du lịch muốn từ nhà hàng Dạ Lan đến siêu thị Big C Thanh Hóa để mua sắm, tương ứng với việc tìm đường ngắn từ đỉnh đến đỉnh 20 đồ thị Bước 2: Gọi chương trình đọc liệu từ tệp timduong.inp Gọi chương trình chuyển đồ thị cho dạng danh sách cạnh sang danh sách kề Vì thuật toán tìm đường danh sách kề chạy nhanh danh sách cạnh Gọi chương trình tìm đường theo lựa chọn tốt chương để thực thao tác Heap Gọi chương trình truy vết đường để tìm đường tối ưu Số hóa Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/ 51 Bước 3: Ghi nhận kết đường ngắn f[10] = 14 đường → 10 → 12 → 19 → 20 tế đồ 3.2.3 Ngôn ngữ lập trình Ứng dụng tìm đường thành phố Thanh Hóa viết ngôn ngữ lập trình Pascal với trình biên dịch Free Pascal 2.6.4 (phiên nay) Free Pascal phát triển với mục tiêu cung cấp trình biên dịch mạnh mẽ thuận tiện, có khả biên dịch ứng dụng cũ lẫn phát triển ứng dụng Được phân phối miễn phí giấy phép GNU Có khả trộn lẫn mã Turbo Pascal mã Delphi, hỗ trợ nhiều tảng lẫn nhiều hệ điều hành Hiện giới kỳ thi Tin học Quốc tế, Free Pascal sử dụng rộng rãi trình biên dịch dễ dàng tiếp cận học sinh sinh viên học lập trình 3.3 Một số kết chƣơng trình Cũng với vùng đồ trên tìm đường từ Tượng đài Lê Lợi đến Quảng trường Lam Sơn Dữ liệu mô tả file timduong.inp gồm: 20 đỉnh 39 cạnh Đỉnh xuất phát khách du lịch 2, đỉnh đích 10 Số hóa Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/ 52 Kết chương trình độ dài đường ngắn Và đường → → 10 Ta quy đổi sang đồ thực tế để từ Tượng đài Lê Lợi đến Quảng trường Lam Sơn khách du lịch phải qua nhà hàng Dạ Lan Số hóa Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/ 53 Khảo sát đồ một vùng có diện tích lớn hơn: Từ đồ giao thông ta có file timduong.inp gồm 1000 đỉnh 249830 cạnh khách du lịch xuất phát từ vị trí kết thúc vị trí 1000: Số hóa Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/ 54 Kết chương trình file timduong.out: Từ kết ta có độ dài đường ngắn từ địa điểm đến địa điểm 1000 1426 Và đường là: → 42 → 95 → 990 → 33 → 776 → 903 → 479 → 128 → 250 → 1000 Từ ta quy đổi thành đường thực tế Số hóa Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/ 55 KẾT LUẬN Luận văn tập trung nghiên cứu số kỹ thuật thao tác với liệu theo cấu trúc Heap đạt số kết sau: Trình bày khái quát tìm kiếm tổ chức liệu tìm kiếm Hệ thống hóa số thao tác cấu trúc liệu Heap Cài đặt chương trình thử nghiệm tìm đường thành phố Thanh Hóa dựa cấu trúc liệu Heap Như vấn đề mà luận văn nêu phù hợp với yêu cầu thực tiễn, đáp ứng tốc độ xử lý, nhiệm vụ đặt hoàn thành Luận văn đạt mục đích đề Tuy nhiên ứng dụng đưa chưa nhiều phong phú, để có nhiều ứng dụng hay hơn, cần phải có trình nghiên cứu sâu Số hóa Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/ 56 TÀI LIỆU THAM KHẢO Tài liệu tiếng Việt [1] Đỗ Xuân Lôi (2004), Cấu trúc liệu giải thuật, NXB Đại học Quốc gia Hà Nội [2] Hồ Sĩ Đàm (chủ biên), Nguyễn Thanh Tùng, Lê Minh Hoàng, Nguyễn Thanh Hùng, Đỗ Đức Đông (2011), Tài liệu tập huấn phát triển chuyên môn giáo viên Trường THPT Chuyên (tài liệu lưu hành nội bộ), Bộ giáo dục đào tạo [3] Nguyễn Xuân Huy (1988), Thuật toán, NXB Thống kê [4] Lê Minh Hoàng (2006), Giải thuật lập trình, Sách ebook [5] Hồ Sĩ Đàm (chủ biên), Đỗ Đức Đông, Lê Minh Hoàng, Nguyễn Thanh Hùng (2009), Tài liệu chuyên tin học tập 2, NXB Giáo dục Tài liệu tiếng Anh [6] Mehlhorn, Kurt, Sanders, Peter (2008), Algorithms and Data Structures, Springer [7] Brian Dean (2011), USACO 2011 December Contest, Silver Division, http://www.usaco.org/index.php?page=viewproblem2&cpid=98&lang=e n, accessed 15 May 2015 Số hóa Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/ 57 PHỤ LỤC Mã nguồn chương trình timduong.pas: Const Type fi='timduong.inp'; fo='timduong.out'; nmax = round(2e5); mmax = round(1e6); te = record u,v:longint; w: longint; end; tke = record v: longint; w: longint; end; Var ke: array[0 nmax+1] of tke; f: array[0 nmax+1] of int64; heap,pos,head: array[0 nmax+1] of longint; e:array[0 2*mmax]of te; trace: array[0 nmax+1] of longint; a: array[ nmax+1] of longint; n,m,i,h,t,s,x,y,z,nheap:longint; // // procedure Enter; begin Assign(input,fi);Reset(input); Assign(output,fo);Rewrite(output); Readln(n, m, s, t); For i:=1 to m begin readln(e[i].u, e[i].v, e[i].w); e[i+m].u:= e[i].v; e[i+m].v:= e[i].u; e[i+m].w:= e[i].w; end; m:= 2*m; close(input); end; // // Procedure chuyendoi; var i:longint; begin For i:=1 to n head[i]:=0; For i:=1 to m inc(head[e[i].u]); For i:=2 to n head[i]:=head[i]+head[i-1]; Số hóa Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/ 58 For i:=1 to m begin ke[head[e[i].u]].v:= e[i].v; ke[head[e[i].u]].w:= e[i].w; dec(head[e[i].u]); end; head[n+1]:=m; end; // // procedure swap(var x,y:longint); var tg:longint; begin tg:=x; x:=y; y:=tg; end; // // Procedure UpHeap(i:longint); begin If (i=1)or(f[heap[i]] >= f[heap[i div 2]]) then exit; swap(heap[i],heap[i div 2]); pos[heap[i div 2]]:=i div 2; pos[heap[i]]:=i; Upheap(i div 2); end; // // procedure DownHeap(i:longint); var j:longint; begin j:=2*i; if j>nheap then exit; if (j f[heap[j+1]]) then inc(j); if f[heap[j]]< f[heap[i]] then begin swap(heap[i],heap[j]); pos[heap[i]]:=i; pos[heap[j]]:=j; downheap(j); end; end; // // Procedure Push(x:longint); begin inc(nheap); heap[nheap]:=x; pos[heap[nheap]]:=nheap; if nheap >1 then upheap(nheap); end; Số hóa Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/ 59 // // Function pop:longint; begin If nheap=0 then exit; pop:=heap[1]; heap[1]:=heap[nheap]; dec(nheap); if nheap > then downheap(1); end; // // Procedure timduong; var i,v,u:longint; begin For i:=1 to n f[i]:=maxlongint; For i:=1 to n pos[i]:=0; nheap:=0; f[s]:=0; push(s); While nheap0 begin u:=pop; If u=t then exit; For v:=head[u]+1 to head[u+1] If f[u]+ ke[v].w < f[ke[v].v] then begin f[ke[v].v]:= f[u]+ ke[v].w; trace[ke[v].v]:= u; If pos[ke[v].v] = then push(ke[v].v) else upheap(pos[ke[v].v]); end; end; end; // // procedure solution; var res,i,j: longint; begin timduong; If f[t] = maxlongint then begin writeln('Khong co duon di'); exit; end else writeln(f[t]); // Truy vet duong di i:=0; res:= t; while res s begin res:= trace[res]; inc(i); a[i]:=res; Số hóa Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/ 60 end; for j:= i downto write(a[j],' -> '); writeln(t); end; // // BEGIN Enter; chuyendoi; solution; Close(output); END Số hóa Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/ [...]... trình Trong khoa học máy tính, cấu trúc dữ liệu là cách lưu trữ dữ liệu trong máy tính sao cho nó có thể được sử dụng một cách hiệu quả Trong thiết kế nhiều loại chương trình, việc chọn cấu trúc dữ liệu là vấn đề quan trọng Mỗi loại cấu trúc dữ liệu phù hợp với một vài loại ứng dụng khác nhau, một số cấu trúc dữ liệu dành cho những công việc đặc biệt Sau khi cấu trúc dữ liệu được chọn, người ta thường... tạp, đều phải sử dụng cấu trúc dữ liệu Có thể nói rằng không có một chương trình máy tính nào mà không cần và không có dữ liệu để xử lý Dữ liệu có thể là dữ liệu đưa vào (input data), dữ liệu trung gian, dữ liệu đưa ra (output data) Do vậy, việc tổ chức để lưu trữ dữ liệu phục vụ cho chương trình có ý nghĩa rất quan trọng trong toàn bộ hệ thống chương trình Việc tổ chức cấu trúc dữ liệu quyết định rất... thực bản chất của dữ liệu cũng như xây dựng các thao tác hiệu quả trên dữ liệu, cần phải tìm cách tổ chức kết hợp dữ liệu với những hình thức mới linh động hơn, có thể thay đổi kích thước, cấu trúc trong suốt thời gian sống Các hình thức tổ chức dữ liệu như vậy được gọi là cấu trúc dữ liệu động Và Stack, Queue, DEQueue, Heap, cũng là cấu trúc dữ liệu động Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/... thứ tự ngược lại: cấu trúc dữ liệu được chọn do những bài toán quan trọng nhất định có thuật toán chạy tốt nhất với một số cấu trúc dữ liệu cụ thể Trong cả hai trường hợp, việc lựa chọn cấu trúc dữ liệu là rất quan trọng Đúng như Giáo sư Niklaus Wirth, người sáng tác ra ngôn ngữ Pascal đã có một triết lý: Cấu trúc dữ liệu + Giải thuật = Chương trình Như vậy, khi đã có cấu trúc dữ liệu tốt, nắm vững... loại tìm kiếm cụ thể này là tìm kiếm ăn tham theo lựa chọn tốt nhất Để có được hiệu quả về thời gian Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/ 13 chạy cho việc chọn ra ứng cử viên tốt nhất cho việc mở rộng, người ta thường dùng một hàng đợi ưu tiên để cài đặt cấu trúc dữ liệu lưu trữ các lựa chọn hiện hành 1.2 Tổ chức dữ liệu trong tìm kiếm thông tin 1.2.1 Giới thiệu Cấu trúc dữ liệu. .. thiết thực trong việc hỗ trợ tìm đường đi tối ưu trong thành phố Thanh Hóa Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/ 4 Chƣơng 1 KHÁI QUÁT VỀ TÌM KIẾM VÀ VẤN ĐỀ TỔ CHỨC DỮ LIỆU 1.1 Khái quát về tìm kiếm 1.1.1 Thông tin Thông tin là những hiểu biết có thể có được về một thực thể nào đó Muốn đưa thông tin vào máy tính, con người phải tìm cách biểu diễn thông tin sao cho máy tính có thể... danh sách Đây có lẽ là loại tìm kiếm cơ bản nhất Mục đích là tìm kiếm theo một tiêu chí nào đó của một danh sách và đưa ra kết quả những phần tử của danh sách thỏa mãn tiêu chí đó hay không Trong loại tìm kiếm này, chúng ta có các dạng tìm kiếm cơ bản sau: tìm kiếm tuần tự và tìm kiếm nhị phân và phép băm Thuật toán đơn giản nhất là tìm kiếm tuần tự, là một phương pháp tìm kiếm một phần tử cho trước... Trong tin học, dữ liệu là thông tin đã được đưa vào máy tính Ta không chỉ dừng lại ở một quan niệm định tính về thông tin như trên mà còn cho thông tin một quan niệm định lượng Mỗi sự vật hay sự kiện đều hàm chứa một lượng thông tin Muốn nhận biết một đối tượng nào đó, ta phải biết đủ lượng thông tin về nó Tương tự, để máy nhận biết một đối tượng nào đó, ta cũng phải cung cấp cho máy đủ lượng thông tin. .. UpHeap Giả sử ta tăng độ ưu tiên của một phần tử Heap[ i] trong Heap Max thì có thể phá vỡ cấu trúc Heap Vì vậy mỗi khi độ ưu tiên của của một phần tử Heap[ i] tăng lên, ta phải dùng một thao tác UpHeap(i) để khôi phục cấu trúc Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/ 20 Heap Thao tác UpHeap được thực hiện như sau: lưu độ ưu tiên Heap[ i] vào C, bắt đầu từ nút có vị trí i trong Heap, ... thước, cấu trúc trong quá trình sống, do vậy thường cứng nhắc, gò bó khiến đôi khi khó diễn tả được thực tế vốn sinh động, phong phú Các kiểu dữ liệu kể trên được gọi là các kiểu dữ liệu tĩnh Một số đối tượng dữ liệu trong chu kỳ sống của nó có thể thay đổi về cấu trúc, độ lớn, như danh sách các học viên trong một lớp học có thể tăng thêm, giảm đi Khi đó nếu cố tình dùng những cấu trúc dữ liệu tĩnh ... VỀ TÌM KIẾM VÀ VẤN ĐỀ TỔ CHỨC DỮ LIỆU 1.1 Khái quát tìm kiếm 1.1.1 Thông tin 1.1.2 Một số loại tìm kiếm thông tin 1.1.2.1 Tìm kiếm danh sách 1.1.2.3 Tìm kiếm. .. CHỨC DỮ LIỆU 1.1 Khái quát tìm kiếm 1.1.1 Thông tin Thông tin hiểu biết có thực thể Muốn đưa thông tin vào máy tính, người phải tìm cách biểu diễn thông tin cho máy tính nhận biết xử lí Trong tin. .. học tính toán với nguồn liệu khổng lồ kết nhanh xác Trong khuôn khổ luận văn thạc sĩ, chọn đề tài nghiên cứu: Tìm kiếm thông tin dựa vào cấu trúc liệu Heap , nghiên cứu Heap thực phương pháp tiếp