Documentos de Académico
Documentos de Profesional
Documentos de Cultura
3.1. Ordenamiento
Proposición 3.1 Sea x ∈ (A, ≤A)∗ una sucesión de elementos de un conjunto linealmente
ordenado.
ˆ
St(x)i = 1 + |Ai |, Ai = {k ∈ [|x|] : xk <A xi ∨ (xk = xi ∧ i < j)}.
π es permutación
1 ≤ πi ≤ |x|
Como ∅ ⊂ Ai ⊆ [|x|] \ {i}, 1 + |∅| = 1 ≤ 1 + |Ai | ≤ 1 + |x| − 1 = |x|.
πi 6= πj si i 6= j
Veamos que si xi <A xj ∨ (xi = xj ∧ i < j) entonces Ai ⊂ Aj , lo que implica(Por
qué?) πi 6= πj .
◦ Supongamos xi <A xj
Como k ∈ Ai , xk ≤A xi <A xj , luego k ∈ Aj .
◦ Supongamos (xi = xj ∧ i < j)
Como k ∈ Ai , xk ≤A xi =A xj , luego si xk <A xi se tiene k ∈ Aj y si xk = xi
se tiene que k < i < j , luego k ∈ Aj .
π ∈ St(x)
Se ha probado arriba.(Por qué?)
π es minimal.
Completar!
Note que la función de estandarización lo que hace es encontrar una permutación que respete
el orden de el arreglo (o sucesión) x y recuerde que ϕ contiene permutaciones que ordenan
ese arreglo, así que es intuitivo pensar que una es inversa de la otra en algún sentido.
1
2 Clase 3: Ordenamiento III
Proposición 3.2 Sea x ∈ (A, ≤A)∗ una sucesión de elementos de un conjunto linealmente
ordenado.
ˆ
St(x) = ϕ̂(x)−1 .
como ningún caso anterior se tiene, la igualdad debe cumplirse y entonces St(x) ˆ ϕ̂(x)i =
1 + |Aϕ̂(x)i | = 1 + |Bϕ̂(x)i ∪ (Aϕ̂(x)i \ Bϕ̂(x)i )| = 1 + |Aϕ̂(x)i | + |Bϕ̂(x)i | = 1 + a + (i − 1 − a) = i.
Ejemplo 3.3 Sea A = N con el orden usual. Sea, además, x = (5, 3, 8, 15, 2, 7, 3) ∈ (N, ≤)∗
ˆ
ϕ̂(x) = {5271634}, St(x) ˆ
= {4267153}, St(x) ◦ ϕ̂(x) = 1234567.
Proposición 3.4 Sea x ∈ (A = {a1, a2, . . . , an−1, an}, ≤A)∗ una sucesión de elementos de
un conjunto linealmente ordenado siendo ai <A aj si i < j .
n
Y
|ϕ(x)| = |x|ai !
i=1
luego, consideremos una función f : ϕ(x) −→ ni=1 S|x|ai que a una permutación σ ∈
Q
ϕ(x) la envíe en una n-tupla f (σ) = (σ 1 , σ 2 , . . . , σ n−1 , σ n ) con σ i ∈ S|x|ai donde σ i =
St((σj , σj+1 , . . . , σj+|x|ai −2 , σj+|x|ai −1 )), con j tal que xσj = ai y (xσj−1 6= ai ó j = 1).
f es sobre. Completar!
Como ordenar es permutar los elementos de una sucesión para volverla creciente en su orden
lineal, entonces para poder ordenar un arreglo basta con iterar sobre todas las posibles
permutaciones, aplicarle la permutación al arreglo y vericar que, efectivamente, el arreglo
obtenido esté ordenado.
Para eso, es bueno recordar cómo por recursión se pueden encontrar las permutación de Sn
(ver 3.1).
i i i i i, for del caso recursivo.
1 2 n m−1 m
Variable n, la recursin.
Figura 3.1: Las lineas punteadas son el for para poner la imagen de la permutación y la línea
verde hace referencia a cómo la recursión mueve el puntero en el arreglo de la permutación.
1 x = [2 ,4 ,2 ,3 ,3 ,4 ,1 ,5]
2 a = len(x)
3 laper = [0] * a
4 us = [0] * a
5 encon = 0
6 def permu(n,m):
7 global encon # permite ver la v a r i a b l e encon
8 if encon ==1: # ya encontre la permutacion , salga
9 return
10 if n==0: #caso base
11 y =[0] * m
12 for i in range (0,m): #componga e l arreglo y la pe
13 y[i]=x[laper[i]−1]
14 f = 0
15 for i in range (0,m−1): #v e r i f i q u e e l orden
16 if y[i]>y[i+1]:
17 f = 1
18 if f==0: #funciono
19 encon = 1
20 print y
21 return
22 for i in range (0,m): #caso recursivo
4 Clase 3: Ordenamiento III
23 if us[i]==0:
24 us[i]=1
25 laper[m−n]=i+1
26 permu(n−1,m)
27 us[i]=0
28 permu (a,a)
En Java.
1 import java.util . * ;
2 public class orde{
3 public static int x[] = {2 ,4 ,2 ,3 ,3 ,4 ,1 ,5};
4 public static boolean ya = false;
5 public static boolean us [];
6 public static int laper [];
7 public static void main( String args []){
8 us = new boolean [x. length ];
9 laper = new int[x. length ];
10 orde(x.length ,x. length );
11 }
12 public static void orde(int a,int b){
13 if(ya) return ;
14 if(a ==0){
15 int y[] = new int[b];
16 for(int n = 0;n<b;n++)
17 y[n]=x[ laper[n]−1];
18 boolean f = false;
19 for(int n = 0;n<b−1 && !f;n++)
20 if(y[n]>y[n+1])f=true;
21 if(!f){
22 ya = true;
23 for(int n = 0;n<b;n++) System .out. print (y[n]+(n==b−1?"\n":","));
24 }
25 return ;
26 }
27 for(int i = 0;i<b;i++){
28 if(us[i]) continue ;
29 us[i]= true;
30 laper [b−a]=i+1;
31 orde(a−1,b);
32 us[i]= false;
Ordenamiento 5
33 }
34 }
35 }
Ejercicios para el taller.