Đặt tính toán bao gồm các công đoàn, nút giao và sự khác biệt thường có thể được diễn tả theo nhiều cách khác nhau. Có bất kỳ lý thuyết hoặc triển khai cụ thể nào cố gắng giảm thiểu số lượng tính toán cần thiết để đạt được một câu trả lời nhất định không? Ví dụ, lần đầu tiên tôi nhìn thấy một ứng dụng thực tế của điều này khi cố gắng phân hủy các nguyên tử trong mô phỏng vật liệu vô định hình thành vỏ láng giềng nơi vỏ đầu tiên là hàng xóm ngay lập tức của một số nguyên tử gốc và vỏ thứ hai là các nguyên tử là hàng xóm của vỏ đầu tiên không có trong vỏ đầu tiên hoặc vỏ trước đó:Bộ chức năng thông minh hoàn toàn
nth 0 = singleton i
nth 1 = neighbors i
nth n = reduce union (map neighbors (nth(n-1))) - nth(n-1) - nth(n-2)
Có nhiều cách khác nhau để giải quyết vấn đề này. Bạn có thể từng bước kiểm tra tư cách thành viên trong mỗi bộ trong khi soạn kết quả hoặc bạn có thể tính toán liên minh của ba vỏ lân cận và sử dụng giao điểm để loại bỏ hai vỏ trước đó rời khỏi phần ngoài cùng. Trong thực tế, các giải pháp yêu cầu xây dựng các bộ trung gian lớn là chậm hơn.
Có lẽ triển khai tập hợp thông minh có thể soạn biểu thức được đánh giá và sau đó tối ưu hóa nó (ví dụ: để giảm kích thước bộ trung gian) trước khi đánh giá để cải thiện hiệu suất. Thực hiện các cài đặt như vậy có tồn tại không?
Vâng, tôi đoán cơ sở dữ liệu SQL với các bảng một cột cơ bản được đặt bằng bộ tối ưu hóa ngôn ngữ truy vấn. Tôi không có ý tưởng cho dù bất kỳ người trong số họ có tối ưu hóa sẽ áp dụng cho truy vấn này, mặc dù ... hoặc thậm chí SQL là một ngôn ngữ đủ thú vị để có thể thể hiện truy vấn này. –
Tôi đã xem xét một vài năm trước và câu trả lời là "không" đối với những điều này, với ngoại lệ đáng chú ý của các trình tối ưu hóa truy vấn SQL. – Gene
Âm thanh như các mẫu biểu thức C++ ... – ildjarn