SlideShare una empresa de Scribd logo
1 de 90
Definición

Los algoritmos voraces, ávidos o de avance rápido son utilizados para
solucionar problemas de optimización y toman decisiones basándose en la
información que tienen de modo inmediato, sin tener en cuenta los efectos
que estas decisiones pueden tener a futuro.


Es aquel algoritmo, que para resolver un problema elige la opción óptima en
cada paso local con la esperanza de llegar a una solución general óptima.
Estructura:


   Conjunto de                              Función de            Función de
                    Función solución                                                 Función Objetivo
   candidatos                               factibilidad           selección



 Determina sisolucióncandidato del conjunto a seleccionar. una solución. con el siguiente elemento
 Determina eles posible completar el conjunto dealcanzado seleccionados
  Valor de la si los candidatos seleccionados han candidatos
                  mejor alcanzada.
  seleccionado para alcanzar una solución al problema.
Funcionamiento:
Voraz(C : conjunto de candidatos) : conjunto solución
          Inicio
          S=Ø
          mientras C ≠ Ø y no Solución(S) hacer
                      x = Selección(C)
                      C = C – {x}
          si factible(S U {x}) entonces
          S = S U {x}
          fin si
          fin mientras
          si Solución(S) entonces
                      Devolver S
          en otro caso
                      Devolver “No se encontró una solución”
          fin si
Características:
1. El problema a resolver ha de ser de optimización [MIN/MAX] y debe existir una función, la función
objetivo, que es la que hay que minimizar o maximizar.

2. Dominio son un conjunto de valores posibles para cada una de las variables de la función objetivo .

3. Pueden existir un conjunto restricciones que imponen condiciones a los valores del dominio que
   pueden tomar las variables de la función objetivo.

4. La solución para el problema debe ser dada en forma de secuencia de decisiones(Función Solución).
5. Una función que permita determinar si una secuencia de decisiones viola o no las restricciones, la
función factible.
Encontrar una solución


   VALORES                                                         Función objetivo sea óptimo


                                                                     Asignación de la variable
Proceso Secuencial                                                            actual


                                             Función objetivo sea óptimo


 La decisión es localmente óptima, es decir, ningún otro valor de los disponibles para esa variable lograría
 que la función objetivo tuviera un valor mejor, y luego comprueba si la puede incorporar a la secuencia de
 decisiones que ha tomado hasta el momento,
 es decir, comprueba que la nueva decisión junto con todas las tomadas
 anteriormente no violan las restricciones y así consigue una nueva secuencia de
 decisiones factible.
Depende de dos factores:


         Numero de iteraciones           El coste de la función selección y factible




Depende del tamaño de la solución reducir el coste de la función de selección, siempre que y
                            Para construida y del factible dependerá del problema (número
                            El coste de la función tamaño
del conjunto de candidatos. sea posible se prepara (preprocesa) el
                            complejidad de las
                            restricciones).
                            conjunto de candidatos antes de entrar en el bucle.
No garantiza que la solución sea la optima



              Suelen ser rápidos y fáciles de implementar.



                                 Sólo genera una de entre todas las posibles secuencias de
                                 decisiones



                                         Siempre habrá que intentar demostrar que la solución obtenida
                                         es la óptima
Determinar la función de selección


Definir la solución factible



       Definir qué caracteriza a una solución del problema.


              Demostrar que la función de selección conduce siempre al
              óptimo.


                       Si                                     no


           Construcción el algoritmo               Buscar nuevas funciones de
                                                   selección
El problema del cambio de monedas


Para el problema que nos ocupa se puede comenzar por definir factible y solución. En este caso el
problema no tiene restricciones explícitas pero podemos decir que un conjunto de monedas es factible si la
suma de sus valores es menor o igual que M (cantidad de monedas). Y se tiene una solución cuando los
valores de las monedas elegidas suman exactamente , si es que esto es posible.


La forma en que habitualmente se devuelve el cambio nos ofrece un candidato a
función de selección: elegir a cada paso la moneda disponible de mayor valor.

Como pretendemos minimizar el número de monedas utilizado, al elegir la moneda
de mayor valor nos acercamos lo más posible a la cantidad a formar y, además,
empleando una única moneda.

Es una decisión localmente óptima porque minimiza la cantidad que nos queda por formar con las monedas
El problema del cambio de monedas


Construir un algoritmo que dada una cantidad P devuelva esa cantidad usando el menor número posible
de monedas.


Disponemos de monedas con valores de 1, 2, 5, 10, 20 y 50
céntimos de euro,
1 y 2 euros (€).




Este es un problema de minimización que satisface el denominado PRINICIPIO DE OPTIMALIDAD lo que puede
resultar útil para las demostraciones de optimalidad de la solución obtenida por la función de selección.
El problema del cambio de monedas


La función factible tendrá que comprobar que el valor de la moneda seleccionada junto con el valor de
las monedas que ya hemos incluido hasta ahora en la solución no supera .



Caso 1. Devolver 3,89 Euros.
1.- moneda de 2€, 1 moneda de 1€, 1 moneda de 50 c€, 1
moneda de 20 c€, 1 moneda de 10 c€ , 1 moneda de 5 c€ y
2.- monedas de 2 c€. Total: 8 monedas.
El problema del cambio de monedas


• Conjunto de candidatos: todos los tipos de monedas disponibles. Supondremos una cantidad ilimitada de
  cada tipo.

• Solución: conjunto de monedas que sumen P.

• Función objetivo: minimizar el número de monedas.

     Representación


(x1, x2, x3, x4, x5, x6, x7, x8), donde xi es el número de monedas usadas de tipo i.

      • Suponemos que la moneda i vale ci.
      • Formulación: Minimizar xi, sujeto a Σ xi・ci = P, xi≥0
El problema del cambio de monedas


        Funciones del esquema:

1.- Inicialización. Inicialmente xi= 0, para todo i= 1..8
2.- solución. El valor actual es solución si Σ xi・ci = P
3.- seleccionar. ¿Qué moneda se elige en cada paso de entre los candidatos?
4.- Respuesta: elegir en cada paso la moneda de valor más alto posible, pero sin sobrepasar la
cantidad que queda por devolver.
5.- factible. Valdrá siempre verdad.
6.- En lugar de seleccionar monedas de una en una, usamos la división entera y cogemos todas las
monedas posibles de mayor valor.
7.- Implementación. Usamos una variable local para acumular la cantidad devuelta hasta este punto.
• Suponemos que las monedas están ordenadas de menor a mayor valor.
DEFINICION
El problema de la mochila es uno de los 21 problemas
NP-completos de Richard Karp, establecidos por el
informático teórico en un famoso artículo de 1972




Es un problema de optimización combinatoria.
Modela una situación análoga al llenar una mochila
Para esta sección, consideremos n tipos de
ítems, que van del 1 al n
Cada tipo de ítem i tiene un valor vi y un
peso wi
Usualmente se asume que los valores y
pesos no son negativos
EJEMPLO
Un barco de 4 toneladas se carga con uno o más de
tres artículos. La siguiente tabla proporciona el peso
por unidad, wi y toneladas y la utilidad por unidad vi
en miles de dólares por el artículo ¿Cómo se debe
cargar el barco para maximizar la utilidad total?
    ARTICULO(i)     Peso en Toneladas(Wi)   Beneficio(Vi)
    1               2                       31
    2               3                       47
    3               1                       14
N =3 Numero de artículos
Vi = {31, 47,14} F.O= 31 X1 + 47X2 + 14 X3
Wi = {2, 3,1} Rest = 2X1 + 3X2 + X3
W=4




                 El vector solución inicial es x = {0, 0,0}
                 Tres artículos tres iteraciones
                 X= {0, 0,0}
                 Z=0
                 ∑w1x1=0<=4
                                                              X= {0, 0,0}
                                                              Z=0
                                                              ∑w1x1=0<=4
                                                              X= {1, 0,0}
                                                              Z=31
                                                              ∑w1x1=2<=4
X= {1, 1,0}    X= {1, 0,1}
Z=78             Z=45
∑w1x1=5<=4    ∑w1x1=3<=4
No factible    X= {1, 0,0}
X= {0, 0,0}      Z=31
Z=0           ∑w1x1=2<=4
∑w1x1=0<=4     X= {0, 1,1}
X= {0, 1,0}      Z=61
Z=47          ∑w1x1=4<=4
∑w1x1=3<=4     X= {0, 1,0}
X= {1, 0,0}      Z=47
Z=31          ∑w1x1=3<=4
∑w1x1=2<=4     X= {0, 0,1}
                 Z=14
              ∑w1x1=1<=4
               X= {0, 0,0}
                  Z=0
              ∑w1x1=0<=4
Es aquel que obtenemos en un grafo conexo y sin
ciclos. Árbol de máximo alcance cuyo valor es
mínimo, es decir, la suma de sus aristas es mínima.

Es apropiado para problemas en los cuales la
redundancia es expansiva o el flujo a lo largo de los
arcos se considera instantáneo.
Redes de comunicación
eléctrica, telefonía, carretera, ferroviaria, aérea, marítima o
de gas., etc.


                 • Representan los puntos de consumo
  Nodos
                   eléctrico, teléfonos, aeropuertos, computadoras.

                 • Alta tensión, cable de fibra óptica, rutas
   Arcos
                   aéreas, agua, gas, etc.
Es un algoritmo de la teoría de grafos para
encontrar un árbol recubridor mínimo en un
grafo conexo y ponderado. Es decir, busca un
subconjunto de aristas que, formando un árbol,
incluyen todos los vértices y donde el valor total
de todas las aristas del árbol es el mínimo.
• Comenzar en forma arbitraria en cualquier nodo y conectarlo con
      el mas próximo (menos distancia o costoso).
1
    • Identificar el nodo no conectado que esta mas cerca o menos
      costos de alguno de los nodos conectados. Deshacer los empates
2     de forma arbitraria.


    • Repartir este paso hasta que se hayan conectado todos los
      nodos.
3
 Una ciudad esta planificando el desarrollo de una nueva
  línea en sistemas de transito.
 El sistema debe unir 8 residencias y centros comerciales.
 El distrito metropolitano de transito necesita seleccionar un
  conjunto de líneas que conecten todos los centros a una
  mínimo costo.
 La red seleccionada debe permitir:
  Factibilidad de las líneas que deben ser construidas.
  Mínimo costo posible por línea.
Zona Norte
                                                      Universidad              55
                   3                   50
                                                               5
                                       Distrito 39
                                 30
             33                       comercial
                                                                          38
Zona Oeste                 34               4                      45
                                      32          35                                    Zona Este
        1                                                                           8
                       28                                                      43
                         Zona    2                                 6    Shopping
                        Centro                   41                     center
                                            37            36                 44
                          40

                                  Zona Sur            7
Zona Norte
                                                      Universidad              55
                   3                   50
                                                               5
                                       Distrito 39
                                 30
             33                       comercial
                                                                          38
Zona Oeste                 34               4                      45
                                      32          35                                    Zona Este
        1                                                                           8
                       28                                                      43
                         Zona    2                                 6    Shopping
                        Centro                   41                     center
                                            37            36                 44
                          40

                                  Zona Sur            7
Zona Norte
                                                      Universidad              55
                   3                   50
                                                               5
                                       Distrito 39
                                 30
             33                       comercial
                                                                          38
Zona Oeste                 34               4                      45
                                      32          35                                    Zona Este
        1                                                                           8
                       28                                                      43
                         Zona    2                                 6    Shopping
                        Centro                   41                     center
                                            37            36                 44
                          40

                                  Zona Sur            7
Zona Norte
                                                      Universidad              55
                   3                   50
                                                               5
                                       Distrito 39
                                 30
             33                       comercial
                                                                          38
Zona Oeste                 34               4                      45
                                      32          35                                    Zona Este
        1                                                                           8
                       28                                                      43
                         Zona    2                                 6    Shopping
                        Centro                   41                     center
                                            37            36                 44
                          40

                                  Zona Sur            7
Zona Norte
                                                      Universidad              55
                   3                   50
                                                               5
                                       Distrito 39
                                 30
             33                       comercial
                                                                          38
Zona Oeste                 34               4                      45
                                      32          35                                    Zona Este
        1                                                                           8
                       28                                                      43
                         Zona    2                                 6    Shopping
                        Centro                   41                     center
                                            37            36                 44
                          40

                                  Zona Sur            7
Zona Norte
                                                      Universidad              55
                   3                   50
                                                               5
                                       Distrito 39
                                 30
             33                       comercial
                                                                          38
Zona Oeste                 34               4                      45
                                      32          35                                    Zona Este
        1                                                                           8
                       28                                                      43
                         Zona    2                                 6    Shopping
                        Centro                   41                     center
                                            37            36                 44
                          40

                                  Zona Sur            7
Zona Norte
                                                      Universidad              55
                   3                   50
                                                               5
                                       Distrito 39
                                 30
             33                       comercial
                                                                          38
Zona Oeste                 34               4                      45
                                      32          35                                    Zona Este
        1                                                                           8
                       28                                                      43
                         Zona    2                                 6    Shopping
                        Centro                   41                     center
                                            37            36                 44
                          40

                                  Zona Sur            7
Zona Norte
                                                      Universidad              55
                   3                   50
                                                               5
                                       Distrito 39
                                 30
             33                       comercial
                                                                          38
Zona Oeste                 34               4                      45
                                      32          35                                    Zona Este
        1                                                                           8
                       28                                                      43
                         Zona    2                                 6    Shopping
                        Centro                   41                     center
                                            37            36                 44
                          40

                                  Zona Sur            7
Zona Norte
                                                              Universidad
                               3                                        5
                                                   Distrito
                                             30
                                                  comercial
                                                                                  38
      Zona Oeste                                       4
                                                  32          35                                     Zona Este
                  1                                                                              8
                                   28
                                     Zona    2                              6   Shopping
                                    Centro                                      center
                                                       37          36


                                                              7                   Costo Total   $ 236 millones
Acíclico con n−1 aristas = Árbol buscado      Zona Sur
Es un algoritmo perteneciente a la teoría de los grafos
para encontrar un árbol recubridor mínimo en un grafo
conexo, no dirigido y cuyas aristas están etiquetadas.

El algoritmo incrementa continuamente el tamaño de
un árbol, comenzando por un vértice inicial al que se le
van agregando sucesivamente vértices cuya distancia
a los anteriores es mínima.
• Seleccionar inicialmente cualquier nodo y conectarlo con el mas
      próximo que contenga el arco de menor costo o distancia.
1
    • Completar de red interactivamente, identificando el nodo no
      conectado que esta mas cerca o menos costoso de algunos de
2     los nodos conectados.


    • Agregar este nodo al conjunto de nodos conectado. En caso de
      empate este se rompe en forma arbitraria.
3
Encontrar el árbol recubridor mas
corto.



Ser un grafo conexo.
Ser un grafos sin ciclos.
Tener todos los arcos etiquetados.
a

        7
                                 8
5                    b                            c

        9                    7
                                          5

    d           15               e

            6            8                    9

                                     11
                     f                            g
a

        7
                                 8
5                    b                            c

        9                    7
                                          5

    d           15               e

            6            8                    9

                                     11
                     f                            g
a

        7
                                 8
5                    b                            c

        9                    7
                                          5

    d           15               e

            6            8                    9

                                     11
                     f                            g
a

        7
                                 8
5                    b                            c

        9                    7
                                          5

    d           15               e

            6            8                    9

                                     11
                     f                            g
a

        7
                                 8
5                    b                            c

        9                    7
                                          5

    d           15               e

            6            8                    9

                                     11
                     f                            g
a

        7
                                 8
5                    b                            c

        9                    7
                                          5

    d           15               e

            6            8                    9

                                     11
                     f                            g
a

        7
                                 8
5                    b                            c

        9                    7
                                          5

    d           15               e

            6            8                    9

                                     11
                     f                            g
a

        7
                                 8
5                    b                            c

        9                    7
                                          5

    d           15               e

            6            8                    9

                                     11
                     f                            g
a

        7                            Nodo      Arco


5           b                   c    d-a        5
                        5            d-f        6
                7
                                     a-b        7
    d               e                b-e        7
        6                   9        e-c        5

                                     e-g        9
            f                   g   Solución   39
CAMINOS MÍNIMOS
Caminos más cortos a partir de múltiples fuentes en un grafo
Es una pareja
                                         ordenada
                                           G(V,E)
                                                                       ¿Qué es un grafo?


                                                                                    V2
    V: Es un conjunto de Vértices

                                                                                           V3
                                                                  V1

E: Es un conjunto de Parejas de
distintos vértices, entre los cuales
       se trazan las aristas                                                       V4




                                         E={(V1,V2), (V2,V3), (V3,V4), (V4,V1), (V2,V4)}
ALGORITMO DE DIJKSTRA
   Resuelve el problema de encontrar el camino mínimo entre un
   vértice dado, el llamado inicial, y todos los restantes del grafo.
v1           2            v2
                                       ()                 Cola
             ()
     4                                                     ()
                      1        3                10
                                                           ()
v3            2           v4            2            v5    ()
()                        ()                         ()    ()

         5        8                4        6              ()
                                                           ()
             v6           1            v7                  ()
             ()                        ()
Inicio
                  v1               2               v2
                                                  (inf)                    Cola
                (0, V1)
        4                                                                  v1, 0
                              1           3                   10
                                                                           v2, inf
 v3                 2              v4                2              v5     v3, inf
(inf)                             (inf)                            (inf)   v4, inf

            5             8                   4           6                v5, inf
                                                                           v6, inf
                   v6              1               v7                      v7, inf
                  (inf)                           (inf)
Inicio
                  v1               2               v2
                                                  (inf)                    Cola
                (0, v1)
        4                                                                  v1, 0
                              1           3                   10
                                                                           v2, inf
 v3                 2              v4                2              v5     v3, inf
(inf)                             (inf)                            (inf)   v4, inf

            5             8                   4           6                v5, inf
                                                                           v6, inf
                   v6              1               v7                      v7, inf
                  (inf)                           (inf)
Inicio
                  v1               2                v2
                                                  (2, v1)                    Cola
                (0, v1)
        4                                                                    v1, 0
                              1           3                     10
                                                                             v2, 2
 v3                 2              v4                2                v5     v3, inf
(inf)                             (inf)                              (inf)   v4, inf

            5             8                   4             6                v5, inf
                                                                             v6, inf
                   v6              1               v7                        v7, inf
                  (inf)                           (inf)
Inicio
                  v1                2                 v2
                                                    (2, v1)                    Cola
                (0, v1)
        4                                                                      v1, 0
                              1             3                     10
                                                                                v4,1
 v3                 2               v4                 2                v5     v2, 2
(inf)                             (1, v1)                              (inf)   v3, inf

            5             8                     4             6                v5, inf
                                                                               v6, inf
                   v6               1                v7                        v7, inf
                  (inf)                             (inf)
Inicio
                  v1                2                 v2
                                                    (2, v1)                    Cola
                (0, v1)
        4                     1             3                     10
                                                                                v4,1
 v3                 2               v4                 2                v5     v2, 2
(inf)                             (1, v1)                              (inf)   v3, inf

            5             8                     4             6                v5, inf
                                                                               v6, inf
                   v6               1                v7                        v7, inf
                  (inf)                             (inf)
Inicio
                  v1                2                 v2
                                                    (2, v1)                    Cola
                (0, v1)
        4                     1             3                     10
                                                                                v4,1
 v3                 2               v4                 2                v5     v2, 2
(inf)                             (1, v1)                              (inf)   v3, inf

            5             8                     4             6                v5, inf
                                                                               v7, inf
                   v6               1                v7                        v6, inf
                  (inf)                             (inf)
Inicio
                    v1                2                 v2
                                                      (2, v1)                    Cola
                  (0, v1)
          4                     1             3                     10
                                                                                  v4,1
  v3                  2               v4                 2                v5     v2, 2
(3, v4)                             (1, v1)                              (inf)   v3, 3

              5             8                     4             6                v5, inf
                                                                                 v7, inf
                     v6               1                v7                        v6, inf
                    (inf)                             (inf)
Inicio
                    v1                2                 v2
                                                      (2, v1)                      Cola
                  (0, v1)
          4                     1             3                     10
                                                                                    v4,1
  v3                  2               v4                 2                 v5      v2, 2
(3, v4)                             (1, v1)                              (3, v4)   v3, 3

              5             8                     4             6                  v5, 3
                                                                                   v7, inf
                     v6               1                v7                          v6, inf
                    (inf)                             (inf)
Inicio
                    v1                2                 v2
                                                      (2, v1)                      Cola
                  (0, v1)
          4                     1             3                     10
                                                                                    v4,1
  v3                  2               v4                 2                 v5      v2, 2
(3, v4)                             (1, v1)                              (3, v4)   v3, 3

              5             8                     4             6                  v5, 3
                                                                                   v6, 9
                    v6                1                v7                          v7, inf
                  (9, v4)                             (inf)
Inicio
                    v1                2                 v2
                                                      (2, v1)                      Cola
                  (0, v1)
          4                     1             3                     10
                                                                                   v4,1
  v3                  2               v4                  2                v5      v2, 2
(3, v4)                             (1, v1)                              (3, v4)   v3, 3

              5             8                     4             6                  v5, 3
                                                                                   v7, 5
                    v6                1                 v7                         v6, 9
                  (9, v4)                             (5, v4)
Inicio
                    v1                2                 v2
                                                      (2, v1)                      Cola
                  (0, v1)
          4                     1             3                     10

  v3                  2               v4                  2                v5      v2, 2
(3, v4)                             (1, v1)                              (3, v4)   v3, 3

              5             8                     4             6                  v5, 3
                                                                                   v7, 5
                    v6                1                 v7                         v6, 9
                  (9, v4)                             (5, v4)
Inicio
                    v1                2                 v2
                                                      (2, v1)                      Cola
                  (0, v1)
          4                     1             3                     10

  v3                  2               v4                  2                v5      v2, 2
(3, v4)                             (1, v1)                              (3, v4)   v3, 3

              5             8                     4             6                  v5, 3
                                                                                   v7, 5
                    v6                1                 v7                         v6, 9
                  (9, v4)                             (5, v4)
Inicio
                    v1                2                 v2
                                                      (2, v1)                        Cola
                  (0, v1)
          4                     1             3                     10

  v3                  2               v4                  2                v5        v2, 2
(3, v4)                             (1, v1)                              (3, v4)     v3, 3

              5             8                     4             6                    v5, 3
                                                                                     v7, 5
                    v6                1                 v7                           v6, 9
                  (9, v4)                             (5, v4)
                                                                                   No cambia
Inicio
                    v1                2                 v2
                                                      (2, v1)                      Cola
                  (0, v1)
          4                     1             3                     10

  v3                  2               v4                  2                v5
(3, v4)                             (1, v1)                              (3, v4)   v3, 3

              5             8                     4             6                  v5, 3
                                                                                   v7, 5
                    v6                1                 v7                         v6, 9
                  (9, v4)                             (5, v4)
Inicio
                    v1                2                 v2
                                                      (2, v1)                      Cola
                  (0, v1)
          4                     1             3                     10

  v3                  2               v4                  2                v5
(3, v4)                             (1, v1)                              (3, v4)   v3, 3

              5             8                     4             6                  v5, 3
                                                                                   v7, 5
                    v6                1                 v7                         v6, 9
                  (9, v4)                             (5, v4)
Inicio
                    v1                2                 v2
                                                      (2, v1)                      Cola
                  (0, v1)
          4                     1             3                     10

  v3                  2               v4                  2                v5
(3, v4)                             (1, v1)                              (3, v4)   v3, 3

              5             8                     4             6                  v5, 3
                                                                                   v7, 5
                    v6                1                 v7                         v6, 9
                  (9, v4)                             (5, v4)
Inicio
                    v1                2                 v2
                                                      (2, v1)                      Cola
                  (0, v1)
          4                     1             3                     10

  v3                  2               v4                  2                v5
(3, v4)                             (1, v1)                              (3, v4)   v3, 3

              5             8                     4             6                  v5, 3
                                                                                   v7, 5
                    v6                1                 v7                         v6, 8
                  (8, v3)                             (5, v4)
Inicio
                    v1                2                 v2
                                                      (2, v1)                      Cola
                  (0, v1)
          4                     1             3                     10

  v3                  2               v4                  2                v5
(3, v4)                             (1, v1)                              (3, v4)

              5             8                     4             6                  v5, 3
                                                                                   v7, 5
                    v6                1                 v7                         v6, 7
                  (8, v3)                             (5, v4)
Inicio
                    v1                2                 v2
                                                      (2, v1)                      Cola
                  (0, v1)
          4                     1             3                     10

  v3                  2               v4                  2                v5
(3, v4)                             (1, v1)                              (3, v4)

              5             8                     4             6                  v5, 3
                                                                                   v7, 5
                    v6                1                 v7                         v6, 7
                  (8, v3)                             (5, v4)
Inicio
                    v1                2                 v2
                                                      (2, v1)                        Cola
                  (0, v1)
          4                     1             3                     10

  v3                  2               v4                  2                v5
(3, v4)                             (1, v1)                              (3, v4)

              5             8                     4             6                    v5, 3
                                                                                     v7, 5
                    v6                1                 v7                           v6, 7
                  (8, v3)                             (5, v4)
                                                                                   No cambia
Inicio
                    v1                2                 v2
                                                      (2, v1)                      Cola
                  (0, v1)
          4                     1             3                     10

  v3                  2               v4                  2                v5
(3, v4)                             (1, v1)                              (3, v4)

              5             8                     4             6
                                                                                   v7, 5
                    v6                1                 v7                         v6, 7
                  (8, v3)                             (5, v4)
Inicio
                    v1                2                 v2
                                                      (2, v1)                      Cola
                  (0, v1)
          4                     1             3                     10

  v3                  2               v4                  2                v5
(3, v4)                             (1, v1)                              (3, v4)

              5             8                     4             6
                                                                                   v7, 5
                    v6                1                 v7                         v6, 6
                  (8, v3)                             (5, v4)
Inicio
                    v1                2                 v2
                                                      (2, v1)                      Cola
                  (0, v1)
          4                     1             3                     10

  v3                  2               v4                  2                v5
(3, v4)                             (1, v1)                              (3, v4)

              5             8                     4             6
                                                                                   v7, 5
                    v6                1                 v7                         v6, 6
                  (6, v7)                             (5, v4)
Inicio
                    v1                2                 v2
                                                      (2, v1)                      Cola
                  (0, v1)
          4                     1             3                     10

  v3                  2               v4                  2                v5
(3, v4)                             (1, v1)                              (3, v4)

              5             8                     4             6

                    v6                1                 v7                         v6, 6
                  (6, v7)                             (5, v4)
Inicio
                    v1                2                 v2
                                                      (2, v1)                      Cola
                  (0, v1)
          4                     1             3                     10

  v3                  2               v4                  2                v5
(3, v4)                             (1, v1)                              (3, v4)

              5             8                     4             6

                    v6                1                 v7                         v6, 6
                  (6, v7)                             (5, v4)
Inicio
                    v1                2                 v2
                                                      (2, v1)                      Cola
                  (0, v1)
          4                     1             3                     10

  v3                  2               v4                  2                v5
(3, v4)                             (1, v1)                              (3, v1)

              5             8                     4             6

                    v6                1                 v7
                  (6, v7)                             (5, v4)
Inicio
                    v1                2                 v2
                                                      (2, v1)                      Cola
                  (0, v1)
          4                     1             3                     10

  v3                  2               v4                  2                v5
(3, v4)                             (1, v1)                              (3, v4)

              5             8                     4             6

                    v6                1                 v7
                  (6, v7)                             (5, v4)
Inicio
               v1            2             v2
                                         (2, v1)             Cola
             (0, v1)

                       1

  v3             2           v4              2       v5
(3, v4)                    (1, v1)                 (3, v4)

                                     4


               v6            1             v7
             (6, v7)                     (5, v4)
CODIGOS DE HUFFMAN




                     81
CODIFICACION:
   La palabra código ya nos indica algo “secreto”

Codificar un texto
      Reemplazarlo con códigos que solo nosotros conozcamos


Para obtener el texto original
       Se debe codificar

En el envío de información es muy popular

       Para ocultar la información y volver el envio mas seguro.


                                                                   82
UNA FORMA:
   Códigos binarios
        Que represente cada letra del alfabeto.

    Si el alfabeto esta conformado por
       A,B,C, y D


    Podemos codificar cada letra con
        010 100 , 000, 111


    La cadena ABACCDA

         010100010000000111010

                                                  83
ANALIZANDO:
   Ventajas
       Es muy fácil codificar y decodificar.
       Solo reemplazar.
       Cada código tiene la misma longitud.


   Desventajas

      La cadena resultante es muy larga comparada con el mensaje.


       Como se podrá reducir la cadena codificada?




                                                                    84
MEJORAR LA CODIFICACION:
A es la letra que mas se repite en el mensaje,

     Debería tener un código pequeño(menos espacio)


La letra que menos aparece

     Puede tener un codigo mas grande.


E código de cada letra
       Puede depender de la frecuencia de la letra de la cadena
       O el idioma

                                                                  85
UN EJEMPLO

ABCD

Se le puede asignar 0, 110, 10 ,111

    Entonces ABACCDA es 011001010111

    Ya!, mas pequeña

    Codificar es super facil

 Y Decodificar???


                                       86
DECODIFICANDO

0 110 0 10 10 111                          A   0


A B      A C C             D           B       110



                                       C       10

 Para decodificar hay que elegir. El
 valor del codigo depende del valor    D       111
 siguiente: 1 o 0




                                                     87
CONCLUSION                                     A   0


                                               B   110
             0110 01010111
                                               C   10

Para decodificar:                              D   111

       Escoger siguiente bit.
       Determinar codigo entre BD
               Si es 0 : B
               Si no, es D


    Arbol de Huffman
 Si logro generar un arbol asi,podre obtener
 los codigos:
 Codificar y luego podre volver a la
 informacion inicial: decodificar
                                                         88
A   3
     CONSTRUIR EL ARBOL
  Necesitamos la frecuencia de cada letra en la cadena                  B   1

  Notemos que c/letra es una hoja
                                                                        C   2
      A         B       C        D
                                                                        D   1
     3         1       2        1
Empecemos con las dos letras de menor frecuencia código de cada letra


         Se unen y crean un nuevo símbolo.
         La frecuencia del nuevo es la suma de los dos ant.
         Se desechan los dos anteriores.
         El grupo de letras se vuelve mas pequeño.
         Todo se repite hasta que no queden mas letras ind.



                                                                                89
CONSEGUIR LOS CODIGOS

               Es una busqueda binaria.
               Los codigos se van acumulando a medida que se busca la letra.
               Las letras siempre son hojas.
               Si letra buscada esta.



                   En el subarbol izquierdo, se acumula un 0 o
                   En el subarbol derecho , se acumula un 1


 A    0


 B    110

 C    10

 D    111                                                                       90

Más contenido relacionado

La actualidad más candente

Clasificacion de los problemas
Clasificacion de los problemasClasificacion de los problemas
Clasificacion de los problemasPatricia Correa
 
1.4 software numerico
1.4 software numerico1.4 software numerico
1.4 software numericomorenito9001
 
Memoria Estatica
Memoria EstaticaMemoria Estatica
Memoria EstaticaJ M
 
Analisis de sensibilidad 2222222 (1)
Analisis de sensibilidad   2222222 (1)Analisis de sensibilidad   2222222 (1)
Analisis de sensibilidad 2222222 (1)Irene Sarcos
 
Sesión 1 - Introduccion a los Sistemas Inteligentes
Sesión 1 - Introduccion a los Sistemas InteligentesSesión 1 - Introduccion a los Sistemas Inteligentes
Sesión 1 - Introduccion a los Sistemas Inteligentesroy_melendez
 
Reporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamientoReporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamientoTAtiizz Villalobos
 
Metodos jacobi y gauss seidel
Metodos jacobi y gauss seidelMetodos jacobi y gauss seidel
Metodos jacobi y gauss seidelCesar Mendoza
 
Arreglos Unidimensionales - Java - NetBeans
Arreglos Unidimensionales - Java - NetBeansArreglos Unidimensionales - Java - NetBeans
Arreglos Unidimensionales - Java - NetBeansDaniel Gómez
 
Tópicos Avanzados de Programación - Unidad 3 programacion concurrente
Tópicos Avanzados de Programación - Unidad 3 programacion concurrenteTópicos Avanzados de Programación - Unidad 3 programacion concurrente
Tópicos Avanzados de Programación - Unidad 3 programacion concurrenteJosé Antonio Sandoval Acosta
 
Unidad 4-generacion-de-numeros-pseudoaleatorios1
Unidad 4-generacion-de-numeros-pseudoaleatorios1Unidad 4-generacion-de-numeros-pseudoaleatorios1
Unidad 4-generacion-de-numeros-pseudoaleatorios1Juan Carlos Martinez Garcia
 
Metodos de Programacion no lineal
Metodos de Programacion no linealMetodos de Programacion no lineal
Metodos de Programacion no linealluisatero
 
Algoritmos Genéticos
Algoritmos GenéticosAlgoritmos Genéticos
Algoritmos GenéticosESCOM
 
3.1.2 Algoritmos Voraces.pptx
3.1.2 Algoritmos Voraces.pptx3.1.2 Algoritmos Voraces.pptx
3.1.2 Algoritmos Voraces.pptxFernando Solis
 

La actualidad más candente (20)

Estructura datos pilas y colas
Estructura datos pilas y colasEstructura datos pilas y colas
Estructura datos pilas y colas
 
Programacion no lineal
Programacion no linealProgramacion no lineal
Programacion no lineal
 
Programación dinámica
Programación dinámicaProgramación dinámica
Programación dinámica
 
Clasificacion de los problemas
Clasificacion de los problemasClasificacion de los problemas
Clasificacion de los problemas
 
4.3
4.34.3
4.3
 
1.4 software numerico
1.4 software numerico1.4 software numerico
1.4 software numerico
 
Búsqueda secuencial y binaria
Búsqueda secuencial y binariaBúsqueda secuencial y binaria
Búsqueda secuencial y binaria
 
Ejercicios
EjerciciosEjercicios
Ejercicios
 
Estructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busquedaEstructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busqueda
 
Memoria Estatica
Memoria EstaticaMemoria Estatica
Memoria Estatica
 
Analisis de sensibilidad 2222222 (1)
Analisis de sensibilidad   2222222 (1)Analisis de sensibilidad   2222222 (1)
Analisis de sensibilidad 2222222 (1)
 
Sesión 1 - Introduccion a los Sistemas Inteligentes
Sesión 1 - Introduccion a los Sistemas InteligentesSesión 1 - Introduccion a los Sistemas Inteligentes
Sesión 1 - Introduccion a los Sistemas Inteligentes
 
Reporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamientoReporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamiento
 
Metodos jacobi y gauss seidel
Metodos jacobi y gauss seidelMetodos jacobi y gauss seidel
Metodos jacobi y gauss seidel
 
Arreglos Unidimensionales - Java - NetBeans
Arreglos Unidimensionales - Java - NetBeansArreglos Unidimensionales - Java - NetBeans
Arreglos Unidimensionales - Java - NetBeans
 
Tópicos Avanzados de Programación - Unidad 3 programacion concurrente
Tópicos Avanzados de Programación - Unidad 3 programacion concurrenteTópicos Avanzados de Programación - Unidad 3 programacion concurrente
Tópicos Avanzados de Programación - Unidad 3 programacion concurrente
 
Unidad 4-generacion-de-numeros-pseudoaleatorios1
Unidad 4-generacion-de-numeros-pseudoaleatorios1Unidad 4-generacion-de-numeros-pseudoaleatorios1
Unidad 4-generacion-de-numeros-pseudoaleatorios1
 
Metodos de Programacion no lineal
Metodos de Programacion no linealMetodos de Programacion no lineal
Metodos de Programacion no lineal
 
Algoritmos Genéticos
Algoritmos GenéticosAlgoritmos Genéticos
Algoritmos Genéticos
 
3.1.2 Algoritmos Voraces.pptx
3.1.2 Algoritmos Voraces.pptx3.1.2 Algoritmos Voraces.pptx
3.1.2 Algoritmos Voraces.pptx
 

Similar a Algoritmo voraces

Similar a Algoritmo voraces (20)

Diapositiva prog no numerica 2 algoritmo voraces
Diapositiva prog no numerica 2 algoritmo voracesDiapositiva prog no numerica 2 algoritmo voraces
Diapositiva prog no numerica 2 algoritmo voraces
 
Avarap
AvarapAvarap
Avarap
 
Avarap
AvarapAvarap
Avarap
 
Metodo Simplex
Metodo SimplexMetodo Simplex
Metodo Simplex
 
Optimizacion Diusty Mijares
Optimizacion Diusty MijaresOptimizacion Diusty Mijares
Optimizacion Diusty Mijares
 
1.3.2 la programación lineal y su uso en la programación de operaciones
1.3.2 la programación lineal y su uso en la programación de operaciones1.3.2 la programación lineal y su uso en la programación de operaciones
1.3.2 la programación lineal y su uso en la programación de operaciones
 
Porogramación lineal
Porogramación linealPorogramación lineal
Porogramación lineal
 
Diapositivas argenis leon osf
Diapositivas argenis leon osfDiapositivas argenis leon osf
Diapositivas argenis leon osf
 
Diapositivas argenis leon osf
Diapositivas argenis leon osfDiapositivas argenis leon osf
Diapositivas argenis leon osf
 
Argenis leon sl
Argenis leon slArgenis leon sl
Argenis leon sl
 
Formulación
FormulaciónFormulación
Formulación
 
El Problema del Agente Viajero_f.pptx
El Problema del Agente Viajero_f.pptxEl Problema del Agente Viajero_f.pptx
El Problema del Agente Viajero_f.pptx
 
Optomizacion cd
Optomizacion cdOptomizacion cd
Optomizacion cd
 
Optimizacion Osvelis Ruiz
Optimizacion Osvelis RuizOptimizacion Osvelis Ruiz
Optimizacion Osvelis Ruiz
 
Vuelta Atras
Vuelta AtrasVuelta Atras
Vuelta Atras
 
Operativa i-2015 (1) (1)
Operativa i-2015 (1) (1)Operativa i-2015 (1) (1)
Operativa i-2015 (1) (1)
 
Operativa i-2015 (1) (1)
Operativa i-2015 (1) (1)Operativa i-2015 (1) (1)
Operativa i-2015 (1) (1)
 
Operativa i-2015
Operativa i-2015Operativa i-2015
Operativa i-2015
 
Simplex
SimplexSimplex
Simplex
 
Programación lineal
Programación linealProgramación lineal
Programación lineal
 

Más de Jairo Quiroz Cabanillas (20)

COMPUTACIÓN EVOLUTIVA
COMPUTACIÓN EVOLUTIVACOMPUTACIÓN EVOLUTIVA
COMPUTACIÓN EVOLUTIVA
 
ROBOTICA
ROBOTICAROBOTICA
ROBOTICA
 
Sistemas raid
Sistemas raidSistemas raid
Sistemas raid
 
Sql dataadapter
Sql dataadapterSql dataadapter
Sql dataadapter
 
Sql connection
Sql connectionSql connection
Sql connection
 
ADO
ADOADO
ADO
 
ACCIDENTES DE TRABAJO
ACCIDENTES  DE TRABAJOACCIDENTES  DE TRABAJO
ACCIDENTES DE TRABAJO
 
Segmentación
Segmentación Segmentación
Segmentación
 
Discos duros
Discos durosDiscos duros
Discos duros
 
Evolucion web
Evolucion webEvolucion web
Evolucion web
 
Procesamiento superescalar
Procesamiento superescalarProcesamiento superescalar
Procesamiento superescalar
 
Procesamiento segmentado - INFORME
Procesamiento segmentado - INFORMEProcesamiento segmentado - INFORME
Procesamiento segmentado - INFORME
 
Buses de arquitectura
Buses de arquitecturaBuses de arquitectura
Buses de arquitectura
 
MRP y ERP
MRP y ERPMRP y ERP
MRP y ERP
 
Planeacion de produccion
Planeacion de produccionPlaneacion de produccion
Planeacion de produccion
 
Sistema justo a tiempo
Sistema justo a tiempoSistema justo a tiempo
Sistema justo a tiempo
 
Administración del mantenimiento y fiabilidad
Administración del mantenimiento y fiabilidadAdministración del mantenimiento y fiabilidad
Administración del mantenimiento y fiabilidad
 
Mantenimiento y confiabiliadad
Mantenimiento y confiabiliadadMantenimiento y confiabiliadad
Mantenimiento y confiabiliadad
 
Nivel red
Nivel redNivel red
Nivel red
 
Capa de transporte nivel enrutamiento - pat - nat
Capa de transporte   nivel enrutamiento - pat - natCapa de transporte   nivel enrutamiento - pat - nat
Capa de transporte nivel enrutamiento - pat - nat
 

Algoritmo voraces

  • 1.
  • 2. Definición Los algoritmos voraces, ávidos o de avance rápido son utilizados para solucionar problemas de optimización y toman decisiones basándose en la información que tienen de modo inmediato, sin tener en cuenta los efectos que estas decisiones pueden tener a futuro. Es aquel algoritmo, que para resolver un problema elige la opción óptima en cada paso local con la esperanza de llegar a una solución general óptima.
  • 3. Estructura: Conjunto de Función de Función de Función solución Función Objetivo candidatos factibilidad selección  Determina sisolucióncandidato del conjunto a seleccionar. una solución. con el siguiente elemento  Determina eles posible completar el conjunto dealcanzado seleccionados  Valor de la si los candidatos seleccionados han candidatos mejor alcanzada. seleccionado para alcanzar una solución al problema.
  • 4. Funcionamiento: Voraz(C : conjunto de candidatos) : conjunto solución Inicio S=Ø mientras C ≠ Ø y no Solución(S) hacer x = Selección(C) C = C – {x} si factible(S U {x}) entonces S = S U {x} fin si fin mientras si Solución(S) entonces Devolver S en otro caso Devolver “No se encontró una solución” fin si
  • 5. Características: 1. El problema a resolver ha de ser de optimización [MIN/MAX] y debe existir una función, la función objetivo, que es la que hay que minimizar o maximizar. 2. Dominio son un conjunto de valores posibles para cada una de las variables de la función objetivo . 3. Pueden existir un conjunto restricciones que imponen condiciones a los valores del dominio que pueden tomar las variables de la función objetivo. 4. La solución para el problema debe ser dada en forma de secuencia de decisiones(Función Solución). 5. Una función que permita determinar si una secuencia de decisiones viola o no las restricciones, la función factible.
  • 6. Encontrar una solución VALORES Función objetivo sea óptimo Asignación de la variable Proceso Secuencial actual Función objetivo sea óptimo La decisión es localmente óptima, es decir, ningún otro valor de los disponibles para esa variable lograría que la función objetivo tuviera un valor mejor, y luego comprueba si la puede incorporar a la secuencia de decisiones que ha tomado hasta el momento, es decir, comprueba que la nueva decisión junto con todas las tomadas anteriormente no violan las restricciones y así consigue una nueva secuencia de decisiones factible.
  • 7. Depende de dos factores: Numero de iteraciones El coste de la función selección y factible Depende del tamaño de la solución reducir el coste de la función de selección, siempre que y Para construida y del factible dependerá del problema (número El coste de la función tamaño del conjunto de candidatos. sea posible se prepara (preprocesa) el complejidad de las restricciones). conjunto de candidatos antes de entrar en el bucle.
  • 8. No garantiza que la solución sea la optima Suelen ser rápidos y fáciles de implementar. Sólo genera una de entre todas las posibles secuencias de decisiones Siempre habrá que intentar demostrar que la solución obtenida es la óptima
  • 9. Determinar la función de selección Definir la solución factible Definir qué caracteriza a una solución del problema. Demostrar que la función de selección conduce siempre al óptimo. Si no Construcción el algoritmo Buscar nuevas funciones de selección
  • 10. El problema del cambio de monedas Para el problema que nos ocupa se puede comenzar por definir factible y solución. En este caso el problema no tiene restricciones explícitas pero podemos decir que un conjunto de monedas es factible si la suma de sus valores es menor o igual que M (cantidad de monedas). Y se tiene una solución cuando los valores de las monedas elegidas suman exactamente , si es que esto es posible. La forma en que habitualmente se devuelve el cambio nos ofrece un candidato a función de selección: elegir a cada paso la moneda disponible de mayor valor. Como pretendemos minimizar el número de monedas utilizado, al elegir la moneda de mayor valor nos acercamos lo más posible a la cantidad a formar y, además, empleando una única moneda. Es una decisión localmente óptima porque minimiza la cantidad que nos queda por formar con las monedas
  • 11. El problema del cambio de monedas Construir un algoritmo que dada una cantidad P devuelva esa cantidad usando el menor número posible de monedas. Disponemos de monedas con valores de 1, 2, 5, 10, 20 y 50 céntimos de euro, 1 y 2 euros (€). Este es un problema de minimización que satisface el denominado PRINICIPIO DE OPTIMALIDAD lo que puede resultar útil para las demostraciones de optimalidad de la solución obtenida por la función de selección.
  • 12. El problema del cambio de monedas La función factible tendrá que comprobar que el valor de la moneda seleccionada junto con el valor de las monedas que ya hemos incluido hasta ahora en la solución no supera . Caso 1. Devolver 3,89 Euros. 1.- moneda de 2€, 1 moneda de 1€, 1 moneda de 50 c€, 1 moneda de 20 c€, 1 moneda de 10 c€ , 1 moneda de 5 c€ y 2.- monedas de 2 c€. Total: 8 monedas.
  • 13. El problema del cambio de monedas • Conjunto de candidatos: todos los tipos de monedas disponibles. Supondremos una cantidad ilimitada de cada tipo. • Solución: conjunto de monedas que sumen P. • Función objetivo: minimizar el número de monedas. Representación (x1, x2, x3, x4, x5, x6, x7, x8), donde xi es el número de monedas usadas de tipo i. • Suponemos que la moneda i vale ci. • Formulación: Minimizar xi, sujeto a Σ xi・ci = P, xi≥0
  • 14. El problema del cambio de monedas Funciones del esquema: 1.- Inicialización. Inicialmente xi= 0, para todo i= 1..8 2.- solución. El valor actual es solución si Σ xi・ci = P 3.- seleccionar. ¿Qué moneda se elige en cada paso de entre los candidatos? 4.- Respuesta: elegir en cada paso la moneda de valor más alto posible, pero sin sobrepasar la cantidad que queda por devolver. 5.- factible. Valdrá siempre verdad. 6.- En lugar de seleccionar monedas de una en una, usamos la división entera y cogemos todas las monedas posibles de mayor valor. 7.- Implementación. Usamos una variable local para acumular la cantidad devuelta hasta este punto. • Suponemos que las monedas están ordenadas de menor a mayor valor.
  • 15.
  • 16. DEFINICION El problema de la mochila es uno de los 21 problemas NP-completos de Richard Karp, establecidos por el informático teórico en un famoso artículo de 1972 Es un problema de optimización combinatoria. Modela una situación análoga al llenar una mochila
  • 17. Para esta sección, consideremos n tipos de ítems, que van del 1 al n Cada tipo de ítem i tiene un valor vi y un peso wi Usualmente se asume que los valores y pesos no son negativos
  • 18.
  • 19. EJEMPLO Un barco de 4 toneladas se carga con uno o más de tres artículos. La siguiente tabla proporciona el peso por unidad, wi y toneladas y la utilidad por unidad vi en miles de dólares por el artículo ¿Cómo se debe cargar el barco para maximizar la utilidad total? ARTICULO(i) Peso en Toneladas(Wi) Beneficio(Vi) 1 2 31 2 3 47 3 1 14
  • 20. N =3 Numero de artículos Vi = {31, 47,14} F.O= 31 X1 + 47X2 + 14 X3 Wi = {2, 3,1} Rest = 2X1 + 3X2 + X3 W=4 El vector solución inicial es x = {0, 0,0} Tres artículos tres iteraciones X= {0, 0,0} Z=0 ∑w1x1=0<=4 X= {0, 0,0} Z=0 ∑w1x1=0<=4 X= {1, 0,0} Z=31 ∑w1x1=2<=4
  • 21. X= {1, 1,0} X= {1, 0,1} Z=78 Z=45 ∑w1x1=5<=4 ∑w1x1=3<=4 No factible X= {1, 0,0} X= {0, 0,0} Z=31 Z=0 ∑w1x1=2<=4 ∑w1x1=0<=4 X= {0, 1,1} X= {0, 1,0} Z=61 Z=47 ∑w1x1=4<=4 ∑w1x1=3<=4 X= {0, 1,0} X= {1, 0,0} Z=47 Z=31 ∑w1x1=3<=4 ∑w1x1=2<=4 X= {0, 0,1} Z=14 ∑w1x1=1<=4 X= {0, 0,0} Z=0 ∑w1x1=0<=4
  • 22. Es aquel que obtenemos en un grafo conexo y sin ciclos. Árbol de máximo alcance cuyo valor es mínimo, es decir, la suma de sus aristas es mínima. Es apropiado para problemas en los cuales la redundancia es expansiva o el flujo a lo largo de los arcos se considera instantáneo.
  • 23. Redes de comunicación eléctrica, telefonía, carretera, ferroviaria, aérea, marítima o de gas., etc. • Representan los puntos de consumo Nodos eléctrico, teléfonos, aeropuertos, computadoras. • Alta tensión, cable de fibra óptica, rutas Arcos aéreas, agua, gas, etc.
  • 24. Es un algoritmo de la teoría de grafos para encontrar un árbol recubridor mínimo en un grafo conexo y ponderado. Es decir, busca un subconjunto de aristas que, formando un árbol, incluyen todos los vértices y donde el valor total de todas las aristas del árbol es el mínimo.
  • 25. • Comenzar en forma arbitraria en cualquier nodo y conectarlo con el mas próximo (menos distancia o costoso). 1 • Identificar el nodo no conectado que esta mas cerca o menos costos de alguno de los nodos conectados. Deshacer los empates 2 de forma arbitraria. • Repartir este paso hasta que se hayan conectado todos los nodos. 3
  • 26.
  • 27.  Una ciudad esta planificando el desarrollo de una nueva línea en sistemas de transito.  El sistema debe unir 8 residencias y centros comerciales.  El distrito metropolitano de transito necesita seleccionar un conjunto de líneas que conecten todos los centros a una mínimo costo.  La red seleccionada debe permitir: Factibilidad de las líneas que deben ser construidas. Mínimo costo posible por línea.
  • 28. Zona Norte Universidad 55 3 50 5 Distrito 39 30 33 comercial 38 Zona Oeste 34 4 45 32 35 Zona Este 1 8 28 43 Zona 2 6 Shopping Centro 41 center 37 36 44 40 Zona Sur 7
  • 29. Zona Norte Universidad 55 3 50 5 Distrito 39 30 33 comercial 38 Zona Oeste 34 4 45 32 35 Zona Este 1 8 28 43 Zona 2 6 Shopping Centro 41 center 37 36 44 40 Zona Sur 7
  • 30. Zona Norte Universidad 55 3 50 5 Distrito 39 30 33 comercial 38 Zona Oeste 34 4 45 32 35 Zona Este 1 8 28 43 Zona 2 6 Shopping Centro 41 center 37 36 44 40 Zona Sur 7
  • 31. Zona Norte Universidad 55 3 50 5 Distrito 39 30 33 comercial 38 Zona Oeste 34 4 45 32 35 Zona Este 1 8 28 43 Zona 2 6 Shopping Centro 41 center 37 36 44 40 Zona Sur 7
  • 32. Zona Norte Universidad 55 3 50 5 Distrito 39 30 33 comercial 38 Zona Oeste 34 4 45 32 35 Zona Este 1 8 28 43 Zona 2 6 Shopping Centro 41 center 37 36 44 40 Zona Sur 7
  • 33. Zona Norte Universidad 55 3 50 5 Distrito 39 30 33 comercial 38 Zona Oeste 34 4 45 32 35 Zona Este 1 8 28 43 Zona 2 6 Shopping Centro 41 center 37 36 44 40 Zona Sur 7
  • 34. Zona Norte Universidad 55 3 50 5 Distrito 39 30 33 comercial 38 Zona Oeste 34 4 45 32 35 Zona Este 1 8 28 43 Zona 2 6 Shopping Centro 41 center 37 36 44 40 Zona Sur 7
  • 35. Zona Norte Universidad 55 3 50 5 Distrito 39 30 33 comercial 38 Zona Oeste 34 4 45 32 35 Zona Este 1 8 28 43 Zona 2 6 Shopping Centro 41 center 37 36 44 40 Zona Sur 7
  • 36. Zona Norte Universidad 3 5 Distrito 30 comercial 38 Zona Oeste 4 32 35 Zona Este 1 8 28 Zona 2 6 Shopping Centro center 37 36 7 Costo Total $ 236 millones Acíclico con n−1 aristas = Árbol buscado Zona Sur
  • 37. Es un algoritmo perteneciente a la teoría de los grafos para encontrar un árbol recubridor mínimo en un grafo conexo, no dirigido y cuyas aristas están etiquetadas. El algoritmo incrementa continuamente el tamaño de un árbol, comenzando por un vértice inicial al que se le van agregando sucesivamente vértices cuya distancia a los anteriores es mínima.
  • 38. • Seleccionar inicialmente cualquier nodo y conectarlo con el mas próximo que contenga el arco de menor costo o distancia. 1 • Completar de red interactivamente, identificando el nodo no conectado que esta mas cerca o menos costoso de algunos de 2 los nodos conectados. • Agregar este nodo al conjunto de nodos conectado. En caso de empate este se rompe en forma arbitraria. 3
  • 39. Encontrar el árbol recubridor mas corto. Ser un grafo conexo. Ser un grafos sin ciclos. Tener todos los arcos etiquetados.
  • 40. a 7 8 5 b c 9 7 5 d 15 e 6 8 9 11 f g
  • 41. a 7 8 5 b c 9 7 5 d 15 e 6 8 9 11 f g
  • 42. a 7 8 5 b c 9 7 5 d 15 e 6 8 9 11 f g
  • 43. a 7 8 5 b c 9 7 5 d 15 e 6 8 9 11 f g
  • 44. a 7 8 5 b c 9 7 5 d 15 e 6 8 9 11 f g
  • 45. a 7 8 5 b c 9 7 5 d 15 e 6 8 9 11 f g
  • 46. a 7 8 5 b c 9 7 5 d 15 e 6 8 9 11 f g
  • 47. a 7 8 5 b c 9 7 5 d 15 e 6 8 9 11 f g
  • 48. a 7 Nodo Arco 5 b c d-a 5 5 d-f 6 7 a-b 7 d e b-e 7 6 9 e-c 5 e-g 9 f g Solución 39
  • 49. CAMINOS MÍNIMOS Caminos más cortos a partir de múltiples fuentes en un grafo
  • 50. Es una pareja ordenada G(V,E) ¿Qué es un grafo? V2 V: Es un conjunto de Vértices V3 V1 E: Es un conjunto de Parejas de distintos vértices, entre los cuales se trazan las aristas V4 E={(V1,V2), (V2,V3), (V3,V4), (V4,V1), (V2,V4)}
  • 51. ALGORITMO DE DIJKSTRA Resuelve el problema de encontrar el camino mínimo entre un vértice dado, el llamado inicial, y todos los restantes del grafo.
  • 52. v1 2 v2 () Cola () 4 () 1 3 10 () v3 2 v4 2 v5 () () () () () 5 8 4 6 () () v6 1 v7 () () ()
  • 53. Inicio v1 2 v2 (inf) Cola (0, V1) 4 v1, 0 1 3 10 v2, inf v3 2 v4 2 v5 v3, inf (inf) (inf) (inf) v4, inf 5 8 4 6 v5, inf v6, inf v6 1 v7 v7, inf (inf) (inf)
  • 54. Inicio v1 2 v2 (inf) Cola (0, v1) 4 v1, 0 1 3 10 v2, inf v3 2 v4 2 v5 v3, inf (inf) (inf) (inf) v4, inf 5 8 4 6 v5, inf v6, inf v6 1 v7 v7, inf (inf) (inf)
  • 55. Inicio v1 2 v2 (2, v1) Cola (0, v1) 4 v1, 0 1 3 10 v2, 2 v3 2 v4 2 v5 v3, inf (inf) (inf) (inf) v4, inf 5 8 4 6 v5, inf v6, inf v6 1 v7 v7, inf (inf) (inf)
  • 56. Inicio v1 2 v2 (2, v1) Cola (0, v1) 4 v1, 0 1 3 10 v4,1 v3 2 v4 2 v5 v2, 2 (inf) (1, v1) (inf) v3, inf 5 8 4 6 v5, inf v6, inf v6 1 v7 v7, inf (inf) (inf)
  • 57. Inicio v1 2 v2 (2, v1) Cola (0, v1) 4 1 3 10 v4,1 v3 2 v4 2 v5 v2, 2 (inf) (1, v1) (inf) v3, inf 5 8 4 6 v5, inf v6, inf v6 1 v7 v7, inf (inf) (inf)
  • 58. Inicio v1 2 v2 (2, v1) Cola (0, v1) 4 1 3 10 v4,1 v3 2 v4 2 v5 v2, 2 (inf) (1, v1) (inf) v3, inf 5 8 4 6 v5, inf v7, inf v6 1 v7 v6, inf (inf) (inf)
  • 59. Inicio v1 2 v2 (2, v1) Cola (0, v1) 4 1 3 10 v4,1 v3 2 v4 2 v5 v2, 2 (3, v4) (1, v1) (inf) v3, 3 5 8 4 6 v5, inf v7, inf v6 1 v7 v6, inf (inf) (inf)
  • 60. Inicio v1 2 v2 (2, v1) Cola (0, v1) 4 1 3 10 v4,1 v3 2 v4 2 v5 v2, 2 (3, v4) (1, v1) (3, v4) v3, 3 5 8 4 6 v5, 3 v7, inf v6 1 v7 v6, inf (inf) (inf)
  • 61. Inicio v1 2 v2 (2, v1) Cola (0, v1) 4 1 3 10 v4,1 v3 2 v4 2 v5 v2, 2 (3, v4) (1, v1) (3, v4) v3, 3 5 8 4 6 v5, 3 v6, 9 v6 1 v7 v7, inf (9, v4) (inf)
  • 62. Inicio v1 2 v2 (2, v1) Cola (0, v1) 4 1 3 10 v4,1 v3 2 v4 2 v5 v2, 2 (3, v4) (1, v1) (3, v4) v3, 3 5 8 4 6 v5, 3 v7, 5 v6 1 v7 v6, 9 (9, v4) (5, v4)
  • 63. Inicio v1 2 v2 (2, v1) Cola (0, v1) 4 1 3 10 v3 2 v4 2 v5 v2, 2 (3, v4) (1, v1) (3, v4) v3, 3 5 8 4 6 v5, 3 v7, 5 v6 1 v7 v6, 9 (9, v4) (5, v4)
  • 64. Inicio v1 2 v2 (2, v1) Cola (0, v1) 4 1 3 10 v3 2 v4 2 v5 v2, 2 (3, v4) (1, v1) (3, v4) v3, 3 5 8 4 6 v5, 3 v7, 5 v6 1 v7 v6, 9 (9, v4) (5, v4)
  • 65. Inicio v1 2 v2 (2, v1) Cola (0, v1) 4 1 3 10 v3 2 v4 2 v5 v2, 2 (3, v4) (1, v1) (3, v4) v3, 3 5 8 4 6 v5, 3 v7, 5 v6 1 v7 v6, 9 (9, v4) (5, v4) No cambia
  • 66. Inicio v1 2 v2 (2, v1) Cola (0, v1) 4 1 3 10 v3 2 v4 2 v5 (3, v4) (1, v1) (3, v4) v3, 3 5 8 4 6 v5, 3 v7, 5 v6 1 v7 v6, 9 (9, v4) (5, v4)
  • 67. Inicio v1 2 v2 (2, v1) Cola (0, v1) 4 1 3 10 v3 2 v4 2 v5 (3, v4) (1, v1) (3, v4) v3, 3 5 8 4 6 v5, 3 v7, 5 v6 1 v7 v6, 9 (9, v4) (5, v4)
  • 68. Inicio v1 2 v2 (2, v1) Cola (0, v1) 4 1 3 10 v3 2 v4 2 v5 (3, v4) (1, v1) (3, v4) v3, 3 5 8 4 6 v5, 3 v7, 5 v6 1 v7 v6, 9 (9, v4) (5, v4)
  • 69. Inicio v1 2 v2 (2, v1) Cola (0, v1) 4 1 3 10 v3 2 v4 2 v5 (3, v4) (1, v1) (3, v4) v3, 3 5 8 4 6 v5, 3 v7, 5 v6 1 v7 v6, 8 (8, v3) (5, v4)
  • 70. Inicio v1 2 v2 (2, v1) Cola (0, v1) 4 1 3 10 v3 2 v4 2 v5 (3, v4) (1, v1) (3, v4) 5 8 4 6 v5, 3 v7, 5 v6 1 v7 v6, 7 (8, v3) (5, v4)
  • 71. Inicio v1 2 v2 (2, v1) Cola (0, v1) 4 1 3 10 v3 2 v4 2 v5 (3, v4) (1, v1) (3, v4) 5 8 4 6 v5, 3 v7, 5 v6 1 v7 v6, 7 (8, v3) (5, v4)
  • 72. Inicio v1 2 v2 (2, v1) Cola (0, v1) 4 1 3 10 v3 2 v4 2 v5 (3, v4) (1, v1) (3, v4) 5 8 4 6 v5, 3 v7, 5 v6 1 v7 v6, 7 (8, v3) (5, v4) No cambia
  • 73. Inicio v1 2 v2 (2, v1) Cola (0, v1) 4 1 3 10 v3 2 v4 2 v5 (3, v4) (1, v1) (3, v4) 5 8 4 6 v7, 5 v6 1 v7 v6, 7 (8, v3) (5, v4)
  • 74. Inicio v1 2 v2 (2, v1) Cola (0, v1) 4 1 3 10 v3 2 v4 2 v5 (3, v4) (1, v1) (3, v4) 5 8 4 6 v7, 5 v6 1 v7 v6, 6 (8, v3) (5, v4)
  • 75. Inicio v1 2 v2 (2, v1) Cola (0, v1) 4 1 3 10 v3 2 v4 2 v5 (3, v4) (1, v1) (3, v4) 5 8 4 6 v7, 5 v6 1 v7 v6, 6 (6, v7) (5, v4)
  • 76. Inicio v1 2 v2 (2, v1) Cola (0, v1) 4 1 3 10 v3 2 v4 2 v5 (3, v4) (1, v1) (3, v4) 5 8 4 6 v6 1 v7 v6, 6 (6, v7) (5, v4)
  • 77. Inicio v1 2 v2 (2, v1) Cola (0, v1) 4 1 3 10 v3 2 v4 2 v5 (3, v4) (1, v1) (3, v4) 5 8 4 6 v6 1 v7 v6, 6 (6, v7) (5, v4)
  • 78. Inicio v1 2 v2 (2, v1) Cola (0, v1) 4 1 3 10 v3 2 v4 2 v5 (3, v4) (1, v1) (3, v1) 5 8 4 6 v6 1 v7 (6, v7) (5, v4)
  • 79. Inicio v1 2 v2 (2, v1) Cola (0, v1) 4 1 3 10 v3 2 v4 2 v5 (3, v4) (1, v1) (3, v4) 5 8 4 6 v6 1 v7 (6, v7) (5, v4)
  • 80. Inicio v1 2 v2 (2, v1) Cola (0, v1) 1 v3 2 v4 2 v5 (3, v4) (1, v1) (3, v4) 4 v6 1 v7 (6, v7) (5, v4)
  • 82. CODIFICACION:  La palabra código ya nos indica algo “secreto” Codificar un texto Reemplazarlo con códigos que solo nosotros conozcamos Para obtener el texto original Se debe codificar En el envío de información es muy popular Para ocultar la información y volver el envio mas seguro. 82
  • 83. UNA FORMA:  Códigos binarios Que represente cada letra del alfabeto. Si el alfabeto esta conformado por A,B,C, y D Podemos codificar cada letra con 010 100 , 000, 111 La cadena ABACCDA 010100010000000111010 83
  • 84. ANALIZANDO:  Ventajas  Es muy fácil codificar y decodificar.  Solo reemplazar.  Cada código tiene la misma longitud.  Desventajas La cadena resultante es muy larga comparada con el mensaje. Como se podrá reducir la cadena codificada? 84
  • 85. MEJORAR LA CODIFICACION: A es la letra que mas se repite en el mensaje, Debería tener un código pequeño(menos espacio) La letra que menos aparece Puede tener un codigo mas grande. E código de cada letra Puede depender de la frecuencia de la letra de la cadena O el idioma 85
  • 86. UN EJEMPLO ABCD Se le puede asignar 0, 110, 10 ,111 Entonces ABACCDA es 011001010111 Ya!, mas pequeña Codificar es super facil Y Decodificar??? 86
  • 87. DECODIFICANDO 0 110 0 10 10 111 A 0 A B A C C D B 110 C 10 Para decodificar hay que elegir. El valor del codigo depende del valor D 111 siguiente: 1 o 0 87
  • 88. CONCLUSION A 0 B 110 0110 01010111 C 10 Para decodificar: D 111  Escoger siguiente bit.  Determinar codigo entre BD Si es 0 : B Si no, es D Arbol de Huffman Si logro generar un arbol asi,podre obtener los codigos: Codificar y luego podre volver a la informacion inicial: decodificar 88
  • 89. A 3 CONSTRUIR EL ARBOL Necesitamos la frecuencia de cada letra en la cadena B 1 Notemos que c/letra es una hoja C 2 A B C D D 1 3 1 2 1 Empecemos con las dos letras de menor frecuencia código de cada letra  Se unen y crean un nuevo símbolo.  La frecuencia del nuevo es la suma de los dos ant.  Se desechan los dos anteriores.  El grupo de letras se vuelve mas pequeño.  Todo se repite hasta que no queden mas letras ind. 89
  • 90. CONSEGUIR LOS CODIGOS  Es una busqueda binaria.  Los codigos se van acumulando a medida que se busca la letra.  Las letras siempre son hojas.  Si letra buscada esta. En el subarbol izquierdo, se acumula un 0 o En el subarbol derecho , se acumula un 1 A 0 B 110 C 10 D 111 90