Dise - PowerPoint PPT Presentation

About This Presentation
Title:

Dise

Description:

Esto permite escribir programas robustos que requieren menos mantenci n Desventaja ... En un rbol binario ... un heap puede ser usado como lista de ... – PowerPoint PPT presentation

Number of Views:60
Avg rating:3.0/5.0
Slides: 22
Provided by: angel236
Category:
Tags: binario | como | dise | escribir

less

Transcript and Presenter's Notes

Title: Dise


1
Diseño y análisis de algoritmos
  • Eridan Otto G

Revisión de estructuras de datos
2
Introducción
  • Revisión de estructuras de datos
  • Grafos
  • Listas
  • Arboles binarios
  • Heaps
  • Definición tarea 1
  • Definición formal de Arboles, Listas, Heaps
  • Fecha entrega 31 agosto

3
Estructuras de datos
  • Definición abstracta de red o grafo

Def1. Un grafo (concreto o físico) es una
colección de segmentos o líneas rectas y puntos
en un espacio tridimensional. Def2. Los
segmentos o líneas se llamarán arcos y los puntos
vértices Prop1. Dos arcos se pueden intersectar
sólo en un punto o tienen un solo vértice en
común Prop2. Todo arco de un grafo tiene dos
vértices asociados. Prop3. Si los vértices de un
grafo son conocidos, entonces, la red puede ser
completamente especificada exhibiendo aquellos
pares de vértices que son puntos terminales de
cada arco no conectado completamente.
4
Estructuras de datos
  • Definición Formal abstracta de un grafo
    completamente conectado
  • Un grafo está especificado por un conjunto de
    vértices V , y ciertos conjuntos del tipo a,b
    tales que a e V y b e V y a dist b es un
    elemento de (VV). Esto lleva a la descripción de
    un grafo como un par ordenado de conjuntos (V,A)
    tales que A dde (VV).
  • Cualquier conjunto V será suficiente para
    conformar un conjunto de vértices
  • Siendo V finito y no vacío . En el extremo de
    esta definición el conjunto A puede ser vacío
    (Grafo completamente desconectado o puntos sin
    relación alguna)
  • Finalmete una definición abstracta de grafo es
  • (V,S) es un grafo ssi
  • 1) V es finito y V
  • 2) S d (VV)

5
Estructuras de datos
Ejemplo
0
Grafo G
1
2
3
4
5
V(0,1,2,3,4,5) A(0,1,1,2,1,3,2,4,3,4,
4,5,1, 0,2,1,3,1,4,2,4,3,5,4)
G ((0, 0,1), (1, 1,2), (1,
1,3),............), nodos terminales (0,5)
6
Estructuras de datos
  • Grafos
  • Def 1 Adyacencia, dos vértices Vi, Vj
  • son adyacentes si w Aiji,j tal que los una
    dichos vértices.
  • Def 2 Vecindad, dos vértices Vi, Vj son
    vecinos ssi Def1.
  • Def 3 Grado de Vi, es la cantidad de arcos que
    inciden en el vértice
  • Def 4 Grafo completamente conectado, si i,j
    w arcos que unen Vi, Vj
  • Def 5 Grafo dirigido es u G(N,A) donde Aij es
    un elemento diferente de Aji

7
Estructuras de datos
Grafos Ejemplo de un grafo dirigido
0
A01 ltgt A10 A13 ltgt A31
1
2
  • Vértice o nodo 0 es adyacente con 1
  • Vecinos de 1 0 2 3
  • Grado de 4 3

3
4
5
V(0,1,2,3,4,5) A(0,1,1,2,1,3,2,3,2,4,
3,4,4,5,1, 0,3,1)
8
Estructuras de datos
  • Grafos
  • Def 5 Camino, o ruta de G(V,A), puede
    representarse sólo por la secuencia de sus Vi
  • (v1, v2,...... Vn ) o por los arcos utilizados en
    la senda, Aij (1,2 , 2,8 ,....., i,j )
  • Prop 1 Largo de una ruta, k si hay k Aij en la
    ruta
  • Prop 2 Ruta simple, si todos los vértices (v1,
    v2,...... Vn ) son distintos
  • Prop 3 Ruta cíclica, si es simple y v1 Vn
  • Def 6Conectividad, los nodos Vi y Vj estan
    conectados si y sólo si el grafo contiene al
    menos una ruta simple entre estos dos vérices.
  • Def 7Un Grafo es Conexo, si y sólo si todos sus
    pares de nodos están conectados.

9
Estructuras de datos
  • Grafos Parte final
  • Representación
  • Si suponemos que el grafo G(V,A) podemos
    representarlo en una matriz, donde las filas i y
    las columnas j corresponden a nodos y la celda
    Gi,j 1 corresponde un arco.

1
n
0
C1n
Nodos o vértices
Grafo no dirigido
0
Cn1
Estructura Mc (ejemplo 7 vertices)
0
n
C1n 21 Cn1 21 Diag7 S497 Es decir matriz
cuadrada de 7x7
struct arcos int origen int destino
Diagonal en cero implica que no hay arcos Sobre
un nodo
2
struct costos int infonodoNODOS
struct arcos VNODOS struct costos
mcostosCIUDADES
10
Estructuras de datos
  • Grafos Parte final
  • Representación
  • Ejemplo1 Sea G(V,A) un grafo no dirigido,
    AijAji, Aij0

0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0
1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0
0 1 0 0 0 0 1 0 1 1 0 0 0 0 0 1 1 0 0 1 0 0 1
0 0 0 0 0 0 1 0 0 0 0 0 0
Ejemplo2 para el grafo dirigido
anterior Vértice 0 está conectado con 5 Si por
ruta0-1-2-4-5 Ruta cíclica1-2-3-1
11
Estructuras de datos
  • Listas simples
  • Definciónla lista enlazada es una estructura de
    los datos dinámica muy flexible.
  • En una lista enlazada, cada dato se asigna a un
    campo del nodo de una lista. Un puntero se guarda
    con cada nodo, apuntando al próximo nodo de la
    lista.
  • No es necesario saber de antemano (ni nunca)
    cuántos nódos tendrá la lista.
  • Esto permite escribir programas robustos que
    requieren menos mantención
  • Desventaja crecimiento no esperado de la lista
    puede copar la memoria.

12
Estructuras de datos
  • Listas
  • Operaciones básicas
  • Insertar nodo
  • Eliminar nodo
  • Recorrer lista en forma secuencial
  • EstructuraCada nodo de la lista tiene dos
    elementos
  • Una estructura de datos es un campo de la lista
  • un puntero es un campo obligatorio que apunta al
    próximo nodo en la lista
  • El último nodo en la lista contiene un indicador
    NULO para indicar que es el fin o trail de la
    lista.

struct list void item
struct node next
13
Estructuras de datos
  • Variantes
  • Listas circulares
  • Asegurando que el final de la lista siempre está
    apuntando a la cabeza, nosotros podemos construir
    una lista circularmente unida.
  • Esta estructura permite generar operaciones tipo
    LIFO o FIFO .
  • Aplicación en algoritmo de itineración de SO
    round-robin" para procesos.

14
Estructuras de datos
  • Variantes
  • Doble lista enlazada
  • Las listas doblemente enlazadas tienen un
    indicador
  • al nodo precedente así como uno al próximo

struct t_node void item struct
t_node previous struct t_node next
node
15
Estructuras de datos
  • Arboles binarios
  • Arboles binariosLa variedad de árboles más
    simple de árbol es un árbol binario. Un árbol
    binario consiste de
  • un nodo (llamado el nodo de la raíz) y
  • De este nodo se proyectan un sub-árbol izquierdo
    y un subárbol derecho.
  • Ambos subárboles - son los árboles binarios.
  • Esta es una definición recursiva de árbol (una
    lista también puede definirse en forma recursiva)

16
Estructuras de datos
Arboles binarios
TYPE ptr POINTER TO node
TYPE node RECORD
itemdatos leftptr
rightptr
END
17
Estructuras de datos
Arboles binarios propiedades Los nodos a los
niveles más bajos del árbol se llama las hojas.
En un árbol binario ordenado, cuya aplicación
es manejar datos rápidamente encontrables
mediante algoritmos de búsqueda binaria que
pueden hacer tres recorridos distintos (según el
cual se deben ordenar los nodos) 1.
Preordenvisita el nodo raiz, luego el sub-árbol
izquierdo y el sub-árbol derecho. 2. En
ordenvisita el sub-árbol izquierdo, luego el
nodo raiz y el sub-árbol derecho. 3.
Postorden visita el sub-árbol izquierdo, luego
sub-árbol derecho y finalmente el nodo raíz.

18
Estructuras de datos
Ejemplo 1árbol binario que representa una
expresión matemática
  • Recorriendo en
  • Preorden - a / b c d e f
  • En eorden a b / c d e f
  • Postorden a b c / d e f -


-
a
/
d

b
c
e
f
Ejemplo 2a partir de los siguientes datos
construya un arbol binario Tal que su recorrido
en orden entregue los datos ordenados en forma
ascendente 3 1 5 4 7
5
3
7
1
4
19
Estructuras de datos
  • Heaps
  • DefinciónLos heaps están basados en la noción de
    un árbol binario completo.
  • Def1 altura o profundidad de un árbol binario h
    corresponde al número de cortes horizontales que
    se pueden realizar desde el nodo
  • inicial o padre hasta las hojas
    terminales.
  • Def 2Ssi un árbol binario tiene (2 1) nodos,
    entonces esta totalmente completo
  • En todo caso se podría decir informalmente que
    un árbol binario es completo ssi ,
  • Está vacío o,
  • Hasta el nivel h-1 esta totalmente completo
  • El nivel h (último nivel) puede no estar lleno en
    su totalidad pero si de izquierda a derecha

h1
20
Estructuras de datos
  • Heaps
  • Def 3 un árbol binario es considerado un heap
    ssi es completo y
  • Está vacío o,
  • la llave en la raíz es más grande que que en
    cualquier hijo y ambos ambos subárboles tienen la
    propiedad del heap.
  • Aplicación un heap puede ser usado como lista
    de priorides Un heap puede usarse como una cola
    de prioridad el dato de prioridad más alto está
    en la raíz y se extrae trivialmente. Pero si la
    raíz se elimina, se crean dos sub-árboles,entonce
    s se debe recrear un solo árbol eficazmente con
    la propiedad del heap ya definida.

21
Estructuras de datos
Ejemplo árboles y heaps
80
65
80
65
73
15
73
65
73
53
15
68
49
80
53
68
49
53
68
49
8
15
8
8
Arbol Heap
No se heap, no cumple propiedad de orden
No se heap, no cumple propiedad de árbol completo
Write a Comment
User Comments (0)
About PowerShow.com