![Báo cáo cuối kì môn cấu trúc dữ liệu và giải thuật](https://123docz.net/image/doc_normal.png)
Đang tải... (xem toàn văn)
Thông tin tài liệu
Câu 2: Sắp xếp 2.1 Yêu cầu:Sinh viên tự cho một mảng số nguyên gồm 10 phần tử thứ tự của phần tử phải là ngẫu nhiên, không được nằm trong các trường hợp mảng đã có thứ tự sẵn hoặc một ph
Trang 1aTỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAM
TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO CUỐI KÌ MÔN CẤU TRÚC DỮ LIỆU VÀ
Người hướng dẫn: GV TRẦN THANH PHƯỚC Người thực hiện: NGUYỄN GIA BẢO – 52000631
Lớp : 20050281 Khoá : 24
THÀNH PHỐ HỒ CHÍ MINH, NĂM 2022
TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAM
TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG KHOA CÔNG NGHỆ THÔNG TIN
Trang 2BÁO CÁO CUỐI KÌ MÔN CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT
BÁO CÁO CUỐI KÌ
Người hướng dẫn: GV TRẦN THANH PHƯỚC Người thực hiện: NGUYỄN GIA BẢO– 52000631
Lớp : 20050281 Khoá : 24
THÀNH PHỐ HỒ CHÍ MINH, NĂM 2022
Trang 3LỜI CẢM ƠN
Em xin bày tỏ lòng biết ơn sâu sắc và chân thành nhất đến Thầy Trần Thanh Phước, người đã tận tình chỉ bảo và dìu dắt em trong suốt thời gian học tập và thực hiện bài báo cáo này Cảm ơn những lời chia sẻ tận tình, tâm huyết của thầy đã giúp em hoàn thành bài báo cáo tốt nhất
Em xin chân thành cảm ơn!
TP Hồ Chí Minh, ngày 20 tháng 1 năm 2022 Tác giả
Bảo Nguyễn Gia Bảo
Trang 4
BÁO CÁO ĐƯỢC HOÀN THÀNHTẠI TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG
Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi và được sự hướng dẫn khoa học của thầy Trần Thanh Phước Các nội dung nghiên cứu, kết quả trong đề tài này là trung thực và chưa công bố dưới bất kỳ hình thức nào trước đây Những số liệu trong các bảng biểu phục vụ cho việc phân tích, nhận xét, đánh giá được chính tác giả thu thập từ các nguồn khác nhau có ghi rõ trong phần tài liệu tham khảo
Ngoài ra, trong bài báo cáo còn sử dụng một số nhận xét, đánh giá cũng như số liệu của các tác giả khác, cơ quan tổ chức khác đều có trích dẫn và chú thích nguồn gốc
Nếu phát hiện có bất kỳ sự gian lận nào tôi xin hoàn toàn chịu trách nhiệm về nội dung bài báo cáo của mình Trường Đại học Tôn Đức Thắng
không liên quan đến những vi phạm tác quyền, bản quyền do tôi gây ra trong quá
Trang 5TÓM TẮT
Trang 7NỘI DUNG Câu 1: Đệ quy
1.1 Yêu cầu:
a (0.5 điểm – Lý thuyết) Chọn mỗi nhóm 01 bài toán và giải thích tính đệ quy (diễn giải, vẽ cây đệ quy với một ví dụ gồm ít nhất 5 lần gọi đệ quy):
i Nhóm 1: • Giải bài toán xy
• Giải bài toán tính tổng các chữ số của một số nguyên dương gồm n chữ số ii Nhóm 2:
• Giải bài toán tính số fibonacci thứ n • Giải bài toán tính tổ hợp chập k của n phần tử • Giải bài toán tìm số lớn nhất trong một mảng
b (0.5 điểm – Thực hành) Tạo một lớp bất kỳ để định nghĩa code bằng đệ quy cho 02 ví dụ đã chọn bên trên và tạo phương thức main() để kiểm tra lại kết quả.
Điều kiện dừng: Nếu y = 0 thì trả về 1; Biểu thức trả về đệ quy: x^y = x * x^(y-1)
Hàm đệ quy sẽ thực hiện theo biểu thức trả về đệ quy 2 * 2^4 và y sẽ giảm dần và dừng lại cho đến khi đạt giá trị y = 0 là điều kiện dừng
+ Cây đệ quy:
Trang 8Hàm đệ quy sẽ thực hiện theo biểu thức trả về đệ quy Fibo5) + Fibo(4) và sẽ giảm dần và dừng lại đến khi n đạt giá trị n < 2 là điều kiện dừng
+ Cây đệ quy:
Trang 9Câu 2: Sắp xếp
2.1 Yêu cầu:
Sinh viên tự cho một mảng số nguyên gồm 10 phần tử (thứ tự của phần tử phải là ngẫu nhiên, không được nằm trong các trường hợp mảng đã có thứ tự sẵn hoặc một phần mảng đã có thứ tự)
a (0.5 điểm – Lý thuyết) Cho ví dụ chạy từng bước việc sắp xếp mảng dùng 02 trong 03 giải thuật Bubble Sort, Insertion Sort hoặc Selection Sort (Sinh viên lưu ý phải thể hiện rõ sự thay đổi của các phần tử trong mảng qua từng bước)
b (0.5 điểm – Lý thuyết) Cho ví dụ chạy từng bước việc sắp xếp mảng dùng 01 trong 02 giải thuật Merge Sort hoặc Quick Sort (Sinh viên lưu ý phải thể hiện rõ sự thay đổi của các phần tử trong mảng qua từng bước)
2.2 Câu trả lời:
Cho mảng số nguyên: 8,10,1,6,5,7,2,20,11,9
Bubble sort: Duyệt từ cuối mảng, và ở bubble sort ta sẽ so sánh liên tục 2 phần tử kề nhau, đưa phần tử nhỏ lên trước (sắp xếp tang dần)
Trang 10Selection sort: Giả sử sắp xếp tăng dần thì tìm phần tử bé nhất từ mảng chưa được sắp xếp và đưa nó vào đầu mảng
Trang 11Câu 3: Stack:
3.1 Yêu cầu:
a) (1 điểm – Lý thuyết) Trình bày giải thuật ) Giải thuật này chuyển một biểu thức từ dạng trung tố (infix) sang dạng hậu tố (postfix) Cho ví dụ một biểu thức infix gồm ít nhất 6 phép toán (có đủ phép cộng (+), trừ ( ), nhân (*) và chia (/)) và chứa ít -nhất 2 cặp ngoặc, áp dụng giải thuật để chuyển biểu thức này thành dạng postfix
b) (1 điểm – Lý thuyết) Trình bày giải thuật sử dụng Stack để tính kết quả từ biểu thức postfix Áp dụng giải thuật tính toán biểu thức postfix tại câu a) 3.2 Câu trả lời:
a)
Bởi cách viết của chúng ta gây khó chịu và không tường minh với máy tính, do đó, sử dụng biểu thức Ba Lan ngược để máy tính dễ hiểu hơn, và nó là một cách viết không dùng dấu ngoặc và thực hiện từ trái sang phải
Ta có chuỗi biểu thức đơn giản có cấu trúc như sau:
Trang 12- Toán tử: cộng ‘+’ , trừ ‘-‘, nhân ‘*’, chia ‘/’ - Toán hạng: Là các số nguyên có 1 chữ số từ 0 đến 9 - Dấu mở ‘(‘ và đóng’)’
- Khoảng trắng
Để thực hiện thuật toán Ba Lan ngược: B1 Khởi tạo Stack rỗng để chứa phép toán B2 Nếu phần tử là
‘(‘: Đưa vào stack
‘)’: Lấy các phần tử đưa vào queue cho đến khi gặp ‘(‘ trong Stack Toán hạng: Đưa vào queue
Toán tử: Nếu Stack rỗng thì thêm vào Stack
Nếu toán tử có độ ưu tiên cao hơn phần tử ở đầu Stack : Đưa vào Stack Lấy phần tử của Stack đưa vào queue, lặp lại so sánh với phần tử đầu Stack B3 Lấy các phần tử còn lại trong Stack và đưa vào chuỗi q
Trang 133 / - 7 3 2 * + 4 / 9 3 Null Null 7 3 2 * + 4 / 9 3 / -
b)
Thực hiện duyệt từng biểu thức hậu tố cho đến hết Nếu là toán hạng: Đưa vào Stack
Ngược lại, Lấy 2 phần tử của Stack
Áp dụng phép toán cho 2 phần tử vừa lấy được, bên trái là phần tử đầu, ở giữa là phép toán, bên phải là phần tử thứ hai
Đưa hết quả vào Stack và xuất phần tử cuối cùng của Stack là giá trị biểu thức – Tính toán biểu thức postfix: 7 3 2 * + 4 / 9 3 / -
Trang 14Phân tích bài toán quản lý sinh viên bằng Mảng (Array), Linked List và bằng cây AVL Nêu ưu điểm và nhược điểm, so sánh hiệu suất của các cấu trúc dữ liệu trên các thao tác:
a) (0.25 điểm) Thêm một sinh viên mới b) (0.25 điểm) Xóa sinh viên c) (0.25 điểm) Tìm kiếm sinh viên Thực hành (1.5 điểm):
Cài đặt bài toán trên bằng Linked List (không sử dụng thư viện) và bằng cây AVL với dữ liệu tự cho Tối thiếu 15 đối tượng sinh viên Mỗi đối tượng sinh viên có các thuộc tính: mã số sinh viên (mã 8 ký tự, ký tự đầu có thể là chữ cái), họ tên sinh viên, điểm trung bình tích lũy và 2 thuộc tính khác sinh viên tự cho thêm Hiện thực phương thức cho các thao tác sau trên cả hai cấu trúc dữ liệu (cây AVL lưu trữ theo mã số sinh viên)
a) (0.25 điểm) Hiện thực thao tác thêm một sinh viên mới b) (0.25 điểm) Hiện thực thao tác xóa một sinh viên
c) (0.25 điểm) Hiện thực thao tác tìm kiếm thông tin theo mã số sinh viên
Trang 15+ Nhược điểm: Không - Cây AVL:
+ Ưu điểm: Đỡ tốn bộ nhớ hơn mảng.
+ Nhược điểm, sau khi thêm node có thể dẫn tới mất cân bằng của cây và ta cần thực hiện cân bằng lại cho cây
b) Xóa sinh viên: - Mảng:
+ Ưu điểm: Không + Nhược điểm:
Cũng như khi thêm thì xoá một sinh viên mới sẽ rất tốn tài nguyên và bộ nhớ vì phải gán lại và xê dịch các phần tử
- Danh sách liên kết:
+ Ưu điểm: Cũng như thêm thì danh sách liên kết rất dễ để xoá phần tử của mảng bằng cách trỏ con trỏ của phần từ trước đó đến node sau đó hoặc null
+ Nhược điểm: Không
- Cây AVL:
+ Ưu điểm: Đỡ tốn bộ nhớ hơn mảng.
+ Nhược điểm: sau khi xoá node có thể dẫn tới mất cân bằng của cây và ta cần thực hiện một vài thao tác giúp cân bằng lại cho cây
c) Tìm kiếm sinh viên: - Mảng:
+ Ưu điểm: Tìm kiếm nhanh, đỡ tốn bộ nhớ và tài nguyên + Nhược điểm: Không
Trang 16- Danh sách liên kết: + Ưu điểm: Không
+ Nhược điểm: Khi tìm một phần tử ta bắt buộc phải tìm tuần tự từng phần tử khiến dẫn tới tốn tài nguyên và mất nhiều thời gian
- Cây AVL:
+ Ưu điểm: Đỡ tốn bộ nhớ và thời gian hơn danh sách liên kết + Nhược điểm: Để tìm sinh viên, ta cần chạy từ root và đi qua các node khác đồng thời phải so sánh với các node đó dẫn tới tốn thời gian
Câu 5: Đồ thị:
5.1 Yêu cầu:
Xây dựng đồ thị biểu diễn người dùng của một mạng xã hội mỗi người dùng gồm các thông tin sau mã người dùng, tên người dùng, số tuổi, giới tính, nghề nghiệp
Lý thuyết (1.5 điểm):
a) (0.25 điểm) Vẽ đồ thị trên với ký hiệu đỉnh là mã người dùng, mỗi người dùng có kết bạn với nhau sẽ được biểu diễn bằng cạnh nối giữa hai đỉnh người dùng Đồ thị gồm ít nhất 30 đỉnh và 50 cạnh Đồ thị có thể chứa một vài đỉnh cô lập
b) (0.5 điểm) Viết kết quả duyệt đồ thị bằng giải thuật BFS và DFS bắt đầu từ
Ngày đăng: 14/04/2024, 23:23
Xem thêm:
Tài liệu cùng người dùng
Tài liệu liên quan