UC-IIC2613 / Syllabus

28 stars 10 forks source link

[Tare 2][Pregunta 3.2] h es una lista #141

Closed Aloncarrasco closed 3 years ago

Aloncarrasco commented 3 years ago

Hola, tengo la duda de porque ahora los n.h ya no son una unt, si no que son una lista y se saca el h(s) haciendo n.h[0]. Sería bakan si me pudieran explicar porque ahora es una lista gracias.

jmopaso commented 3 years ago

Hola!

Esto se debe principalmente porque el algoritmo Preferred A* utiliza dos colas de prioridades (open y preferred). En el código si te fijas no sólo hay una lista de heurísticas, sino también una lista de keys para cada nodo (indica como se organizarán los nodos en estas colas). De esta forma, cuando yo inserto un nodo ya sea a la open o a preferred la forma de diferenciar que key corresponde a que cola será la posición de este en la lista.

Esto lo puedes notar en el archivo multy_binary_heap (cada cola es un multyBinaryHeap: ver método search de preferred_astar), donde se tiene un atributo id, el cual es importante para determinar que key pertenece a que cola (ver línea 27 del archivo donde se utiliza).

Saludos!