Những hàm Boolean đơn điệu nào có thể biểu diễn dưới dạng ngưỡng trên tổng?


16

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.n

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 }2nf:{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ố.)f

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 nR + v { 0 , 1 } n f ( v ) = 1 Σ i w i v i1f:{0,1}n{0,1}w1,,wnR+v{0,1}nf(v)=1iwivi1

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ự.(x1x2)(x3x4)(1,1,0,0)w1+w21w1,w21/2w3,w4w1w3w1+w31(1,0,1,0)

Đ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{0,1}nkkk=1. 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.)


Chúng được gọi là các hàm ngưỡng (mặc dù thuật ngữ này đôi khi được định nghĩa hạn chế hơn). Tôi không biết nếu có một đặc tính cơ bản khác nhau. Một điều kiện cần thiết rõ ràng là f - 1 ( 0 ) là lồi (nghĩa là vỏ lồi của f - 1 ( 1 ) giao với { 0 , 1 } n được bao gồm trong f - 1 ( 1 ) và tương tự cho 0). f1(1)f1(0)f1(1){0,1}nf1(1)
Emil Jeřábek hỗ trợ Monica

Trên thực tế, bây giờ tôi nghĩ về nó: một hàm Boolean là một hàm ngưỡng nếu các vỏ lồi của f - 1 ( 1 )f - 1 ( 0 ) tách rời nhau. ff1(1)f1(0)
Emil Jeřábek hỗ trợ Monica

2
Trên thực tế, đây chính xác hơn là các hàm ngưỡng tích cực.
Kristoffer Arnsfelt Hansen

@KristofferArnsfeltHansen: Chính xác, cảm ơn! Trong thực tế, điều này được đề cập trong các hàm Boolean: Lý thuyết, Thuật toán và Ứng dụng . Định lý 9.16 nói rằng với một DNF dương, chúng ta có thể, trong PTIME, kiểm tra xem đó có phải là hàm ngưỡng hay không và nếu có, xây dựng một vectơ (theo đó sẽ là dương, theo Định lý 9.6). Có bất cứ điều gì được biết về các biến thể tôi đề xuất, đặc biệt là biến thể có DAG trên các biến không? Nếu không, bạn có thể đưa ra một câu trả lời có nội dung như vậy (và đưa ra nhận xét của bạn), và tôi sẽ chấp nhận nó. :)w
a3nm

Câu trả lời:


2

Nó đã được đề cập trong các ý kiến ​​rằng đây là các hàm ngưỡng tích cực.

Đối với các đặc tính khác, tôi thấy sau đây là thú vị. Giả sử chúng ta có một hàm ngưỡng dương tính với trọng lượng giảm : f ( v 1 , ... , v n ) = 1w1w2wn Sau đó, đặc biệt là tập hợp các yếu tố đầu vào(v1,...,vn)f(v )=1là một lý tưởng tự của các mạng majorization nhị phân với2nđiểm, đó là học ở

f(v1,,vn)=1iwivi1.
(v1,,vn)f(v)= =12n

Donald Knuth, "Nghệ thuật lập trình máy tính", Bài tập 109 của Phần 7.1.1.

Nói một cách không chính thức, là loại chức năng mà làm cho bit trước đó 1 làm cho e nhiều khả năng là 1: vì vậy ví dụ f ( 0 , 1 , 1 ) f ( 1 , 0 , 1 ) f ( 1 , 1 , 0 ) . Đó là, "một số bit quan trọng hơn" và để loại bỏ các trường hợp đẳng cấu dư thừa, chúng tôi giả sử các bit trước đó quan trọng hơn.fff(0,1,1)f(1,0,1)f(1,1,0)

Tuy nhiên, không phải tất cả các chức năng như vậy là chức năng ngưỡng tích cực! Đó là, chỉ vì bạn đã đặt hàng các câu hỏi thi từ quan trọng nhất đến ít nhất không có nghĩa là quy tắc vượt qua / thất bại của bạn dựa trên việc chỉ cộng một số điểm.

n

2,3,5,10,27,119,1113,Giáo dục
2,3,5,10,27,119,1173,Giáo dục

Cảm ơn! Chỉ cần nghĩ rằng tôi chỉ ra rằng các loại hàm Boolean khác được đề cập trong câu trả lời của bạn, những hàm có tổng thứ tự ảnh hưởng của các biến, được gọi là các hàm Boolean "thông thường". Điều này được đề cập trong trình tự A132183 và các chức năng như vậy được nghiên cứu trong Chương 8 của Hàm Boolean: Lý thuyết, Thuật toán và Ứng dụng
a3nm
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.