báo cáo cuối kỳ tổng hợp môn cấu trúc dữ liệu và giải thuật

69 5 0
báo cáo cuối kỳ tổng hợp môn cấu trúc dữ liệu và giải thuật

Đ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

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 ĐỒ ÁN CUỐI KÌ MƠN CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT BÁO CÁO CUỐI KỲ TỔNG HỢP MÔN CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Người hướng dẫn: TS VÕ HOÀNG QUÂN Người thực hiện: NGUYỄN DUY ĐÔNG – 52000749 Lớp : 20050301 Khố THÀNH PHỐ HỒ CHÍ MINH, NĂM 2022 : 24 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 ĐỒ ÁN CUỐI KÌ MƠN CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT BÁO CÁO CUỐI KỲ TỔNG HỢP MÔN CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Người hướng dẫn: TS VÕ HỒNG QN Người thực hiện: NGUYỄN DUY ĐƠNG – 52000749 Lớp : 20050301 Khố THÀNH PHỐ HỒ CHÍ MINH, NĂM 2022 : 24 i LỜI CẢM ƠN Em xin chân thành cảm ơn thầy Võ Hoàng Quân đồng hành giúp đỡ em học kí vừa qua, nhờ thầy mà em tiếp thu hiểu môn học Cấu trúc liệu giải thuật Lần nữa, em xin chân thành cảm ơn ii ĐỒ ÁN ĐƯỢC HOÀN THÀNH TẠI TRƯỜNG ĐẠI HỌC TƠN ĐỨC THẮNG Tơi xin cam đoan sản phẩm đồ án riêng hướng dẫn TS Võ Hoàng Quân; Các nội dung nghiên cứu, kết đề tài trung thực chưa cơng bố hình thức trước Những số liệu bảng biểu phục vụ cho việc phân tích, nhận xét, đánh giá tác giả thu thập từ nguồn khác có ghi rõ phần tài liệu tham khảo Ngồi ra, đồ án cịn sử dụng số nhận xét, đánh số liệu tác giả khác, quan tổ chức khác có trích dẫn thích nguồn gốc Nếu phát có gian lận tơi xin hồn toàn chịu trách nhiệm nội dung đồ án Trường đại học Tơn Đức Thắng khơng liên quan đến vi phạm tác quyền, quyền gây q trình thực (nếu có) TP Hồ Chí Minh, ngày 10 tháng năm 2022 Tác giả (ký tên ghi rõ họ tên) Đông Nguyễn Duy Đông bao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuat iii PHẦN XÁC NHẬN VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊN Phần xác nhận GV hướng dẫn _ _ _ _ _ _ _ Tp Hồ Chí Minh, ngày tháng năm (kí ghi họ tên) Phần đánh giá GV chấm _ _ _ _ _ _ _ Tp Hồ Chí Minh, ngày tháng năm (kí ghi họ tên) bao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuat bao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuat iv TÓM TẮT BÁO CÁO GỒM CÓ HAI PHẦN: PHẦN 1: ĐỀ BÀI PHẦN 2: PHÂN TÍCH VÀ GIẢI QUYẾT YÊU CẦU bao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuat bao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuat MỤC LỤC DANH MỤC KÍ HIỆU VÀ CHỮ VIẾT TẮT DANH MỤC CÁC BẢNG BIỂU, HÌNH VẼ, ĐỒ THỊ PHẦN – ĐỀ BÀI .5 I Đệ Quy II Sắp xếp III Stack IV Cấu trúc liệu Danh sách Cây V Đồ thị PHẦN - PHÂN TÍCH VÀ GIẢI QUYẾT YÊU CẦU .8 I Đệ quy 1.1 Lý thuyết 1.2 Thực hành .17 II Sắp xếp 18 2.1 Khởi tạo mảng gồm 10 phần tử: 18 III Stack 29 3.1 Chuyển đổi biểu thức trung tố (Infix) sang hậu tố (postfix) .29 3.2 Tính biểu thức hậu tố (postfix) .31 IV Cấu trúc liệu Danh sách Cây 32 4.1 Lý thuyết 32 4.2 Thực hành 34 4.2.1 Cài đặt code Linked List 34 4.2.2 Cài đặt code AVL 39 V Đồ thị 48 5.1 Lý thuyết 48 5.1.1 Đồ thị người dùng .48 5.1.2 Duyệt đồ thị 48 bao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuat bao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuat 5.2 Thực hành 55 TÀI LIỆU THAM KHẢO 61 bao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuat bao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuat DANH MỤC KÍ HIỆU VÀ CHỮ VIẾT TẮT bao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuat bao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuat DANH MỤC CÁC BẢNG BIỂU, HÌNH VẼ, ĐỒ THỊ bao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuat bao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuat 49 } } avl.insertStudent(e); avl.insertStudent(f); avl.insertStudent(g); avl.insertStudent(h); avl.insertStudent(i); avl.insertStudent(k); avl.insertStudent(l); avl.insertStudent(m); avl.insertStudent(n); avl.insertStudent(o); avl.insertStudent(p); System.out.println("Cay AVL: "); avl.NLR(avl.getRoot()); System.out.println("Sinh vien can tim: "); System.out.println(avl.search("00000002")); System.out.println("Xoa sinh vien 00000003: "); avl.deleteStudent("00000003"); avl.NLR(avl.getRoot()); V Đồ thị 5.1 Lý thuyết 5.1.1 Đồ thị người dùng bao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuat bao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuat 50 5.1.2 Duyệt đồ thị Duyệt đồ thị BFS: Đỉnh Đỉnh kề Hàng đợi Kết 2,3,5,7,9 2,3,5,7,9 1,8,11,12,1 3,5,7,9,8,11,12,13 1,2 1,4 5,7,9,8,11,12,13,4 1,2,3 1,6,10,11 7,9,8,11,12,13,4,6,10,11 1,2,3,5 9,8,11,12,13,4,6,10,11 1,2,3,5,7 1,4,10,15 8,11,12,13,4,6,10,11,4,10,15 1,2,3,5,7,9 2,14 11,12,13,4,6,10,11,4,10,15,14 1,2,3,5,7,9,8 11 2,5,6,18 12,13,4,6,10,11,4,10,15,14,6,18 1,2,3,5,7,9,8,11 12 2,22 13,4,6,10,11,4,10,15,14,6,18,22 1,2,3,5,7,9,8,11,12 bao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuat bao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuat 51 13 2,21 4,6,10,11,4,10,15,14,6,18,22,21 1,2,3,5,7,9,8,11,12,13 3,15 6,10,11,4,10,15,14,6,18,22,21,15 1,2,3,5,7,9,8,11,12,13,4 5,10,11,19 10,11,4,10,15,14,6,18,22,21,15,10, 19 1,2,3,5,7,9,8,11,12,13,4,6 10 5,6,9,17 11,4,10,15,14,6,18,22,21,15,10,19, 17 1,2,3,5,7,9,8,11,12,13,4,6,10 11(đã xét) 4,10,15,14,6,18,22,21,15,10,19,17 1,2,3,5,7,9,8,11,12,13,4,6,10 4(đã xét) 10,15,14,6,18,22,21,15,10,19,17 1,2,3,5,7,9,8,11,12,13,4,6,10 10(đã xét) 15,14,6,18,22,21,15,10,19,17 1,2,3,5,7,9,8,11,12,13,4,6,10 15 4,9,16 14,6,18,22,21,15,10,19,17,16 1,2,3,5,7,9,8,11,12,13,4,6,10,15 14 8,22 6,18,22,21,15,10,19,17,16,22 1,2,3,5,7,9,8,11,12,13,4,6,10,15, 14 18,22,21,15,10,19,17,16,22 1,2,3,5,7,9,8,11,12,13,4,6,10,15, 14 (đã xét) 18 11,21,25 22,21,15,10,19,17,16,22,11,21,25 1,2,3,5,7,9,8,11,12,13,4,6,10,15, 14,18 22 12,14,21,27 21,15,10,19,17,16,22,11,21,25,21,2 1,2,3,5,7,9,8,11,12,13,4,6,10,15, 14,18,22 21 13,18,22 15,10,19,17,16,22,11,21,25,21,27 1,2,3,5,7,9,8,11,12,13,4,6,10,15, 14,18,22,21 15(đã xét) 10,19,17,16,22,11,21,25,21,27 1,2,3,5,7,9,8,11,12,13,4,6,10,15, 14,18,22,21 10(đã xét) 19,17,16,22,11,21,25,21,27 1,2,3,5,7,9,8,11,12,13,4,6,10,15, 14,18,22,21 17,16,22,11,21,25,21,27,23,24 1,2,3,5,7,9,8,11,12,13,4,6,10,15, 14,18,22,21,19 19 6,23,24 bao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuat bao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuat 52 17 10,16,24 16,22,11,21,25,21,27,23,24,16,24 1,2,3,5,7,9,8,11,12,13,4,6,10,15, 14,18,22,21,19,17 16 15,20 22,11,21,25,21,27,23,24,16,24,20 1,2,3,5,7,9,8,11,12,13,4,6,10,15, 14,18,22,21,19,17,16 22(đã xét) 11,21,25,21,27,23,24,16,24,20 1,2,3,5,7,9,8,11,12,13,4,6,10,15, 14,18,22,21,19,17,16 11(đã xét) 21,25,21,27,23,24,16,24,20 1,2,3,5,7,9,8,11,12,13,4,6,10,15, 14,18,22,21,19,17,16 21(đã xét) 25,21,27,23,24,16,24,20 1,2,3,5,7,9,8,11,12,13,4,6,10,15, 14,18,22,21,19,17,16 21,27,23,24,16,24,20,27,28,29 1,2,3,5,7,9,8,11,12,13,4,6,10,15, 14,18,22,21,19,17,16,25 27,23,24,16,24,20,27,28,29 1,2,3,5,7,9,8,11,12,13,4,6,10,15, 14,18,22,21,19,17,16,25 25 18,27,28,29 21(đã xét) 27 22,25,29 23,24,16,24,20,27,28,29,29 1,2,3,5,7,9,8,11,12,13,4,6,10,15, 14,18,22,21,19,17,16,25,27 23 19,28 24,16,24,20,27,28,29,29,28 1,2,3,5,7,9,8,11,12,13,4,6,10,15, 14,18,22,21,19,17,16,25,27,23 24 17,19,30 16,24,20,27,28,29,29,28,30 1,2,3,5,7,9,8,11,12,13,4,6,10,15, 14,18,22,21,19,17,16,25,27,23,2 16(đã xét) 24,20,27,28,29,29,28,30 1,2,3,5,7,9,8,11,12,13,4,6,10,15, 14,18,22,21,19,17,16,25,27,23,2 24(đã xét) 20,27,28,29,29,28,30 1,2,3,5,7,9,8,11,12,13,4,6,10,15, 14,18,22,21,19,17,16,25,27,23,2 27,28,29,29,28,30,26 1,2,3,5,7,9,8,11,12,13,4,6,10,15, 14,18,22,21,19,17,16,25,27,23,2 4,20 20 16,26 bao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuat bao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuat 53 27(đã xét) 28,29,29,28,30,26,29 1,2,3,5,7,9,8,11,12,13,4,6,10,15, 14,18,22,21,19,17,16,25,27,23,2 4,20 28 23,25,29,30 29,29,28,30,26,29,29,30 1,2,3,5,7,9,8,11,12,13,4,6,10,15, 14,18,22,21,19,17,16,25,27,23,2 4,20,28 29 25,27,28 29,28,30,26,29,29,30 1,2,3,5,7,9,8,11,12,13,4,6,10,15, 14,18,22,21,19,17,16,25,27,23,2 4,20,28,29 29(đã xét) 28,30,26,29,29,30 1,2,3,5,7,9,8,11,12,13,4,6,10,15, 14,18,22,21,19,17,16,25,27,23,2 4,20,28,29 28(đã xét) 30,26,29,29,30 1,2,3,5,7,9,8,11,12,13,4,6,10,15, 14,18,22,21,19,17,16,25,27,23,2 4,20,28,29 30 24,26,28 26,29,29,30 1,2,3,5,7,9,8,11,12,13,4,6,10,15, 14,18,22,21,19,17,16,25,27,23,2 4,20,28,29,30 26 20,30 29,29,30,20,30 1,2,3,5,7,9,8,11,12,13,4,6,10,15, 14,18,22,21,19,17,16,25,27,23,2 4,20,28,29,30,26 29(đã xét) 29,30,20,30 1,2,3,5,7,9,8,11,12,13,4,6,10,15, 14,18,22,21,19,17,16,25,27,23,2 4,20,28,29,30,26 29(đã xét) 30,20,30 1,2,3,5,7,9,8,11,12,13,4,6,10,15, 14,18,22,21,19,17,16,25,27,23,2 4,20,28,29,30,26 30(đã xét) 20,30 1,2,3,5,7,9,8,11,12,13,4,6,10,15, 14,18,22,21,19,17,16,25,27,23,2 4,20,28,29,30,26 20(đã xét) 30 1,2,3,5,7,9,8,11,12,13,4,6,10,15, 14,18,22,21,19,17,16,25,27,23,2 bao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuat bao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuat 54 4,20,28,29,30,26 30(đã xét) 1,2,3,5,7,9,8,11,12,13,4,6,10,15, 14,18,22,21,19,17,16,25,27,23,2 4,20,28,29,30,26 Vậy kết duyệt BFS là : User1  User2  User3  User5  User7  User9  User8  User11  User12  User13  User4  User6  User10  User15  User14  User18  User22  User21  User19  User17  User16  User25  User27  User23  User24  User20  User28  User29  User30  User26 Duyệt đồ thị DFS : Đỉnh Đỉnh kề Stack Kết 2,3,5,7,9 2,3,5,7,9 1,4,10,15 2,3,5,7,4,10,15 1,9 15 4,9,16 2,3,5,7,4,10,4,16 1,9,15 16 15,17,20 2,3,5,7,4,10,4,17,20 1,9,15,16 20 16,26 2,3,5,7,4,10,4,17,26 1,9,15,16,20 26 20,30 2,3,5,7,4,10,4,17,30 1,9,15,16,20,26 30 24,26,28 2,3,5,7,4,10,4,17,24,28 1,9,15,16,20,26,30 28 23,25,29,30 2,3,5,7,4,10,4,17,24,23,25,29 1,9,15,16,20,26,30,28 29 25,27,28 2,3,5,7,4,10,4,17,24,23,25,25,27 1,9,15,16,20,26,30,28,29 27 22,25,29 2,3,5,7,4,10,4,17,24,23,25,25,22,25 1,9,15,16,20,26,30,28,29,27 25 18,27,29,28 2,3,5,7,4,10,4,17,24,23,25,25,22,18 1,9,15,16,20,26,30,28,29,27,25 18 11,21,25 2,3,5,7,4,10,4,17,24,23,25,25,22,11 ,21 1,9,15,16,20,26,30,28,29,27,25,1 21 13,18,22 2,3,5,7,4,10,4,17,24,23,25,25,22,11 1,9,15,16,20,26,30,28,29,27,25,1 bao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuat bao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuat 55 ,13,22 8,21 22 12,14,21,27 2,3,5,7,4,10,4,17,24,23,25,25,22,11 ,13,12,14 1,9,15,16,20,26,30,28,29,27,25,1 8,21,22 14 8,22 2,3,5,7,4,10,4,17,24,23,25,25,22,11 ,13,12,8 1,9,15,16,20,26,30,28,29,27,25,1 8,21,22,14 2,14 2,3,5,7,4,10,4,17,24,23,25,25,22,11 ,13,12,2 1,9,15,16,20,26,30,28,29,27,25,1 8,21,22,14,8 1,8,11,12,1 2,3,5,7,4,10,4,17,24,23,25,25,22,11 ,13,12,11,12,13 1,9,15,16,20,26,30,28,29,27,25,1 8,21,22,14,8,2 13 2,21 2,3,5,7,4,10,4,17,24,23,25,25,22,11 ,13,12,11,12 1,9,15,16,20,26,30,28,29,27,25,1 8,21,22,14,8,2,13 12 2,22 2,3,5,7,4,10,4,17,24,23,25,25,22,11 ,13,12,11 1,9,15,16,20,26,30,28,29,27,25,1 8,21,22,14,8,2,13,12 11 2,5,6,18 2,3,5,7,4,10,4,17,24,23,25,25,22,11 ,13,12,5,6 1,9,15,16,20,26,30,28,29,27,25,1 8,21,22,14,8,2,13,12,11 5,10,11,19 2,3,5,7,4,10,4,17,24,23,25,25,22,11 ,13,12,5,5,10,19 1,9,15,16,20,26,30,28,29,27,25,1 8,21,22,14,8,2,13,12,11,6 19 6,23,24 2,3,5,7,4,10,4,17,24,23,25,25,22,11 ,13,12,5,5,23,24 1,9,15,16,20,26,30,28,29,27,25,1 8,21,22,14,8,2,13,12,11,6,19 24 17,19,30 2,3,5,7,4,10,4,17,24,23,25,25,22,11 ,13,12,5,5,23 1,9,15,16,20,26,30,28,29,27,25,1 8,21,22,14,8,2,13,12,11,6,19,24 17 10,16,24 2,3,5,7,4,10,4,17,24,23,25,25,22,11 ,13,12,5,5,23,10 1,9,15,16,20,26,30,28,29,27,25,1 8,21,22,14,8,2,13,12,11,6,19,24, 17 10 5,6,9,17 2,3,5,7,4,10,4,17,24,23,25,25,22,11 ,13,12,5,5,23,5 1,9,15,16,20,26,30,28,29,27,25,1 8,21,22,14,8,2,13,12,11,6,19,24, 17,10 1,6,10,11 2,3,5,7,4,10,4,17,24,23,25,25,22,11 ,13,12,5,5,23 1,9,15,16,20,26,30,28,29,27,25,1 8,21,22,14,8,2,13,12,11,6,19,24, 17,10,5 bao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuat bao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuat 56 23 19,28 5,5,1 2,13, 11,22 ,25,2 5,23, 24,17 (đã duyệt ) 2,3,5,7,4,10,4,17,24,23,25,25,22,11 ,13,12,5,5 1,9,15,16,20,26,30,28,29,27,25,1 8,21,22,14,8,2,13,12,11,6,19,24, 17,10,5,23 2,3,5,7,4,10,4 1,9,15,16,20,26,30,28,29,27,25,1 8,21,22,14,8,2,13,12,11,6,19,24, 17,10,5,23 3,9,15 2,3,5,7,4,10,3 1,9,15,16,20,26,30,28,29,27,25,1 8,21,22,14,8,2,13,12,11,6,19,24, 17,10,5,23,4 1,4 2,3,5,7,4,10 1,9,15,16,20,26,30,28,29,27,25,1 8,21,22,14,8,2,13,12,11,6,19,24, 17,10,5,23,4,3 2,3,5,7 1,9,15,16,20,26,30,28,29,27,25,1 8,21,22,14,8,2,13,12,11,6,19,24, 17,10,5,23,4,3 2,3,5 1,9,15,16,20,26,30,28,29,27,25,1 8,21,22,14,8,2,13,12,11,6,19,24, 17,10,5,23,4,3,7 10,4 (đã duyệt ) 2,3,5 (đã duyệt ) 1,9,15,16,20,26,30,28,29,27,25,1 8,21,22,14,8,2,13,12,11,6,19,24, 17,10,5,23,4,3,7 Vậy kết duyệt DFS : User1  User9  User15  User16  User20  User26  User30  User28  User29  User27  User25  User18  User21  User22  User14  User8  User2  User13  User12  User11  User6  bao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuat bao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuat 57 User19  User24  User17  User10  User5  User23  User4  User3  User7 5.2Thực hành public class Friend { private User u; private User v; private int w; public Friend(User u, User v, int w) { this.u = u; this.v = v; this.w = w; } public User getUser() { return u; } public User getFriendOfUser() { return v; } public int getW() { return w; } } public String toString() { return u + " - " + v; } public class User { private String userID; bao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuat bao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuat 58 private String name; private String gioiTinh; private int age; private String job; public User() {} public User(String userID, String name, String gioiTinh, int age, String job) { this.userID = userID; this.name = name; this.gioiTinh = gioiTinh; this.age = age; this.job = job; } public String getUserID() { return userID; } public void setUserID(String userID) { this.userID = userID; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getGT() { return gioiTinh; } public void setGT(String gioiTinh) { bao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuat bao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuat 59 } this.gioiTinh = gioiTinh; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getJob() { return job; } public void setJob(String job) { this.job = job; } @Override public String toString() { return "User[" + userID + ", " + name + ", " + gioiTinh + ", " + age + ", " + job + "]"; } } import java.util.*; import java.io.*; public class UserManagement { private ArrayList userList; private ArrayList edges; public UserManagement(String userPath, String friendPath) throws FileNotFoundException { userList = new ArrayList(); edges = new ArrayList(); bao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuat bao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuat 60 } readUserFile(userPath); buildGraph(friendPath); public User getUser(int no) { return userList.get(no); } public boolean readUserFile(String file) throws FileNotFoundException{ BufferedReader userReader = new BufferedReader(new FileReader(file)); String line; try { while((line = userReader.readLine()) != null) { String[] items = line.split(","); userList.add(new User( items[0], items[1], items[2], Integer.parseInt(items[3]), items[4] )); } userReader.close(); } catch (IOException exception) { exception.printStackTrace(); return false; } return true; } Public boolean buildGraph(String file) throws FileNotFoundException{ BufferedReader graphReader = new BufferedReader((new FileReader(file))); String line; bao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuat bao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuat 61 } try { while((line = graphReader.readLine()) != null) { String[] items = line.split(" "); User user1 = new User(); User user2 = new User(); for (User u : userList) { if (u.getUserID().equals(items[0])) user1 = u; if(u.getUserID().equals(items[1])) user2 = u; } addEdge(user1, user2, Integer.parseInt(items[2])); } graphReader.close(); } catch (IOException exception) { exception.printStackTrace(); return false; } return true; public void addEdge(User u, User v, int w) { edges.add(new Friend(u,v,w)); } public void printGraph(){ for(int i = 0; i < edges.size(); i++) System.out.println(edges.get(i)); } public ArrayList findFriend(User u) { ArrayList friendOfUser = new ArrayList(); for (Friend f : edges) if (u.equals(f.getUser())) friendOfUser.add(f.getFriendOfUser()); return friendOfUser; } bao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuat bao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuat 62 } public int countCommonFriends(User u, User u1) { ArrayList friendOfUser1 = findFriend(u); ArrayList friendOfUser2 = findFriend(u1); int count = 0; for (User f : friendOfUser1) if (friendOfUser2.contains(f)) count += 1; return count; } import java.io.FileNotFoundException; public class Main { public static void main(String[] args) throws FileNotFoundException { UserManagement user = new UserManagement("User.txt", "Friends.txt"); System.out.println(" Users List -"); user.printGraph(); System.out.println(" Find Friend "); System.out.println("Friend of User: "); for (User u : user.findFriend(user.getUser(0))) { System.out.println(u); } System.out.println(" Common Friends "); System.out.println("Number of common friends of user and user 2: " + user.countCommonFriends(user.getUser(4), user.getUser(5))); } } TÀI LIỆU THAM KHẢO bao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuat bao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuat bao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuatbao.cao.cuoi.ky.tong.hop.mon.cau.truc.du.lieu.va.giai.thuat

Ngày đăng: 02/01/2024, 23:40