Sei sulla pagina 1di 3

Teoria de Grafos Programacion de algoritmos

1) Algoritmo de Euclides
Sean a1 y a2 dos numeros enteros positivos. Queremos hallar el maximo
comun divisor (mcd). Suponemos ue contamos con la funcion !inaria a2"a1
ue nos da el resto de dividir a1 por a2. #l algoritmo de #uclides halla el mcd
de la siguiente manera$
a%&a2"a1 si a%&' entonces a2 es el mcd( si no
a)&a%"a2 si a)&' entonces a% es el mcd( si no
...
a*&a*+1"a*+2 si a*&' entonces a*+1 es el mcd
Programa
mcd( a1( a2)
a%&1
while a%' do
a%& a2" a1
if a%,' then
a1&a2
a2&a%
else
return a2
end
end
2) Criba de Eratostenes
Sea * un numero natural mayor ue 2. Se trata de hallar todos los numeros
primos menores o iguales a *. Supongamos ue contamos con la funcion
!inaria - .#*/S 0 ue resulta en los elementos de - ue no estan en 0
donde - y 0 son dos listas de numeros. #l metodo de #ratostenes nos da dichos
primos de la siguiente manera
Sea 1&2(%(....(*
Sustraer de 1 todos los multiplos de 2 resultando 1
1
Guardar 2 en la lista P
Sustraer de 1
1
todos los numeros multiplos del primer numero en 1
1
Guardar el primer numero de 1
1
en la lista P
2ontinuar hasta ue 1
n
es vacia.
Programa
#rato (1)
.&P&
while 1 do
p& 1314
for i&1( long (1) do
.&.(ip
end
1&1 .#*/S .
.&
P&P( p
end
return P
Teoria de Grafos Programacion de algoritmos
Ejercicio 5acer un programa para - .#*/S 0
Ejercicio 5acer un programa para long (1)& cantidad de numeros en la lista 1
3) Ordenar una sucesion de numeros.
Sea 1& a1( a2(...( a* una lista de * numeros. Queremos ordenarlos de menor a
mayor. Procedemos de la siguiente manera$
2omparamos a1 y a2 y los intercam!iamos de lugar si a26a1
5echo esto( comparamos el segundo y a%. Si a% es menor ue el segundo los
intercam!iamos.-si seguimos hasta comparar el anteultimo con el ultimo.
2omo resultado o!tenemos una lista 12 donde el maximo numero de 1 ocupa
el ultimo lugar de 12.
7epetimos el mismo procedimiento y o!tenemos una lista 1% donde los dos
ultimos dos numeros son los dos mayores numeros de 1. 7epetimos el
procedimiento * 8 1 veces.
Programa
ordenar (1)
*& long (1)
For 9&1 to *+1 do
For i&1 to *+1 do
if 13i4,13i:14 then
t&13i4
13i4&13i:14
13i:14&t
end
end
end
)) Multiplicar dos matrices
Sean - y 0 dos matrices de n por n. Se trata de hallar la matri; 2 tal ue

=
=
n
k
kj ik ij
b a c
1
Programa
- mult 0
2& matri; de nxn
for i&1 to n do
for 9&1 to n do
c&'
for <&1 to n do
c&c:a3i(<4!3<(94
end
c3i(94&c
end
end
) Algoritmo search
Teoria de Grafos Programacion de algoritmos
Sea G&(=(#) un grafo y s= un vertice. Queremos determinar todos los
vertices v para los cuales hay un camino ue une s con v. >samos el siguiente
algoritmo.
Partiendo de s marcamos todos los vertices ue le son son adyacentes y los
incluimos en una lista ue llamamos . (vertices marcados). Sacamos un
vertice v de . y incluimos sus adyacentes (no ya marcados) en .. 7epetimos
esto una y otra ve; hasta ue . uede vacio. #l programa usa otro programa
llamado i -dy - ue o!tiene los vertices adyacentes del vertice i usando la
matri; de incidencia - del grafo. Suponemos ue los vertices del grafo estan
dados por la lista =& 1(2(...(n y ue s&1
Programa
.& 1
*. & 2(%(...(n (vertices no marcados)
while . do
i&.314
.&. 8 i
-?@& (i -d9 -)*.
.&-?@(.
*.&*. 8 -?@
end
return = 8 *.
Programa
i -d9 -
@&
For 9&1 to n do
if -3i(94&1 then
@&@( 9
end
end
return @
Ejercicio 5acer un programa ue dadas dos listas - y 0 halle la interseccion
-0

Potrebbero piacerti anche