8

Una squadra composta da 100 membri deve essere assemblata da un pool di 1000 candidati. Ogni candidato riceve i 99 altri candidati che vorrebbe avere come compagni di squadra.Un team di selezione automatica

Ogni squadra possibile ottiene un punteggio che misura quanto soddisfi le preferenze del compagno di squadra dei suoi membri. Se Lisa è in una squadra e 11 della gente nella lista dei desideri di Lisas sono anche nella squadra, quella squadra ottiene 11 punti per Lisa. I punti per tutti i membri sono sommati. Il massimo teorico che qualsiasi squadra possibile può ottenere è 99 * 100. Il minimo è 0.

Ora vogliamo trovare la squadra con il punteggio più alto. Cercare di forzare questo problema calcolando il punteggio per ciascuna combinazione possibile (≈ 10^140) non è un'opzione.

Esiste un algoritmo intelligente che prenderà una scorciatoia per la risposta migliore o si dovrà accontentarsi di un algoritmo che trova una buona risposta?

+0

Una domanda interessante. Sono certo che ci siano modi per migliorare la ricerca della forza bruta per la soluzione deterministica su C (1000,100), ma sospetto che siano al meglio i miglioramenti geometrici. Per una soluzione trattabile, penso che dovrai ricorrere all'euristica. – RBarryYoung

+0

Sembra un problema agli autovalori. Google per "power iteration" – wildplasser

+0

Questo progetto client è stato avviato. [Curatron Equation] (http://curatroneq.com) è la piattaforma Saas per il crowdsourcing del processo artistico curatoriale. – oivvio

risposta

2

Si potrebbe provare un algoritmo hill climbing. Inizia con un membro che è "popolare" (scelto più spesso dagli altri membri) e aggiunge in modo incrementale nuovi membri che aumentano di più il punteggio della squadra. Questo purtroppo non è garantito per trovare la soluzione migliore, ma probabilmente ne troverà di buone. Per migliorare la tua soluzione potresti provare simulated annealing.

+0

Se ho capito bene il problema, il punteggio è calcolato come 99 (dalla persona che sceglie la sua squadra - dal momento che devono essere tutti nella sua lista) + la somma degli altri 99 membri della squadra dei candidati nella loro lista dei desideri che sono sulla squadra. Conoscete già il punteggio massimo teorico della squadra, quindi non capisco perché è necessario passare attraverso tutte le combinazioni. L'iterazione attraverso tutte le 1000 squadre per trovare il punteggio migliore dovrebbe essere relativamente banale. 1000 squadre * 100 membri per squadra sono facilmente risolvibili. –

+1

Bob: ci sono più di 1000 squadre. Ci sono 1000!/900! squadre (1000 modi di scegliere il membro della squadra n. 1, 999 modi di scegliere il membro della squadra n. 2, ecc.) –

5

Penso che se fosse possibile risolvere questo problema in modo efficiente, è possibile risolvere in modo efficiente lo http://en.wikipedia.org/wiki/Clique_problem - laddove esiste un collegamento tra due nodi, ciascun nodo viene inserito nell'elenco dei nodi con cui l'altro desidera lavorare. Guardando l'articolo, penso che troverai difficile trovare una buona approssimazione, a meno che il tuo problema non abbia una struttura speciale.

+0

Buona cattura. Sono d'accordo, questo sembra molto un sostanziale super-set del problema Clique. Dato che il problema della Clique è * molto * intrattabile, probabilmente possiamo essere abbastanza sicuri che questo problema sia troppo (o molto probabilmente, anche più difficile). Quindi, molto improbabile che abbia una soluzione deterministica trattabile. – RBarryYoung