Giải thích trừu tượng là một khái niệm rất chung chung và tùy thuộc vào người bạn hỏi, bạn sẽ nhận được những giải thích khác nhau vì các khái niệm linh hoạt thừa nhận nhiều quan điểm. Quan điểm trong câu trả lời này là của tôi và tôi sẽ không cho rằng nó là chung chung.
Độ cứng tính toán như một động lực
Hãy bắt đầu với các vấn đề quyết định, giải pháp có cấu trúc như thế này:
Thường có NP-hard dưới ràng buộc vào thủ tục. Kiểm tra các thuộc tính ngữ nghĩa của các chương trình thậm chí là không thể giải quyết được. Chúng ta có thể làm gì?
Chúng ta hãy thực hiện hai quan sát. Đầu tiên, đôi khi chúng ta có thể giải quyết các trường hợp vấn đề cụ thể ngay cả khi chúng ta không thể giải quyết vấn đề chung. Thứ hai, các ứng dụng như tối ưu hóa trình biên dịch chấp nhận xấp xỉ trong đó một trình biên dịch loại bỏ một số nhưng không phải tất cả các nguồn không hiệu quả đều hữu ích. Để làm cho trực giác này chính xác, chúng ta phải trả lời:
- Nó có nghĩa chính thức để giải quyết một số, nhưng không phải tất cả các trường hợp vấn đề?
- Một giải pháp gần đúng cho một vấn đề quyết định là gì?
Ý tưởng diễn giải trừu tượng 1: Thay đổi báo cáo vấn đề
Đối với tôi, một cái nhìn sâu sắc về giải thích trừu tượng là thay đổi cách xây dựng vấn đề để thay vì hỏi câu trả lời Có / Không , chúng tôi yêu cầu câu trả lời Có / Không / Có thể .
Kết quả là, mọi vấn đề đều có một giải pháp thời gian không đổi, tầm thường (đầu ra Có thể ). Bây giờ chúng ta có thể chuyển sự chú ý của mình sang việc tạo ra một thủ tục không phải lúc nào cũng có thể . Để trở lại các câu hỏi ở trên, một giải pháp hoạt động cho một số trường hợp vấn đề là một giải pháp trả về Có thể về các vấn đề không thể giải quyết. Hơn nữa, Có lẽ là một xấp xỉ của Có và Không vì chúng tôi không chắc câu trả lời là gì.
Ý tưởng này không bị hạn chế trong các vấn đề quyết định. Hãy xem xét những vấn đề liên quan đến các chương trình.
- Những dòng mã nào trong chương trình đã chết (sẽ không bao giờ được thực thi)?
- Những biến nào trong chương trình có giá trị không đổi?
- Những khẳng định nào trong chương trình bị vi phạm?
Trong tất cả các tình huống này, chúng ta có thể chuyển từ một giải pháp chính xác sang một giải pháp gần đúng bằng cách xem xét các giải pháp có một số điểm không chắc chắn.
- Một tập hợp các dòng mã đã chết là gì?
- Một tập hợp các biến trong chương trình có giá trị không đổi là gì?
- Là những gì một bộ các khẳng định trong chương trình mà không bị vi phạm?
Các bộ sản xuất không cần phải là lớn nhất. Ý tưởng này cực kỳ chung chung và áp dụng cho các vấn đề ít liên quan đến phân tích chương trình.
- mn[a,b]
- mnk
- Thay vì yêu cầu các bài tập thỏa mãn cho một công thức, chúng ta có thể yêu cầu một tập hợp có chứa các bài tập thỏa mãn.
Lưu ý rằng chúng tôi không chỉ thay đổi vấn đề mà còn khái quát nó một cách nghiêm ngặt bởi vì một giải pháp cho vấn đề ban đầu vẫn là một giải pháp cho vấn đề được sửa đổi. Câu hỏi lớn chưa được trả lời là: Làm thế nào chúng ta có thể tìm thấy một giải pháp gần đúng?
Ý tưởng diễn giải trừu tượng 2: Đặc tính điểm cố định của các giải pháp gốc
tsReach(s)stReach(s)
X={s}∪{w | v is in X and (v,w) is an edge}
nns
Các đặc tính điểm cố định là một quyết định thiết kế. Có nhiều đặc điểm khác nhau của một tập hợp các giải pháp. Mỗi người trong số họ có thể có những lợi thế khác nhau. Trong trường hợp ngôn ngữ lập trình, chúng ta có nhiều cấu trúc hơn là chỉ xử lý một biểu đồ. Các phương trình điểm cố định mà chúng ta quan tâm có thể được xác định bằng cảm ứng trên cấu trúc của chương trình đầu vào. Ý tưởng này không cụ thể cho các chương trình. Khi áp dụng giải thích trừu tượng cho các yếu tố của ngôn ngữ có cấu trúc như ngữ pháp, công thức logic, chương trình, biểu thức số học, v.v. chúng ta có thể xác định các điểm cố định bằng cách cảm ứng trên cấu trúc của một số đối tượng cú pháp.
Bằng cách đưa ra đặc tính điểm cố định này, chúng tôi cam kết một cách cụ thể của các giải pháp điện toán. Chúng tôi sẽ không thực sự tính toán điểm cố định này bởi vì nó ít nhất cũng khó như giải quyết vấn đề ban đầu, điều này đưa chúng ta đến bước tiếp theo.
Ý tưởng diễn giải trừu tượng 3: Xấp xỉ điểm cố định
FLGMMLML
LMFG
Bạn có thể tìm thấy trực giác đằng sau chuyển điểm cố định sâu sắc. Chúng ta có thể nghĩ về một điểm cố định là giới hạn của một chuỗi các yếu tố (có thể là vô hạn). Tính toán các giải pháp gần đúng tương đương với giới hạn này, điều mà chúng ta có thể làm bằng cách xấp xỉ các phần tử của chuỗi.
stst
Ý tưởng diễn giải trừu tượng 4: Thuật toán xấp xỉ điểm cố định
Tất cả mọi thứ nhìn thấy cho đến nay là một kết quả tồn tại toán học. Bước cuối cùng là tính toán gần đúng. Khi mạng gần đúng là hữu hạn (hoặc nếu điều kiện chuỗi tăng dần / giảm dần được đáp ứng), chúng ta có thể sử dụng một quy trình lặp đơn giản. Nếu mạng là vô hạn, một quy trình lặp có thể không đủ, mặc dù tính toán một điểm cố định vẫn có thể quyết định được. Trong tình huống này, nhiều kỹ thuật được sử dụng để tiếp tục gần đúng giải pháp hoặc chuyển sang một giải pháp chính xác nhanh hơn thuật toán lặp ngây thơ. Trong bối cảnh tính toán một giải pháp, bạn nghe thấy các thuật ngữ như mở rộng , thu hẹp , lặp lại chiến lược , tăng tốc , v.v.
Tóm lược
Theo tôi, giải thích trừu tượng cung cấp một cơ sở toán học cho khái niệm trừu tượng giống như cách logic toán học cung cấp một cơ sở toán học cho lý luận. Các giải pháp cho nhiều vấn đề chúng tôi quan tâm có đặc điểm là điểm cố định. Quan sát này không bị giới hạn trong các vấn đề ngôn ngữ lập trình và thậm chí là khoa học máy tính. Các giải pháp gần đúng có thể được mô tả là xấp xỉ các điểm cố định và được tính toán với các thuật toán chuyên dụng. Các đặc tính và thuật toán này sẽ khai thác cấu trúc của thể hiện vấn đề. Trong trường hợp của các chương trình, cấu trúc này được đưa ra bởi cú pháp của ngôn ngữ.
Tính toán gần đúng cho các vấn đề không có số liệu tự nhiên là một nghệ thuật liên tục được phát triển và cải tiến bởi các học viên. Giải thích trừu tượng là một lý thuyết toán học cho khoa học đằng sau nghệ thuật này.
Tài liệu tham khảo
Có một số hướng dẫn tốt về giải thích trừu tượng mà bạn có thể đọc.
- Giới thiệu ngẫu nhiên về Giải thích trừu tượng , Patrick Cousot (Làm việc chung với Radhia Cousot), Hội thảo về Phương pháp sinh học và hình thức hệ thống (SBFM'12)
- Giới thiệu nhẹ nhàng về xác minh chính thức các hệ thống máy tính bằng cách giải thích trừu tượng , Patrick và Radhia Cousot, Trường hè Mark / 10dorf 2010.
- Bài giảng 13: Trừu tượng Phần I , Patrick Cousot, Giải thích trừu tượng, Khóa học MIT.
- Giới thiệu về diễn giải trừu tượng , Samson Abramsky và Chris Hankin, Giải thích trừu tượng về ngôn ngữ khai báo, 1987.
- Giải thích trừu tượng và ứng dụng vào các chương trình logic , Patrick và Radhia Cousot, 1992. Hai phần đầu tiên có một tổng quan chung, cấp cao với một số ví dụ.