Usted debe hacer la medición de la siguiente manera.
"[x,...,y] true/false" significa que la radiactividad se encuentra / no se encuentra cuando la medición de las bolas con el número x,...,y. Las dos últimas líneas de cada uno de los párrafos son las tuplas que son posibles después de la última medición es de tipo verdadero / falso. Es fácil de procesar el resto de posibilidades
measurement 1 [1,2,3,4,5] true
measurement 2: [4,5,6] true
measurement 3: [1,2,7,8,9,10,11] true
measurement 4: [1,2,7] true
measurement 5: [1,6]
[[1,4],[1,5],[1,6],[2,6]]
[[2,4],[2,5],[4,7],[5,7]]
measurement 1 [1,2,3,4,5] true
measurement 2: [4,5,6] true
measurement 3: [1,2,7,8,9,10,11] true
measurement 4: [1,2,7] false
measurement 5: [4]
[[4,8],[4,9],[4,10],[4,11]]
[[5,8],[5,9],[5,10],[5,11]]
measurement 1: [1,2,3,4,5] true
measurement 2: [4,5,6] true
measurement 3: [1,2,7,8,9,10,11] false
measurement 4: [12,13,14,15]
[[4,12],[4,13],[4,14],[4,15],[5,12],[5,13],[5,14],[5,15]]
[[3,4],[3,5],[3,6],[4,5],[4,6],[5,6]]
measurement 1 [1,2,3,4,5] true
measurement 2: [4,5,6] false
measurement 3: [7,8,9,10,11] true
measurement 4: [1,7] true
measurement 5: [7,8]
[[1,7],[1,8],[2,7],[3,7]]
[[1,9],[1,10],[1,11]]
measurement 1 [1,2,3,4,5] true
measurement 2: [4,5,6] false
measurement 3: [7,8,9,10,11] true
measurement 4: [1,7] false
measurement 5: [2]
[[2,8],[2,9],[2,10],[2,11]]
[[3,8],[3,9],[3,10],[3,11]]
measurement 1 [1,2,3,4,5] true
measurement 2: [4,5,6] false
measurement 3: [7,8,9,10,11] false
measurement 4: [1,12]
[[1,2],[1,3],[1,12],[1,13],[1,14],[1,15],[2,12],[3,12]]
[[2,3],[2,13],[2,14],[2,15],[3,13],[3,14],[3,15]]
measurement 1 [1,2,3,4,5] false
measurement 2: [6,7,8] true
measurement 3: [6]
[[6,7],[6,8],[6,9],[6,10],[6,11],[6,12],[6,13],[6,14],[6,15]]
[[7,8],[7,9],[7,10],[7,11],[7,12],[7,13],[7,14],[7,15],
[8,9],[8,10],[8,11],[8,12], [8,13],[8,14],[8,15]]
measurement 1 [1,2,3,4,5] false
measurement 2: [6,7,8] false
measurement 3: [9,10] true
measurement 4: [9]
[[9,10],[9,11],[9,12],[9,13],[9,14],[9,15]]
[[10,11],[10,12],[10,13],[10,14],[10,15]]
measurement 1 [1,2,3,4,5] false
measurement 2: [6,7,8] false
measurement 3: [9,10] false
measurement 4: [11]
[[11,12],[11,13],[11,14],[11,15]]
[[12,13],[12,14],[12,15],[13,14],[13,15],[14,15]]
Editar:
¿Cómo se puede comprobar esto? Primero de todos, usted debe verificar que estos párrafos son el nodo de un árbol. A continuación, puede ver cada párrafo comparando cada uno de los 105 pares de cojones [[1,2],...,[14,15]] con las mediciones. Tome la primera a la par [1,2] y el siguiente párrafo
measurement 1 [1,2,3,4,5] true
measurement 2: [4,5,6] false
measurement 3: [7,8,9,10,11] true
measurement 4: [1,7] true
measurement 5: [7,8]
[[1,7],[1,8],[2,7],[3,7]]
[[1,9],[1,10],[1,11]]
Medición 3 debe ser verdadera, pero esto está mal para este par, por lo que puede omitirse. Llevar a la pareja [1,7]. Medición 1,3,4,5 es verdadera y medición 2 es falsa, por lo tanto está en la penúltima línea. Para el par [1,9] de nuevo la medición 2 es falsa y la medición 1,3,4 es cierto, pero de medición de 5 es falsa, por lo tanto está en la última línea. así que todo nodo del árbol puede ser comprobado. Usted puede hacer estas comprobaciones con un programa simple (yo usé uno escrito en maxima).
Edit: Maxima-Programa De
f(n,ll_found,ll_notfound):=block(
[
remaining:[],
passed
],
for i:1 thru n do (
for j:i+1 thru n do (
passed:true,
for s in ll_found do
if not(member(i,s) or member(j,s)) then
passed:false,
for s in ll_notfound do
if not(not member(i,s) and not member(j,s)) then
passed:false,
if passed then
remaining:endcons([i,j],remaining)
)
),
return(remaining)
);
block([u,v],
for i:1 thru 14 do (
for j:i thru 15 do (
u:length(f(15,[[1,2,3,4,5],makelist(k,k,i,j)],[])),
v:length(f(15,[[1,2,3,4,5]],[makelist(k,k,i,j)])),
if (u<=32 and v<=32) then print([i,j,u,v])
)
)
);
/* measurement 1: [1,2,3,4,5] */
length(f(15,[[1,2,3,4,5]],[]));
length(f(15,[],[[1,2,3,4,5]]));
/* measurement 1 [1,2,3,4,5] true
measurement 2: [4,5,6] */
length(f(15,[[1,2,3,4,5],[4,5,6]],[]));
length(f(15,[[1,2,3,4,5]],[[4,5,6]]));
/* measurement 1 [1,2,3,4,5] true
measurement 2: [4,5,6] true
measurement 3: [1,2,7,8,9,10,11] */
f(15,[[1,2,3,4,5],[4,5,6],[1,2,7,8,9,10,11]],[])$length(%);
f(15,[[1,2,3,4,5],[4,5,6]],[[1,2,7,8,9,10,11]])$length(%);
/* measurement 1 [1,2,3,4,5] true
measurement 2: [4,5,6] true
measurement 3: [1,2,7,8,9,10,11] true
measurement 4: [1,2,7] */
f(15,[[1,2,3,4,5],[4,5,6],[1,2,7,8,9,10,11],[1,2,7]],[])$length(%);
f(15,[[1,2,3,4,5],[4,5,6],[1,2,7,8,9,10,11]],[[1,2,7]])$length(%);
/* measurement 1 [1,2,3,4,5] true
measurement 2: [4,5,6] true
measurement 3: [1,2,7,8,9,10,11] true
measurement 4: [1,2,7] true
fuenfte Messung: [1,6]
und fertig, da trivial*/
f(15,[[1,2,3,4,5],[4,5,6],[1,2,7,8,9,10,11],[1,2,7],[1,6]],[]);length(%);
f(15,[[1,2,3,4,5],[4,5,6],[1,2,7,8,9,10,11],[1,2,7]],[[1,6]]);length(%);
/* measurement 1 [1,2,3,4,5] true
measurement 2: [4,5,6] true
measurement 3: [1,2,7,8,9,10,11] true
measurement 4: [1,2,7] false
trivial da [4,5] * [8,9,10,11]*/
f(15,[[1,2,3,4,5],[4,5,6],[1,2,7,8,9,10,11]],[[1,2,7]]);
/* measurement 1 [1,2,3,4,5] true
measurement 2: [4,5,6] true
measurement 3: [1,2,7,8,9,10,11] false
measurement 4: [12,13,14,15]
und trivial*/
f(15,[[1,2,3,4,5],[4,5,6],[12,13,14,15]],[[1,2,7,8,9,10,11]]);length(%);
f(15,[[1,2,3,4,5],[4,5,6]],[[1,2,7,8,9,10,11],[12,13,14,15]]);length(%);
/* measurement 1 [1,2,3,4,5] true
measurement 2: [4,5,6] false
measurement 3: [7,8,9,10,11] */
f(15,[[1,2,3,4,5],[7,8,9,10,11]],[[4,5,6]])$length(%);
f(15,[[1,2,3,4,5]],[[4,5,6],[7,8,9,10,11]])$length(%);
/* measurement 1 [1,2,3,4,5] true
measurement 2: [4,5,6] false
measurement 3: [7,8,9,10,11] true
measurement 4: ,[1,7] */
f(15,[[1,2,3,4,5],[7,8,9,10,11],[1,7]],[[4,5,6]])$length(%);
f(15,[[1,2,3,4,5],[7,8,9,10,11]],[[4,5,6],[1,7]])$length(%);
/* measurement 1 [1,2,3,4,5] true
measurement 2: [4,5,6] false
measurement 3: [7,8,9,10,11] true
measurement 4: ,[1,7] wahr
fuenfte Messung: [7,8] arbitrary
trivial*/
f(15,[[1,2,3,4,5],[7,8,9,10,11],[1,7],[7,8]],[[4,5,6]]);length(%);
f(15,[[1,2,3,4,5],[7,8,9,10,11],[1,7]],[[4,5,6],[7,8]]);length(%);
/* measurement 1 [1,2,3,4,5] true
measurement 2: [4,5,6] false
measurement 3: [7,8,9,10,11] true
measurement 4: ,[1,7] false
trivial, da {2,3} * {8,9,10,11}*/
f(15,[[1,2,3,4,5],[7,8,9,10,11]],[[4,5,6],[1,7]]);length(%);
/* measurement 1 [1,2,3,4,5] true
measurement 2: [4,5,6] false
measurement 3: [7,8,9,10,11] false
measurement 4: [1,12] arbitrary
trivial */
f(15,[[1,2,3,4,5],[1,12]],[[4,5,6],[7,8,9,10,11]]);length(%);
f(15,[[1,2,3,4,5]],[[4,5,6],[7,8,9,10,11],[1,12]]);length(%);
/* measurement 1 [1,2,3,4,5] false
measurement 2: [6,7,8] */
f(15,[[6,7,8]],[[1,2,3,4,5]])$length(%);
f(15,[],[[1,2,3,4,5],[6,7,8]])$length(%);
/* measurement 1 [1,2,3,4,5] false
measurement 2: [6,7,8] true
measurement 3: [6] arbitrary
trivial*/
f(15,[[6,7,8],[6]],[[1,2,3,4,5]]);length(%);
f(15,[[6,7,8]],[[1,2,3,4,5],[6]]);length(%);
/* measurement 1 [1,2,3,4,5] false
measurement 2: [6,7,8] false
measurement 3: [9,10] */
f(15,[[9,10]],[[1,2,3,4,5],[6,7,8]]);length(%);
f(15,[],[[1,2,3,4,5],[6,7,8],[9,10]]);length(%);
/* measurement 1 [1,2,3,4,5] false
measurement 2: [6,7,8] false
measurement 3: [9,10] true
measurement 4: [9] arbitrary
trivial */
f(15,[[9,10],[9]],[[1,2,3,4,5],[6,7,8]]);length(%);
f(15,[[9,10]],[[1,2,3,4,5],[6,7,8],[9]]);length(%);
/* measurement 1 [1,2,3,4,5] false
measurement 2: [6,7,8] false
measurement 3: [9,10] false
measurement 4: [11] arbitrary
trivial */
f(15,[[11]],[[1,2,3,4,5],[6,7,8],[9,10]]);length(%);
f(15,[],[[1,2,3,4,5],[6,7,8],[9,10],[11]]);length(%);
Editar:
¿Cómo puedo derivar el resultado?
Con ensayo y error. El siguiente Lema que guía nuestras pruebas
Lema 1 (sin prueba): En cada paso del algoritmo se cumple lo siguiente: Deje de $S$ es la lista de los restantes solución posible y $M$ es la lista de bolas para ser medido y $$ n el número de mediciones. Vamos a $ T(S,M)$ es la lista de todos los pares de $S$, donde al menos uno de los elementos de la pareja está en $M$ y dejar que $F(S,M)$ la lista de todos los pares de $S$ donde ningún elemento de la pareja está en $M$. A continuación, la siguiente es una condición necesaria para un algoritmo para resolver todas las instancias del problema.
$$\begin{align*}
|S|&\leq 2^n\\
|T(S,M)|&\leq 2^{n-1}\\
|F(S,M)|&\leq 2^{n-1}
\end{align*}$$
Después de este paso, el nuevo S $T(S,M)$ o $F(S,M)$ en función del resultado de la medición $M$. El nuevo $n$ es $n-1$.
La búsqueda de dos bolas con en la mayoría de los k measuremants de n bolas que llamar a un (n,k)-problema. Queremos encontrar un algoritmo para la (15,7)-problema.
El (15,7)-problema por lo tanto $\binom{15}{2}=105$ posible solución de los pares y, por tanto, un algoritmo para encontrar un par que hacer al menos 7 de las mediciones en el
el worstcase porque $2^6<105<2^7$. Queremos investigar la primera medición. Vamos a arange la lista de todos los posibles bola combinación de los siguientes
triángulo de manera
[1,2] [1,3] [1,4] ... [1,14] [1,15] 14 pairs row 1
[2,3] [2,4] ... [2,14] [1,15] 13 pairs row 2
. . . .
. . . .
. . . .
[13,14] [13,15] 2 pairs row 13
[14,15] 1 pair row 14
si la primera medición se hizo con la lista de dólares[1,\cdots,m]$ entonces $14+13+(15-m)<=2^6$ y $(15-m+1))+...+2+1<=2^6$ deben tener. $2^6=64$ por lo tanto $m$
4 $$ o $5$. si $m=3$ y por tanto $M=[1,2,3]$ entonces $|F(S,M)|=1+2+\cdots + 11=66>2^6=64$, si $k=6$ $M=[1,2,3,4,5,6]$ y $|T(S,M)|=14+13+\cdots + 9
= 69 > 2^6=64$.
si para la primera medición $m=4$ y por tanto $M=[15,14,13,12]$ y el resultado de la medición es falsa, entonces uno debe encontrar con en la mayoría de los $6$
la medición de la radiactivos par en el resto de los $11$ pelotas. así que debemos guardar la (11,6)-problema.
Lema 2: no Existe ningún algoritmo para el (6,4)-problema.
Prueba: Si $M=[1]$ entonces $|F(S,M)|=4+3+2+1=10>8=2^3$. Si $M=[1,2]$ entonces $|T(S,M)|=5+4=9>8=2^3$.
Lema 3: no Existe ningún algoritmo para el (8,5) problema.
Prueba: para la primera medición: $M=[1]$ o $M=[1,2,3]$ no son posibles con los mismos argumentos que en el (6,4) caso. Por lo tanto $M$ debe $[1,2]$. Si el resultado de la medición es falso, el algoritmo debe resolver el (6,4)-problema que es imposible por el Lema 2.
Lema 4: no Existe ningún algoritmo para el (11,6)-problema.
Prueba: si $M=[1,2]$ entonces $|F(S,M)|=36>32=2^5$, si $M=[1,2,3,4]$ entonces $T(S,M)=34>32=2^5$. por lo tanto $M$ debe $[1,2,3]$. Supongamos que la primera medición
es falso 8 bolas de restos y nuestro algoritmo debe resolver la (8,5)-problema que es imposible por el lema 3.
Desde Lema 4 el razonamiento antes de llemma 2 en la siguiente de la siguiente manera:
Lema 5:
Si existe un algoritmo para la (15,7)-problema de su primera medición debe medir una lista de 5 pelotas.
Podemos suponer que la primera medida está en la lista [1,2,3,4,5]. La segunda medida es en una lista [x,x+1,...,y] que tiene cero, uno o más elementos
en común con [1,2,3,4,5].
Primero probé [6,7,8,9,10,11] pero tuvo problemas para continuar. Por lo tanto he usado mi programa para comprobar cada uno de los 105 N=[x,...,y] si $T(S,N)<=2^5=32$ y $F(S,N)
<32$.
las siguientes listas fueron encontrados por el programa
[4,5,6]
[5,6,7,8,9]
[6,7,8,9,10,11]
el programa también se encuentra en las listas
[7,...,12]
[8,...,13]
[9,...,14]
[10,...,15]
pero estas listas son básicamente las mismas [6,...,11] después de cambiar el nombre de las bolas.
Me siguió con la lista [4,5,6].
El resto de las mediciones que se encuentran juicio un error con mi función y el lema 1. Si uno busca en la tercera medición después de [1,2,3,4,5] y [4,5,6] uno puede usar el hecho de que los números [1,2,3], [4,5], [7,8,9,10,11,12,13,14,15] son equivalentes en relación a [1,2,3,4,5] y [4,5,6]. esto reduce los casos a investigar.