Algoritmo de recorrido y búsqueda

May 2, 2019 | Author: Bestre Chivalrick Hernandez | Category: Algorithms, Vertex (Graph Theory), Mathematical Proof, Graph Theory, Applied Mathematics
Share Embed Donate


Short Description

Download Algoritmo de recorrido y búsqueda...

Description

ALGORITMO DE RECORRIDO Y BUSQUEDA Ingeniería en Sistemas Computacionales Guadalupe Guendulay Escalante

Matemáticas Discretas Felipe de Jesús Hernández Demetrio. Kevin Páez Álvarez Iván Giovanni Martínez Mérida Edgar Eduardo Mora Reyes Roberto Sosa Reyes

Semestre: 1º 06/Dic./2012

Algoritmo de recorrido y búsqueda El camino más corto Una gráfica con pesos es una gráfica en la cual se asignan valores a las aristas y que la longitud de una ruta (camino) en una gráfica de pesos es la suma de los pesos de las aristas en la ruta. Sea w (i, j) el peso de la arista (i, j). En la graficas con pesos, con frecuencias queremos determinar la ruta más corta(es decir, un camino de longitud mínima) entre dos vértices dados. Teorema 6.4.3 El algoritmo de la ruta más corta de DIJKSTRA (Algoritmo 6.4.1) determina de manera correcta la longitud de una ruta más corta de a a z.

Demostración. Utilizamos la inducción matemática sobre i para demostrar que la iésima ves que llegamos a la línea diez, L (v) es la longitud de una ruta mas corta de a a v. demostrar esto, tendrenmos que el algoritmo es ocrrecto, pues al elegir z en la lina diez, L (z) dara la longitud de una ruta mas corta de a a z.

Paso base (i=1). La primera ves que llegamos a la línea diez, debido a los pasos de inisializacion (líneas2-4), L(a) es igual a cero y todos los demás valores de L son infinitos. Asi, se elige la primera ves que llegamos a la línea diez. Como L(a) es igual a cero, L(a) es la longitud de una ruta mas corta de a hasta a.

Paso inductivo. Supongamos que para todo k < i, la k-ésima ves que llegamos a la línea diez, L(v) es la longitud de una ruta mas corta de a a v.

Teorema 6.4.5 Para una entrada consistente en una grafica simple ,conexa con pesos n vértices,el el algoritmo de DIJKSTRA(algoritmo 6.4.1) tiene el tiempo de ejecución de(n2)en el peor de los casos. Demostración: consideremos que el tiempo ocupado en los ciclos,el cual proporciona una cota superior a la del tiempo total. La línea 4 se ejecuta n veces.dentro del ciclo while.

ALGORITMO DE RECORRIDO Cualquier algoritmo de recorrido de grafos consiste básicamente en visitar un nodo del grafo y luego ir visitando los nodos conectados a este. Este principio se aplica recursivamente comenzando desde un nodo inicial cualquiera del grafo. Lo que diferencia un algoritmo de recorrido de otro es, una vez ubicado en un nodo en particular, la forma en que se visitan los nodos conectados a este. Por supuesto, estos algoritmos pueden ser aplicados en grafos dirigidos o no dirigidos. Los dos algoritmos “clásicos” de recorrido de grafos son el recorrido en profundidad y en anchura. Precisamente por ser “clásicos” han sido estudiados con anterioridad y se les conoce su orden de complejidad en tiempo y todos los beneficios de aplicarlos.

ALGORITMO DE BUSQUEDA Un algoritmo de búsqueda es un algoritmo cuyo propósito es encontrar todos los vértices de un grafo G=(V,E) que satisfacen un propiedad particular. Diferentes variables de un algoritmo de búsqueda aparecen en una gran variedad de problemas. Un vértice esta marcado si se sabe que es alcanzable desde el origen. Sea X el conjunto de los vértices marcados y Y el conjunto de los vértices no marcados (Y=V-X). Inicialmente X consta de solamente del vértice “r”. se observa que si u E Y y uV E e, entonces se pueden marcar v. Un algoritmo de búsqueda recorre los vértices marcados en cierto orden. Se escribe ord(u) para indicar el orden de u en el recorrido.

En la descripción del algoritmo L representaran la lista de vértices marcados que el algoritmo no a marcado en el sentido de que algunas aristas pueden incidir en estos vértices. Cuando el algoritmo termina se obtiene un árbol con raíz r. Este árbol es llamado un arbolo de búsqueda.  ALGORITMO DE BUSQUEDA (G) Entrada Un grafo G=(V,E) con n vértices y un vértice origen r. Salida un árbol T con raíz r y una función ord: V { 1,2…..,n} El algoritmo de búsqueda no especifica la manera de seleccionar o insertar un vértice en L. diferentes regalas da lugar a diferentes métodos de búsquedas. Dos estructuras de datos son las mas populares para mantener una lista: una cola y una pila las cuales dan lugar a dos estrategias de búsqueda fundamentales: buscar primero lo ancho (BPA) y buscar primero a lo largo (BPL).

BUSCAR PRIMERO A LO ANCHO Si se mantiene la lista L como una cola, entonces se seleccionan los vértices del frente de la lista y se insertan al final, de esta manera se siguen el principio de: “el primer o en entrar es el primero en salir”.

ALGORITMO EN PROFUNDIDAD El algoritmo de recorrido en profundidad de un grafo consta de dos rutinas: la primera hace un recorrido en profundidad a partir de un vértice dado, marcando los puntos por los cuales va pasando. La segunda rutina busca vértices sin marcar y lanza el proceso antes mencionado, terminando cuando todos los vértices hayan sido visitados. El proceso se ilustra en el siguiente ejemplo: Ejemplo 6.9:

Considere el grafo dirigido de la figura, y suponga que se va a hacer un recorrido en profundidad partiendo del vértice 1.

El primer paso es visitar el vértice 1, marcar dicho vértice, localizar sus sucesores, y hacer una llamada recursiva sobre cada uno de ellos, verificando que no estén marcados. Recorrido: 1 Se debe hacer un recorrido en profundidad partiendo del vértice 7 (el único sucesor de 1), para lo cual se repite el mismo proceso del paso anterior. Recorrido: 1, 7 Se debe hacer el recorrido en profundidad a partir del vértice 5, y, al terminar, comenzar el mismo proceso a partir del vértice 6. Recorrido: 1, 7, 5 Pendiente recorrido desde: 6 Se repite recursivamente el proceso para los vértices 2 y 6 (sucesores de 5) Recorrido: 1, 7, 5, 2 Pendiente recorrido desde: 6, 6

Se recorre en profundidad el grafo a partir del vértice 3 (sucesor de 2) Recorrido: 1, 7, 5, 2, 3 Pendiente recorrido desde: 6, 6 Se repite recursivamente el proceso para los vértices 4 y 6 (sucesores de 3) Recorrido: 1, 7, 5, 2, 3, 4 Pendiente recorrido desde: 6, 6, 6 Puesto que el vértice 4 no tiene sucesores, se hace el recorrido en profundidad desde el elemento 6 (el último que quedó pendiente en el proceso) Recorrido: 1, 7, 5, 2, 3, 4, 6 Pendiente recorrido desde: 6, 6 Ya que todos los recorridos pendientes comienzan en vértices marcados (el 6), se da por terminado el proceso.

Debe ser claro que el orden de visita de los elementos, en el recorrido en profundidad, depende del vértice inicial escogido y del orden en el cual la respectiva operación del TAD retorne los sucesores de un elemento. Por ejemplo, el recorrido en profundidad del grafo anterior, partiendo del vértice 3, se puede resumir en la siguiente secuencia de figuras:

Recorrido: 3

Recorrido: 3, 6 Pendiente recorrido desde: 4

Recorrido: 3, 6, 4

Puesto que no hay sucesores, ni recorridos pendientes, se escoge cualquier vértice no marcado y se continúa desde allí el proceso. Recorrido: 3, 6, 4, 5

Recorrido: 3, 6, 4, 5, 1 Pendiente recorrido desde: 2

Recorrido: 3, 6, 4, 5, 1, 7 Pendiente recorrido desde: 2

Recorrido: 3, 6, 4, 5, 1, 7, 2

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF