Está en la página 1de 13

Repblica Bolivariana de venezuela Ministerio del Poder Popular para la Educacin Superior Universidad Pedaggica Experimental Libertador Instituto

Pedaggico de Barquisimeto Dr. Luis Beltran Prieto Figueroa Barquisimeto-Edo. Lara

Homomorfismo de Grafos, Notacin de Algoritmos, Algoritmo Recursivos, Complejidad de loa Algoritmos, Algoritmo de Euclides, Otros Algoritmo de la Ruta ms corta

Alumnos: Zoraida Crdenas Daniel Borrero Luimar Abreu Dubal Sosa Profesora: Marina Gimnez Matemtica Discreta Seccin: 4IF01

Homomorfismo de grafos. En la teora de grafos nos topamos con una definicin que rompe los esquemas y es de vital importancia para el teorema de kuratowski que dice que un grafo es plano si contiene un subgrafo que es homeomorfo a .o .

El concepto de grafos planos no es otra cosa que un grafo cuyas aristas no se interceptan en otro punto que no sea en los vrtices. Dicho todos estos para dar un concepto de homomorfismo es necesario conocer las siguientes definiciones. Si una grafica tiene un vrtice de grado 2 cuyas aristas convergen a vrtices distintos podemos decir que las aristas se encuentran en serie. Una reduccin de serie consiste ( ) y ( ) se en la eliminacin del vrtice central de tal manera que ) dicho todo esto. transformaran en una sola arista ( Sea y dos grafos diremos que son homeomorfas si graficas isomorfas realizando varias reducciones de serie. y se pueden reducir a

Ntese que tanto b como c se pueden reducir al grafo a. Algoritmos Un algoritmo es un conjunto de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a quien deba realizar dicha actividad. Para reconocer un algoritmo es necesario identificar las siguientes caractersticas: Precisin: cada paso debe ser enunciado con precisin. Unicidad: los resultados intermedios en cada paso quedan definidos de manera nica y solo dependen de las entradas y los resultados de las pasos anteriores. Carcter finito: el algoritmo se define despus de ejecutar un nmero finito de instrucciones. Entrada: el algoritmo recibe una entrada de informacin. Salida: el algoritmo genera o produce una salida. Generalidad: el algoritmo se aplica a un conjunto de entradas.

Notacin para los algoritmos Conociendo que un algoritmo es una serie de pasos, Nace la necesidad de implementar un lenguaje ms concreto el cual facilita la interaccin del hombre y la maquina partiendo de esto se crea el seudocdigo que mezcla el lenguaje comn con ciertas palabras claves dando una forma formar de escribir un algoritmo el cual pueda ser entendido globalmente por todos. Es importante notar que en el primer paso del algoritmo se es usual dar nombre al procedimiento que vamos a realizar adems all sealaremos entre parntesis los parmetros del procedimiento. En general, en la estructura if-then donde usamos una proposicin cualquiera.

Ejemplo: If p then Si la proposicin p es verdadera, se ejecuta accin y la accin pasa a la proposicin posterior a la accin, si la condicin p es falsa, el control pasa directamente a la proposicin posterior a la accin. Una forma alternativa es la estructura if-then-else ejemplo: If p then Accin 1 Else Accin 2 Esta forma alternativa nos proporciona la opcin de que si p es verdadero se ejecuta accin 1 y el control pasa a la proposicin posterior a la accin 2, pero si p es falsa, se ejecuta la accin 1 y el control pasa a la proposicin posterior a la accin 2. La proposicin return(x) concluyen un procedimiento y regresa el valor de x a quien llam al procedimiento. Un procedimiento que contiene una proporcin return (x) es una funcin. El dominio consta de todos los valores validos para los parmetros y el rango es el conjunto de valores que puede regresar el procedimiento. Al utilizar un seudocdigo, utilizaremos las operaciones aritmtica comunes +..*(para la multiplicacin) y /. As como los operadores de la relacin =, , <,>, , y:= para la asignacin. Un ejemplo de este lenguaje lo podemos observar en el siguiente algoritmo: Determinar el mximo de tres nmeros entero. Este algoritmo determina el mximo de los nmeros a, b y c Entrada: tres nmeros a, b y c Salida: x, el mximo entra a, b y c. 1. 2. 3. 4. 5. 6. 7. 8. Procedure mx.(a,b,c) x:=a if b> x then x:=b if c>x then x:=c return(x) end mx.

El ejemplo anterior nos da una breve descripcin de un algoritmo escrito en seudocdigo las palabras procedure, if, then, entre otras. Estas sean escritas en ingles aunque pueden usarse en espaol pero lo trabajamos de esta forma para adaptarnos a los lenguajes de programacin usualmente conocidos. Ejercicio: escriba un algoritmo para determinar el mnimo entre tres nmeros.

Algoritmos Recursivos Un algoritmo recursivo es un algoritmo que contiene la propiedad de que se puede repetir indefinidamente La recursin es una forma de resolver una extensa clase de problemas. Dicho problema puede resolverse mediante una tcnica divide y vencers en la cual el problema se descompone en problemas del mismo tipo del problema original. Cada subproblema a su vez, se descompone de nuevo hasta que el proceso produce subproblemas que se puedan resolver de manera directa; donde las soluciones de los subproblemas se combinaran para darle solucin al problema original. Ejemplo El factor de n, o n factorial, se define como:

)(

Es decir, si entonces n! es igual al producto de todos los enteros entre 1 y n, inclusive 0! Se define como 1 por convenio. Ejemplo:

Observamos que n factorial puede escribirse en trminos de s mismo pues s quitamos n, el producto restante es tan solo (n 1); es decir, ( Otro ejemplo )( ) ( )

La ecuacin seria

n! = n. (n-1)!

Esta ecuacin es cierta as se muestra la forma de descomponer el problema original en subproblemas cada vez ms sencillos (calcular (n-1)!, calcular (n-2)! .) hasta que el proceso llegue al proceso ms simple , el clculo de 0! , en ese momento las soluciones de estos subproblemas pueden combinarse (multiplicando) para resolver el problema original. Descomponiendo este problema paso a paso queda as, PROBLEMA 5! 4! 3! 2! 1! 0! PROBLEMA SIMPLIFICADO 5* 4! 4 *3! 3 *2! 2 *1! 1 *0! Ninguno PROBLEMA 0! 1! 2! 3! 4! 5! SOLUCION 1 1 * 0! = 1 2 * 1! = 2 3 *2! = 3 * 2 = 6 4 *3! = 4* 6 = 24 5 *4! = 5 *24 = 120

Calculo de n Factorial Algoritmo recursivo n! Entrada n, un entero mayor o igual a 0 1. procedure factorial (n) 2. if n = 0 then 3. return (n) 4. return ( n . factorial (n- 1)) 5. end factorial Debe existir ciertas situaciones en las que un procedimiento recursivo no se llame a s mismo; en caso contrario se llamara a s mismo por siempre en el algoritmo anterior, si n=0, el procedimiento no se llama a s mismo.

Complejidad de los algoritmos Es aquel que se refiere a la cantidad de tiempo y espacio necesario para ejecutar un algoritmo, se debe analizar el algoritmo para estimar del tiempo y espacio necesario para almacenar los datos, las variables del programa, entre otras. , con esta informacin se puede estimar el tiempo y espacio para ejecutar el algoritmo. Con frecuencia estamos menos interesados en los tiempos exactos en el peor o en el mejor de los casos para un algoritmo, que en la forma de incremento del tiempo en ambos casos, cuando el tamao de la entrada se incrementa. Por ejemplo, supongamos que el tiempo de un algoritmo en el peor de los casos es ( ) Para una entrada de tamao n podemos notar que el termino aproximadamente igual a ( ) Ntese el cuadro siguiente: ( ) 10 100 1000 10000 6051 600501 60005001 6000050001 6000 600000 60000000 6000000000 es

La idea bsica consiste en remplazar una expresin como: ( ) crece con una razn similar a por una expresin ms sencilla, como ( ). , que

Si la anterior mide el tiempo, en segundos en el peor de los casos para una entrada de tamao n, entonces:

( )
Mide el tiempo en minutos, el tiempo crece cuando el tamao de la entrada se incrementa, podemos ignorar los coeficientes constantes. Decimos que t(n) crece como cuando n crece; entonces, t(n) es de orden y la escribimos, as:

( )

Lo cual se lee t(n) es tetha de , la idea bsica consiste en reemplazar una expresin como t(n) = 60 + 5 n + 1 con una expresin ms sencilla como . que crece en la misma razn que t(n).

Algoritmos Euclides El algoritmo de Euclides es un mtodo antiguo y eficaz para calcular el mximo comn divisor (MCD).El algoritmo de Euclides extendido es una ligera modificacin que permite adems expresar al mximo comn divisor como una combinacin lineal. Este algoritmo tiene aplicaciones en diversas reas como lgebra, teora de nmeros y ciencias de la computacin entre otras. Con unas ligeras modificaciones suele ser utilizado en computadoras electrnicas debido a su gran eficiencia. El mximo comn divisor de dos enteros puede obtenerse escogiendo el mayor de todos los divisores comunes. Hay un proceso ms eficiente que utiliza repetidamente el algoritmo de la divisin. Este mtodo se llama algoritmo de Euclides. Claramente se puede notar que los divisores positivos de 30 son: 1, 2, 3, 5, 6, 10, 15, 30 Y los divisores positivos de 105 son 1, 3, 5, 7, 15, 21, 35, 105 As, los divisores positivos comunes de y 105 son 1, 3, 5, 15 esto implica que el mximo comn divisor de 30 y 105 es 15 Para este algoritmo es necesario tener en cuenta que si dividimos dos enteros no negativos a y b, obtenemos un cociente q y un residuo r que satisface: Dicho esto y despejando r tenemos que Mostraremos que el conjunto de los divisores de a y b es igual al conjunto de los divisores de b y r. tomemos en cuenta la definicin que nos dice

Sea c un divisor comn de a y b por definicin y esto implica y por lo que multiplicando en ambos miembros q tenemos que as solo basta restar miembro a miembro para obtener donde ( ) esto implica por lo tanto podemos decir que ( ( ) ) ( ( ) ) ( ) ( ) ( ) Donde

Si repetimos este proceso con b y r llegara el punto en que r =0 y el ultimo resto no nulo ser el mximo comn divisor Ejemplo 01 Hallar M.C.D. de (12.378, 3.054). 12.378 = 4*3.054 + 162 3.054 = 18*162 + 138 162 = 1*138 + 24 138 = 5*24 + 18 24 = 1*18 + 6 18 = 3*6 + 0 Luego M.C.D. (12.378, 3.054) = 6 que es el ltimo residuo no cero. Ejercicio: Hallar el mximo comn divisor entre 504 y 396 utilizando el algoritmo de la divisin de Euclides.

La Ruta ms Corta Se trata de encontrar la ruta de menor distancia, o costo, entre el punto de partida o nodo inicial y el destino o nodo terminal. La forma ms simple es que cada enlace tenga una longitud unitaria, en cuyo caso, la trayectoria ms corta es simplemente una trayectoria con menor nmero de enlaces El algoritmo de Bellman-Ford Kalaba (algoritmo de Bell-End-Ford), genera el camino ms corto en un Grafo dirigido ponderado (en el que el peso de alguna de las aristas puede ser negativo). El algoritmo de Dijkstra resuelve este mismo problema en un tiempo menor, pero requiere que los pesos de las aristas no sean negativos. Por lo que el Algoritmo Bellman-Ford normalmente se utiliza cuando hay aristas con peso negativo. Este algoritmo fue desarrollado por Richard Bellman, Samuel End y Lester Ford. Segn Robert Sedgewick, Los pesos negativos no son simplemente una curiosidad matemtica; [] surgen de una forma natural en la reduccin a problemas de caminos ms cortos, y son un ejemplo de una reduccin del problema del camino hamiltoniano que es NP-completo hasta el problema de caminos ms cortos con pesos generales. Si un grafo contiene un ciclo de coste total negativo entonces este grafo no tiene solucin. El algoritmo es capaz de detectar este caso. Si el grafo contiene un ciclo de coste negativo, el algoritmo lo detectar, pero no encontrar el camino ms corto que no repite ningn vrtice. La complejidad de este problema es al menos la del problema del camino ms largo de complejidad NPCompleto. Ejemplo:

(A,1)

(A,)

B1
1

D
4

(A,0)

F
3

(A,)

C
3
(A,2)

3 E
(A,)

(A,1) (A,1)

(B,5) (A,)

B1
1
(A,0) (A,0)

D
4
(A,)

F
3

(A,)

C
(A,2) (A,2)

3 E 3
(A,) (C,5)

(A,1) (A,1) (A,1)

(B,5) (B,5) (A,)

B1
(A,0)

D
4

(E,8) (A,)

1
(A,0) (A,0)

F
3

(A,)

C
(A,2) (A,2) (A,2)

3 E 3
(A,) (C,5) (C,5)

(A,1)

(B,5)

B1
1

D
4

(A,0)

F
3

(E,8)

C
(A,2)

3 E 3
(C,5)

Ejercicio propuesto

B 1 3

A 8 D

2 C 5 8

3 E

4 2 F

También podría gustarte