Các bộ giải SMT như Z3 hoặc Boolector sử dụng một bộ heuristic phức tạp để giải quyết các vấn đề. Tuy nhiên, điều này cũng làm cho việc dự đoán hiệu suất của một bộ giải như vậy cho một vấn đề nhất định rất khó khăn. Câu hỏi của tôi là như vậy:
Câu hỏi
Có cách nào để hiểu hoặc hiểu rõ hơn về hiệu suất của bộ giải SMT cho một cụ thể trong lý thuyết về các bitvector không định lượng (QFBV) không?
Điều này cũng bao gồm bất kỳ công cụ trực quan nào có thể giúp hiểu nơi giải quyết bị "kẹt" / không đạt được tiến bộ.
Các ứng dụng
Hiểu trước cách mã hóa khác nhau của cùng một vấn đề ảnh hưởng đến hiệu suất của người giải quyết (trạng thái của nghệ thuật ở đây không thể là "chỉ cần thử một vài mã hóa khác nhau và hy vọng một mã hóa đủ nhanh", phải không?)
Nếu một vấn đề nhất định không thể giải quyết được bởi người giải quyết SMT do hạn chế về thời gian, hãy tìm cách diễn đạt vấn đề khác nhau để có thể giải quyết vấn đề.
Tránh lãng phí thời gian vào việc đơn giản hóa vấn đề theo miền cụ thể sẽ không ảnh hưởng đến hiệu suất của người giải hoặc thậm chí ảnh hưởng tiêu cực đến hiệu suất của người giải.
Nghiên cứu hiện tại
Tôi đã cố gắng tìm nghiên cứu về chủ đề này, nhưng tôi không thể tìm thấy nhiều. Tôi chưa có nhiều kinh nghiệm trong lĩnh vực giải quyết SAT / SMT, vì vậy xin lỗi nếu tôi đã bỏ lỡ điều gì đó.
SATzilla : dự đoán người giải quyết hiệu suất tốt nhất dựa trên các tính năng được trích xuất từ vấn đề bằng cách sử dụng các kỹ thuật máy học.
Điều này chỉ áp dụng với SAT thay vì SMT và không giải thích lý do cho hiệu suất của người giải quyết.
Trình mô tả tiên đề Z3 Một trực quan hóa biểu đồ khởi tạo Z3 và phân tích các vòng lặp khớp
Có vẻ như điều này chỉ tập trung vào các lý thuyết được định lượng.