Tutorial:Orden de Listas Avanzado

De GeoGebra Manual
Revisión del 21:46 12 ago 2020 de Alicia.hofstaetter (discusión | contribs.) (Revertidos los cambios de LailaTov (disc.) a la última edición de LilianaSaid)
Saltar a: navegación, buscar
Tutorial: Diversos Ordenamientos de Listas

Plantilla:Interfaz Para ordenar una lista de objetos de un modo tal que no lo hiciera posible el Comando Ordena, pueden emplearse alternativas:

  • se precisa el comando Invierte para el modo descendiente en lugar del ascendente. Como en:
  • objetos de tipo no compatible con Ordena o criterios diferentes de orden pueden requerir alguna de las maniobras detalladas a continuación.

Algoritmo

  1. Se denomina lista la lista a ordenar.
  2. lista_h = Ordena(Secuencia((*número basado en la lista Elemento(lista, i)*, i), i, 1, Longitud(lista)))
    Esto corresponde a c en la explicación (el listado de ayudas). La sección en negrita se denomina f en la explicación.
  3. lista_s = Secuencia(Elemento(lista, y(Elemento(lista_h, i))), i, 1, Longitud(lista))
    Esta es la lista ordenada.

Explicación

Para aclarar la situación se formula la tarea matemáticamente:

  • Dada una lista (a_1, a_2, \ldots, a_n) \subset X y una aplicación f: X \to \mathbb R, se intenta encontrar una permutación \sigma \in S_n tal que f(a_{\sigma(k)}) \leq f(a_{\sigma(l)}) \; \forall (k,l) \in \mathbb N^2: 1 \leq k \leq l \leq n

Se puede pensar en la permutación \sigma como una renumeración tal que (a_{\sigma(1)}, a_{\sigma(2)}, \ldots, a_{\sigma(n)}) resulte la lista ordenada.

Así que primero es preciso llegar a una asignación de f para el ordenamiento correcto. Como en los siguientes casos:

Ejemplos:

Si se desea ordenar una lista de puntos tal que su distancia al origen sea creciente, se tiene que X := \mathbb R^2 y f((x,y)) := \sqrt{x^2 + y^2} En GeoGebra , f de un punto A sería Longitud[A], por lo que la sección en negrita en el algoritmo sería Longitud(Elemento(lista, i))

Si se desea ordenar una lista de círculos por orden creciente de radios, la sección en negrita en el algoritmo sería Radio(Elemento(lista, i))



Nota: Una construcción completa para ordenar una lista de los números complejos por su argumento se puede encontrar en GeoGebra


La maniobra para resolver este problema en GeoGebra es utilizar el comando existente para ordenar una lista de puntos. En lugar de pensar en los puntos geométricamente, se los interpreta como pares de números. GeoGebra permite ordenar los puntos por sus abscisas para crear una lista de puntos \tilde c = (\tilde c_1, \ldots, \tilde c_n) con \tilde c_k := (f(a_k), k) y ordenar esta lista. Puede denominarse a la lista ordenada c = (c_1, \ldots, c_n)

Esta lista ordenada ahora nos permite construir \sigma. Porque y(c_{\sigma(k)}) = k. A partir de \sigma se puede construir la versión ordenada de la lista original.

¿Orden en los Nombres?

Si cinco puntos se denominan A, B, C, D y E se van a ordenar acorde a cierto criterio. Usando lista = {A,B,C,D,E} el algoritmo previo puede emplearse para ordenarlos según sus coordenadas.
Respecto de sus nombres, vale señalar que en ocasiones son significativos en el contexto de la construcción y, por lo tanto, para quienes se propongan interpretarla.
El algoritmo, levemente diferente al ya explicado, que opera sobre esos nombres sería:

  1. Sea lista_n la de los nombres de los objetos a ordenas.
    Por ejemplo: lista_n = {"A", "B","C","D","E"}. Es preciso no omitir las comillas dado que se trata del orden de los nombres de los objetos y no de los propios objetos.
  2. Definiendo listado=Secuencia(Objeto(Elemento(lista_n, k)), k, 1, Longitud(lista_n)).
    Esto crea la lista de objetos a ordenar basándonos en la lista de los nombres.
  3. list_h = Ordena(Secuencia((*número basado en Elemento(listado, i)*, i), i, 1, Longitud(listado)))
    Esta sería la segunda etapa del algoritmo original.
  4. lista_{ns} = Secuencia(Elemento(lista_n, y(Elemento(lista_h, i])), i, 1, Longitud(listado))
    Esto resulta así un listado ordenado de los nombres de los objetos, como {"B", "A", "E", "F", "D"}. Si en cambio se prefiriera la lista de los valores ordenados de los objetos, basta con emplear lista_s como en algoritmo explicado en sección previa.
Ejemplo: El tercer ejemplo, usando el algoritmo original levemente modificado (que también muestra los nombres de los objetos) puede apreciarse en la correspondiente dirección
© 2021 International GeoGebra Institute