Tôi sẽ giới thiệu vấn đề của tôi với một ví dụ. Giả sử bạn đang thiết kế một bài kiểm tra, bao gồm một bộ câu hỏi độc lập nhất định (rằng các thí sinh có thể nhận được đúng hoặc sai). Bạn muốn quyết định điểm số để đưa ra cho mỗi câu hỏi, với quy tắc là các thí sinh có tổng điểm trên một ngưỡng nhất định sẽ vượt qua và những câu hỏi khác sẽ thất bại.
Trên thực tế, bạn rất kỹ lưỡng về điều này, và bạn đã hình dung tất cả các kết quả có thể , và quyết định cho mỗi người trong số họ liệu một ứng cử viên có thành tích này sẽ vượt qua hay thất bại. Vì vậy, bạn có hàm Boolean cho biết ứng viên nên vượt qua hay thất bại tùy thuộc vào câu trả lời chính xác của họ. Tất nhiên chức năng này phải là đơn điệu : khi nhận được một bộ câu hỏi đúng khiến bạn vượt qua, việc có bất kỳ quyền thay thế nào cũng phải khiến bạn vượt qua. f : { 0 , 1 } n → { 0 , 1 }
Bạn có thể quyết định điểm số (số thực dương) để đưa ra câu hỏi và theo ngưỡng, để chức năng của bạn được nắm bắt chính xác theo quy tắc "một ứng cử viên vượt qua nếu tổng điểm cho các câu hỏi chính xác vượt quá ngưỡng" ? (Tất nhiên ngưỡng có thể được lấy là 1 mà không mất tính tổng quát, cho đến khi nhân số điểm với một hằng số.)
Chính thức: Có đặc tính của các hàm Boolean đơn điệu tồn tại sao cho tất cả , chúng ta có iff ?w 1 , ... , w n ∈ R + v ∈ { 0 , 1 } n f ( v ) = 1 Σ i w i v i ≥ 1
Không quá khó để thấy rằng không phải tất cả các chức năng đều có thể được biểu diễn. Chẳng hạn, hàm không thể: vì được chấp nhận, chúng ta phải có , vì vậy một trong những phải là và tương tự cho . Bây giờ, nếu là, ví dụ: và , chúng ta có mâu thuẫn vì nhưng bị từ chối; các trường hợp khác là tương tự.
Điều này đối với tôi giống như một vấn đề rất tự nhiên, vì vậy câu hỏi chính của tôi là phải biết cái tên này đã được nghiên cứu. Tất nhiên, yêu cầu "đặc tính hóa" là mơ hồ; Câu hỏi của tôi là để biết liệu lớp chức năng có thể được biểu diễn theo cách này có tên hay không, điều gì đã biết về sự phức tạp của việc kiểm tra xem một hàm đầu vào có thuộc về nó hay không (được đưa ra như một công thức, hoặc như một mạch), v.v.
Tất nhiên người ta có thể nghĩ về nhiều biến thể về chủ đề này. Ví dụ, trong các bài kiểm tra thực tế, các câu hỏi không độc lập, nhưng có một DAG cho các câu hỏi chỉ ra sự phụ thuộc và thí sinh chỉ có thể trả lời một câu hỏi nếu tất cả các điều kiện tiên quyết đã được trả lời. Điều kiện về các hàm đơn điệu sau đó có thể được giới hạn ở các định giá trong thỏa mãn các phụ thuộc, và câu hỏi sẽ là xác định liệu một hàm đầu vào có thể được ghi lại do DAG đầu vào trên các biến không. Người ta cũng có thể nghĩ về các biến thể trong đó điểm số là -tuples cho cố định (tính tổng theo điểm và so sánh theo điểm với một vectơ ngưỡng), có thể thu được nhiều hàm hơn. Ngoài ra, bạn có thể muốn nắm bắt nhiều chức năng biểu cảm không phải là Boolean mà đi đến một miền hoàn toàn có trật tự, với các ngưỡng khác nhau sẽ cho biết vị trí của bạn trong miền. Cuối cùng, tôi không chắc chắn điều gì sẽ xảy ra nếu bạn cho phép điểm âm (vì vậy bạn có thể bỏ giới hạn đơn điệu về các chức năng).
(Lưu ý: Điều khiến tôi băn khoăn về điều này là vòng tuyển chọn Google Code Jam, nơi các ứng cử viên được chọn nếu họ đạt đến ngưỡng điểm nhất định và điểm số của các vấn đề có lẽ được thiết kế cẩn thận để phản ánh những vấn đề nào được coi là đủ để được chọn Code Jam có cấu trúc phụ thuộc vào các câu hỏi, với một số câu hỏi "đầu vào lớn" không thể giải được trừ khi bạn đã giải quyết "đầu vào nhỏ" trước.)