Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 84 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
84
Dung lượng
3,77 MB
Nội dung
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN THỊ CHINH MƠ PHỎNG MỘT SỐ THUẬT TỐN TRÊN ĐỒ THỊ LUẬN VĂN THẠC SĨ Hà Nội - 2011 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN THỊ CHINH MÔ PHỎNG MỘT SỐ THUẬT TỐN TRÊN ĐỒ THỊ Ngành: Cơng nghệ thơng tin Chun ngành: Hệ thống thông tin Mã số: 60 48 05 LUẬN VĂN THẠC SĨ NGƯỜI HƯỚNG DẪN KHOA HỌC: TS HỒ CẨM HÀ Hà Nội - 2011 LỜI CAM ĐOAN Tơi xin cam đoan, kết luận văn hồn tồn kết tự thân tơi tìm hiểu, nghiên cứu hướng dẫn TS Hồ Cẩm Hà Các tài liệu tham khảo trích dẫn thích đầy đủ Học viên Nguyễn Thị Chinh Trang LỜI CẢM ƠN Trước hết, muốn gửi lời cảm đến Thầy, Cô khoa Công nghệ thông tin- Trường Đại học Công nghệ - Đại học Quốc gia Hà nội truyền đạt kiến thức quý báu cho suốt thời gian học tập trường Đặc biệt, xin gửi lời cảm ơn sâu sắc tới cô giáo hướng dẫn TS Hồ Cẩm Hà, người tận tình bảo hướng dẫn mặt chun mơn cho tơi suốt q trình thực luận văn Cũng qua đây, xin gửi lời cảm ơn đến Ban Giám hiệu trường THPT Chuyên Đại học Sư phạm Hà Nội, nơi công tác tạo điều kiện thuận lợi cho thời gian học tập suốt trình thực luận văn tốt nghiệp Cuối cùng, tơi xin cảm ơn gia đình, bạn bè, đồng nghiệp ủng hộ, động viên nhiều để yên tâm nghiên cứu hoàn thành luận văn Trong suốt q trình làm luận văn, thân tơi cố gắng tập trung tìm hiểu, nghiên cứu tham khảo thêm nhiều tài liệu liên quan Tuy nhiên, thời gian hạn chế thân cịn chưa có nhiều kinh nghiệm nghiên cứu khoa học, chắn luận văn cịn nhiều thiếu sót Tơi mong nhận bảo Thầy Cô giáo góp ý bạn bè, đồng nghiệp để luận văn hoàn thiện Hà Nội, ngày 12 tháng 06 năm 2011 Nguyễn Thị Chinh Trang MỤC LỤC LỜI CẢM ƠN LỜI NÓI ĐẦU Chương MỘT SỐ KIẾN THỨC CƠ BẢN VỀ THUẬT TOÁN 10 Khái niệm toán Tin học 10 Khái niệm thuật toán 10 Các tính chất thuật toán 11 Độ phức tạp xác định độ phức tạp thuật toán 12 Chi phí thực thuật tốn 16 Ba tốn mơ hình đồ thị đưa vào giảng dạy trường Trung học Phổ thông Chuyên 16 6.1 Một số khái niệm đồ thị 16 6.1.1 Khái niệm đồ thị (Graph) 16 6.1.2 Các khái niệm 17 6.2 Bài tốn tìm kiếm đồ thị 19 6.2.1 Phát biểu toán 19 6.2.2 Giới thiệu thuật tốn tìm kiếm DFS BFS 20 6.2.3 Độ phức tạp tính tốn thuật tốn DFS BFS 22 6.3 Bài toán tìm đường ngắn đồ thị có trọng số 22 6.3.1 Phát biểu toán 22 6.3.2 Giới thiệu thuật toán Ford - Bellman 23 6.2.3 Giới thiệu thuật toán thuật toán Dijkstra 24 6.3.4 Độ phức tạp 26 6.4 Các thuật tốn tìm kiếm khung 26 6.4.1 Bài toán khung 26 6.4.2 Giới thiệu thuật toán Prim 27 6.4.3 Giới thiệu thuật toán Kruskal 28 6.4.5 Độ phức tạp 29 Trang 6.5 Bài tốn tìm chu trình Hamilton qua tất đỉnh đồ thị 30 6.5.1 Phát biểu toán 30 6.5.2 Giới thiệu thuật tốn tìm chu trình Hamilton: 31 Chương MƠ PHỎNG THUẬT TỐN 32 Khái niệm chức mô 32 Lịch sử mơ thuật tốn 33 Hiệu mơ thuật tốn giảng dạy 35 Một số yêu cầu mơ thuật tốn 39 4.1 Mơ theo thuật tốn 39 4.2 Cho phép thực theo bước 39 4.3 Mơ thuật tốn phải có tính động 39 4.4 Có thể thực thi với liệu đầu vào 41 4.5 Có phân cấp người học 41 Quy trình mơ thuật toán 41 5.1 Nghiên cứu phân tích giải thuật 41 5.2 Mô liệu vào kết đầu 42 5.3 Chia thuật toán thành nhiều bước nhỏ mô theo bước 43 5.4 Tổng hợp mô theo bước 45 5.5 Sơ đồ cấu trúc chung hệ thống mô 45 Đề xuất lựa chọn công cụ để phát triển chương trình mơ thuật tốn 46 6.1 Một số hệ thống mơ thuật tốn chung 47 6.2 Sử dụng công cụ mơ thuật tốn riêng biệt 50 6.3 Xây dựng hệ thống từ đầu 51 Chương PHÂN TÍCH THIẾT KẾ HỆ THỐNG MƠ PHỎNG MỘT SỐ THUẬT TOÁN TRÊN ĐỒ THỊ 52 Mục đích 52 Những yêu cầu thực tế 52 Đề xuất cho hệ thống 53 Thiết kế hệ thống mơ số thuật tốn đồ thị 54 Trang 4.1 Lựa chọn cơng cụ lập trình 55 4.2 Chức mô thuật toán cài đặt 57 4.2.1 Mơ thuật tốn tìm kiếm 57 4.2.2 Mô thuật toán Dijkstra 59 4.2.3 Mơ thuật tốn Ford – Bellman 61 4.2.4 Mô thuật toán Prim 61 4.2.5 Mơ thuật tốn Kruskal 63 4.2.6 Thuật toán tìm chu trình Hamilton 64 Giới thiệu chương trình 64 5.1 Tổng quan hệ thống 64 5.1.1 Các đối tượng xây dựng cấu trúc đồ thị 65 5.1.2 Cơng cụ vẽ hình ảnh để mơ 68 5.1.3.Chức chi tiết cơng cụ hỗ trợ cho q trình mô 68 5.2 Giới thiệu công cụ hỗ trợ mô người dùng cài đặt 69 Chương KẾT LUẬN 78 Những kết đạt 78 Hướng phát triển 79 DANH MỤC TÀI LIỆU THAM KHẢO 80 PHỤ LỤC 82 Trang LỜI NÓI ĐẦU Cách gần ba thập kỉ (khoảng năm 80 kỉ XX), nhiều nước giới mơ thuật tốn sử dụng việc giảng dạy môn Khoa học máy tính cơng cụ hữu hiệu để mơ tả thuật tốn cách trực quan, khoa học Khơng cịn cho người học biết chi tiết bước hoạt động thuật toán với cấu trúc liệu kèm thông qua việc mô tả đồ họa Những năm gần đây, Việt Nam mơn Tin học đưa vào chương trình học sinh trung học phổ thông là mô ̣t môn ho ̣c chiń h thức Tuy nhiên thực tế , mô ̣t số trường chuyên cả nước đã tuyể n sinh ho ̣c sinh chuyên Tin từ cuối những năm 80 kỉ XX Những ho ̣c sinh này cần nắm kiế n thức Tin học như: cấu trúc liệu trừu tượng : stack, queue, cây, nhi ̣phân , nhi ̣phân tìm kiế m , chiến lược thiết kế thuật toán: tham lam, quay lui, quy hoa ̣ch ̣ng… Trong đó, lý thuyết đờ thi ̣và th ̣t tốn đồ thị lĩnh vực rộng phức tạp Viê ̣c hiể u và cài đă ̣t tố t thuật tốn đòi hỏi thời gian và cơng sức rấ t lớn Hiện nay, việc truyền đạt thuật toán đồ thị cho học sinh chuyên Tin gặp nhiều khó khăn Có nhiều nhiều lý do: Các thuật tốn khó hình dung, việc tổ chức liệu cho phức tạp, thời gian giảng dạy lớp có hạn, tài liệu tham khảo tự đọc, tự học cịn ít… Trong khuôn khổ đề tài này, xây dựng chương trình nhằm mơ hoạt động ba thuật toán giải ba toán đồ thị theo phân phối chương trình Bộ Giáo dục với hai mục đích: để học sinh dễ dàng nắm bắt tư tưởng bước hoạt động cụ thể thuật tốn, để giáo viên làm cho giảng thuật toán trở nên dễ hiểu, dễ tiếp thu Nội dung luận văn đươ ̣c chia thành chương: Trang Chương I Những kiến thức thuật toán Ở chương này, chúng tơi trích nêu khái niệm tốn thuật tốn Các tính chất thuật toán, xác định độ phức tạp thuật toán…Cuối cùng, chúng tơi giới thiệu ba thuật tốn quan trọng đồ thị mà học sinh THPT học Chương II Mơ thuật tốn Chương chúng tơi trình bày khái niệm mô phỏng, chức mô vấn đề liên quan như: lịch sử mơ phỏng, nghiên cứu hiệu giảng dạy số yêu cầu việc mơ thuật tốn nói chung Chương III Phân tích thiết kế hệ thống mơ số thuật tốn đồ thị Ở chương 3, chúng tơi trình bày q trình phân tích, thiết kế xây dựng hệ thống mơ ba thuật tốn: thuật tốn tìm kiếm (tìm kiếm theo chiều sâu tìm kiếm theo chiều rộng), thuật tốn tìm đường ngắn (thuật tốn Dijsktra) thuật tốn tìm khung cực tiểu đồ thị vơ hướng có trọng số (thuật toán Prim)… Trang Chương MỘT SỐ KIẾN THỨC CƠ BẢN VỀ THUẬT TỐN Khái niệm tốn Tin học Trong phạm vi tin học, người ta quan niệm tốn cơng việc mà người muốn máy tính thực [xem 1] Khi dùng máy tính để giải tốn, ta cần quan tâm tới vấn đề: Dữ liệu cần đưa vào máy tính (Input) cần lấy (Output) thơng tin gì? Nói cách khác, cho tốn việc mơ tả rõ Input Output tốn Vấn đề cịn lại là: Làm để từ Input ta có Output? Khái niệm thuật toán Khác với Toán học (các yêu cầu toán thường chứng minh tồn đáp án khơng u cầu tìm cách chi tiết để tìm đáp án đó), giải tốn Tin học việc tìm lời giải cụ thể, tường minh để đưa Output toán dựa Input cho Việc cách tìm Output tốn gọi thuật tốn Có nhiều cách phát biểu khái niệm thuật toán Dưới cách phát biểu chọn để đưa vào sách giáo khoa Tin học phổ thông: Khái niệm thuật toán: thuật toán dãy hữu hạn thao tác xếp theo trình tự định để sau thực dãy thao tác đó, từ input ta có output cần tìm [xem 1] Trong lĩnh vực máy tính, cụm từ “thuật tốn” đơi người ta dùng từ khác: “giải thuật” Ví dụ thuật tốn: Nhập vào số nguyên dương N, kiểm tra số có số ngun tố hay khơng? Lời giải: Input: Số ngun dương N Output: Có/khơng tương ứng với N có ngun tố hay khơng? Trang 10 DFS mơ phỏng: Module: GraphTool.Searching.DFSForm DFS thực thi thuật tốn “lên” kịch bản: GraphTool.Model.DFS Kiến trúc: DFS mô phỏng: Module: GraphTool.Sear ching.DFSForm Chuyển mơ hình đồ thị mà người dùng chuẩn bị cho Module Model.DFS thực thuật toán DFS thực thi thuật toán: GraphTool.Mo del.DFS Trả lại bước thuật toán thực liệu đầu vào để chương trình mơ bắt đầu làm việc Chức năng: công cụ chức chúng mơ hình cài đặt Các cơng cụ chương trình: private Dictionary _trace =new Dictionary(); private Dictionary _free = new Dictionary(); public Graph Graph { get; set; } public string VertexKeyStart {get; set;} public string VertexKeyEnd {get; set;} private BagStep _steps = new BagStep(); Cơng cụ thuật tốn:các thuật tốn trợ giúp cho thuật tốn chính: Thủ tục public void Execute() private void GetResult() public BagStep GetBagStep() private void DfsAlgorithms(Vertex u) private void Initialize() Chức Thực thi thuật toán Lấy kết lưu trữ vào bước cho vào túi Lấy túi đựng bước để chuyển qua mơ Chương trình đệ quy thực việc thăm theo mơ hình DFS từ đỉnh u tới đỉnh kề với Khởi tạo thơng số đồ thị dựa mơ hình đồ thị mà người dùng đưa vào trước thực thuật toán Trang 70 private void UpdateTrace(string after, string before) private void UpdateInfoAtStepEnd() public class StepStartDFS() public class StepEndDFS : Step public public public public public class class class class class DfsStep1 : Step DfsStep21 : Step DfsStep22 : Step DfsStep23 : Step DfsStep3 : Step Thực cơng việc truy vết Hồn thiện thuật toán Ghi nhận cạnh qua theo mơ hình DFS Các bước lưu trữ túi Step kế thừa lớp Step, khởi tạo đỉnh xuất phát Ghi nhận cạnh thăm trình thực theo thuật tốn DFS truy vết Các bước làm mịn q trình mơ thuật tốn DFS Thừa kế từ lớp Step Tìm kiếm theo mơ hình BFS: Chương trình con: BFS mơ phỏng: Module: GraphTool.Searching.BFSForm BFS thực thi thuật toán: GraphTool.Model.BFS Kiến trúc: BFS mô phỏng: Module: GraphTool.Sear ching.BFSForm Chuyển mô hình đồ thị mà người dùng chuẩn bị cho Module Model.BFS thực thuật toán BFS thực thi thuật toán: GraphTool.Mo del.BFS Trả lại bước thuật toán thực liệu đầu vào để chương trình mơ bắt đầu làm việc Chức năng: cơng cụ chức chúng mơ hình cài đặt Các công cụ sử dụng chương trình: private Dictionary _trace = new Dictionary(); private Dictionary _free = new Dictionary(); public Graph Graph { get; set; } private Queue _Q = new Queue(); public string VertexKeyStart { get; set; } public string VertexKeyEnd { get; set; } Trang 71 private BagStep _steps = new BagStep(); Các chương trình chức chúng: Thủ tục Chức Thực thi thuật toán Lấy kết lưu trữ vào bước cho vào private void GetResult() túi Lấy túi đựng bước để chuyển qua mơ public BagStep GetBagStep() Chương trình đệ quy thực việc thăm theo private void BfsAlgorithms(Vertex mô hình BFS từ đỉnh u tới đỉnh kề u) với Khởi tạo thơng số đồ thị dựa mơ hình private void Initialize() đồ thị mà người dùng đưa vào trước thực thuật toán public void Execute() private void UpdateTrace(string after, string before) private void UpdateInfoAtStepEnd() Public class StepStart1() Public class StepEnd1 : Step Public Public Public Public Public class class class class class BfsStep1 : Step BfsStep21 : Step BfsStep22 : Step BfsStep23 : Step BfsStep3 : Step Thực công việc truy vết Hồn thiện thuật tốn Ghi nhận cạnh qua theo mơ hình BFS Các bước lưu trữ túi Step kế thừa lớp Step, khởi tạo đỉnh xuất phát Ghi nhận cạnh thăm q trình thực theo thuật tốn BFS truy vết Các bước làm mịn trình mơ thuật tốn BFS 7.3.2 Dijsktra Chƣơng trình Dijsktra mô phỏng: Module: GraphTool.Searching.dijkstraForm Dijkstra thực thi thuật toán: GraphTool.Model.dijkstra: thực thi theo thuật toán lưu lại bước thực vào túi (BagStep) dùng mô Kiến trúc: Trang 72 Chuyển mơ hình đồ thị mà người dùng chuẩn bị cho Module Model.Dijkstra thực thuật toán Dijkstra mô phỏng: Module: GraphTool.Dijk tra.DijktraFor m Dijkstra thực thi thuật toán: GraphTool.Mo del.Dijkstra Trả lại bước thuật toán thực liệu đầu vào để chương trình mơ bắt đầu làm việc Chức năng: công cụ chức chúng mô hình cài đặt Cơng cụ sử dụng module: private HashSet _vertexGone = new HashSet(); private HashSet _vertexGo = new HashSet(); private Dictionary _trace = new Dictionary(); private Dictionary _distance = new Dictionary(); private BagStep _steps = new BagStep(); public Graph Graph { get; set; } public string VertexKeyStart { get; set; } public string VertexKeyEnd { get; set; } public BagStep GetBagStep() Các chƣơng trình chức chúng: Thủ tục public void Execute() Chức Thực thuật toán Dijkstra Khởi tạo thông số cần thiết cho public void Initialize(); thuật toán Sửa nhãn cho tất đỉnh chưa private void UpdateEdgeGo(Vertex u) chọn cố định đỉnh u Trang 73 private void UpdateTrace(string after, string before) Cập nhật vết cho đường thực thuật tốn Ghi lại thơng số cuối để private void UpdateInfoAtStepEnd() private void AddVertextToVertexGone(Vertex gone) dựng kịch cho mô Kết nạp thêm đỉnh vào tập S (các đỉnh cố định nhãn) Ghi nhận bước thuật private void AddStepStart() private void AddStepStart12(string key) private void AddStepUpdateVertexValue() private private private key) private private toán Dijkstra đồ thị vừa chọn Cập nhật bước để lên kịch mô void AddStepUpdateVertexValueStep11() void AddStepUpdateVertexValueStep12() void AddStepChooseVertexMin(string void AddStepAddVertex() void AddStepEnd() public class StepStart : Step { public string VertexStart { get; set; } private Dictionary _d = new Dictionary(); public void UpdateVertexValue(Dictionary d) { foreach (string key in d.Keys) { _d.Add(key, d[key]); } } public Dictionary GetDistanceInfomation() { return _d; } Kịch cho mô phỏng: Bước khởi đầu: Xây dựng thông số ban đầu từ đồ thị người dùng chuyển vào thành Input cho thuật toán public class StepEnd : Step { private IList _edgesInShotestPath = new List(); Bước cuối cùng: sau thực thuật tốn Dijkstra, lớp StepEnd lưu giữ lại tồn thông số cần thiết để mô phỏng: cạnh thuộc đường ngắn nhất, đỉnh thuộc đường đó… public void UpdateEdgeInfosInShotestPath(Dictionary trace, string keyEnd, string keyStart) { Trang 74 string key = keyEnd; while (key != keyStart && key != string.Empty) { _edgesInShotestPath.Add(trace[key] + ">" + key); key = trace[key]; } if (key == string.Empty) _edgesInShotestPath = new List(); } public IList EdgesInShotestPath() { return _edgesInShotestPath; } } //step public class StepUpdateVertexValue : Step { private Dictionary _d = new Dictionary(); Bước 1: Sửa nhãn cho tất đỉnh public void UpdateVertexValue(Dictionary d) {foreach (string key in d.Keys) { _d.Add(key, d[key]); } } public Dictionary GetDistanceInfomation() { return _d; } } //step public class StepChooseVertexMin : Step { public string Min { get; set; } } Bước 2: Chọn đỉnh có nhãn nhỏ để cố định //step3 public class StepAddVertex : Step { private IList _gones = new List(); Bước 3: thêm đỉnh vừa chọn bước vào tập đỉnh cố định nhãn public IList GetAddedVertex() { return _gones; } } Trang 75 7.3.3 Prim Với thuật toán Prim – thuật toán tìm khung nhỏ nhất, đồ thị lựa chọn một: đồ thị vơ hướng có trọng số người dùng cần lựa chọn đỉnh xuất phát Từ đỉnh xuất phát đó, chương trình mơ thực trình tự thuật tốn Prim để kết nạp dần đỉnh vào khung Thuật toán dừng dựng thành khung đồ thị cho khơng liên thơng (khơng có nghiệm) Cũng giống Dijkstra, chương trình mơ thực Chương trình con: Prim mơ phỏng: Module: GraphTool.Prim.PrimForm Prim thực thi thuật tốn: GraphTool.Model.Prim Kiến trúc: Chuyển mơ hình đồ thị mà người dùng chuẩn bị cho Module Model.Prim thực thuật tốn Prim mơ phỏng: Module: GraphTool.Pri m.PrimForm Prim thực thi thuật toán: GraphTool.Mo del.Prim Trả lại bước thuật toán thực liệu đầu vào để chương trình mơ bắt đầu làm việc Chức năng: công cụ chức chúng mơ hình cài đặt Thủ tục Chức public void Execute() Thực thuật toán Prim public void Initialize(); Khởi tạo thông số cần thiết cho Trang 76 thuật toán Sửa nhãn cho tất đỉnh chưa private void UpdateEdgeGo(Vertex u) chọn cố định đỉnh u Cập nhật đỉnh cạnh thuộc private void UpdateTrace(string after, string before) khung thực thuật toán Ghi lại thông số cuối để private void UpdateInfoAtStepEnd() private void AddVertextToVertexGone(Vertex gone) dựng kịch cho mô Kết nạp thêm đỉnh vào khung Ghi nhận bước thuật private void AddStepStartPrim() toán Prim đồ thị vừa chọn private void AddStepStartPrim(string key) private void AddStepUpdateVertexValuePrim() private void AddStepUpdateVertexValueStep11Prim() private void AddStepUpdateVertexValueStep12Prim() private void AddStepChooseVertexMinPrim(string key) private void AddStepAddVertexPrim() private void AddStepEndPrim() Cập nhật bước để lên kịch mô Trang 77 Chương KẾT LUẬN Những kết đạt Trải qua trình làm việc nghiêm túc, bước đầu thu số kết sau: - Những kiến thức tổng quan, tính chất thuật toán, lịch sử phát triển hệ thống mô phỏng; số ưu điểm tồn hệ thống mô tại; - Đề xuất giải pháp xây dựng mơ hình mơ mới, có hệ thống thuật tốn phức tạp Đây chương trình phù hợp với cơng việc giảng dạy giáo viên việc tự học, tự tìm hiểu kiến thức học sinh - Xây dựng chương trình mơ cụ thể số thuật tốn đồ thị gồm: - Thuật tốn tìm kiếm theo chiều sâu DFS - Thuật tốn tìm kiếm theo chiều rộng BFS - Thuật tốn tìm đường ngắn – thuật toán Ford - Bellman - Thuật tốn tìm đường ngắn – thuật tốn Dijkstra - Thuật tốn tìm khung nhỏ đồ thị vơ hướng có trọng số thuật tốn Prim - Thuật tốn tìm khung nhỏ đồ thị vơ hướng có trọng số thuật tốn Kruskal - Thuật tốn tìm chu trình Hamilton qua tất đỉnh đồ thị Trang 78 2.Hướng phát triển - Triển khai chương trình tới học sinh để ghi nhận tiến mặt hiểu chất cách thức hoạt động thuật tốn - Có thể sử dụng module cài đặt để tiếp tục mô thuật toán nâng cao đồ thị: luồng, cặp ghép đồ thị… Trang 79 DANH MỤC TÀI LIỆU THAM KHẢO Tài liệu Tiếng Việt Hồ Sĩ Đàm (chủ biên) – Sách giáo khoa Tin học 10, NXB Giáo dục, trang… Lê Minh Hoàng - Bài giảng chuyên đề Hồ Sĩ Đàm (chủ biên) – Tài liệu giáo khoa chuyên Tin (bộ tập) Thomas H Cormen Charles E Leiserson Ronald Rivest – Giáo trình thuật tốn - Nhà xuất thống kê TS Nguyễn Xuân My(chủ biên) – Một số vấn đề chọn lọc Tin học (T1+T2) - Nhà xuất giáo dục Tài liệu Tiếng Anh Kehoe C., Stasko J., Taylor A., Rethinking the evaluation of algorithm nimations as learning aids: an observational study, Technical Report GIT-GVU-99-10, March, 1999 Stasko, 1990, Tango: A Framework and System for Algorithm Animation IEEE Computer, 23(9): pp27-39 Brown, 1988 Algorithm Animation The MIT Press, Cambridge, MA, 1988 [Brown, 1992] Brown, M Zeus: A system for algorithm animation and multi-view editing (Research Report No.75) DEC Systems Research Center, Palo Alto, CA 10 Brown, 1993 The 1992 SRC Algorithm Animation Festival In Proceedings of the 1993 IEEE Symposium on Visual Languages: 116123, 1993 11 Byrne, M D, Catrambone, R and Stasko, J T.(1996) Do algorithm animations aid learning? Graphics, Visualization, and Usability Center, Georgia Institute of Technology, Atlanta, GA, Technical Report GITGVU -96-18, August 1996 Trang web: 12 http://www.cs.hope.edu/algamin/cc 13 http://www.cs.edu/~zeil/algae.html 14 http://www.cc.gatech.edu/gvu/softviz/algoanim/xtango.html Trang 80 15 http://www.csse.monash.edu.au/ 16 http://www.csharp-station.com/Tutorial.aspx 17 http://msdn.microsoft.com/en-us/library/aa288436(v=vs.71).aspx Trang 81 PHỤ LỤC Công đoạn chuẩn bị cho file kịch void arrayExample () { System.out.println(“begin”); String[] a1 = {“4”, “453434”, "HELLO WORLD!", "01010 10101"}; System.out.println(“array a1 50 50 4 453434 “+”\"HELLO WORLD!\" ”+”\"01010 10101\" “+”horz black transparent”); //ANNOTATIONS String[] a2 = {"THIS", "IS", "AN", "ARRAY"}; System.out.println(“array a2 150 100 “+”\"THIS\" ”+”\"IS\" “+”\"AN\" “”\"ARRAY\" “+ ”vert black transparent”); System.out.println(“end”); //ANNOTATIONS //ANNOTATIONS for multiple commands System.out.println(“begin”); System.out.println(“changeParam a1[0] bkgrd red”); System.out.println(“changeParam a2[0] bkgrd red”); System.out.println(“end”); for ( int i =0; i