MÔN HỌC CÁC HỆ GIẢI BÀI TOÁN THÔNG MINH ĐỒ ÁN CUỐI KỲ XÂY DỰNG HỆ HỖ TRỢ HỌC TẬP LÝ THUYẾT ĐỒ THỊMÔN HỌC CÁC HỆ GIẢI BÀI TOÁN THÔNG MINH ĐỒ ÁN CUỐI KỲ XÂY DỰNG HỆ HỖ TRỢ HỌC TẬP LÝ THUYẾT ĐỒ THỊMÔN HỌC CÁC HỆ GIẢI BÀI TOÁN THÔNG MINH ĐỒ ÁN CUỐI KỲ XÂY DỰNG HỆ HỖ TRỢ HỌC TẬP LÝ THUYẾT ĐỒ THỊMÔN HỌC CÁC HỆ GIẢI BÀI TOÁN THÔNG MINH ĐỒ ÁN CUỐI KỲ XÂY DỰNG HỆ HỖ TRỢ HỌC TẬP LÝ THUYẾT ĐỒ THỊMÔN HỌC CÁC HỆ GIẢI BÀI TOÁN THÔNG MINH ĐỒ ÁN CUỐI KỲ XÂY DỰNG HỆ HỖ TRỢ HỌC TẬP LÝ THUYẾT ĐỒ THỊMÔN HỌC CÁC HỆ GIẢI BÀI TOÁN THÔNG MINH ĐỒ ÁN CUỐI KỲ XÂY DỰNG HỆ HỖ TRỢ HỌC TẬP LÝ THUYẾT ĐỒ THỊMÔN HỌC CÁC HỆ GIẢI BÀI TOÁN THÔNG MINH ĐỒ ÁN CUỐI KỲ XÂY DỰNG HỆ HỖ TRỢ HỌC TẬP LÝ THUYẾT ĐỒ THỊMÔN HỌC CÁC HỆ GIẢI BÀI TOÁN THÔNG MINH ĐỒ ÁN CUỐI KỲ XÂY DỰNG HỆ HỖ TRỢ HỌC TẬP LÝ THUYẾT ĐỒ THỊMÔN HỌC CÁC HỆ GIẢI BÀI TOÁN THÔNG MINH ĐỒ ÁN CUỐI KỲ XÂY DỰNG HỆ HỖ TRỢ HỌC TẬP LÝ THUYẾT ĐỒ THỊMÔN HỌC CÁC HỆ GIẢI BÀI TOÁN THÔNG MINH ĐỒ ÁN CUỐI KỲ XÂY DỰNG HỆ HỖ TRỢ HỌC TẬP LÝ THUYẾT ĐỒ THỊMÔN HỌC CÁC HỆ GIẢI BÀI TOÁN THÔNG MINH ĐỒ ÁN CUỐI KỲ XÂY DỰNG HỆ HỖ TRỢ HỌC TẬP LÝ THUYẾT ĐỒ THỊMÔN HỌC CÁC HỆ GIẢI BÀI TOÁN THÔNG MINH ĐỒ ÁN CUỐI KỲ XÂY DỰNG HỆ HỖ TRỢ HỌC TẬP LÝ THUYẾT ĐỒ THỊMÔN HỌC CÁC HỆ GIẢI BÀI TOÁN THÔNG MINH ĐỒ ÁN CUỐI KỲ XÂY DỰNG HỆ HỖ TRỢ HỌC TẬP LÝ THUYẾT ĐỒ THỊ
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA KHOA HỌC MÁY TÍNH MƠN HỌC CÁC HỆ GIẢI BÀI TỐN THƠNG MINH ĐỒ ÁN CUỐI KỲ XÂY DỰNG HỆ HỖ TRỢ HỌC TẬP LÝ THUYẾT ĐỒ THỊ Lớp: CS316.G21 GVLT: Đỗ Văn Nhơn GVTH : Nguyễn Đình Hiển SVTH: Huỳnh Hữu Hóa Nguyễn Quốc Nam Trần Minh Trí Nguyễn Văn Tài 13520282 13520519 13520923 13520729 TP.Hồ Chí Minh, tháng 06 năm 2016 LỜI CẢM ƠN Trong trình học tập nghiên cứu mơn “Các hệ giải tốn thơng minh”, nhóm nhận quan tâm hướng dẫn tận tình q thầy Thơng qua việc trình bày kết nghiên cứu đồ án mơn học, nhóm chúng em xin chân thành bày tỏ lòng biết ơn đến Thầy Đỗ Văn Nhơn Thầy Nguyễn Đình Hiển tận tình hướng dẫn giúp đỡ nhóm hồn thành đồ án môn học Bản thân chúng em mong tiếp tục nhận quan tâm, hướng dẫn tận tình quý thầy Trân trọng cảm ơn quý thầy Sinh viên thực Huỳnh Hữu Hóa Nguyễn Quốc Nam Trần Minh Trí Nguyễn Văn Tài Tài liệu tham khảo : https://vi.wikipedia.org/wiki/T%C3%ACm_ki%E1%BA%BFm_theo_chi%E1%BB%81u _s%C3%A2u https://vi.wikipedia.org/wiki/T%C3%ACm_ki%E1%BA%BFm_theo_chi%E1%B B %81u_r%E1%BB%99ng https://vi.wikipedia.org/wiki/Thu%E1%BA%ADt_to%C3%A1n_Dijkstra NHẬN XÉT ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… Nội dung LỜI CẢM ƠN NHẬN XÉT I GIỚI THIỆU a Giới thiệu chung b Mô tả ứng dụng II CƠ SỞ LÝ THUYẾT 1) Thuật toán DFS 2) Thuật toán BFS 3) Thuật toán Dijkstra .7 4) Thuật toán Floyd 5) Thuật toán Ford-Bellman III PHÂN TÍCH VÀ THIẾT KẾ IV ỨNG DỤNG VÀ ĐÁNH GIÁ KẾT QUẢ 17 a Các nút chức .17 b Đánh giá kết 18 HỢP ĐỒNG LÀM VIỆC NHÓM 19 I GIỚI THIỆU a Giới thiệu chung Nhằm phục vụ nhu cầu học tập lý thuyết đồ thị , tìm hiểu cách chi tiết trình thao tác thuật toán đồ thị thuật tốn DFS(tìm kiếm theo chiều sâu) , BFS (tìm kiếm theo chiều rộng) , Dijkstra, Floyd, FordBellman , nhóm em định xây dựng ứng dụng hỗ trợ học tập lý thuyết đồ thị mang tên “Drawing” b Mô tả ứng dụng Ứng dụng “Drawing” mô tả q trình chạy thuật tốn DFS(tìm kiếm theo chiều sâu) , BFS (tìm kiếm tốt đầu tiên) , Dijkstra, Floyd Ford-Bellman cách chi tiết bước để người dùng hiểu sâu lý thuyết đồ thị II CƠ SỞ LÝ THUYẾT 1) Thuật tốn DFS - Tìm kiếm ưu tiên chiều sâu hay tìm kiếm theo chiều sâu (tiếng Anh: Depthfirst search - DFS) thuật tốn duyệt tìm kiếm một đồ thị Thuật toán khởi đầu gốc (hoặc chọn đỉnh coi gốc) phát triển xa theo nhánh - Thông thường, DFS dạng tìm kiếm thơng tin khơng đầy đủ mà q trình tìm kiếm phát triển tới đỉnh nút tìm kiếm gặp đỉnh cần tìm tới nút khơng có Khi giải thuật quay lui đỉnh vừa tìm kiếm bước trước Trong dạng khơng đệ quy, tất đỉnh chờ phát triển bổ sung vào ngăn xếp LIFO - Độ phức tạp thời gian thuật toán O(|V| + |E|) Ý tưởng thuật toán : - DFS đồ thị vô hướng giống khám phá mê cung với cuộn thùng sơn đỏ để đánh dấu, tránh bị lạc Trong đỉnh s đồ thị tượng trưng cho cửa mê cung - Ta đỉnh s, buộc đầu cuộn vào s đánh đấu đỉnh "đã thăm" Sau ta đánh dấu s đỉnh hành u - Bây giờ, ta theo cạnh (u,v) - Nếu cạnh (u,v) dẫn đến đỉnh "đã thăm" v, ta quay trở u - Nếu đỉnh v đỉnh mới, ta di chuyển đến v lăn cuộn theo Đánh dấu v "đã thăm" Đặt v thành đỉnh hành lặp lại bước - Cuối cùng, ta đến đỉnh mà tất cạnh kề với dẫn đến đỉnh "đã thăm" Khi đó, ta quay lui cách cuộn ngược cuộn quay lại trở lại đỉnh kề với cạnh chưa khám phá Lại tiếp tục quy trình khám phá - Khi trở s khơng cịn cạnh kề với chưa bị khám phá lúc DFS dừng 2) Thuật toán BFS - Trong lý thuyết đồ thị, tìm kiếm theo chiều rộng (BFS) thuật tốn tìm kiếm đồ thị việc tìm kiếm bao gồm thao tác: (a) thăm đỉnh đồ thị; (b) thêm đỉnh kề với đỉnh vừa thăm vào danh sách thăm tương lai Có thể sử dụng thuật tốn tìm kiếm theo chiều rộng cho hai mục đích: tìm kiếm đường từ đỉnh gốc cho trước tới đỉnh đích, tìm kiếm đường từ đỉnh gốc tới tất đỉnh khác Trong đồ thị khơng có trọng số, thuật tốn tìm kiếm theo chiều rộng ln tìm đường ngắn Thuật tốn BFS đỉnh gốc thăm đỉnh kề với đỉnh gốc Sau đó, với đỉnh số đó, thuật tốn lại thăm đỉnh kề với mà chưa thăm trước lặp lại Xem thêm thuật tốn tìm kiếm theo chiều sâu, sử dụng thao tác có trình tự thăm đỉnh khác với thuật tốn tìm kiếm theo chiều rộng - Độ phức tạp thời gian thuật toán O(|V| + |E|) Ý tưởng thuật toán : - Chèn đỉnh gốc vào hàng đợi - Lấy đỉnh hàng đợi thăm - Nếu đỉnh đỉnh đích, dừng trình tìm kiếm trả kết - Nếu khơng phải chèn tất đỉnh kề với đỉnh vừa thăm chưa thăm trước vào hàng đợi - Nếu hàng đợi rỗng, tất đỉnh đến được thăm – dừng việc tìm kiếm trả "khơng thấy" - Nếu hàng đợi khơng rỗng quay bước 3) Thuật toán Dijkstra - Thuật toán Dijkstra, mang tên nhà khoa học máy tính người Hà Lan Edsger Dijkstra vào năm 1956 ấn năm 1959[1], thuật toán giải toán đường ngắn nguồn đơn đồ thị có hướng khơng có cạnh mang trọng số âm Thuật tốn thường sử dụng định tuyến với chương trình thuật tốn đồ thị hay cơng nghệ Hệ thống định vị tồn cầu (GPS) Ý tưởng thuật toán : Ý tưởng thuật toán chứng minh sau : - Chúng ta ra, đỉnh v bổ sung vào tập S, d[v] giá trị đường ngắn từ nguồn s đến v - Theo định nghĩa nhãn d, d[v] giá trị đường ngắn đường từ nguồn s, qua đỉnh S, theo cạnh nối trực tiếp u-v đến v - Giả sử tồn đường từ s đến v có giá trị bé d[v] Như đường đi, tồn đỉnh s v không thuộc S Chọn w đỉnh 4) Thuật toán Floyd - Thuật tốn Floyd-Warshall cịn gọi thuật tốn Floyd Robert Floyd tìm năm 1962.thuật tốn Floyd thuật toán giải toán đường ngắn đồ thị có hướng có cạnh mang trọng số dương dựa khái niệm Đỉnh Trung Gian - Bài tốn: Xét đồ thị có hướng có trọng số G=: Tập đỉnh: V={v1, v2, …, vn} Ma trận khoảng cách: W = (i, j) - Thuật toán Floyd-Warshall giúp xác định tất Đường ngắn tất cặp đỉnh - Định lý: Thuật toán Floyd-Warshall cho ta Ma trận W* = Wn ma trận khoảng cách nhỏ đồ thị G Ý tưởng thuật tốn - Có thể hiểu cách đơn giản Để từ a > b Bạn quãng đường x - Thuật tốn tìm đường gián tiếp từ a k b đường ngắn đường trực tiếp ta gán giá trị nhỏ đường trực tiếp đường gián tiếp - Thuật toán Floyd cần O(n^3) để giải Bài toán đường ngắn cho cặp đỉnh 5) Thuật toán Ford-Bellman - Thuật toán Bellman-Ford thuật tốn tính đường ngắn nguồn đơn đồ thị có hướng có trọng số (trong số cung có trọng số âm) Thuật toán Dijkstra giải toán nhiên Dijkstra có thời gian chạy nhanh đơn giản đòi hỏi trọng số cung phải có giá trị khơng âm - Thuật tốn Bellman Ford chạy thời gian O(V·E), V số đỉnh E số cung đồ thị Ý tưởng thuật toán - Bước 1: Khởi tạo ∏(0,x)=0; ∏(0,i)=+∞, ∀i≠x k=1 - Bước 2: Với i∈X ta đặt: ∏(k,i)=min({∏(k-1,i)}𝖴{∏(k-1,j)+L[j][i]}) - Bước 3: Nếu ∏(k,i)=∏(k-1,i) với i∈X ∏(k,i) độ dài đường ngắn từ x đến i Ngược lại k3 1->4 mà không cần làm lại Nội dung thuật tốn III PHÂN TÍCH VÀ THIẾT KẾ Các lớp chức : DFS.cs , BFS.cs , Dijkstra.cs, Floyd.cs, FB.cs Lớp DFS.cs : lớp xử lý thuật toán DFS class DFS : Algorithms { public DFS():base() { 0) } public override void Run(int verIDStart, int verIDStartEnd = { List listV = PhatSinhDinh(verIDStart); Color.Blue; Form1.getInstance().MainListVertex[verIDStart].Color = Form1.getInstance().fInvalidate();//reset lai cua so ve Thread.Sleep(Form1.timeSleep);// Visited.Add(verIDStart); if(listV.Count != 0){ foreach (int i in listV) { int e = CheckEdgetoVertex(verIDStart, i); Color.Blue; if (!checkVisited(i)) { Form1.getInstance().MainListEdge[e].Color = Form1.getInstance().DrawMoveV(verIDStart, i); Thread.Sleep(Form1.timeSleep); Run(i); Form1.getInstance().DrawMoveV(i, verIDStart); Thread.Sleep(Form1.timeSleep); Color.Red; Color.Red) } else { Form1.getInstance().MainListEdge[e].Color = Form1.getInstance().fInvalidate(); Thread.Sleep(Form1.timeSleep * 20); } if (Form1.getInstance().MainListEdge[e].Color == Color.LightSlateGray; } } Form1.getInstance().MainListEdge[e].Color = } } Lớp BFS.cs : lớp xử lý thuật toán BFS class BFS : Algorithms { public BFS() :base() { i++) } public void InitParent() { for (int i = 0; i < Form1.getInstance().MainListVertex.Count; { } Parent[i] = -1; } public override void Run(int verIDStart, int verIDEnd = 0) { int V, listTop = 0, listEnd = 0; List listV = new List(); listV.Add(verIDStart); while (listTop Len[j]) i = j; } int temp; Visited.Add(i); for (int j = 0; j < countVertex; j++) { if (!checkVisited(j) && Len[i] + (temp = Matrix[i, j] != -1 ? Matrix[i, j] : Int16.MaxValue) < Len[j]) { Len[j] = Len[i] + Matrix[i, j]; Parent[j] = i; } } } if (kt) { Stack st = new Stack(); int k = verIDEnd; while (k != verIDStart) { st.Push(k); k = Parent[k]; Color.Red) } st.Push(verIDStart); int s = -1; int e = -1; while (st.Count != 0) { e = st.Pop(); if (Form1.getInstance().MainListVertex[e].Color != Form1.getInstance().MainListVertex[e].Color = Color.Blue;//to mau dinh Form1.getInstance().fInvalidate(); Thread.Sleep(Form1.timeSleep * 20); if (s != -1) { //to canh int v = CheckEdgetoVertex(s, e); Form1.getInstance().MainListEdge[v].Color = Color.Blue; //ve canh Form1.getInstance().DrawMoveV(s, e); Thread.Sleep(Form1.timeSleep * 20); } s = e; } Form1.getInstance().fInvalidate(); MessageBox.Show("Khoang cach tu tu " + verIDStart + ">" + verIDEnd + " = " + Len[verIDEnd].ToString()); } else { MessageBox.Show("Khong co duong di tu " + verIDStart + "->" + verIDEnd); } } } Lớp Floyd.cs : lớp xử lý thuật toán Floyd class Floyd : Algorithms { int[,] G;//ma tran lien ket int[,] A;//ma tran coppy tu G int[,] P;//ma tran phu luu vet public Floyd() : base() { G = Form1.getInstance().ConverMatrix(); A = new int[Form1.getInstance().MainListVertex.Count, Form1.getInstance().MainListVertex.Count]; P = new int[Form1.getInstance().MainListVertex.Count, Form1.getInstance().MainListVertex.Count]; } public int Max() { int sum = 0; for (int i = 0; i < Form1.getInstance().MainListVertex.Count; i++) { for (int j = 0; j < Form1.getInstance().MainListVertex.Count; j++) { if (G[i, j] > 0) sum += G[i, j]; } } return sum; } public override void Run(int vStart, int vEnd) { for (int i = 0; i < Form1.getInstance().MainListVertex.Count; i++) { for (int j = 0; j < Form1.getInstance().MainListVertex.Count; j++) { if (G[i, j] > 0) { A[i, j] = G[i, j]; } else { A[i, j] = Max(); } P[i, j] = -1; } } for (int k = 0; k < Form1.getInstance().MainListVertex.Count; k++) { for (int i = 0; i < Form1.getInstance().MainListVertex.Count; i++) { for (int j = 0; j < Form1.getInstance().MainListVertex.Count; j++) { if (i != j && j != k && k != i && A[i, k] > && A[k, j] > && A[i, j] > A[i, k] + A[k, j]) { A[i, j] = A[i, k] + A[k, j]; P[i, j] = k; } } } } String temp = ""; Stack st = new Stack(); st.Push(vEnd); st.Push(vStart); while (true) { int i = st.Pop(); int j = st.Pop(); int k = P[i, j]; } Color.Red) st.Push(j); if (k == -1) { st.Push(i); break; } st.Push(k); st.Push(i); int s = 1; int e = -1; while (st.Count != 0) { e = st.Pop(); if (Form1.getInstance().MainListVertex[e].Color != Form1.getInstance().MainListVertex[e].Color = Color.Blue;//to mau dinh Form1.getInstance().fInvalidate(); Thread.Sleep(Form1.timeSleep * 20); if (s != -1) { //to canh int v = CheckEdgetoVertex(s, e); if (v != -1) { Form1.getInstance().MainListEdge[v].Color = Color.Blue; //ve canh Form1.getInstance().DrawMoveV(s, e); Thread.Sleep(Form1.timeSleep * 20); } } s = e; } Form1.getInstance().fInvalidate(); if (A[vStart, vEnd] != Max()) MessageBox.Show("Khoang cach tu tu " + vStart + "->" + vEnd + " = " + A[vStart, vEnd].ToString()); else MessageBox.Show("Khong co duong di tu " + vStart + ">" + vEnd); Lớp FB.cs : lớp xử lý thuật toán Ford-Bellman class FB : Algorithms { private int[] Truoc; private int[] khoangcach; public FB() { Matrix = Form1.getInstance().ConverMatrix(); Truoc = new int[Form1.getInstance().MainListVertex.Count]; khoangcach = new int[Form1.getInstance().MainListVertex.Count]; } public override void Run(int verIDStart, int verIDEnd = 0) { for (int i = 0; i < Form1.getInstance().MainListVertex.Count; i++) { if (Matrix[verIDStart, i] > 0) khoangcach[i] = Matrix[verIDStart, i]; else khoangcach[i] = int.MaxValue; if (Matrix[verIDStart, i] > 0) Truoc[i] = verIDStart; else Truoc[i] = -1; } for (int i = 0; i < Form1.getInstance().MainListVertex.Count - 2; i++) { for (int u = 0; u < Form1.getInstance().MainListVertex.Count; u++) { for (int v = 0; v < Form1.getInstance().MainListVertex.Count; v++) { if (verIDStart != u && u != v && verIDStart != v && Matrix[u,v]>0) { if (khoangcach[v] > khoangcach[u] + Matrix[u, v]) { Matrix[u, v]; ; } } } } } khoangcach[v] = khoangcach[u] + Truoc[v] = u; //chuyen duong di ngan nhat vao stack Stack st = new Stack(); st.Push(verIDEnd); while (true) { int v = st.Pop(); if (v == verIDStart) { st.Push(v); break; } if (v == -1) { break; } int vTrc = Truoc[v]; st.Push(v); st.Push(vTrc); Color.Red) } int s = 1; int e = -1; //duyet hoa cho duong di ngan nhat while (st.Count != 0) { e = st.Pop(); if (Form1.getInstance().MainListVertex[e].Color != Form1.getInstance().MainListVertex[e].Color = Color.Blue;//to mau dinh Form1.getInstance().fInvalidate(); Thread.Sleep(Form1.timeSleep * 20); if (s != -1) { int v = CheckEdgetoVertex(s, e); Form1.getInstance().MainListEdge[v].Color = Color.Blue; //ve canh Form1.getInstance().DrawMoveV(s, e); Thread.Sleep(Form1.timeSleep * 20); } s = e; } Form1.getInstance().fInvalidate(); if (khoangcach[verIDEnd] != int.MaxValue) MessageBox.Show("Khoang cach tu tu " + verIDStart + ">" + verIDEnd + " = " + khoangcach[verIDEnd].ToString()); else MessageBox.Show("khong co duong di ngan nhat tu " + verIDStart + "->" + verIDEnd); } IV ỨNG DỤNG VÀ ĐÁNH GIÁ KẾT QUẢ a Các nút chức Chọn đỉnh bắt đầu Chọn đỉnh kết thúc Nút nhập thông tin đầu vào toán Reset trạng thái ban đầu Thực mô thuật DFS Thực mô thuật BFS Thực mô thuật Floyd Thực mô thuật Dijkstra Thực mô thuật Ford-Bellman b Đánh giá kết - Ứng dụng có giao diện đơn giản , dễ sử dụng - Có thể cải tiến cách cài đặt thêm lớp thuật khác liên quan đến lý thuyết đồ thị thuật toán leo đồi , leo đồi dốc đứng , A*,… HỢP ĐỒNG LÀM VIỆC NHÓM Danh sách thành viên: Huỳnh Hữu Hóa 13520282 KHMT2013 Nguyễn Quốc Nam 13520519 KHMT2013 Trần Minh Trí 13520923 KHMT2013 Nguyễn Văn Tài 13520729 KHMT2013 Mục tiêu nhóm mà nhóm đề giúp đỡ hồn thành tốt mơn học, nâng cao kĩ làm việc nhóm Tiêu chuẩn đánh giá - Xuất sắc Tỷ trọng – Tôt - Tạm Tệ Đóng góp nội dụng làm 40% Chất lượng làm tốt, số lượng nhiều Hướng dẫn giúp đỡ bạn khác hoàn thành phần làm Số lượng nhiều, chất lượng tốt Số lượng, chất lượng làm đảm bảo theo phân chia bạn nhóm Khơng hồn thành phần làm Giải vấn đề tư sáng tạo 20% Tham gia nhiệt tình đóng góp ý kiến họp nhóm, sáng tạo Tham gia nhiệt tình đóng góp ý kiến họp nhóm Tham gia đầy đủ buổi họp nhóm, có Ít đóng góp ý kiến cho nhóm trong tập khó đóng góp ý kiến Sự hợp tác tinh thần trách nhiệm 20% Hồn thành tốt phần việc giúp đỡ thành viên khác Hoàn thành tốt Hoàn thành phần việc phần phần việc mình, Khơng hồn thành cơng việc mình, trễ hạn Tư phản biện, tông trọng lắng nghe 10% Lắng nghe ý kiến thành viên tích cực phản biện, góp ý Ln lắng nghe ý kiến thành viên có tranh luận Khơng tơn trọng, lắng nghe ý kiến thành viên nhóm Chuyên cần 10% Tham gia đầy đủ buổi họp nhóm Tham gia gần Tham gia đầy đủ ½ buổi họp nhóm buổi họp nhóm Lắng nghe ý kiến thành viên không phản biện, tranh luận Không tham gia tham gia họp nhóm Cách đánh giá tính điểm cho thành viên nhóm: Các thành viên có tổng đánh giá > 15đ : đạt 100% điểm nhóm Các thành viên có tổng đánh giá từ 14-15đ : đạt 80% điểm nhóm Các thành viên có tổng đánh giá từ 10-13đ : đạt 70% số điểm nhóm Các thành viên có tổng đánh giá từ – 10đ: đạt 60% số điểm nhóm Các thành viên có tổng đánh giá < 6đ : đạt 50% số điểm nhóm Các qui định nhóm: Họp nhóm tuần lần vào 14h chủ nhật, có vấn đề phát sinh họp nhóm nhiều Vị trí họp nhóm phịng 1004 KTX khu B , thay đổi, có thay đổi thông báo đến thành viên