Optimizacion de matriz

Horst von Brand vonbrand en inf.utfsm.cl
Sab Oct 30 00:55:46 CLST 2004


Alvaro Herrera <alvherre en dcc.uchile.cl> dijo:
> On Thu, Oct 28, 2004 at 09:54:28PM -0300, juan pablo Rumie Vittar wrote:
> > Ademas implementar una funcion de hash en C es facil y
> > Warning!!!!! libera la memoria que no uses!!!! ya que
> > esa "responsabilidad" queda de parte del
> > desarrollador!

> Con respecto al asunto del hashing, recomiendo echarle una mirada a
> esto:
> 
> 	http://burtleburtle.net/bob/hash/doobs.html

El algoritmo de este personaje es bastante malo, en mis pruebas, y la
funcion es cara de computar. Mejor el tipico hashpwj (aunque a ese lo salva
el % final con 211).

------------ próxima parte ------------
Se ha borrado un mensaje que no está en formato texto plano...
Nombre     : hashpjw.c
Tipo       : text/x-c
Tamaño     : 503 bytes
Descripción: hashpjw
Url        : https://listas.inf.utfsm.cl/pipermail/linux/attachments/20041030/24da3544/hashpjw.bin
------------ próxima parte ------------

O tal vez una tontera como (con un compilador astuto y arquitectura ad hoc,
esto debiera transformarse en una rotacion):

------------ próxima parte ------------
Se ha borrado un mensaje que no está en formato texto plano...
Nombre     : hvb-bits.c
Tipo       : text/x-c
Tamaño     : 184 bytes
Descripción: Mi propia funcion de hashing
Url        : https://listas.inf.utfsm.cl/pipermail/linux/attachments/20041030/24da3544/hvb-bits.bin
------------ próxima parte ------------

En ambos casos, hace falta reducir el rango al final, p.ej. via % PRIMO
(indispensable en hashpwj, la funcion base es bastante no-uniforme!) o
via doblar-y-pegar bits: De:

  |-----|-----|-----|-----|

obtener:

  |-----| ^ |-----| ^ |-----| ^ |-----|

(la idea de dividir en trozos y mezclar todos los bits es no perder
informacion)
-- 
Dr. Horst H. von Brand                   User #22616 counter.li.org
Departamento de Informatica                     Fono: +56 32 654431
Universidad Tecnica Federico Santa Maria              +56 32 654239
Casilla 110-V, Valparaiso, Chile                Fax:  +56 32 797513


Más información sobre la lista de distribución Linux