[pyar] ¿Volvemos a empezar?

Roberto Alsina ralsina en netmanagers.com.ar
Mie Abr 30 22:45:56 ART 2014


On 30/04/14 22:43, Fernando Pelliccioni wrote:
>
>
>
> 2014-04-30 21:54 GMT-03:00 Roberto Alsina <ralsina en netmanagers.com.ar 
> <mailto:ralsina en netmanagers.com.ar>>:
>
>     On 30/04/14 21:37, Fernando Pelliccioni wrote:
>>     No, no creo que la sepas :-)
>>
>>         La complejidad es la que sea que tenga s.__getitem__
>>
>>
>>     Tengo que leer todavia el link que me pasaste acerca de s.__getitem__
>>     Bueno, en realidad me refería a suponer el peor de los casos.
>>     Suponiendo el peor de los casos, que significa hacer? ( no solo
>>     complejidad asintótica, sino, operaciones concretas )
>>>     s == s[::-1]
>>
>>     La respondo yo.
>>
>>     En el peor de los casos:
>>     1.    Para s[::-1]
>>                        - Memory allocation para la nueva secuencia,
>>     ya que como vimos antes, no podemos asegurar que id(s) == id(s[::-1])
>>                      - Cargar la nueva lista con las referencias de
>>     la lista original
>>
>>      2.  Para la comparacion de igualdad ==
>>                   - Iterar sobre la secuencia, realizando...
>>                   - N comparaciones
>>
>>     ¿Es necesaria esta complejidad para un algoritmo de palindromos?
>>     (no perder de vista que tengo en mente otra cosa)
>>     ¿Es el optimizer tan inteligente para darse cuenta de esto?
>>     ¿seguro? ¿como lo podemos verificar?
>>
>
>     Quien dice que hay que generar toda la lista invertida?
>
>     all(a[-i-1]==a[i]  for i in range(len(a)))
>
>     Sin embargo, si alguien me da ese código, en vez de a == a[::-1]
>     es obvio que a menos que me dé una excelente razón, está
>     simplemente mal.
>
>
> Por ahora, el ejercicio es un caso simple, que quiero extenderlo a 
> algo mas complicado, donde si vamos a necesitar optimizar. Prometo que 
> es un caso mucho mas interesante!
>
Sospecho que no entendés lo que hace el ejemplo que te dí recién.

> Pero que opinas si, como usuario del algoritmo, en vez de escribir
>
>       a == a[::-1]
>
> escribis
>
>     is_palindrome(a)
>
> ?
>
> Como usuario no te importa como implementado, (si con "la lista 
> invertida" o usando "Slice") solo te importa como se usa y la 
> complejidad del mismo.
>
>

Si no te importa la implementación, no te importa la complejidad. La 
complejidad es una característica de la implementación.
Es como decir que la complejidad de sort() no depende de la implementación.


------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20140430/ebc22b1a/attachment-0001.html>


More information about the pyar mailing list