Tìm kiếm thông tin dựa vào cấu trúc dữ liệu heap

68 14 0
Tìm kiếm thông tin dựa vào cấu trúc dữ liệu heap

Đ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 ĐẠ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ơi 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 tơi 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, 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 tơi học tập, nghiên cứu hồn thành luận văn Đặc biệt, tơi 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 đỡ tơi suốt q trình học tập, nghiên cứu hồ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 chun Lam Sơn, Thanh Hóa, nơi tơ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 u cầu tố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 tố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 tố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 tốn, vấn đề có mơ hình tố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 tố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 tốn với nguồn liệu khổng lồ kết nhanh xác Trong khn khổ luận văn thạc sĩ, tơi 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 tố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 tốn thuật tốn tìm kiếm Vấn đề tổ chức liệu công việc quan trọng, ta có thuật tốn tốt chọn lựa cấu trúc liệu phù hợp để lưu trữ tốn giải cách nhanh chóng Đơi tốn có thuật tố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 tố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 u cầu tố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 tồ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” hồ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 tố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 cịn 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 Hồ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/ ... 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. .. phần tử i Heap newp, lúc newp Heap[ i] cấu trúc Heap khơng thay đổi Nhưng newp ≠ Heap[ i] dẫn đến cấu trúc Heap thay đổi Ví dụ: Nếu ta cập nhật Heap[ 3] có giá trị 4, làm thay đổi cấu trúc Heap 18... Tìm kiếm danh sách Đây có lẽ loại tìm kiếm Mục đích tìm kiếm theo tiêu chí danh sách đưa kết phần tử danh sách thỏa mãn tiêu chí hay khơng Trong loại tìm kiếm này, có dạng tìm kiếm sau: tìm kiếm

Ngày đăng: 23/03/2021, 22:10

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

Tài liệu liên quan