Documentos de Académico
Documentos de Profesional
Documentos de Cultura
INTRODUCCIÓN
ESTRUCTURA
DE DATOS
1
ESTRUCTURA DE DATOS
TEMAS
Repaso
Representación de Datos
Ordenamientos
ESTRUCTURA DE DATOS
REPASO-CONVERSIONES
Conversiones
1 1 0 1 1 1 0 0 1 0 0
2048 1024 512 256 128 64 32 16 8 4 2 1 DEC
1 1 0 1 1 1 0 0 1 0 0
8 4 2 1 8 4 2 1 8 4 2 1 HEX
1 1 0 1 1 1 0 0 1 0 0
4 2 1 4 2 1 4 2 1 4 2 1 OCT
1764
1024
Ejercicios: 740
Decimal: 1764 10 512
228
Hexadecimal: 6 E 4 16 128
100
Octal: 3 3 4 48 64
36
Binario: 11011100100 2 32
4
4
0
ESTRUCTURA DE DATOS
REPASO-CONVERSIONES
Conversiones
0 1 0 1 0 0 0 0 1 1 0 1
0 1 0 1 0 0 0 0 1 1 0 1
8 4 2 1 8 4 2 1 8 4 2 1 HEX
0 1 0 1 0 0 0 0 1 1 0 1
4 2 1 4 2 1 4 2 1 4 2 1 OCT
1024
+ 256
Ejercicios:
Decimal: 129310 +
1280
8
Hexadecimal: 50D 16 + 1288
4
Octal: 2415 8 + 1292
1
Binario: 10100001101 2 1293
ESTRUCTURA DE DATOS
REPASO-BINARIOS
Operaciones de Binarios
Operaciones de Binarios
Ejemplos:
Suma 1 1
1 1 1 10 1
0
1 + 1 = 0 y se acarrea 1 10 00 11 10 1
1+0=1
+ 1 11 01 11 01
0+1=1 0 1 1 1
0+0=0
1 1 1 0 0 0
ESTRUCTURA DE DATOS
REPASO-BINARIOS
Operaciones de Binarios
Ejemplos:
Resta
1-1=0 1 0 0 1 1
- 1
1-0=1 1
11 1 1 0
0 - 1 = 1 y se toma 1
0 0 1 0 1
0-0=0
ESTRUCTURA DE DATOS
REPASO-BINARIOS
Operaciones de Binarios
Ejemplos:
Multiplicación 1001
x
1x1=1
110
1x0=0 0 000
0x1=0 + 10 01
0x0=0 1001
1 1 0 110
ESTRUCTURA DE DATOS
REPASO-PASCAL
Pascal
Estructura General
Program Nombre;
Zona donde se definen las
Declaraciones; constantes, tipos, variables, etc
Begin
Zona donde se definen las
Proposiciones; instrucciones ejecutables.
End.
ESTRUCTURA DE DATOS
REPASO-PASCAL
Declaraciones
Uses
Declaración de unidades funcionales (solo para
turbo pascal)
Label
Declaración de etiquetas
Const
Declaración de constantes
Types
Declaración de nuevos tipos de datos
Var
Declaración de variables
Tipos de Datos
Básicos Estructurados
Numéricos
Arreglos (array)
Entero (integer)
Registros (record)
Real (real)
Archivos (file of)
Alfanuméricos
Conjuntos (set of)
Carácter (char)
Punteros (^)
Cadena (string)
Lógicos
Booleano (boolean)
ESTRUCTURA DE DATOS
REPASO-PASCAL
Instrucción PROCEDURE
Sintaxis
Procedure Nombre (Lista de parámetros);
Declaraciones;
Begin
Proposiciones;
End;
(Lista de parámetros);
( Var Parámetro : tipo; Var Parámetro : tipo; ……...)
Lenguaje C
Estructura de un Programa
Tipos de Datos
Básicos
char (carácter)
int (entero)
float (punto flotante de precisión normal)
double (punto flotante de doble precisión)
Modificadores
short (corto)
long (largo)
signed (con signo)
unsigned (sin signo)
ESTRUCTURA DE DATOS
REPASO-LENGUAJE C
Sistemas Computacionales
Representación de Datos
Ordenamientos
ESTRUCTURA DE DATOS
SISTEMAS COMPUTACIONALES
Dispositivos de Entrada
Dispositivos de Salida
Unidad Central de Procesamiento
Memoria Principal y Secundaria
ESTRUCTURA DE DATOS
SISTEMAS COMPUTACIONALES
Estructura de un Computador
MEMORIA SECUNDARIA
(Mecánica, magnética, óptica, etc.)
(datos, instr.)
PROCESADOR
(datos, inst.) (Información)
UNIDADES UNIDAD DE CONTROL UNIDADES
de + de
ENTRADA SALIDA
U. ARITMETICO-LOGICA
MEMORIA PRINCIPAL
Dispositivo de Entrada
Son aquellos que permiten introducir la
información a la computadora. Estos
dispositivos convierten la información en
secuencias propias de bits, capaces de ser
interpretadas por el procesador.
Dispositivo de Salida
Son aquellos que envían la información del
interior de la computadora al exterior,
mostrándola al usuario, puede aparecer en
una variedad de formas; como caracteres,
como imágenes, como páginas impresas,
etc.
ESTRUCTURA DE DATOS
SISTEMAS COMPUTACIONALES
Unidad de Control UC
Ejecuta las instrucciones máquina almacenadas en la
Memoria Principal para ello
Captura las instrucciones de la MP y las decodifica.
Según el tipo de instrucción, genera las señales de
control a todas las unidades del computador para poder
realizar su ejecución
Tiene un registro apuntador, denominado Contador de
Programa, que en cada instante contiene la dirección de la
próxima instrucción a ejecutar
ESTRUCTURA DE DATOS
SISTEMAS COMPUTACIONALES
Memoria Principal
Es un área de almacenamiento interno de la computadora, de
acceso rápido, donde se almacenan las instrucciones y los datos
que la CPU necesita para ejecutar la tarea
Se compone de un conjunto de celdas del mismo tamaño
(número de bits). Cada celda esta identificada por un número
binario único, denominado dirección
Una vez seleccionada una celda mediante su correspondiente
dirección, se pueden hacer dos operaciones:
Memoria RAM
Random Access Memory. Esta es una memoria
de acceso rápido donde se encuentran almacenados
temporalmente los datos e instrucciones
correspondientes a un programa dado que se
encuentra en ejecución. Al contrario de la memoria
ROM, ésta memoria permite que se realicen
operaciones de escritura y lectura.
La RAM es una memoria volátil, su contenido se
pierde cuando la computadora se desconecta.
La capacidad de la RAM afecta la forma en que
se ejecutan los programas y la cantidad de datos que
pueden procesarse.
ESTRUCTURA DE DATOS
SISTEMAS COMPUTACIONALES
Memoria Secundaria
Es un conjunto de componentes electrónicos que almacenan
programas y datos de forma permanente. Esta memoria tiene
mayor capacidad que la memoria principal, pero es más lenta.
Métodos de Acceso
Acceso Secuencial
La información se almacena en forma de bloques o registros
organizados secuencialmente
Para leer/escribir un registro hay que desplazarse desde la
posición actual a la deseada, pasando por todos los registros
intermedios
El tiempo necesario para acceder a un registro es variable, en
función a su posición.
ESTRUCTURA DE DATOS
SISTEMAS COMPUTACIONALES
Acceso Secuencial
ESTRUCTURA DE DATOS
SISTEMAS COMPUTACIONALES
Acceso Directo
Los bloques de información se organizan en regiones (pistas)
Acceso Directo
ESTRUCTURA DE DATOS
SISTEMAS COMPUTACIONALES
Sistemas Computacionales
Representación de Datos
Ordenamientos
ESTRUCTURA DE DATOS
REPRESENTACIÓN DE DATOS
Conceptos
Nodo
Organización Física
Signo y Magnitud
Para representar un número con este método, se escribe el signo + o
– precediendo a la magnitud del número.
Para representarlo en la computadora generalmente se utiliza el
dígito binario de la extrema izquierda para definir el signo y los
restantes se utilizan para la magnitud.
+0 0 000 -0 1 000
+1 0 001 -1 1 001
+2 0 010 -2 1 010
+3 0 011 -3 1 011
+4 0 100 -4 1 100
+5 0 101 -5 1 101
+6 0 110 -6 1 110
+7 0 111 -7 1 111
ESTRUCTURA DE DATOS
REPRESENTACIÓN DE DATOS
Complemento
499 499
500 - 500
501 - 499
502 - 498
: :
: :
997 -3
998 -2
999 -1
ESTRUCTURA DE DATOS
REPRESENTACIÓN DE DATOS
Complemento a Dos
La representación de los números se hace con base binaria ( 0 y 1)
n
C2 = 2 - | número |
En donde:
n .- Es la cantidad de dígitos binarios para la representación
número .- Esta en base dos
Ejemplo:
5 10 = 0101 2
- 510 = 10000 2 - 0101 2 = 1011 2
ESTRUCTURA DE DATOS
REPRESENTACIÓN DE DATOS
Ejemplo:
5 10 = 0101 2
invirtiendo = 1010 2
Sumando 1 = 1011 2
ESTRUCTURA DE DATOS
REPRESENTACIÓN DE DATOS
No + Complemento a 2 No - Complemento a 2
+0 0000
+1 0001 -1 1 111
+2 0010 -2 1 110
+3 0011 -3 1 101
+4 0100 -4 1 100
+5 0101 -5 1 011
+6 0110 -6 1 010
+7 0111 -7 1 001
-8 1 000
La ventaja del complemento a 2 es la facilidad para realizar operaciones
aritméticas
Ejemplo:
a) 3 + 4 = 0011 2 + 0100 2 = 0111 2
b) 3 - 4 = 0011 2 + Complemento a 2 (0100) 2
0011 2 + 1100 2 = 1111 2
ESTRUCTURA DE DATOS
REPRESENTACIÓN DE DATOS
Representación Gráfica
Real Precisión
Número Complejos
Doble
Signo Mantisa
Exponente Mantisa
Parte
Imaginaria
Mantisa
Mantisa
donde:
Signo Signo de la mantisa (representa con 0 o 1)
Exponente Exponente (representa entero en complemento a 2)
Mantisa Mantisa (representa entero en signo y magnitud)
ESTRUCTURA DE DATOS
REPRESENTACIÓN DE DATOS
Representación de Caracteres
Para facilitar la escritura y lectura de los programas y datos de una
computadora, se desarrollaron códigos simbólicos para representar la
información con caracteres en lugar de números. (Código ASCII 8 bits)
Cada carácter es representado por un patrón de bits diferentes que lo
identifica, el número de bits para representar un carácter esta
determinado por el código utilizado.
En el caso de algunas máquinas con longitud de palabra de 16 bits,
existen 2 posibilidades.
0 7 8 15
1.-
Carácter
0 78 15
2.-
Carácter 1 Carácter 2
ESTRUCTURA DE DATOS
REPRESENTACIÓN DE DATOS
Representación de Arreglos
Un arreglo es una estructura con un número fijo de nodos.
Al conjunto de nodos se le identifica con un nombre y a los nodos
con un índice
a) Dimensión A(5)
A(1)
A(2)
A(4)
A(5)
A(3)
b) Dimensión B(2,3)
B(1,1)
B(1,2)
B(1,3)
B(2,3)
B(2,1)
B(2,2)
ESTRUCTURA DE DATOS
REPRESENTACIÓN DE DATOS
Almacenamiento y Recuperación
Las localidades de memoria básicamente pueden organizarse de forma
Contigua o Ligada
Organización Contigua
Los nodos del arreglo, ocupan localidades contiguas de la memoria
a) A(i=1,5) A(2)
A(1)
A(4)
A(3)
A(5)
9
10 11 12 13 14
b) B(i=1,2,j=1,3) B(1,3)
B(1,2)
B(2,1)
B(1,1)
B(2,2)
B(2,3)
9
10 11 12 13 14 15
B(1,1) B(1,2) B(1,3) B(1,4) B(2,1) B(2,2) B(3,1) B(3,2) B(3,3) B(4,1) B(4,2)
9
10 11 12 13 14 15 16 17 18 19 20
Organización Ligada
En este caso, los elementos del arreglo ocupan cualquier localidad
de memoria y la relación entre ellas esta definida por el campo liga.
Para recuperar cualquier elemento del arreglo se requiere de algún
procedimiento, que puede ser iterativo o que utilice alguna función
de mapeo, esto depende de la forma de almacenamiento la cual
puede ser parcial o totalmente ligada.
ESTRUCTURA DE DATOS
REPRESENTACIÓN DE DATOS
Organización parcialmente ligada
Organización Ligada
100 300 200 500
9 20 40 30 90
10 20 70 1 40 64 2 30 D 3 90 60 4 D
10 70 60
12 1 70 77 8 60 8 8 D
12 77 64 8
D 2 77 D 9 64 D 17 8 D 3 D
ESTRUCTURA DE DATOS
TEMAS
Sistemas Computacionales
Representación de Datos
Ordenamientos
ESTRUCTURA DE DATOS
ESTRUCTURAS LINEALES
Listas
Las listas nombre que recibe un conjunto de nodos que puede ser
aumentado o disminuido.
Una lista es una estructura de datos que tiene un número variable de nodos.
Una lista lineal, es una lista cuyos nodos están ordenados por un solo
criterio en donde el último y el primer nodo no tienen sucesor y antecesor
respectivamente.
Una lista lineal formalmente puede ser definida como un conjunto de nodos
x(1), x(2),…….,x(n) cuyas propiedades estructurales esencialmente
involucran relaciones en una sola dimensión entre ambos nodos.
Ejemplo: El nodo x(k) es predecido por el x(k-1) y le sigue el x(k+1)
…………..
X(1)
X(n)
X(2)
X(4)
X(3)
ESTRUCTURA DE DATOS
ESTRUCTURAS LINEALES
Pilas
Una Pila o Stack es una estructura de datos lineal, en la cual las operaciones
se realizan por uno de los extremos de la lista.
UEPS Ultimas Entradas Primeras Salidas
LIFO Last Input First Output
Entrada Salida
E/S
P
I
L
A
ESTRUCTURA DE DATOS
ESTRUCTURAS LINEALES
Ejemplo:
Entrada: 1 2 3 4 5
Salida: 12543
Paso 54
231
P
I
L
A
ESTRUCTURA DE DATOS
ESTRUCTURAS LINEALES
Ejemplo:
Entrada: 1 2 3 4 5
Salida: 153 24
Paso 6
2
3
4
5
1
P
I
L
A
ESTRUCTURA DE DATOS
ESTRUCTURAS LINEALES
Representación y Algoritmos
Organización Contigua
Agregar Retirar
MAX Si T = MAX Si T = D
Dir i 10 escribe (‘Pila Llena’) escribe (‘Pila Vacía’)
sino sino
111
Dir i +
Si T = D Si T = MIN
Dir i +12
2 T = MIN Dato = Pila(T)
Pila(T) = dato T= D
Dir i +13
3 T
sino sino
14 T=T-1 Dato = Pila(T)
15n
Dir i + Pila(T) = dato T=T+1
MIN
finsi finsi
finsi finsi
ESTRUCTURA DE DATOS
ESTRUCTURAS LINEALES
Organización Ligada
T T T NODO
Datop Liga
D
ji
Dir k
Agregar Retirar
Obtener N Si T = D
escribe (‘Pila Vacía’)
Si obtiene N
sino
Si T = D
Dato = Datop(T)
Liga(N) = D
N=T
Datop(N) = dato
T = Liga(T)
T=N
Liberar N
sino
finsi
Liga(N) = T
Datop(N) = dato
T=N
finsi
sino
escribe (‘Pila Llena’)
finsi
ESTRUCTURA DE DATOS
ESTRUCTURAS LINEALES
Manipulación de Expresiones Aritméticas
En la notación convencional o Notación Infija se define una jerarquía para los
operadores aritméticos (+ - * / ^) de tal forma que la operación A+B*C debe
efectuarse en el siguiente orden B*C y después + A; si lo que se desea primero es
sumar A + B para multiplicar el resultado por C, será necesario introducir a la
notación los paréntesis (A + B) * C.
En la Notación Polaca todos los operadores poseen la misma jerarquía y el orden de
evaluación esta dado por la posición de los operandos.
/
+
+
ESTRUCTURA DE DATOS
ESTRUCTURAS LINEALES
+ // 31.5
1.5 2 ) / 231.5
+ (33.5/ * 3.5 31.5 72 /
+4.5
* / 6.5
3.5
1.5
273
4.5
31.5
ESTRUCTURA DE DATOS
ESTRUCTURAS LINEALES
Cola
Es una estructura de datos lineal en la cual las operaciones se realizan por
ambos extremos. Se agrega por uno de los extremos y se retira por el otro.
PEPS Primeras Entradas Primeras Salidas
FIFO First Input First Output
Entrada Salida
Último Primero
ESTRUCTURA DE DATOS
ESTRUCTURAS LINEALES
Representación y Algoritmos
Organización Contigua
Agregar Retirar
MAX Si U = MAX Si P = D
Dir i 10 escribe (‘Cola Llena’) escribe (‘Cola Vacía’)
U sino sino
Dir i 11
+1 Si U = D Si U = P
U = MIN Dato = Cola(P)
122
Dir i +
P = MIN U= D
13 P Cola(U) = dato P= D
sino sino
Dir i 14
+n
MIN U=U-1 Dato = Cola(P)
Cola(U) = dato P=P-1
finsi finsi
finsi finsi
ESTRUCTURA DE DATOS
ESTRUCTURAS LINEALES
Organización Ligada
P U U U
NODO
Datoc Liga
D D D
ji
Dir k
Agregar Retirar
Obtener N Si P = D
Si obtiene N escribe (‘Cola Vacía’)
Liga(N) = D sino
Datoc(N) = dato Dato = Datoc(P)
Si U = D N=P
P = Liga(P)
U=N
Liberar N
P=N
sino Si P = D
Liga(U) = N U=D
finsi
U=N
finsi finsi
sino
escribe (‘Cola Llena’)
finsi
ESTRUCTURA DE DATOS
ESTRUCTURAS LINEALES
Cola Doble
Es una estructura de datos lineal en la cual las operaciones de agregar y
retirar se practican por ambos extremos
Una Cola Doble es una estructura en la que por la forma en que se
realizan las operaciones, puede comportarse como pila o cola.
Entrada/Salida Entrada/Salida
ESTRUCTURA DE DATOS
ESTRUCTURAS LINEALES
Representación y Algoritmos Agregar por P
Agregar por U
Organización Contigua Si U = MAX Si P = MIN
escribe (‘Cola Doble Llena’) escribe (‘Cola Doble Llena’)
sino sino
Si U = P = D Si U = P = D
U = Algún intermedio MAX y MIN U = Algún intermedio MAX y MIN
MAX P = Algún intermedio MAX y MIN P = Algún intermedio MAX y MIN
Dir i10 ColaDoble(U) = dato ColaDoble(P) = dato
U sino sino
U=U-1 P=P+1
Dir i 11
+1 Punto ColaDoble(U) = dato ColaDoble(P) = dato
intermedio finsi finsi
Dir i 12
+2 MAX-MIN finsi finsi
13 P
Retirar P
Retirar U
Dir i 14
+n Si U = D Si P = D
MIN escribe (‘ColaDoble Vacía’)
escribe (‘ColaDoble Vacía’)
sino sino
Si U = P Si U = P
Dato = ColaDoble(U) Dato = ColaDoble(P)
U= P= D U= P= D
sino sino
Dato = ColaDoble(U) Dato = ColaDoble(P)
U=U+1 P=P-1
finsi finsi
finsi finsi
ESTRUCTURA DE DATOS
ESTRUCTURAS LINEALES
Organización Ligada
U P
NODO
Datoc Liga
D D
ji
Dir k
Lista Circular
Es una estructura de datos lineal que tiene como característica
fundamental un orden en el que a la última localidad de
almacenamiento le sigue la primera
Este tipo de lista viene a solucionar el problema de desplazamiento de
los nodos sobre la memoria como ocurre en el caso de la cola, o el
problema de mover los nodos a una posición después de un borrado.
ESTRUCTURA DE DATOS
ESTRUCTURAS LINEALES
Representación y Algoritmos
Organización Contigua
P
MIN
10 Agregar Retirar
Si (P=U+1) o (U=MAX y P=MIN) Si U = D y P = D
escribe (‘Lista Circular Llena’) escribe (‘Lista Circular Vacía’)
sino sino
Si U = D y P = D Si P = U
MAX U = MIN Dato = ListaCircular(P)
13 11 P = MIN U= D
ListaCircular(U) = dato P= D
sino sino
Si U = MAX Si P = MAX
U = MIN Dato = ListaCircular(P)
ListaCircular(U) = dato P = MIN
12 sino sino
U=U+1 Dato = ListaCircular(P)
ListaCircular(U) = dato P=P+1
U
finsi finsi
finsi finsi
finsi finsi
ESTRUCTURA DE DATOS
ESTRUCTURAS LINEALES
Datoc Liga
Dir i
Agregar Retirar
Dir k
Obtener N Si U = D
Dir j
D X D
LI(X) LD(X)
ESTRUCTURA DE DATOS
ESTRUCTURAS LINEALES
Representación y Algoritmos
Por la estructura de lista, es posible agregar y retirar un nodo
conociendo cualquier nodo de la lista.
LI(X) LD(X)
D X M D
N
LI(N) LD(N)
Cabeza de Lista
En cualquier nodo N se cumple:
LD(LI(M)) = LI(LD(M)) = M
Sistemas Computacionales
Representación de Datos
Ordenamientos
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES
Gráficas o Grafos
Una gráfica G denotada como G = (A,R) es una relación de R sobre un
conjunto A. Los elementos de A, son llamados nodos, puntos ó vértices
y los elementos de R son llamados arcos o líneas.
Una relación R de un conjunto S a T es cualquier subconjunto del
producto cartesiano SxT, esto es:
R c { <s, t> | s e S y t e T
El producto cartesiano SxT de dos conjuntos, es el conjunto de pares
ordenados de tal forma que la primera coordenada de cada par es un
miembro de S y la segunda es un miembro de T, esto es:
SxT = { <s, t> | s e S y t e T
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES
Ejemplo:
Sea A = (1, 2) y B = (a, b, c) el producto cartesiano es:
AxB = { <1, a>, <1, b>, <1, c>, <2, a>, <2, b>, <2, c> }
b
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES
Arco Dirigido
Si en un arco e = <u, v> es importante considerar que u es el nodo inicial,
u = ini(e) o sea, el nodo de donde parte el arco y v el nodo final v = fin (e)
el nodo a donde llega el arco.
v
v
u u
Gráfica Dirigida
Una gráfica cuyos arcos son todos dirigidos.
a
b
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES
Arco No Dirigido
Si en un arco e = <u, v> no es importante considerar cual es el nodo
inicial ni cual es el nodo final. <u, v> = <v, u>
u v v u
Gráfica No Dirigida
Una gráfica cuyos arcos son todos no dirigidos.
c
a
b
Gráfica Mixta
Cuando una gráfica contiene arcos dirigidos y no dirigidos.
c
b
a
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES
Lazo
Un arco que une un vértice consigo mismo, la dirección de un lazo no
tiene ningún significado y puede ser considerado como arco dirigido o no
dirigido
a
Grado Externo de un Nodo
El grado externo de un nodo u es el número de arcos que salen de él. Esto
es el número de arcos e tales que inic(e) = u
a
Grado Interno de un Nodo
El grado interno de un nodo u es el número de arcos que llegan a él. Esto
es, el número de arcos e tales que fin(e) = u
a
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES
Trayectoria
Si en una gráfica dirigida ciertos miembros de R pueden ser colocados en
una secuencia de la forma:
<a1 ,a 2 >, <a 2 ,a 3 >, <a 3 ,a 4 >,………………..,<a n-1 ,a n >
{<a, b>, <b, c>, <c, d>} a d
Ciclo b c
Si en una trayectoria el punto inicial a 1 es igual al punto final a n
{<a, b>, <b, c>, <c, a>}
c
a
b
Gráfica Cíclica o Acíclica
Una gráfica que contiene al menos un ciclo es llamada gráfica cíclica, de
otra forma es llamada gráfica acíclica
c c
a a b Cíclica
b acíclica
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES
Trayectoria Simple
Cuando los arcos de la secuencia son distintos.
{<a, b>, <b, c>, <c, d>} a d
b c
Trayectoria Hamiltoniana
Si una trayectoria es simple y se contiene a todos los nodos de A y pasa
por estos sola una vez.
A = {a, b, c, d, e} {<a, b>, <b, c>, <c, d>, <d, e>}
e
a b c d
Longitud
Es el número de arcos que componen una trayectoria
a d
1 b 2 c 3
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES
a 5 5 b
b a
Gráfica Pesada
Una gráfica los arcos de la misma tienen peso.
-5 c
3
a 4
10 b
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES
Arco Paralelo
Cuando un par de nodos esta unido por más de un arco en el mismo sentido.
a b
Multigráfica
Es cuando una gráfica contiene arcos paralelos.
b
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES
Ejemplo: d
c
a
b e
Trayectoria a a d:
Trayectoria Simple:
Trayectoria Hamiltoniana:
Ciclo:
Nodo GRADO INTERNO GRADO EXTERNO TRAYECTORIA LONGITUD
E
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES
b
a b c
a a 1 1 1
b 0 0 0
c 0 1 0
c
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES
Una gráfica no dirigida, pesada o no, queda representada por una matriz
triangular, ya que los arcos <a i ,a j > y <aj ,a i > quedan representados en
un solo elemento Xij de la matriz de adyacencia.
3 b a b c
a a 4 3 1
2
b 0 0 2
4 c
1 c 0 0 0
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES
c c a b D
En una gráfica dirigida sólo estarán en la lista de cualquier nodo aquellos
nodos adyacentes a los que se tiene acceso desde él. Si la gráfica también
es pesada, será necesario agregar un campo adicional al nodo para guardar
el peso del arco.
3 b a a 4 b 3 c 1 D
a
4 2 b D
1
c c b 2 D
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES
Árboles
Conceptos y Definiciones
Un árbol es una gráfica G =(A,R) en la que:
1.- El número de nodos es igual al número de arcos mas uno | A | = | R | + 1
2.- Todos los nodos son de grado interno 1, excepto un nodo llamado la raíz que es de
grado 0.
3.- No hay ciclos
4.- Cualquier trayectoria es simple
5.- Entre cualquier par de nodos solo hay una trayectoria
6.- Cualquier arco, es un arco de desconexión
Otra forma de uso frecuente para definir un árbol es la siguiente definición recursiva:
“Un árbol es un conjunto de uno o más nodos en el que hay un nodo especial,
llamado la raíz del árbol y los demás nodos son particiones en subconjuntos
disjuntos T1 ,T 2 ,T 3 ,……,T n (n >= 0), cada uno de los cuales es un árbol. Cada
Ti ( 1 =< i =< n ) es llamado un subárbol de la raíz”.
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES
Ejemplo:
Consideremos la siguiente gráfica G = (A, R) donde:
A = {a, b, c, d, e y f}
R = {<a, b>, <a, c>, <a, d>, <c, e>, <c, f>}
b e
a Por lo tanto la gráfica G es un árbol
c
d f
Verificamos si la gráfica es un árbol.
1.- El número de nodos es igual al número de arcos mas uno 6=5+1
2.- Todos los nodos son de grado interno 1, excepto un nodo llamado la raíz que es de
grado 0. a = 0, b = 1, c = 1, d = 1, e = 1, f = 1
3.- No hay ciclos OK
4.- Cualquier trayectoria es simple <a,c> <c,e>; <a,c> <c,f>; <a,b>; <a,d> OK
5.- Entre cualquier par de nodos solo hay una trayectoria OK
6.- Cualquier arco, es un arco de desconexión OK
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES
b e
a
c
f
d
Verificamos si la gráfica es un árbol, mediante el algoritmo recursivo.
“Un árbol es un conjunto de uno o más nodos en el que hay un nodo especial,
llamado la raíz del árbol y los demás nodos son particiones en subconjuntos
disjuntos T1 ,T 2 ,T 3 ,……,T n (n >= 0), cada uno de los cuales es un árbol. Cada
Ti ( 1 =< i =< n ) es llamado un subárbol de la raíz”.
d T3
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES
e
c
f
c e T4
Raíz
Por lo tanto la gráfica G es un árbol
árbol
f T5
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES
Terminología de Árboles
Grado o grado externo.- de un nodo al número de sus
a
subárboles a=3 b=0 c=2 d=0
e=0 f=0
Hoja o Nodo Terminal .- Es un nodo de grado cero
b c d b, d, e y f
Nodo Ramal .- Es un nodo de grado mayor a cero
a y c
e
Nivel de un nodo .- Es el nivel de su antecesor directo más
uno. El nivel de la raíz es 1.
f a=1 b=2 c=2 d=2 e=3 f=3
También es frecuente que los nodos de un árbol reciban
a a tales como: el nodo a es padre de b, c y d o que
nombres,
b c
c b, c y db son hijos de a, o que b, c y dd son hermanos.
e
e
f
d f
( a ( b, c ( e, f ), d ) )
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES
a a d
c b c
b c
d e f e d f e f a
A B C
b
Si los árboles son ordenados A = B = C
Si los árboles son orientados A= B = C
Si los árboles son libres A= B = C
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES
a
a b c d e f
a 1 1 1 0 0
c b 0 0 0 0 0
b d
c 0 0 0 1 1
d 0 0 0 0 0
e f e 0 0 0 0 0
f 0 0 0 0 0
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES
Cuando el árbol es libre, la matriz de adyacencia es triangular y se especifica de
forma similar a una gráfica no dirigida.
a a b c d e f
a 1 1 1 0 0
b 0 0 0 0 0
b c d c 0 0 0 1 1
d 0 0 0 0 0
e f e 0 0 0 0 0
f 0 0 0 0 0
e f
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES
Árboles Binarios
Un Árbol Binario es un árbol en el que cualquier nodo tiene cero, uno o
dos subárboles; cuando tiene exactamente cero o dos subárboles es
llamada árbol estrictamente binario, de otra forma es un árbol de knuth.
2 a a
1
c 1
b 0 2 b
d c
e 2
2 0
f d e
0 g 0 0
0
Árbol Estrictamente Binario Árbol de Knuth
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES
DD Ramas Derechas
Simple
II Ramas Izquierdas
Rotación
DI Ramas Derecha e Izquierda
Complejo
ID Ramas Izquierda a Derecha
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES
Rotación II X -2
-1
C
0
B
B 0 -1
X
A C
A
0 0 0
Rotación DD 0
A
X1 2 B
B
0 1
X
A C
0 0
C
0
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES
Rotación ID X -2
-1
C
0
B
A 0 1
X
A C
B 0 0 0
Rotación DI 0
X1 2 B
A
C
0 -1
X
A C
0 0
0
B
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES
-10
-2 -1012
65
50
65
0 -1
-1
-2 0 -1 0
0
12
39
50 50
23 65
70 70
-10 0 0
0 0
0
1 70 0 01
23 2301
23 50 65 68 82 82
0 0
0 0
10 39 68 82
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES
Árboles B
Al considerar un orden para los subárboles inclusive cuando sólo existe
uno de ellos, el árbol es B. Un árbol B tiene asociado en los arcos un peso
cuyo valor es cero, cuando el arco esta orientado a la izquierda y uno
cuando esta a la derecha.
Dos arcos que se originan en el mismo nodo no pueden tener la misma
orientación.
a a a
0 1 c
0 1
c b 1 c 0
b b
0 1
1
d d
e 0
e
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES
c d 3 4 S
R
b 2 Q
e f 5 T U V
6
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES
1
b
c P
e 2
d 3 Q
f
R
5 4
S
6
T
V
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES
aaaa N1
N2 N3 N1
2
ccc dddd c a
bd aN2 a
bb b 2
0
c dN3 d
c ac
0 2
d
d a
0 0
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES
Recorrido de Árbol.
Recorrer un árbol, es un método de visitas de los nodos con el objeto de
sistematizar la recuperación de la información almacenada en los nodos de un
árbol.
Una de las formas mas sencillas de recorrer un árbol de arriba hacia abajo (top-
down); es iniciar las visitas por la raíz y continuar sobre los nodos del nivel 2 de
izquierda a derecha, continuar con los del nivel 3, hasta alcanzar el nivel n.
Cuando procedemos desde el nivel n hacia la raíz, el recorrido es de abajo hacia
arriba (bottom-up).
a
Arriba Abajo
Hacia
c Hacia
Abajo
b Arriba
d e f g
Top-Down abcdef g
Bottom-Up def gbca
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES
a Preorder
2
1
3
132
c • Se visita el nodo
b 12
3
• Se recorre el subárbol izquierdo
13
2
31
2 f
2 • Se recorre el subárbol derecho
d e 31
g h
12
3 2
13
Preorder a b d e c f gh
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES
a Inorder
2
1
3
132
c • Se recorre el subárbol izquierdo
b 12
3
• Se visita el nodo
13
2
31
2 f • Se recorre el subárbol derecho
2
d e 31
g h
12
3 2
13
Inorder d b ea cg f h
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES
a Postorder
2
1
3
132
c • Se recorre el subárbol izquierdo
b 12
3
• Se recorre el subárbol derecho
13
2
31
2 f • Se visita el nodo
2
d e 31
g h
12
3 2
13
Ejercicio Job, Flor, Iván, Luis, Ana, Sara, Alba, Luz, Juan
Job Flor Iván Luis Ana Sara Alba Luz Juan
Job
Flor Luis
Alba Luz
Recorrido TopDown
Preorder
Inorder
Postorder
Bottom Up
• Arriba
Nodo aa Arriba
Subárbol
Abajo izquierdo
Abajo
TopDown Job Flor Luis Ana Iván Juan Sara Alba Luz • Izquierda-Derecha
Nodo
Subárbol izquierdo
derecho
Bottom Up Alba Luz Ana Iván Juan Sara Flor Luis Job • Nodo
Subárbol derecho
Preorder Job Flor Ana Alba Iván Luis Juan Sara Luz
Inorder Alba Ana Flor Iván Job Juan Luis Luz Sara
Postorder Alba Ana Iván Flor Juan Luz Sara Luis Job
ESTRUCTURA DE DATOS
TEMAS
Sistemas Computacionales
Representación de Datos
Ordenamientos
ESTRUCTURA DE DATOS
ORDENAMIENTOS
Ordenamientos.
El ordenamiento es una de las operaciones más importantes que se
práctica sobre una estructura de datos.
Ordenar una estructura de datos es establecer un orden de precedencia
entre los elementos de la estructura de acuerdo a uno o más campos llaves
que se seleccionen para tal fin.
Consideraciones para la Selección del Método
1.- El tipo de memoria en la que se encuentran los datos. Esta puede ser
de acceso directo y de alta velocidad, acceso directo y mediana velocidad
o de acceso secuencial
2.- Las características del SO para el manejo de archivos y memoria
3.- Los tiempos de acceso a los dispositivos
4.- La cantidad, el tipo y la distribución inicial de los datos
5.- La eficiencia del método n Log 2 n n = no. elementos a ordenar
ESTRUCTURA DE DATOS
ORDENAMIENTOS
Ordenamientos Internos
Los métodos de ordenamiento que se utilizan para un conjunto de datos
almacenados en una memoria de acceso directo de alta velocidad, son
llamados métodos de ordenamiento interno.
Ejemplo:
10, 12, 7, 1, 6, 9 Algoritmo
Ciclo I = 1 hasta N-1
Inicio 1 2 3 4 5 k=i
Ciclo j = i + 1 hasta N
i Si A(j) < a(k)
k=j
i Fin si
Fin ciclo
ik Si i <> k
c = A(i)
k i A(i) = A(k)
A(k) = c
Fin si
k i
Fin ciclo
k k
ESTRUCTURA DE DATOS
ORDENAMIENTOS
Ejemplo:
10, 12, 8, 1, 6, 9
Algoritmo
Inicio 1 2 3 4 5
Ciclo I = 1 hasta N-1
i Ciclo J = I + 1 hasta N
Si A(i) > a(j)
j i aux = A(i)
A(i) = A(j)
j j i A(j) = aux
Fin si
j j j i Fin ciclo
Fin ciclo
j j j j i
j j j j j
ESTRUCTURA DE DATOS
ORDENAMIENTOS
2
> > > >
3
> > > >
4
> > > >
5
> > > >
6
> > > >
ESTRUCTURA DE DATOS
ORDENAMIENTOS
Inserción Directa
El algoritmo considera que el conjunto ordenado sólo tiene un elemento y
a partir de este se irán insertando los demás.
ESTRUCTURA DE DATOS
ORDENAMIENTOS
Ejemplo:
Algoritmo
8, 5, 3, 7, 10, 15, 2, 13
N=0
Mientras existe dato haz
Leer num
ban = true
I=1
Mientras I <= 1 Haz
Si num < t(i)
Ciclo j = N hasta I, -1
t(j+1) = t(j)
Fin ciclo
t(i) = num
ban = false
i=N
Fin si
i=i+1
Fin mientras
N=N+1
Si ban = true
t(n) = num
Fin si
Fin mientras
ESTRUCTURA DE DATOS
ORDENAMIENTOS
Cubetas
El algoritmo de bucket sort es de los más representativos entre los
métodos de distribución y se basa en el manejo de dos fases; la primera
para distribuir los datos en las cubetas y la segunda en la recolección de
los datos.
ESTRUCTURA DE DATOS
ORDENAMIENTOS
Ejemplo: 135, 209, 107, 106, 124, 221, 103, 218, 203, 278, 74, 104
74
103
221
135 103
203
209 104
203
107 106
124 107
74
124 124
209
104
221 218
135
103 203
106
221
218 124
209
107
203 218
135
278 221
278
74 278
209
104
Distribución Centenas
Decenas
Unidades
Cub 0 Cub 1 Cub 2 Cub 3 Cub 4 Cub 5 Cub 6 Cub 7 Cub 8 Cub 9
103
74 221
218
103 221
203 135
103 124 135 106 107
74 218 209
209 135
ESTRUCTURA DE DATOS
ORDENAMIENTOS
Ordenamientos Externos
Tabla A
Tabla B
Elemento A Elemento B
Tabla C
ESTRUCTURA DE DATOS
ESTRUCTURAS NO LINEALES
Ejemplo:
Paso 21 Este
Se selecciona
proceso se
la raíz
repite
delrecursivamente
árbol original, se
sobre
genera
los un
subárboles
nuevo nododel
nuevo
cuyo hijo
árbol,
izquierdo
hastaes que
el subárbol
los nodos
izquierdo
de de
losla raíz,
subárboles
y el derecho
sean
transformados
lo que queda del
a nodos
árbol original
terminales
incluyendo la raíz.
aaaa N1
N2 N3 N1
2
ccc dddd c a
bd aN2 a
bb b 2
0
c dN3 d
c ac
0 2
d
d a
0 0