Encontrar un conjunto por comparación de intersección

8

El siguiente problema surgió recientemente de mi investigación y me gustaría preguntar si alguien sabe si este problema se consideró antes o si ha oído hablar de algo que pueda estar relacionado.

La configuración general es la siguiente. Se nos ha dado F , una familia de t -subsets de {1,2,...,n} , para algún parámetro t (estoy más interesado en el caso donde t=n/2 ). Hay un adversario que recoge un conjunto de F , denotado por S . Nuestro trabajo es encontrar qué es SPara hacer esto, se nos permite enviar dos conjuntos en F al adversario, digamos A y By el adversario generará A si |AS||BS|y B si |BS||AS|. Tenga en cuenta que si |AS|=|BS|entonces el adversario puede dar salida ya sea A o B .

Este problema se puede resolver de manera trivial si no nos importa cuántas consultas podemos hacer, ya que si comparamos todos los pares de conjuntos, S será el único conjunto que el adversario siempre devuelve cuando enviamos una consulta (S,B) , para cualquier BS . Sin embargo, nuestro objetivo es minimizar el número de consultas.

Mi objetivo es mostrar que este problema se puede resolver mediante consultas O(poly(n)) o que se requiere un número súper polinómico de consultas. Estoy interesado en particular en el caso en el que F es el conjunto de todos n/2 -subsets de {1,...,n} .

Cualquier sugerencia sobre cualquier cosa relacionada sería apreciada.

Danu
fuente
1
¿Puedes aclarar la condición de "adversario puede responder cualquier cosa"? ¿Quiere decir que la respuesta será: o | B S | | A S | , y eso ya que ambos son verdaderos cuando | A S | = | B S | , ¿se puede dar alguna respuesta? |AS||BS||BS||AS||AS|=|BS|
mjqxxxx
1
¿Por qué es correcta la solución trivial? Seguramente cualquier superconjunto de S también satisfará | S S | | B S | para todo B S . SS|SS||BS|BS
mjqxxxx
@mjqxxxx: Gracias por sus dos comentarios. He reformulado la pregunta para que quede más clara.
Danu

Respuestas:

10

Esta es una variación del famoso rompecabezas de encontrar una moneda falsificada usando la balanza . Pero antes de proceder a eso, primero resolvamos la pregunta, porque la técnica para resolverlo también es útil para ver la conexión con el problema de la moneda falsificada.

En primer lugar, supongamos que los conjuntos de consulta A y B no tienen que ser de la familia F . Luego, puede encontrar el conjunto S a lo sumo consultas de la siguiente manera. Haga consultas ({ a }, { b }) para 1≤ a < bn . Tenga en cuenta que cada elemento i ∈ {1, ..., n } se utiliza en n −1 consultas. Si un elemento i pertenece a S , entonces el conjunto { i } se responde al menos cuando el oponente no pertenece a S ( n(n2)=O(n2)(n2)y, por lo tanto, el conjunto { i } se responde al menos n - t veces. Si un elemento i no pertenece a S , entonces el conjunto { i } no se puede responder si el oponente pertenece a S y, por lo tanto, el conjunto { i } se responde como máximo n - t −1 veces. Por lo tanto, contar cuántas veces cada conjunto se contesta, podemos determinar el conjunto S .

Esto requiere conjuntos de consultas no de la familia F , que no está permitido en el problema. Pero podemos solucionar esto agregando los mismos elementos t −1 a ambos lados. Por ejemplo, en lugar de realizar la consulta ({1}, {2}), podemos realizar la consulta ({1,3,4, ..., t +1}, {2,3,4, ..., t +1 }). Por lo tanto, el problema puede resolverse mediante consultas O ( n 2 ).

Ahora comienza la parte divertida. Considere n monedas etiquetadas con 1, ..., n , yt de ellas son falsas y un poco más pesadas que las monedas reales. Todas las monedas falsas tienen los mismos pesos. Debe encontrar el conjunto S de las etiquetas de las monedas falsificadas t utilizando un saldo solo poly ( n ) veces. Cada vez que use una balanza, puede poner como máximo monedas mín. { T , n - t } a cada lado de la balanza. El equilibrio es un poco impreciso en el sentido de que si los dos lados tienen el mismo peso, cualquiera de los dos lados puede descender (de manera adversa). Como espero que puedan ver ahora, este es exactamente el mismo problema que la pregunta.

Editar : la revisión 4 y anteriores tenían un error u otro (¡ay!) En la conexión precisa con el rompecabezas de monedas falsas.

Tsuyoshi Ito
fuente
¡Esto responde a mi pregunta muy bien! Gracias por la conexión con el problema de las monedas falsas también.
Danu
@ Tsuyoshi Genial ... ¡Creo que fue exponencial! ¿Puede mostrar cómo el algoritmo, en el caso de n = 4, t = 2 ..., puede discriminar en n ^ 2 consultas entre la solución {1,2} y la solución {1,3} (vea todas las consultas posibles y posibles equilibrar respuestas en mi ejemplo)?
Marzio De Biasi
2
@Vor: Creo que había dicho cómo hacerlo con suficiente claridad en la respuesta. Si alguna parte no está clara, me complace explicarla o reescribirla.
Tsuyoshi Ito
@Vor: Así no es como comienza el algoritmo. Le sugiero que lea la respuesta cuidadosamente, especialmente el segundo párrafo (que describe una solución a la versión relajada del problema donde los conjuntos de consultas no están restringidos a conjuntos en F). Primero hacemos consultas , y luego tomamos una decisión. No "elegimos" nada hasta el último paso. (n2)
Tsuyoshi Ito
1
@Vor: En cuanto a su comentario a las 22:02 UTC, si F es la familia de todos los subconjuntos de tamaño t (1≤t≤n − 1) como en la pregunta original y el adversario puede decir una mentira si la diferencia absoluta entre | A∩S | y | B∩S | es como máximo 1, entonces el adversario puede fingir que S = [t] cuando la respuesta verdadera es S = [t − 1] ∪ {t + 1}, y por lo tanto el conjunto S no puede determinarse de manera única en general, incluso con exponencialmente muchas consultas
Tsuyoshi Ito
2

... uhm ... estoy tratando de descubrir un algoritmo polinómico ... todavía estoy trabajando en él ... pero creo que el problema debería reformularse mejor, porque hay casos en los que es imposible ganar (al menos si F es la familia de todos los subconjuntos)

Por ejemplo:

Let n=3

F={{1},{2},{3},{1,2},{1,3},{2,3}}

Queries     S={1}    S={1,2}
{1}>={2}      T      lie
{1}>={3}      T       T
{2}>={1}      F      lie 
{2}>={3}     lie      T
{3}>={1}      F       F
{3}>={2}     lie      F
{1}>={2,3}    T      lie
{2}>={1,3}    F      lie
{3}>={1,2}    F       F
{2,3}>={1}    F      lie
{1,3}>={2}    T      lie 
{1,2}>={3}    T       T

Como puede ver, si el adversario es un zorro , puede igualar las dos columnas, por lo que no hay forma de distinguir entre la solución y la solución ... incluso con un número exponencial de consultas.S = { 1 , 2 }S={1}S={1,2}

Y creo que incluso si restringe a la familia F, puede "caer" en un juego imposible. Por ejemplo, agregar el elemento en algún lugar de uno o más de los conjuntos de F en el ejemplo, no matará al zorro :-)))4


Parece una variante del Master Mind Game, que normalmente es polinomial pero tiene una versión estática que es NP-complete ( ver prueba ).

... El juego original de Mastermind fue inventado en 1970 por Meirowitz, como un juego de mesa con agujeros para secuencias de longitud N = 4 y K = 6 clavijas de colores. Knuth (1) posteriormente mostró que esta instancia del juego Mastermind se puede resolver en cinco conjeturas o menos. Chv´atal (2) estudió la combinatoria de Mastermind general, demostrando que se puede resolver en tiempo polinómico, en el caso K> = N ... Stuckman y Zhang (3) mostraron que es NP completo para determinar si Una secuencia de conjeturas y respuestas en general Mastermind de doble cuenta es satisfactoria. ...

(1) D. Knuth. La computadora como mente maestra. Journal of Recreational Mathematics, 9: 1–5, 1977.

(2) V. Chv´atal. Cerebro. Combinatorica, 3 (3/4): 325–329, 1983.

(3) J. Stuckman y G.-Q. Zhang Mastermind es np-complete, 2005. http://arxiv.org/abs/cs/0512049 .

Marzio De Biasi
fuente
@Vor: ¿Puede Master Mind reducirse a este problema?
Marcus Ritt
@Vor: Gracias por tu respuesta. El juego de la mente maestra parece estar relacionado. Creo que el problema que le pregunté es tan difícil como el juego de la mente maestra (pero podría ser más difícil) en el sentido de que su problema puede reducirse a este problema (pero no veo si es posible lo contrario), de la siguiente manera. Digamos que solo hay dos códigos de color, blanco y negro. Para cada clavija , puedo representar su color por un elemento (en S o no). Entonces, para que el adversario responda si, puede colocar dos filas de clavijas correspondientes a y y mirar las clavijas con el color y la posición correctos. | A S | | B S | A Bpi|AS||BS|AB
Danu
@Vor: antes de actualizar su solución, reformulé la pregunta para aclararla (como comentó @mjqxxxx). Ahora requerimos que todos los conjuntos en tengan el mismo tamaño para que su caso no pueda suceder. Perdón por la confusion. F
Danu
@Danu ... ok ... mmm ... si cada subconjunto en F tiene el mismo tamaño, entonces el algoritmo tiene complejidad O (N ^ 2): simplemente elija el conjunto que obtenga un puntaje VERDADERO en todas las consultas en comparación con el otro | F | -1 juegos?!? ¿O no considera F como la entrada del algoritmo?
Marzio De Biasi
... (no puede editar comentarios después de 5 minutos) ... si necesita que todos los conjuntos de F tengan el mismo tamaño (incluida la solución), entonces este tamaño debe ser un parámetro de entrada , a menos que especifique cada subconjunto de F (pero en este caso caes en la solución trivial O (N ^ 2)).
Marzio De Biasi