2010-05-04 11 views
5

Por favor, ayudar a interpretar el efecto de cumpleaños como se describe en Wikipedia:¿Puede alguien aclarar el efecto de cumpleaños para mí?

Un ataque de cumpleaños funciona de la siguiente manera:

  1. elegir cualquier mensaje m y calcular h (m).
  2. Actualizar lista L. Comprobar si h (m) está en la lista L.
  3. si (h (m), m) ya está en L, se ha encontrado un par de mensajes colisionantes. cosa sino la par (h (m), m) en la lista L y volver al paso 1.

Desde la paradoja del cumpleaños sabemos que podemos esperar encontrar una entrada juego, después de realizar aproximadamente 2^(n/2) evaluaciones hash.

Lo anterior significa 2^(n/2) iteraciones a través del bucle completo anterior (es decir, 2^(n/2) regresa al paso 1), O ¿significa 2^(n/2) comparaciones? a artículos individuales que ya están en L?

+0

Evaluaciones hash. como en "calcular h (m)" en el paso 1 – amphetamachine

+0

oh, la evaluación hash significa calcular un hash para un mensaje, gracias. – Mark

+0

¿Puedes proporcionar el enlace de wikipedia que estás citando? No veo este texto allí. –

Respuesta

4

Significa 2^(n/2) iteraciones a través del ciclo. Pero tenga en cuenta que L no sería una lista normal aquí, sino una asignación de tablas hash h(m) a m. Por lo tanto, cada iteración solo necesitaría un número constante (O (1)) de comparaciones en promedio, y habría O (2^(n/2)) comparaciones en total.

Si L hubiera sido una matriz normal o una lista vinculada, entonces el número de comparaciones sería mucho mayor, ya que necesitaría buscar en toda la lista cada iteración. Sin embargo, esta sería una mala forma de implementar este algoritmo.

+0

solo otra cosa con respecto al desbordamiento de pila: se supone que debo actualizar el estado de alguna manera de los miembros que responden a mis preguntas. Si es así, ¿cómo se hace eso? – Mark

+1

@Mark: si te gusta una respuesta, puedes modificarla (haz clic en la flecha hacia arriba que se encuentra a la izquierda de la respuesta). Si una respuesta resuelve su problema, puede aceptarlo: haga clic en la marca de verificación a la izquierda de la respuesta. –

+0

Bueno, parece que tendré que registrarme para hacer eso. – Mark

Cuestiones relacionadas