(Tiểu luận) đồ án lập trình tính toán tên đề tài đề c05 bạn muốn hẹn hò

20 0 0
(Tiểu luận) đồ án lập trình tính toán tên đề tài đề c05 bạn muốn hẹn hò

Đ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

TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN ĐỒ ÁN LẬP TRÌNH TÍNH TỐN TÊN ĐỀ TÀI Đề C05: Bạn muốn hẹn hò? Người hướng dẫn: ThS NGUYỄN THỊ LỆ QUYÊN Sinh viên thực hiện: Họ tên: Nguyễn Lê Việt Hoàng LỚP: 21TCLC-DT1 Họ tên: Nguyễn Anh Nguyên LỚP: 21TCLC-DT1 NHÓM: 09 Đà Nẵng, 07/2022 MỤC LỤC MỤC LỤC i DANH MỤC HÌNH VẼ ii MỞ ĐẦU i TỔNG QUAN ĐỀ TÀI CƠ SỞ LÝ THUYẾT 2.1 Ý tưởng 2.2 Cơ sở lý thuyết TỔ CHỨC CẤU TRÚC DỮ LIỆU VÀ THUẬT TỐN 3.1 Phát biểu tốn 3.2 Cấu trúc liệu 3.3 Thuật toán CHƯƠNG TRÌNH VÀ KẾT QUẢ 4.1 Tổ chức chương trình 4.2 Ngơn ngữ cài đặt 4.3 Kết 4.3.1 Giao diện chương trình 4.3.2 Kết thực thi chương trình 4.3.3 Nhận xét đánh giá KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 5.1 Kết luận 5.2 Hướng phát triển TÀI LIỆU THAM KHẢO DANH MỤC HÌNH VẼ Đồ án lập trình tính tốn MỞ ĐẦU Trong phần này, cần trình bày về: Mục đích thực đề tài, mục tiêu đề tài, phạm vi đối tượng nghiên cứu, phương pháp nghiên cứu, cấu trúc đồ mơn học} Mục đích thực đề tài: Thơng qua q trình thực đề tài có thêm kiến thức, áp dụng kiến thức học để giải vấn đề, tốn cách trơn tru tối ưu Mục tiêu đề tài: giải toán đưa Phạm vi đối tượng nghiên cứu: sử dụng bao quát kiến thức học tập trung chủ yếu cấu trúc cấu trúc liệu, đối tượng nghiên cứu cấu trúc liệu tập hợp rời rạc ứng dụng Phương pháp nghiên cứu: sử dụng tài liệu phổ cập trường tìm kiếm tài liệu từ Internet, đọc hiểu cấu trúc liệu tập hợp rời rạc, suy ý tưởng áp dụng kiến thức hoàn thành đề Cấu trúc đồ mơn học:sau tìm hiểu lý thuyết về thuật toán Disjoint-set lý thuyết liên qua lên ý tưởng giải vấn đề đưa ra, kiểm tra nâng cấp thuật toán Đồ án lập trình tính tốn TỔNG QUAN ĐỀ TÀI Chương trình Bạn muốn hẹn hị trở nên phổ biến truyền hình, bách khoa có chương trình tương tự với quy mơ nhỏ Trong đợt có bạn nam bạn nữ đăng ký tham gia Ban tổ chức có thơng tin tất người tham gia, kể trang cá nhân Facebook nên biết hai sinh viên có phải bạn Facebook hay không Và ban tổ chức không muốn ghép cặp hai sinh viên nhóm bạn với Cho mối quan hệ bạn bè bạn sinh viên nam với nhau, mối quan hệ bạn bè bạn nữ với mối quan hệ bạn bè nam nữ Ban tổ chức muốn tính xem tổng cộng có cặp sinh viên nam nữ ghép cặp với CƠ SỞ LÝ THUYẾT 2.1 Ý tưởng Phân chia sinh viên thành nhóm khác theo nhóm mà sinh viên thuộc Phương pháp gọi cấu trúc liệu tập hợp phân biệt trì tập hợp tập hợp rời rạc tập hợp đại diện đại diện thành viên 2.2 Cơ sở lý thuyết 2.2.1 Disjoint-set data structure Cấu trúc liệu tập hợp rời rạc , gọi cấu trúc liệu liên hợp-tìm hợp tìm tập hợp , cấu trúc liệu lưu trữ tập hợp tập hợp rời rạc (khơng chồng chéo) Tương tự, lưu trữ phân vùng tập hợp thành tập rời rạc Nó cung cấp hoạt động để thêm tập hợp mới, hợp tập hợp (thay chúng liên hiệp chúng ) tìm thành viên đại diện tập hợp 2.2.2 Union (set theory) Trong lý thuyết tập hợp, hợp (ký hiệu ∪) tập hợp tập hợp tập hợp tất phần tử tập hợp [1] Nó phép tốn mà qua tập hợp kết hợp liên quan với Liên hợp nullary đề cập đến liên hợp tập hợp theo định nghĩa, tương đương với tập hợp rỗng 2.2.3 Forest Rừng đồ thị vô hướng hai đỉnh nối với nhiều đường Tương tự, rừng đồ thị xoay chiều vô hướng, tất Đồ án lập trình tính tốn thành phần kết nối chúng cây; nói cách khác, biểu đồ bao gồm kết hợp rời rạc Trong trường hợp đặc biệt, biểu đồ bậc không (một khu rừng khơng có nào), đơn lẻ biểu đồ khơng viền, ví dụ rừng Vì với V - E = 1, dễ dàng đếm số khu rừng cách trừ hiệu số tổng số đỉnh tổng số cạnh TV - TE = số rừng TỔ CHỨC CẤU TRÚC DỮ LIỆU VÀ THUẬT TOÁN 3.1 Phát biểu tốn Mơ tả đầu vào (Input) đầu (Output) Input: - Dòng đầu số nguyên số lượng sinh viên nam số lượng sinh viên nữ tham gia chương trình Dịng chứa số a, theo sau a dòng, dòng gồm số thể bạn nam bạn nam bạn Facebook Dòng chứa số b, theo sau b dòng, dòng gồm số thể bạn nữ bạn nữ bạn Facebook Dòng chứa số c, theo sau c dòng, dòng gồm số thể bạn nam bạn nữ bạn Facebook Output: - In kết số cặp sinh viên nam nữ ghép cặp với 3.2 Cấu trúc liệu Canh lề phải thẳng hàng Mảng: Một mảng số nguyên, gọi cha [] Nếu xử lý n mục, phần tử thứ i mảng đại diện cho mặt hàng thứ i Chính xác hơn, phần tử thứ i mảng phần tử cha mục thứ i Những mối quan hệ tạo nhiều ảo Cây: Nó tập hợp rời rạc Nếu hai phần tử nằm cây, chúng nằm tập rời rạc Nút gốc (hay nút cùng) gọi đại diện tập hợp Ln ln có đại diện nhất Một quy tắc đơn giản để xác định đại diện là, đại diện tập hợp, cha [i] = i Nếu tơi khơng phải đại diện tập hợp anh ấy, tìm thấy cách lên chúng tơi tìm thấy đại diện Đồ án lập trình tính tốn 3.3 Thuật tốn Code có phần phụ lục, ko dán code Thay sơ đồ khối giả code Trình bày thuật tốn phân tích độ phức tạp thuật toán -Hàm find(): trả vị trí người đại diện; Canh lề phải thẳng hàng -Hàm Union: Trước hết, cần mảng số nguyên gọi xếp hạng [] Kích thước mảng giống mảng mẹ Nếu i đại diện tập hợp, rank[i] chiều cao đại diện cho tập hợp Bây muốn làm giảm thiểu chiều cao kết Nếu hợp hai Đồ án lập trình tính tốn (hoặc tập hợp), gọi chúng trái phải, sau tất phụ thuộc vào thứ hạng bên trái thứ hạng bên phải ● Nếu thứ hạng bên trái nhỏ thứ hạng bên phải, tốt bạn nên di chuyển sang trái bên phải, điều khơng thay đổi thứ hạng bên phải (trong di chuyển sang phải bên trái làm tăng chiều cao) Theo cách tương tự, thứ hạng bên phải nhỏ thứ hạng bên trái, nên di chuyển sang phải bên trái ● Nếu thứ hạng nhau, không quan trọng kia, thứ hạng kết lớn thứ hạng -Độ phức tạp thuật toán: Độ cao tối đa log(n) Do độ phức tạp tạo tác find - union O( log(n) ) Đồ án lập trình tính tốn CHƯƠNG TRÌNH VÀ KẾT QUẢ 4.1 Tổ chức chương trình Định dạng văn , canh lề thống toàn văn Gồm hàm Input để nhập liệu , hàm solve để xử lý toán , hàm Union để hợp tập hợp , hàm find để tìm người đại diện , hàm main để thực thi hàm 4.2 Ngôn ngữ cài đặt Ngơn ngữ lập trình C : ngôn ngữ mệnh lệnh phát triển từ đầu thập niên 1970 Dennis Ritchie để dùng hệ điều hành UNIX Từ đó, ngơn ngữ lan rộng nhiều hệ điều hành khác trở thành ngôn ngữ phổ dụng C ngôn ngữ có hiệu ưa chuộng để viết phần mềm hệ thống, dùng cho việc viết ứng dụng Ngoài ra, C thường dùng làm phương tiện giảng dạy khoa học máy tính ngơn ngữ không thiết kế dành cho người nhập môn 4.3 Kết 4.3.1 Giao diện chương trình Cần thêm hình demo, 3-4 hình Thiếu thích hình Đồ án lập trình tính tốn 4.3.2 Kết thực thi chương trình Mơ tả kết thực chương trình Ở sử dụng thuật toán hiệu để kiểm tra tính xác thời gian chạy thuật tốn Disjoint Set test case test case test case Thuật Disjoint Set 0.01s 0.01s 0.01s Thuật tham lam 0.01s 0.15s 0.03s 4.3.3 Nhận xét đánh giá Gọi n = Nam + Nữ - Khi số lượng n bé, thuật tốn có thời gian chạy tương đương ; số lượng n tăng lên, thuật Disjoint Set có thời gian chạy nhanh hẳn => thuật Disjoint Set có thời gian chạy tối ưu hơn, thích hợp để tính tốn với số lớn ( n khoảng 10^6 thuật Disjoint Set chạy khoảng 1s ) - Thuật tham lam dùng mảng chiều nên không lưu giá trị n tương đối lớn ( n> 5000 ) , thuật Disjoint Set dùng mảng chiều để lưu kết nên chứa giá trị với n lớn ( n khoảng 10^6 ) => thuật Disjoint Set sử dụng nhớ tối ưu chứa n tới 10^6 nâng số phần tử mảng lên để chứa n tới 10^7 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 5.1 Kết luận Vậy code áp dụng thuật toán Disjoint set phát triển tương đối tối ưu Độ phức tạp thời gian O(nlog(n)) Độ phức tạp nhớ O(3*10^6) Với n

Ngày đăng: 20/09/2023, 15:18

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

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

Tài liệu liên quan