Consultas sobre entrega

Consultas sobre entrega

de Juan Cardelino -
Número de respuestas: 11

Estimados,

               Este jueves no voy a ir a Montevideo. Reservé una sala para hacer una videoconferencia en el horario de clase, así que el que tenga dudas me puede preguntar ahí. Mi idea sería hacer algunos comentarios sobre la entrega pasada y discusión sobre la entrega en curso. No obstante, sería bueno ir haciendo un skype/hangout con cada uno para ver como anda con la entrega.

Espero que se comuniquen conmigo para coodinar esa consulta personal, no dejen para último momento por favor.

Saludos, 

              Juan

En respuesta a Juan Cardelino

Re: Consultas sobre entrega

de Juan Cardelino -

Estimados,

               La clase será en el 001. Por favor confirmen la recepción.

En respuesta a Juan Cardelino

Re: Consultas sobre entrega

de Guillermo Enrique Sanchez Prioli -

Buenas

Confirmar la recepción de qué?

Tengo un par de dudas:

1- Qué es lo que hace exactamente la función heap_delete?

2- Por qué heap_init devuelve un int?

3- Qué hacen exactamente las funciones heap_updateItem, heap_extractMin y heap_queryMin?


Saludos!

En respuesta a Guillermo Enrique Sanchez Prioli

Re: Consultas sobre entrega

de Juan Cardelino -

Guillermo,

              Confirmación de recepción del mail con la hora de la clase. Igual eso caducó porque estuve (y estoy) complicado a nivel familiar.

Respondo tus preguntas.

1) Libera la memoria que pueda haber creado el heap y deja sus atributos con valores consistentes, por ejemplo el largo en cero.

2) Es costumbre devolver un entero que indique si la operación fue exitosa  o falló, tipo true or false.

3) updateItem le cambia el value,  extractMin te da el minimo del heap y lo saca del heap, queryMin te lo da pero no lo saca.


Cualquier cosa me preguntan.


En respuesta a Juan Cardelino

Re: Consultas sobre entrega

de Guillermo Enrique Sanchez Prioli -

Ok gracias. Otras consultas referidas a tus respuestas:

1- En heap_updateItem, no habría que agregar un int en los parámetros de entrada, correspondiente al nuevo valor del ítem?

2- Se supone que el mínimo en el heap es siempre el ítem que está más arriba (índice 0), no es así? Para qué sirve entonces simplemente devolverlo (heap_queryMin) si ya se sabe cuál es? Con respecto a heap_extractMin le veo más sentido.

3- Para qué sirve la función move_down? A cuál de los dos lados se movería el ítem?


Saludos

En respuesta a Guillermo Enrique Sanchez Prioli

Re: Consultas sobre entrega

de Juan Cardelino -

1.- No, tu al tener un puntero modificás el item como quieras y luego simplemente invocas a updateItem para restaurar al 

2.- Tiene dos motivos:

a) el primero por buenas prácticas de programación. El programador del heap no tiene porque ser el usuario del heap, por ende el usuario del heap no tiene que saber nada de la estructura interna del heap. Por ejemplo, vos podés hacer un extractMIn sin saber que los datos están guardados en un array. El heap se puede implementar con otras estructuras de datos que son arrays. Si usás la posición 0, quedás atado a eso.

b) Hay algoritmos en los cuales tu tenés que hacerle una pregunta al mínimo antes de sacarlo, dependiendo de la respuesta lo sacás o no. Si lo sacás siempre, y no tenías que hacerlo, terminás teniendo que agregarlo de nuevo.

3.- El heap siempre está ordenado, cada vez que vos lo tocás, lo rompés. Por ejemplo, al agregar, quitar o modificar un item. Si agregás un item, va abajo de todo y por lo tanto hay que arreglar 'hacia arriba'. Si borrás el de arriba, lo cambiás por el último, y tenés que arreglar hacia abajo. En el updateItem, es posible que tengas que arreglar hacia ambos arriba o hacia abajo. Pensalo un poco. Luego con respecto hacia que lado tenés que bajar, la respuesta es:  tenés que bajar para el lado que te garantice que la propiedad de heap (orden parcial) se mantenga. Pensalo un poco y verás que es una decisión fácil.


Saludos,

             Juan 

En respuesta a Juan Cardelino

Re: Consultas sobre entrega

de Jimena Arruti Eyherachar -

Juan, una consulta. Cómo puede updateItem actualizar el value si no le pasás un parámetro con el nuevo valor? Vos sólo pasás el puntero al heap y el puntero al item, no?

Gracias y saludos

En respuesta a Juan Cardelino

Re: Consultas sobre entrega

de Jimena Arruti Eyherachar -

Buenas. Mañana en el 001 entonces.

Juan, a mí también me sería de ayuda si pudieras explicarnos un poco más qué se pretende de cada función.

Saludos

Jime

En respuesta a Jimena Arruti Eyherachar

Re: Consultas sobre entrega

de Juan Cardelino -

Estimados, en cuanto pueda se los explico. Debo suspender la clase de mañana porque mi padre está grave. En breves envio instrucciones más detalladas.

De todas formas la idea es que también busquen un poco, las operaciones son las estándar de un heap. Luego les paso más bibliografía.