Hay chance ;)

On 9/1/07, NachoKB <[EMAIL PROTECTED]> wrote:
>
> Y si le das una oportunidad a la de hacer los primeros 64k nada más? y
> cuando detectas una colisión, recién ahí vas probando con más??
> Entonces, en el caso de que sean todos distintos, tarda un tiempo que
> sería mínimo. Cuando hay "sospechas" puede tardar un poco más... Me parece
> que así mantendrías un muy buen nivel de performance sin el compromiso que
> hay que aceptar cuando incorporás alguna heurística. Es muy difícil decidir
> alguna heurística que sirva, y peor aún, varía mucho entre distintos casos.
> Como ejercicio estaría bueno hacerlo configurable (el hashing por
> "niveles", digo). Por ejemplo, que si lo configurás con
>
>   niveles = [ 64 ]
>
> hashee apenas los 64kb primeros de cada archivo, y recién en una segunda
> instancia los archivos completos para despejar las dudas (sólo si coincidió
> el hash de primer nivel con algún otro, hasheo el archivo completo).
>   Pero si lo configurás con
>
>   niveles = [ 64, 10240 ]
>
> primero intente con 64kb, luego si hay sospechas con 10mb y recién si
> todavía pueden llegar a ser iguales con los archivos completos (esto
> serviría para el caso de tener muchos archivos muy grandes pero con
> probabilidad de que tengan un comienzo igual, se me ocurre que no es tan
> loco).
>
> Lo que hay que mantener es siempre todos los niveles de hash calculados
> (para comparar también incrementalmente) para todos los archivos (acá se cae
> el uso de un Hash, al menos como está usado actualmente).
>
> Por otro lado, si un hash (de primer nivel) da igual, pero las longitudes
> de los archivos son distintas, descartarlo (en este caso, tampoco sirve un
> Hash, al menos como está planteado), considerarlos archivos distintos (esto
> implicaría que en el caso de que tengas dos archivos uno siendo el otro
> truncado los consideraría distintos, cosa que de la otra forma se podría
> llegar a manejar).
>
> O quizá sea hora de largar la paja mental... :)
>
> On 9/1/07, nelson fernandez <[EMAIL PROTECTED] > wrote:
> >
> > Porque en vez de hacer un hash de 'todos' los archivos no solo hacerlo
> > de los que se podrian 'parecer' ?... agregarle más inteligencia al
> > algoritmo de búsqueda.
> >
> > por ejemplo, ver si hay 2 nombres iguales de archivos y usar el método
> > de hash para resolverlo. pero si los nombres son distintos y las
> > extensiones son distintas (comparar un ubuntu.iso con
> > mafalda_naked.jpg tiene sentido ?) no compararía. luego por cada grupo
> > de archivos (agrupados por extensiones ?) se podría usar el algoritmo
> > de levenshtein [1][2] para ver si tienen nombres parecidos y solo con
> > los que se acerquen mucho usar el método de calcular el hash.
> > me parece que en lotes grandes vas a obtener mejores resultados
> >
> > [1] http://www.merriampark.com/ld.htm
> > [2] http://rubyforge.org/projects/text
> >
> >
> > --
> > :: nelson ::
> > artesano de software
> > http://netflux.com.ar
> > _______________________________________________
> > Ruby mailing list
> > [email protected]
> > http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
> >
> >
>
>
> _______________________________________________
> Ruby mailing list
> [email protected]
> http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
>
>


-- 
Martín Sagastume
094-575846
Montevideo - Uruguay
http://musicapastillera.blogspot.com
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a