Héctor Tejeda Villela
3 de julio del 2002
Solución
A | |
A | 0 |
A | B | |
A | 0 | 1 |
B | 1 | 0 |
Al agregar el siguiente nodo hijo C la matriz que se obtiene es:
A | B | C | |
A | 0 | 1 | 1 |
B | 1 | 0 | 2 |
C | 1 | 2 | 0 |
Como se puede observar se obtiene una matriz simétrica, por lo que sólo es necesario hacer el cálculo en la parte inferior y se pueden transponer el renglón en la columna correspondiente.
A | B | C | D | |
A | 0 | 1 | 1 | 2 |
B | 1 | 0 | 2 | 1 |
C | 1 | 2 | 0 | 3 |
D | 2 | 1 | 3 | 0 |
Por lo anterior, se tiene que para obtener los valores del k-ésimo renglón hijo, se suma 1 a los elementos del renglón padre, donde la posición siempre es cero, y como la matriz es simétrica se transpone el renglón en k-ésima columna.
Se puede observar que se requieren hacer 1+2+ ... + n operaciones (sumas) para obtener la matriz de adyacencias, por lo que se harán n(n+1)/2 operaciones, por lo que el algoritmo es .
Solución
Si se toma un elemento central del arreglo de enteros, por ejemplo . Si , entonces z deberá estar en el arreglo entre A[1] y . Lo anterior es cierto por las condiciones de los datos del arreglo, donde la diferencia máxima entre dos datos consecutivos es 1 y la mínima es 0, por lo que en el subarreglo se tienen todos los enteros entre x e a, que es lo mismo para el caso del arreglo dado, en donde se tienen todos los enteros que estan entre x e y. En el caso de que a < z, entonces, z deberá aparecer entre y A[n]. En cualquiera de los dos casos, se debe seguir revisando mientras , el peor caso en donde se realiza el máximo de comparaciones es cuando el valor que se busca esta en uno de los extremos y es único, por lo que el número máximo de comparaciones es . Un caso práctico que ilustra lo anterior es con los siguientes valores y se busca la posición del valor 2:
Solución
El algoritmo debe realizar una búsqueda secuencial en todo el conjunto para garantizar que no se encuentra en el conjunto S. Para probar que la cota mínima de pasos es , si se revisan menos elementos se requiere que el conjunto este ordenado, en donde se hacen O(n log n) comparaciones en promedio, las que deben ser sumadas a los pasos para encontrar si un número esta en el conjunto, por lo que tendremos en este caso . Por lo tanto la única forma es revisar todo el conjunto para determinar si un valor no se encuentra.
Solución
Para ilustrar el algoritmo supondremos la siguiente secuencia de 4 números S = -1, 3, -4, 0. La cual se divide en un conjunto de 2 pares. El total de pares que se pueden formar son , por lo que se pueden tener los siguientes subconjuntos:
o bien,
donde la partición que minimiza el máximo de las es la tercera. Se puede observar que para obtener esta partición se puede ordenar en primer lugar la secuencia de números (-4, -1, 0, 3) y luego formar parejas por los extremos, es decir, el elemento 1 con el elemento n, el 2 con n-1, etc.
Falta por demostrar que lo anterior funciona para cualquier caso. Supóngase que hay otra partición mejor, en la cual no se encuentran aparejadas y . Si en la partición mencionada esta emparejada con y con , Entonces se puede cambiar la partición de tal forma que forme pareja con y con , sin incrementar el máximo de las , lo cual es una contradicción, ya que se decrementan, como se puede ver en el ejemplo.
Solución
Supongamos que el algoritmo A encuentra que es el k-ésimo elemento más grande haciendo un sucesión de comparaciones cuyos resultados no pueden determinar si algún elemento es mayor o menor que . Esto significa que la salida de las comparaciones es consistente con siendo igual a un valor y a un valor . Pero en ambos casos nos permiten obtener otro k-ésimo elemento más grande, lo cual es una contradicción.