xây dựng hệ thống giải bài toán smt hiệu năng cao – phần máy chủ

48 795 0
xây dựng hệ thống giải bài toán smt hiệu năng cao – phần máy chủ

Đ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

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Đỗ Ngọc Thiện XÂY DỰNG HỆ THỐNG GIẢI BÀI TOÁN SMT HIỆU NĂNG CAO – PHẦN MÁY CHỦ KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Công Nghệ Thông Tin Cán bộ hướng dẫn: TS. Trương Anh Hoàng Cán bộ đồng hướng dẫn: TS. Phạm Ngọc Hùng HÀ NỘI - 2010 Xây dựng hệ thống giải bài toán SMT hiệu năng cao – Phần máy chủ 2010 LỜI CẢM ƠN Trước tiên, tôi xin gửi lời cảm ơn và lòng biết ơn sâu sắc đến Tiến sĩ Trương Anh Hoàng và Tiến sĩ Phạm Ngọc Hùng, những người đã tận tình chỉ bảo, hướng dẫn tôi trong suốt quá trình thực hiện khoá luận tốt nghiệp. Tôi xin bày tỏ lời cảm ơn sâu sắc đến các thầy cô giáo đã giảng dạy tôi trong suốt bốn năm học qua, đã cho tôi nhiều kiến thức quý báu để tôi vững bước trên con đường học tập của mình. Tôi xin gửi lời cảm ơn chân thành tới các anh chị cao học, các bạn trong nhóm tìm hiểu bài toán SMT và tìm hiểu cách xây dựng hệ thống giải quyết bài toán SMT hiệu năng cao đã nhiệt tình giúp đỡ tôi trong quá trình tham gia nghiên cứu khoa học và làm khoá luận tốt nghiệp. Tôi xin gửi lời cảm ơn tới các bạn trong lớp K51CB và K51CNPM đã ủng hộ khuyến khích tôi trong suốt quá trình học tập tại trường. Và cuối cùng, tôi xin bày tỏ niềm biết ơn vô hạn tới bố mẹ và những người bạn thân luôn bên cạnh, động viên tôi trong suốt quá trình thực hiện khoá luận tốt nghiệp. Hà Nội, ngày 13 tháng 05 năm 2010. Sinh Viên Đỗ Ngọc Thiện Xây dựng hệ thống giải bài toán SMT hiệu năng cao – Phần máy chủ 2010 TÓM TẮT NỘI DUNG Việc giải quyết các bài toán Satisfiability Modulo Theories (SMT) được nghiên cứu rất nhiều trên khắp thế giới. Hiện nay, trên thế giới đã có rất nhiều bộ giải quyết các bài toán (hay còn gọi là Solver) SMT từ một tệp SMT đã được xây dựng trên thế giới, trong đó phải kể đến CVC3, Z3, Yieces, IASolver, SatSolver,… Và mỗi Solver đó đều có những đặc trưng và thế mạnh riêng trong mỗi trường hợp của bài toán SMT. Trong nhiều năm qua, bài toán giải quyết bài toán SMT hiệu năng cao đã được xây dựng, đặc biệt nó là đề tài tìm hiểu, nghiên cứu của rất nhiều trường đại học của các nước trên thế giới. Do vậy, việc xây dựng bước đầu của hệ thống giải quyết bài toán SMT hiệu năng cao là điều quan trọng để những người phát triển khác về sau có thể nâng cấp, phát triển hệ thống tốt hơn. Dựa trên những ưu điểm của các Solver, chúng ta xây dựng một hệ thống có cơ chế kết nối các ưu điểm đó của Solver để có thể tìm ra được kết quả cho bài toán SMT một cách nhanh chóng. Trong khóa luận tốt nghiệp này, một hệ thống giải quyết bài toán SMT hiệu năng cao mã nguồn mở được bước đầu được xây dựng nên. Hi vọng, cùng với những người phát triển khác sau này của hệ thống, trường ta sẽ có một hệ thống giải quyết bài toán SMT tốt hơn, mang tên trường Đại Học Công Nghệ. Xây dựng hệ thống giải bài toán SMT hiệu năng cao – Phần máy chủ 2010 MỤC LỤC Xây dựng hệ thống giải bài toán SMT hiệu năng cao – Phần máy chủ 2010 BẢNG KÍ HIỆU, CHỮ VIẾT TẮT Kí hiệu Diễn giải File Tệp Request Yêu cầu người dùng SMT Satisfiability Modulo Theories Server Máy chủ Solver Bộ giải bài toán SMT Timeout Thời gian tối đa để giải bài toán SMT User Người sử dụng Xây dựng hệ thống giải bài toán SMT hiệu năng cao – Phần máy chủ 2010 DANH MỤC CÁC BẢNG SỬ DỤNG Xây dựng hệ thống giải bài toán SMT hiệu năng cao – Phần máy chủ 2010 DANH MỤC CÁC HÌNH VẼ, BIỂU ĐỒ SỬ DỤNG CHƯƠNG 1. MỞ ĐẦU 1.1. Giới thiệu Các bài toán lý thuyết mô đun về tính thỏa được (Satisfiability Modulo Theories – SMT) luôn được quan tâm và tìm hiểu trên khắp thế giới trong nhiều năm qua. Việc giải các bài toán SMT đó là việc kiểm tra tính thỏa được của các biểu thức logic dựa trên các thuyết nền tảng. Các bộ giải quyết bài toán SMT đã được xây dựng rất nhiều quốc gia từ rất sớm, khoảng đầu những năm 1980. Từ đó đến nay, chúng ta đã xây dựng được rất nhiều bộ giải quyết khác nhau. Trong các bộ Solver đã được xậy dựng, ta phải kể đến các Solver như : CVC, CVC Lite, ICS (SRI), MathSAT, STP, UCLID, Yices (SRI), Zap (Microsoft), Z3 (Microsoft),… Hiện tại, nhiều trường đại học nổi tiếng đã nghiên cứu và xây dựng nên các hệ thống để giải quyệt bài toán SMT. Điều chúng ta cần ở hệ thống giải quyết bài toán SMT đó là vấn đề hiệu năng, thời gian trả lời kết quả của bài toán. Thách thức của chúng ta ở đây là xây dựng một hệ thống kết hợp các bộ giải toán SMT để tận dụng các ưu điểm của các Solver, giải quyết bài toán SMT nhanh chóng. [1] 1.2. Phát biểu bài toán giải quyết bài toán SMT hiệu năng cao– phía máy chủ Mỗi Solver đều có một thế mạnh cho riêng trong từng dạng của bài toán SMT. Để đem lại cho người dùng kết quả của bài toán SMT nhanh chóng và chính xác, ta cần xây dựng một hệ thống cho phép tận dụng tối ưu các thế mạnh của các Solver. Hệ thống dự kiến bao gồm 3 phần chính đó là: phần máy chủ (còn gọi là Server), Solver, và phần người sử dụng. Khi phần thực thi các Solver và User được xây dựng, ta cần phải xây dựng phần Server cho phép chuyển giao bài toán từ phía User đến các Solver, và chuyển kết quả từ Solver về cho người dùng. Đồng thời, ngắt việc thực thi các bài toán SMT ở các Solver khác sau khi nhận được kết quả nhanh nhất từ Solver. Việc xử lý chuyển giao bài toán và kết quả của Solver phải được thực hiện song song và phải có cơ chế sao cho phục vụ người dùng một cách hiệu quả nhất. Kết quả từ các Solver được biểu diễn theo cách đặc trưng của Solver đó, chúng ta cần chuyển đổi chúng về một dạng để người dùng có 8 thể dễ hiểu hơn. Việc xây dựng Solver cũng phải rõ ràng, dễ hiểu để người phát triển hệ thống tiếp theo có thể nâng cấp hệ thống một cách dễ dàng, hiệu quả. 1.3. Kết quả đã đạt được Hệ thống giải bài toán SMT hiệu năng cao theo như trong trình bày luận văn đã được xây dựng và bước đầu cho kết quả khá tốt ở các bài toán đưa ra. Hiện tại, hệ thống đang sử dụng 2 Solver đó là Z3 và Yieces và hỗ trợ 2 cách nhập bài toán SMT đó là bằng file hoặc sử dụng API. Hệ thống cho thấy thời gian giải bài toán SMT là tương đương với thời gian nhanh nhất giải bài toán đó của 2 Solver. Tuy vậy, hệ thống còn chưa hỗ trợ được nhiều Solver và mới chỉ duy nhất hỗ trợ một định dạng file “.smt”. 1.4. Các nội dung chính của luận văn Bài luận văn “Xây dựng hệ thống giải bài toán SMT hiệu năng cao – Phần máy chủ” bao gồm 7 chương: - Ở chương 1, chương mở đầu của luận văn, chúng ta sẽ bước đầu biết đến SMT,hiểu được bài toán đặt ra cho hệ thống giải bài toán SMT hiệu năng cao và các kết quả đã đạt được của việc xây dựng hệ thống. - Ở chương 2, giới thiệu về SMT, SMT Solver trình bày về SMT và SMT Solver, các ứng dụng của việc giải bài toán SMT - Ở chương 3, phân tích hệ thống và hướng giải quyết, chương này mô tả các thành phần của hệ thống giải bài toán SMT hiệu năng cao, các yêu cầu của người sử dụng. Đồng thời ta cũng nắm bắt được các lựa chọn để xây dựng nên hệ thống, cơ chế hoạt động của hệ thống. - Ở chương 4, thiết kế tổng thể của hệ thống, chương 4 cho ta nắm bắt được các thành phần, cách hoạt động mà mối quan hệ giữa các thành phần của hệ thống thông qua biểu đồ ca sử dụng và biểu đồ hoạt động của hệ thống. - Ở chương 5, thiết kế chi tiết server, chương này trình bày về các lớp xây dựng nên Server và cách xây dựng các lớp đó. - Ở chương 6, cài đạt và thực nghiệm, chương này trình bày về cách thức cài đặt, thực thi hệ thống và những yêu cầu của hệ thống về môi trường phần cứng phần mềm. Chương 6 cũng đưa ra bài toán thực nghiệm của hệ thống và đánh giá kết quả thực nghiệm của hệ thống. 9 - Ở chương 7, kết luận, chương này trình bày về kết luận của việc xây dựng hệ thống giải bài toán SMT hiệu năng cao và các hướng phát triển tiếp theo của hệ thống. CHƯƠNG 2. GIỚI THIỆU VỀ SMT, SMT SOLVER 2.1. Giới thiệu về SMT SMT là viết tắt của Satisfiability Modulo Theories - các lý thuyết mô đun về tính thỏa được, là một tập hợp của các phương pháp nghiên cứu tự động kiểm tra tính thỏa mãn của các biểu thức tiền tố với nền tảng một số thuyết “T” nào đó. Điều khác biệt giữa SMT và các hệ thống tự động suy luận thông thường đó là sử dụng thuyết nên tảng được gọi là các lý thuyết mô đun về tính thỏa được và sử dụng các phương pháp suy luận đặc trưng của thuyết đó. Bằng cách sử dụng sự đặc trưng và giới hạn của ngôn ngữ để giải quyết các biểu thức, các phương thức đặc biệt được thực thi trong các Solver đem lại hiệu quả cao hơn trong thực tế so với các định lý toán học với mục đích thông thường. Trong khi, kĩ thuật SMT trong truyền thống chỉ dùng để hỗ trợ kiểm tra các phần mềm suy diễn thì ngày nay chúng được tìm thấy ở một số ứng dụng khác trong khoa học máy tính chẳng hạn như: lập kế hoạch, kiểm tra các mô hình và tự động tạo ra các mẫu kiểm tra. Thông thường, các thuyết hay được quan tâm là các thuyết về biểu thức, số học, bit vector, kiểu dữ liệu đại số…. [2] [3] Thông thường, các bài toán SMT thường được biểu diễn theo quy tắc chuẩn SMT, và được lưu ra tệp để cho các Solver thực hiện giải bài toán. 2.2. Giới thiệu về SMT Solver Các bộ giải quyết bài toán SMT (SMT Solver) dùng để giải các bài toán SMT đã được xây dựng và phát triển từ rất lâu. Những bộ SMT Solver đầu tiên được xây dựng từ những năm 1980. Cho đến ngày nay, số lượng Solver đã được xây dựng đã lên đến hàng chục Solver, có thể kể đến : ArgoLib, Ario, Barcelogic, CVC, CVC Lite, CVC3, ExtSAT, Fx7, Harvey, HTP, ICS (SRI), Jat, MathSAT, Sateen, Simplify, Spear, STeP, STP, SVC, TSAT, UCLID, Yices (SRI), Zap (Microsoft), Z3 (Microsoft), … Trong hệ thống giải quyết bài toán SMT hiệu năng cao đã được xây dựng, ta sử dụng đến 2 Solver là Yieces và Z3. Yieces và Z3 là 2 Solver cho phép đưa ra kết quả của 10 [...]... nhiều người dùng cùng kết nối đến Solver và giải bài toán SMT cùng một lúc Quản lý số lượng kết nối đến cùng lúc Dễ cài đặt và thực thi hệ thống 3.2 Các thành phần của hệ thống Mô hình của hệ thống: 12 Hình 3.1 Mô hình hệ thống giải quyết bài toán SMT hiệu năng cao Dựa vào mô hình hệ thống giải quyết bài toán SMT hiệu năng cao hình 3.1, ta có thể thấy được hệ thống hoạt động bao gồm một Server, là trung.. .bài toán SMT và cũng cho phép truyền tham số về thời gian thực hiện giải bài toán, phù hợp với yêu cầu của hệ thống Đó chính là lí do hệ thống giải bài toán SMT hiệu năng cao chọn 2 Solver này trong quá trình xậy dựng và thực thi hệ thống 2.3 Các ứng dụng của bài toán SMT Ứng dụng của bài toán SMT được sử dụng kiểm tra phần mềm và phần cứng, mở rộng các kiểm tra tĩnh,... để xây dựng được một Server có tính năng mạnh, có khả năng phục vụ nhiều người sử dụng thì phức tạp hơn Hệ thống giải quyết bài toán SMT hiệu năng cao được xây dựng dựa trên mô hình “Robust Java Server” của Steven Haines, một kĩ sư về Java của công ty phần mềm Quest, là tác giả của 2 cuốn sách “Java 2 primer plus” và “Java 2 from scratch” Để phù hợp với bài toán giải quyết bài toán SMT hiệu năng cao, ... vào: Ta có thể chọn 2 hình thức nhập bài toán SMT để gửi đến hệ thống giải quyết - bài toán SMT đó là sinh ra file SMT bằng dòng code hoặc sử dụng file SMT sẵn có Việc gửi file để giải bài toán đi phải dễ dàng, hoặc cách thức nhập dữ liệu bài toán đơn giản Hiện tại, hệ thống mới hỗ trợ file định dạng * .SMT, một định dạng chuẩn và cơ bản nhất mô tả các bài toán SMT và định dạng này được hỗ trợ ở hầu... hiện giải bài toán sẽ được chuyển về dạng chuẩn để gửi về cho User Biểu đồ được vẽ bằng phần mềm Enterprise Architect 7.5 24 4.2 Biểu đồ hoạt động của hệ thống Hình 4.2 Biều đồ hoạt động của hệ thống [8] 25 Từ biểu đồ hoạt động của hệ thống, ta có thể xác định được các công việc tuần tự của hệ thống và cách làm việc của hệ thống Khi hệ thống hoạt động, các User sẽ kết nối đến Server và xây dựng bài toán. .. cầu về bài toán của User đến các Solver và chuyển kết quả theo chiều ngược lại đến User - Hệ thống bao gồm 3 bộ phận chính: Solver: mỗi một Solver kết nối với một bộ giải bài toán SMT (SMT Solver), cho phép giải quyết bài toán SMT và nhận kết quả của bài toán từ SMT Solver đem gửi cho Server, để Server chuyển kết quả cho người dùng tương ứng Một Solver có thể cho phép thực hiện giải nhiều bài toán cùng... tế áp dụng cho các bài toán khác, tất nhiên sẽ gặp một số vướng mắc nho nhỏ theo tính chất đặc trưng riêng của từng bài toán [7] 3.5.2 Áp dụng mô hình Robust Java Server vào xây dựng giải quyết bài toán SMT hiệu năng cao Do tính chất đặc thù của bài toán, nên khi xây dựng Server ta phải chú ý đầu tiên đến các đối tượng kết nối đến Server Các đối tượng kết nối đến Server bao gồm 2 phần: User và Solver... 3.4 Ngôn ngữ lập trình Giải pháp được chọn trong phương thức kết nối giữa các thành phần trong hệ thống là kết nối qua socket nên ta lựa chọn ngôn ngữ lập trình bậc cao để lập trình cho hệ thống vì các ngôn ngữ lập trình bậc cao hỗ trợ lập trình socket rất tốt Để xây dựng hệ thống giải quyết bài toán SMT hiệu năng cao, ta sử dụng ngôn ngữ lập trình Java, một trong những ngôn ngữ lập trình thông dụng... xây dựng bài toán SMT Bài toán SMT có thể đã được mô tả bằng file hay được mô tả bằng mã trong User đó Sau khi xác định bài toán SMT, User sẽ gửi bài toán toán đó cho Server đồng thời gửi thông tin về thời gian thực hiện giải bài toán và lắng nghe kết quả trả về từ phía Server Server lắng nghe các kết nối của User, khi nhận được bài toán SMT và tham số về thời gian thực hiện bài toán gửi từ User, Server... sinh ra các kiểm thử và bảo mật máy tính Do đó, việc tạo hệ thống giải quyết bài toán SMT hiệu năng cao đem lại kết quả nhanh nhất, tốt nhất và rõ ràng nhất cho người sử dụng Đem lại cho người sử dụng cảm giác tin cậy và tiện dụng [4] Cùng với đó, hệ thống có khả năng hỗ trợ nhiều định dạng SMT, nhiều cách nhập dữ liệu cho người dùng 11 CHƯƠNG 3: PHÂN TÍCH HỆ THỐNG VÀ HƯỚNG GIẢI QUYẾT 3.1 Phân tích yêu . SMT tốt hơn, mang tên trường Đại Học Công Nghệ. Xây dựng hệ thống giải bài toán SMT hiệu năng cao – Phần máy chủ 2010 MỤC LỤC Xây dựng hệ thống giải bài toán SMT hiệu năng cao – Phần máy chủ. toán SMT User Người sử dụng Xây dựng hệ thống giải bài toán SMT hiệu năng cao – Phần máy chủ 2010 DANH MỤC CÁC BẢNG SỬ DỤNG Xây dựng hệ thống giải bài toán SMT hiệu năng cao – Phần máy chủ 2010 DANH. 2010. Sinh Viên Đỗ Ngọc Thiện Xây dựng hệ thống giải bài toán SMT hiệu năng cao – Phần máy chủ 2010 TÓM TẮT NỘI DUNG Việc giải quyết các bài toán Satisfiability Modulo Theories (SMT) được nghiên cứu

Ngày đăng: 16/07/2014, 15:20

Từ khóa liên quan

Mục lục

  • Đỗ Ngọc Thiện

    • HÀ NỘI - 2010

      • Hình 2.4 Mô hình hoạt động của Robust Java Server.

      • TÓM TẮT NỘI DUNG

        • CHƯƠNG 1. MỞ ĐẦU

          • 1.1. Giới thiệu

          • 1.2. Phát biểu bài toán giải quyết bài toán SMT hiệu năng cao– phía máy chủ

          • 1.3. Kết quả đã đạt được

          • 1.4. Các nội dung chính của luận văn

          • CHƯƠNG 2. GIỚI THIỆU VỀ SMT, SMT SOLVER

            • 2.1. Giới thiệu về SMT

            • 2.2. Giới thiệu về SMT Solver

            • 2.3. Các ứng dụng của bài toán SMT

            • CHƯƠNG 3: PHÂN TÍCH HỆ THỐNG VÀ HƯỚNG GIẢI QUYẾT

              • 3.1. Phân tích yêu cầu

              • 3.2. Các thành phần của hệ thống

                • Hình 3.1 Mô hình hệ thống giải quyết bài toán SMT hiệu năng cao.

                • 3.3. Cách thức giao tiếp của các thành phần của hệ thống

                  • 3.3.1. Phương thức kết nối giữa các thành phần trong hệ thống

                    • Bảng 3.1 So sánh việc lựa chọn kết nối các thành phần của hệ thống

                    • 2.3.2. Các quy ước trong giao tiếp giữa các thành phần hệ thống.

                      • <hello>

                      • Z3

                      • </hello>

                        • Hình 3.2 Ví dụ về XML.

                        • 3.4. Ngôn ngữ lập trình

                        • 3.5. Cơ chế phục vụ của Server

                          • 3.5.1. Mô hình robust Java Server – Steven Haines

                            • while(true) {

                            • Socket socket = ServerSocket.accept();

                            • HandlerThread handler = new HandlerThread(socket);

                            • handler.start();

                            • }

                              • Hình 2.3 Cách nhận tiếp nhận các kết nối đến.

Tài liệu cùng người dùng

Tài liệu liên quan