Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 61 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
61
Dung lượng
1,3 MB
Nội dung
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN THỊ BÌNH CẢI TIẾN THUẬT TỐN CHỨNG MINH TÍNH ĐÚNG ĐẮN CƠNG THỨC KHOẢNG LUẬN VĂN THẠC SỸ Hà nội – 2014 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CƠNG NGHỆ NGUYỄN THỊ BÌNH CẢI TIẾN THUẬT TỐN CHỨNG MINH TÍNH ĐÚNG ĐẮN CƠNG THỨC KHOẢNG Ngành : Công nghệ thông tin Chuyên ngành : Kỹ nghệ phần mềm Mã số : 60481003 LUẬN VĂN THẠC SỸ NGƯỜI HƯỚNG DẪN KHOA HỌC: TS PHẠM HỒNG THÁI Hà nội – 2014 i LỜI CẢM ƠN Trong thời gian học tập trang bị sâu rộng kiến thức chuyên ngành, phương pháp học tập, đồng thời trưởng thành Đầu tiên tác giả xin chân thành cảm ơn TS Phạm Hồng Thái hướng dẫn giúp đỡ tạo điều kiện để tác giả nghiên cứu hoàn thành luận văn thạc sĩ Tôi xin chân thành cảm ơn thầy cô ngồi Khoa Cơng nghệ thơng tin – Đại học Công nghệ Hà Nội, người trang bị kiến thức giúp nâng cao chuyên môn Tôi xin chân thành cám ơn Ban lãnh đạo trường Đại học Công nghệ Hà Nội tạo điều kiện để tơi làm việc, nghiên cứu hồn thành luận văn Tôi xin cảm ơn tập thể lớp cao học Kỹ thuật phần mềm khóa 16, người thường xuyên động viên, đóng góp trao đổi ý kiến kiến thức suốt thời gian học tập hoàn thành luận văn Hà Nội, tháng 12 năm 2014 Học viên thực Nguyễn Thị Bình ii LỜI CAM ĐOAN Tơi xin cam đoan tồn nội dung trình bày luận văn “Cải tiến thuật tốn kiểm chứng tính đắn cơng thức khoảng” cơng trình nghiên cứu tôi, hướng dẫn trực tiếp TS Phạm Hồng Thái – trường Đại học Công nghệ - Đại học Quốc gia Hà Nội Các thiết kế, kết nghiên cứu luận văn trung thực chưa cơng bố cơng trình nghiên cứu Mọi thơng tin trích dẫn tuân theo luật sở hữu trí tuệ, liệt kê rõ ràng tài liệu tham khảo Tôi xin chịu hoàn toàn trách nhiệm với nội dung viết luận văn Hà Nội, tháng 12 năm 2014 Học viên thực Nguyễn Thị Bình iii DANH MỤC TỪ VIẾT TẮT LDI : Linear Duration Invariant (Bất biến khoảng tuyến tính) DC : Duration Calculus (Lơgic khoảng) RA : Region autotmat (Vùng ơtơmat) TA : Timed Automaton (Ơtơmat thời gian) LDP : Linear Duration Property (Tính chất khoảng tuyến tính) MC : Model Checking (Kiểm chứng mơ hình) RTS : Real-time System (Hệ thời gian thực) iv DANH MỤC HÌNH VẼ Hình 1-1: Khả đáp ứng hệ thống Hình 1-2: Vùng đồng hồ Hình 1-3: Một ví dụ ơtơmat thời gian Hình 1-4: Mơ hình TRAIN Hình 1-5: Mơ hình GATE .10 Hình 1-6: Dáng điệu hệ chắn tàu 12 Hình 1-7: Hợp ơtơmat Train Gate 13 Hình 1-8: Mô tả hệ đèn điện 14 Hình 2-1: Ơtơmat thời gian A 18 Hình 2-2: Đồ thị phân vùng ôtômat A 18 Hình 2-3: Đồ thị phân miền ơtơmat A 19 Hình 2-4: Đồ thị vùng đạt nguyên RG 21 Hình 3-1: Minh hoạ cung xây dựng đồ thị có trọng số 27 Hình 3-2: Cải tiến đồ thị trọng số 27 Hình 3-3 Biều đồ so sánh thời gian thuật toán cải tiến chưa cải tiến 33 v DANH MỤC BẢNG Bảng 2-1: Thuật toán xây dựng đồ thị đạt nguyên .20 Bảng 2-2: Thuật toán kiểm chứng LDI đỉnh .26 Bảng 2-3: Thuật toán kiểm chứng LDI tổng quát 26 Bảng 3-1: Thuật toán cải tiến 29 Bảng 3-2: Kết so sánh hai thuật toán 32 vi MỤC LỤC LỜI CẢM ƠN I LỜI CAM ĐOAN II DANH MỤC TỪ VIẾT TẮT III DANH MỤC HÌNH VẼ IV DANH MỤC BẢNG V MỤC LỤC VI MỞ ĐẦU CHƯƠNG 1: CÁC KHÁI NIỆM CƠ BẢN 1.1 HỆ THỜI GIAN THỰC 1.2 KIỂM CHỨNG MƠ HÌNH 1.2.1 Giới thiệu kiểm chứng mơ hình – Model Checking 1.2.2 Ý nghĩa, hạn chế kiểm chứng mơ hình 1.2.3 Kiểm chứng mơ hình với hệ thời gian thực 1.2.4 Kiểm chứng mơ hình với cơng thức khoảng 1.3 ÔTÔMAT THỜI GIAN 1.3.1 Thể đồng hồ phân vùng đồng hồ .6 1.3.2 Khái niệm ôtômat thời gian 1.3.3 Hợp song song ôtômat thời gian 12 1.4 LÔGIC KHOẢNG 13 1.4.1 Mơ hình lơgic khoảng 13 1.4.2 Công thức khoảng tốn kiểm chứng mơ hình 15 CHƯƠNG 2: THUẬT TỐN KIỂM CHỨNG MƠ HÌNH 17 2.1 ĐỒ THỊ VÙNG ĐẠT ĐƯỢC 17 2.1.1 Đồ thị vùng Ơtơmat 17 2.1.2 Đồ thị miền 18 2.1.3 Đồ thị đạt nguyên 19 2.2 TÍNH RỜI RẠC HỐ 21 vii 2.2.1 Tập mơ hình ơtơmat thời gian 21 2.2.2 Khái niệm ngun hố tính rời rạc hố cơng thức LDI 22 2.3 ĐỒ THỊ TRỌNG SỐ 23 2.4 THUẬT TOÁN KIỂM CHỨNG 24 CHƯƠNG 3: THUẬT TOÁN CẢI TIẾN 27 3.1 Ý TƯỞNG 27 3.2 THUẬT TOÁN CẢI TIẾN 28 3.3 TÍNH HIỆU QUẢ 29 3.4 KẾT QUẢ THỬ NGHIỆM 31 KẾT LUẬN 34 TÀI LIỆU THAM KHẢO 35 PHỤ LỤC I MỞ ĐẦU Hệ thời gian thực trở nên phổ biến thu hút quan tâm nhà nghiên cứu khoa học khoa học máy tính Sự phức tạp yếu tố thời gian dẫn đến việc kiểm tra tính đắn hệ thống cần thực chặt chẽ Làm để kiểm tra, đánh giá chất lượng hệ thống thoả mãn với yêu cầu đặt nhanh nhất, đỡ tốn chi phi nhất? Một phương pháp nghiên cứu sử dụng phổ biến đặc tả hình thức kiểm chứng mơ hình Đánh dấu phát triển vượt bậc phương pháp đời thuật toán kiểm chứng từ xây dựng nên cơng cụ kiểm chứng mơ hình cho phép kiểm tra cách tự động tính đắn hệ thống, giảm thiểu nguy rủi ro Tuy nhiên thuật toán cho kiểm tra tính thời khoảng hạn chế, cơng thức khoảng xét ngữ nghĩa thu hẹp, độ phức tạp cao Luận văn nghiên cứu trình bày hướng Cải tiến thuật tốn kiểm chứng tính đắn công thức khoảng để giảm độ phức tạp thuật toán Thuật toán đưa rời rạc hoá duyệt đồ thị đạt Trên sở việc đặc tả hệ thống, khôi phục cực tiểu, cực đại phép chuyển ta tiến hành xây dựng đồ thị vùng, đồ thị trọng số, đồ thị phục vụ kiểm chứng LDI Nhưng số lượng đỉnh đồ thị phục vụ kiểm chứng LDI lớn ảnh hưởng đến hiệu suất việc kiểm chứng, nên cần thu không gian đỉnh đồ thị Phần cuối luận văn trình bày phương pháp cải tiến tác giả để kiểm chứng tính chất LDI III trình đọc liệu từ file *.txt vào tính tốn để kết (ơtơmat song song, ôtômat đạt được, đồ thị vùng đạt nguyên, đồ thị trọng số phục vụ LDI, kết kiểm chứng, thời gian chạy chương trình) File liệu đầu vào *.txt thiết kế sau: (nếu giá trị vơ thay chữ U) Dòng 1: {Hệ số A}_{Hệ số B}_{Hệ số M} // hệ số cơng thức LDI Dòng 2: {số đỉnh}_{tên vị trí ban đầu} // ơtơmat Dòng 3: {tên vị trí}#xi_low_up|xj_low_up|…#{hệ số ldi} // ơtơmat ({tên vị trí}#{các ràng buộc}#{hệ số ldi}) //mỗi đỉnh dòng … Dòng k: {số cạnh} // ơtơmat Dòng k+1: li#xi_xj_low_up|…#{nhãn}#xi_1|xj_1|…#lj // ôtômat (phép chuyển e = < li, (low logger->log( " Begin method: " METHOD "()"); $maxK = max($aryConstantMaxK); $locationStart = $aryOtomat['init']; $aryLocation = $aryOtomat['aryLocation']; $aryTransition = $aryOtomat['aryTransition']; $aryClock = $aryOtomat['clocks']; //Khoi tao so dinh hien tai $this->graphRegion['num_vertex'] = 1; //Khoi tao so canh hien tai $this->graphRegion['num_edge'] = 0; //Nhap dinh $region0 = join(',', array_fill(0, count($aryClock), 0)); $regionK = join(',', array_fill(0, count($aryClock), 'U')); //Id region $regionId = 1; $vertex0 = $this->createVertexRegion($locationStart, $region0); $this->graphRegion['aryVertex'][$regionId] = array( 'id' => $regionId, 'vertex' => $vertex0, 'loc_name' => $locationStart, 'region' => $region0, 'ldi_c' => $aryLocation[$locationStart]['c'], 'visited' => 0, ); V //Khoi tao tap canh rong $this->graphRegion['aryEdge'] = array(); while (true) { //lay dinh chua tham V $vertex = $this->getVertexNotVisited(); //neu tat ca cac dinh da tham thi ket thuc if ($vertex === false) { break ; } //Dinh s Otomat $loc_name_from = $vertex['loc_name']; $region = $vertex['region']; $vertex_from = $vertex['vertex']; $id_from = $vertex['id']; //Loop Transition cua Otomat foreach ($aryTransition as $transition) { //Neu ton tai phep chuyen e = checkGuard($regionTo, $aryLocation[$loc_name_to]['invar'])) { continue; } //Dat lai gia tri mien theo qui uoc VI $regionTo = $this-> reformatRegion($regionTo, $aryConstantMaxK); //Kiem tra dinh da co chua $vertex_to = $this-> createVertexRegion($loc_name_to, $regionTo); $vertexId = $this->getVertex($vertex_to); //Neu chua co thi bo sung if ($vertexId == 0) { $regionId++; $this-> addVertexRegion($loc_name_to, $regionTo, $aryLocation[$loc_name_to]['c'], $regionI d); $id_to = $regionId; } else { $id_to = $vertexId; } //Kiem tra va bo sung cung neu chua co if (!$this->isExistEdge($id_from, $id_to)) { $durationLow = $durationUp = 0; if (strcmp($regionK, $regionSucc) != 0) { $durationLow = $durationUp = $d; } else { $durationLow = $d; $durationUp = _PHP_INT_MAX; } $this-> addEdgeRegion($durationLow, $durationUp, $id_from, $id_to); } } //End loop $maxK } //End Neu ton tai phep chuyen e =