Selección Aleatoria


14

El algoritmo de selección aleatoria es el siguiente:

Entrada: una matriz de (distintos, por simplicidad) números y un númeroAnk[n]

Salida: El " elemento de rango " de (es decir, el que está en la posición si fue ordenado)kAkA

Método:

  • Si hay un elemento en , devuélvaloA
  • Seleccione un elemento (el "pivote") uniformemente al azarp
  • Calcule los conjuntos yR = { a A : a > p }L={unUN:un<pag}R={unUN:un>pag}
  • Si El |LEl |k , volver al rango k elemento de L .
  • De lo contrario, devuelva el rango k-El |LEl |elemento de R

Me hicieron la siguiente pregunta:

Suponga que k=n/2 , por lo que está buscando la mediana y deja que α(1/ /2,1) sea ​​una constante. ¿Cuál es la probabilidad de que, en la primera llamada recursiva, el conjunto que contiene la mediana tenga un tamaño como máximo αnorte ?

Me dijeron que la respuesta es 2α-1 , con la justificación "El pivote seleccionado debe estar entre 1-α y α veces la matriz original"

¿Por qué? Como α(0.5 0.5,1) , cualquier elemento que se elija como pivote es más grande o más pequeño que más de la mitad de los elementos originales. La mediana siempre se encuentra en el subconjunto más grande, porque los elementos en el subconjunto particionado son siempre menores que el pivote.

Si el pivote se encuentra en la primera mitad de la matriz original (menos de la mitad de ellos), la mediana seguramente estará en la segunda mitad más grande, porque una vez que se encuentra la mediana, debe estar en la posición media de la matriz, y todo antes del pivote es más pequeño como se indicó anteriormente.

Si el pivote se encuentra en la segunda mitad de la matriz original (más de la mitad de los elementos), la mediana seguramente será la primera mitad más grande, por la misma razón, todo antes del pivote se considera más pequeño.

Ejemplo:

3 4 5 8 7 9 2 1 6 10

La mediana es 5.

Supongamos que el pivote elegido es 2. Entonces, después de la primera iteración, se convierte en:

1 2 .... parte más grande ...

Solo 1y 2se intercambian después de la primera iteración. El número 5 (la mediana) todavía está en la primera mitad mayor (de acuerdo con el pivote 2). El punto es que la mediana siempre se encuentra en la mitad mayor, ¿cómo puede tener la oportunidad de permanecer en un subconjunto más pequeño?


No asistimos a su conferencia, así que explique el método.
Raphael

Sin saber de qué algoritmo de precisión está hablando, su pregunta no es legible. Parece que usas en múltiples capacidades; Traté de editar, pero no estoy seguro de haber captado el significado. Por favor revise para que la pregunta sea clara. Votación para cerrar hasta entonces. .5
Raphael

Es un algoritmo de selección que usa el método aleatorio, en oposición al método determinista.
Amumu

Hay muchas formas de seleccionar un elemento al azar.
Raphael

2
@Amumu: lo edité para describir el algoritmo. En un foro como este, no todos sabrán de lo que está hablando, y hay un enfoque aleatorio muy diferente para la selección que es más fácil de analizar.
Louis

Respuestas:


12

Supongamos que su matriz tiene elementos. Como ha notado, la mediana siempre está en la parte más grande después de la primera partición. La parte más grande tiene tamaño como máximo si la parte más pequeña tiene tamaño al menos . Esto sucede cuando elige un pivote que no es uno de los elementos más pequeños o más grandes . Como , sabes que estos son conjuntos disjuntos, por lo que la probabilidad de golpear uno de los pivotes malos es solo , y .α n ( 1 - α ) n ( 1 - α ) n α > 1 / 2 2 - 2 α 1 - 2 + 2 α = 2 α - 1nαn(1α)n(1α)nα>1/222α12+2α=2α1


Gracias por la respuesta. Todavía tengo algunas cosas poco claras. Entonces, ¿qué tiene que ver α> 1/2 con los conjuntos disjuntos? Pensé que cuando siempre tenemos conjuntos disjuntos con este método, independientemente del tamaño de la submatriz.
Amumu

Debido a que hace , entonces . ( 1 - α ) n < N - ( 1 - α ) n1α<1/2(1α)n<n(1α)n
Louis

Solo una última cosa: ¿qué tiene que ver el pivote malo / bueno con esto? Hasta donde sé, un buen pivote generalmente está en el rango de 25-75 (que divide las matrices originales en un 25% -75%), y el malo está fuera de ese rango, y lo peor es generalmente al comienzo o al final del original formación. ¿Pero esto?
Amumu

2
Aquí, estoy diciendo que un pivote es "malo" si hace que la parte más grande sea más grande de lo que desea, que es tamaño. Lo que llamas malo corresponde a . Sospecho que el punto de la pregunta es que su instructor quería que viera que el orden del tiempo de ejecución esperado no cambia al cambiar . αnα=3/4O()α
Louis
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.