Una opinión:

El ordenamiento es razonablemente sencillo, y puede escalarse.
Si no necesitas dibujar el recorrido, no se necesita tanto detalle
geográfico.
La complejidad real, pasa por asociar un string que representa un domicilio,
con una calle y altura conocidas.

Sería:

- Para cada pieza, asociar la calle y altura correspondiente, en el sentido
de que se ha interpretado el domicilio.

- Separar los subconjuntos, en base a la "zona" que se obtiene a partir del
domicilio normalizado. (ojo, que mantener esta información no es fácil, pero
es posible) (el concepto de Zona, es naturalmente autoreferente: cada
zona, forma parte de otra zona mas grande) .

- Ordenar cada subconjunto. Acá recién es donde aparecen los mecanismos de
ordenamiento, que no necesitan ser tan complejos, al menos en una primera
instancia. De hecho, parece que Camino crítico y el resto, son demasiada
artillería para esto.

Entonces, una vez "leido" el domicilio, el resto es manejable.
SI el segundo paso se puede hacer antes que el primero, reduce mucho la
complejidad de la "lectura".
El problema es leer el domicilio, y asociarlo a información geométrica. Ya
sea el CPA, o alguna representación que tengas de las calles.
La dificultad pasa por la ambiguedad con que suele representarse esta
información (nombres de calles mal escritos, abreviaturas, calles con
nombres parecidos, etc) que requieren una evaluación del contexto. Esta
evaluación de contexto es natural para un ser humano, pero dificil de
codificar.
Pero hay esperanza, de hecho hay servicios diseñados para realizar esta
labor, que logran proporciones de acierto mayores al 90%. Una interface
adecuada, para que un operador arbitre, y algo de heurística, podría cerrar
el paquete.

Sin duda, que es un tema muy divertido, que depende criticamente de la
calidad del diseño tanto de algoritmos como de estructuras de datos. Por eso
es que se han prendido tantos.

Saludos

Ivan

Responder a