[Perl] Pregunta #2

Alejandro G. Bedoya nezumi@prodigy.net.mx
Tue, 12 Mar 2002 00:48:36 -0600


Saludos!!!

    No es realmente una pregunta de PERL, pero si de programaci=F3n..=
.  Tengo
dos listas, una que vamos a llamar "REAL" y es la mas importante ya q=
ue
sobre esta se basa todo el demas sistema. La segunda es "MIENTRAS" y =
debo de
comparar cada linea del MIENTRAS con el REAL.

    Cualquier linea que haya en MIENTRAS que no este en REAL deber=
=E1 de
agregarse al REAL..... Esta lineas nuevas podr=EDan estar al inicio d=
e
MIENTRAS, en medio, al final o ser un conjunto completo de lineas nue=
vas,
por lo que no hay ninguna relaci=F3n especifica al respecto... La =
=FAnica regla
es: L=EDnea de MIENTRAS que no haya en REAL, deber=E1 de agregarse al=
 REAL.

    El pseudo c=F3digo r=E1pido es...

    foreach $Mie (@MIENTRAS) {
        $Flag=3D0;
        foreach $Rea (@REAL) {
            if ($Mie!=3D$Rea) { next; }
            $Flag=3D1;
            last;
            }
        if ($Flag=3D=3D0) {
            push @REAL, $Mie;
            }
        }

    Esto aparentemente funciona bien, aunque realmente esto es una
abstracci=F3n ya que estoy usando hashes de hashes y otras cosas. El =
problema
es que funciona bien cuando estamos hablando de listas peque=F1as, no=
 mas de
1,000 lineas. Las lineas que tengo que revisar es de m=E1s de 61,000 =
lineas en
cada archivo para empezar!!!!! Estamos hablando de m=E1s de 1.7 mil m=
illones
de combinaciones!!! Y la lista REAL crece mas a cada rato que se comp=
ara con
un nuevo MIENTRAS!!!!!

    La pregunta entonces es: Que otras formas m=E1s eficientes hay pa=
ra
comparar dos listas inmensamente grandes???


---
Sinceramente...
Alejandro G. Bedoya
InterAccion.COM          Ponemos su Internet en Acci=F3n