Presenterò il mio problema con un esempio. Supponiamo che tu stia progettando un esame, che consiste in una serie di domande indipendenti (che i candidati possono ottenere nel modo giusto o sbagliato). Volete decidere un punteggio da assegnare a ciascuna delle domande, con la regola che i candidati con punteggio totale superiore a una determinata soglia passeranno e gli altri falliranno.
In effetti, sei molto accurato su questo, e hai immaginato tutti i possibili risultati e hai deciso per ciascuno di essi se un candidato con questa prestazione dovesse passare o fallire. Quindi hai una funzione booleana f : { 0 , 1 } n → { 0 , 1 } che indica se il candidato deve passare o fallire a seconda delle risposte esatte. Naturalmente questa funzione dovrebbe essere monotona : quando ottenere una serie di domande giuste ti fa passare, anche ottenere qualsiasi superset giusto deve farti passare.
Puoi decidere sui punteggi (numeri reali positivi) da dare alle domande e su una soglia, in modo che la tua funzione sia catturata esattamente dalla regola "un candidato passa se la somma dei punteggi per le domande corrette è superiore alla soglia" ? (Naturalmente la soglia può essere considerata pari a 1 senza perdita di generalità, fino a moltiplicare i punteggi per una costante.)
Formalmente: esiste una caratterizzazione delle funzioni booleane monotone per cui esiste w 1 , … , w n ∈ R + tale che per tutte v ∈ { 0 , 1 } n , abbiamo f ( v ) = 1 iff ∑ i w i v i ≥ 1?
Non è così difficile vedere che non tutte le funzioni possono essere così rappresentate. Ad esempio la funzione non può: poiché ( 1 , 1 , 0 , 0 ) è accettato, dobbiamo avere w 1 + w 2 ≥ 1 , quindi uno di w 1 , w 2 deve essere ≥ 1 / 2 , e così per w 3 , . Ora, se è, ad esempio, w 1 e w 3 , abbiamo una contraddizione perché w 1 + w 3 ≥ 1 ma ( 1 , 0 , 1 , 0 ) è respinto; gli altri casi sono analoghi.
Questo mi sembra un problema molto naturale, quindi la mia domanda principale è sapere con quale nome è stato studiato. Chiedere una "caratterizzazione" è vago, ovviamente; la mia domanda è sapere se la classe di funzioni che può essere rappresentata in questo modo ha un nome, cosa si sa sulla complessità del test se una funzione di input appartiene ad essa (data come una formula o come un circuito), ecc.
Naturalmente si possono pensare a molte variazioni su questo tema. Ad esempio, negli esami reali, le domande non sono indipendenti, ma esiste un DAG che indica la dipendenza e che i candidati possono rispondere a una domanda solo se tutti i prerequisiti hanno ricevuto risposta. La condizione sulle funzioni monotone potrebbe quindi essere limitata alle valutazioni in che soddisfano le dipendenze e la domanda sarebbe determinare se una funzione di input può essere catturata in questo modo dato un DAG di input sulle variabili. Si potrebbe anche pensare alle varianti in cui i punteggi sono k -tuple per k fisso (sommato in senso puntuale e confrontato in senso puntuale con un vettore di soglia), che può catturare più funzioni di k . In alternativa, potresti voler acquisire funzioni più espressive che non sono booleane ma passano a un dominio totalmente ordinato, con soglie diverse che dovrebbero indicare la tua posizione nel dominio. Infine, non sono sicuro di cosa accadrebbe se si consentissero punteggi negativi (quindi è possibile eliminare la restrizione monotona relativa alle funzioni).
(Nota: ciò che mi ha fatto riflettere su questo è il round di selezione di Google Code Jam, in cui i candidati vengono selezionati se raggiungono una determinata soglia di punteggio e i punteggi dei problemi sono presumibilmente attentamente progettati per riflettere quali serie di problemi sono ritenute sufficienti per essere selezionate Code Jam ha una struttura di dipendenza sulle domande, con alcune domande "input di grandi dimensioni" che non possono essere risolte se non si è risolto prima il "input piccolo").