ALIPSO.COM - Trabajos prácticos, monografías, apuntes, tesis, manuales, material educativo y mucho más.
 

Página de inicio | Agregar a Favoritos | Contactate con nosotros | Publicidad

Alipso.com
 

Monografías

Examenes

Enlaces

Publicar material o sitio

Foros

ABC del estudio

Diversión

  Buscar material sobre...
Todas las palabras Cualquier palabra Frase Exacta
El sitio en el que encontrás
todo el material que buscás.

   

Enlaces recomendados
   

Material relacionado
 

Material educativo de Alipso relacionado con particion grafo

  • El programa Quicksort y funciones.: FUNCION PARTICION, PROGRAMA QUICKSORT, PROCEDIMIENTO PERFIL.
  • El periodismo en la Revolución de Mayo: El telégrafo. La Gazeta de Buenos Aires. 25 de Mayo de 1810. Periodismo en la Revolución.
  • Saber ver cine: Resumen Cómo ver (y escuchar) el cine mudo,  Del cinematográfo al cine: el nacimiento de un lenguaje.
  • El renacimiento.: EL arte italiano del siglo Xv, El desarrollo arquitectónico de Brunellescui, LA bipartición simetrica.


  • Enlaces externos relacionados con particion grafo
  • Jules Perrot Bailarín y coreógrafo francés(1810-1892)
  • Juan de la Cosa Marino, conquistador y cartógrafo español(1449-1
  • Leonid Massine Bailarín y coreógrafo estadounidense de origen ru
  •  

    Publicidad
       

    Monografías
      k partición de un grafo.
    Explicación del problema, Definición formal del problema, Representación del problema, Solución propuesta, Respecto a temas de investigación relacionados, Conclusiones.

    Agregado: 29 de AGOSTO de 2000 | Palabras: 2972 | Votar! | Sin Votos | Sin comentarios | Agregar Comentario
    Categoría: Apuntes y Monografías > Computación > Varios >

      Imprimir Recomendar a un amigo Recordarme el recurso Descargar como pdf

    Universidad Técnica Federico Santa María

    Departamento de Informática

    Inteligencia Artificial

     

     

     

     

     

     

     

     

     

     

     

     

    Trabajo de Investigación

    “k partición de un grafo”

     

     

     

     

     

     

     

     

     

    Daniel Prieto

     

     

     

    Valparaíso, Noviembre de 1999
    Introducción

     

                En el ámbito de la solución a situaciones reales por medio de algoritmos basados en técnicas de Inteligencia Artificial, para todos es claro que nadie a dicho la “última palabra” en materia de eficacia y robustez de algoritmos.  Lo anterior se debe a la “peculiaridad” que cada situación representa en la realidad, porque cada una de ellas tiene sus propias “variables” las cuales determinan lo que podría o no modificarse, y además, cada una de estas  variables tiene su propio rango de acción; su propio dominio definido.

     

                Existen innumerables situaciones que eventualmente se podrían implementar usando un algoritmo de los descritos anteriormente.  En el informe anterior, explicamos una situación característica de los grafos, un típico problema de resolución en tiempo NO polinomial.  Este consistía en que dado un grafo determinado con arcos conectados, hacer una “bipartición” de este con en dos “subgrafos” con el mismo número de nodos cada uno con el propósito de minimizar la cantidad de arcos que relacionarían ambos subgrafos.  No cabe duda que, como se ejemplificó en el informe anterior, esto tiene un sinnúmero de posibles usos.  En vista de lo estudiado anteriormente, discutimos esto con el profesor guía del tema y hemos llegado a la conclusión de que esta “aplicación” es un caso específico de otro aun más general.

     

    Por lo anteriormente estipulado las aplicaciones de este nuevo caso, aun más general, serían mucho más grandes sin perder de vista la especificación de las variables mencionadas en el inciso anterior.

     

    A continuación el informe de la “nueva” aplicación.


    Explicación del problema

     

    En esta oportunidad tengo en el tapete el mismo grafo solicitado en el informe anterior, solo que esta vez lo dividí  no en 2 subgrafos, sino que en “k” subgrafos diferentes.  Además de esto los arcos tienen un peso, una ponderación, que les da un cierto orden entre los de su especie.

     

    Ahora bien, a manera de recordatorio, el objetivo principal propuesto en e el informe anterior para ese ejemplo específico, era particionar un grafo en 2 (con una cantidad de nodos cada uno) y minimizar el número de arcos de conexión entre ambos subgrafos(ver figura).


     

     

     


    Como lo mencioné en la introducción, este problema básicamente fue descartado debido a que nos dimos cuenta de que su aplicación era bastante limitada.  Optamos mejor por expandir las fronteras y observar hasta donde podríamos llegar en la realidad y sin duda que existen otras aplicaciones con una capacidad de abarcar un rango más amplio de situaciones reales.

     

    Partición de grafos en “k” subgrafos

     

    Si yo decido dividir el grafo en “k” subgrafos con un numero determinado de nodos cada uno, y definimos un valor de k=2, entonces tenemos el caso anterior, siempre y cuando el objetivo final sea minimizar el número de arcos que conectan ambos subgrafos.

     

    Ahora modificare más aun el problema dedicándonos al objetivo en sí.  Según preví, la situación da para muchas interpretaciones desde el punto de vista de que es lo que se desea.  Por esto a continuación doy unos cuantos puntos de vista de que es lo que se desea hacer con un grafo determinado después de haberlo particionado en “k” subgrafos con el mismo número de nodos cada uno.

     

    §         Nodos con un peso específico y los arcos sin peso: si se desea buscar un objetivo claro a este planteamiento,  podríamos decir que queremos un parcelamiento de los k subgrafos con el fin de obtener subgrafos con el mismo peso, quizás con la intención de generar una especie de equilibrio del grafo e general.  No me convence esta visión del problema porque aparte de ser muy difícil de encontrarle una utilidad real, no presenta mayor dificultad de resolución.

    §          

    §         Nodos con un peso específico al igual que los arcos del grafo: esta situación es sin duda más compleja que la anterior. Lo principal es fijarse en que es lo que realmente nos interesa, o bien un objetivo basado directamente en los nodos(como el caso anterior) o bien basado en los arcos del grafo.  Si nos situamos en los nodos como referencia no tenemos mucho que portar.  Pero si no situamos en los arcos podríamos darnos cuenta que el peso de los nodos no hacen más que entorpecer la funcionalidad de un objetivo sobre los arcos, por esto se eligió solo pesos de arcos, ya que pesos sobre nodos sería una caso específico del caso con arcos con peso.

    §         Nodos sin peso y arcos con un peso específico:  este es el caso que más adecuado me pareció debido a que tiene una mayor cantidad de aplicaciones prácticas, y tiene un objetivo claro y de óptimas condiciones para aplicar una técnica de algoritmo inteligente.

     

    Descripción del problema en detalle(nodos sin peso y arcos con un peso específico)

     

    Hasta el momento tenemos claro ciertos aspectos del problema.  Retomando, dije que tenemos un grafo con “n” nodos.  Este es un grafo completamente conexo en el cual los arcos tienen un peso específico.

     

    Dadas las anteriores características podemos formalizar aun más la situación y expondré que el principal objetivo es dividir el grafo en “k” subgrafos con una cantidad de nodos diferentes, y la condición principal es que los arcos entre los subgrafos.(ver figura)

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     


                ¿Porque IA para este tipo de problemas?

     

     

                Este tipo de problemas tal y como se describió acá, es un tipo de problemas que se resuelve en tiempo NO polinomial(problema de tipo NP).  A medida que crece el número de variables, el tiempo de resolución total aumenta en forma exponencial.  Generalmente esto ocurre en gran medida para problemas de optimización.  En cambio, si este fuese un problema de satisfacción de  restricciones solamente, a pesar de que se trata con heurísticas parecidas, es más probable que se llegue a la solución más rápidamente que con el otro método que además de pedir una solución, pide la óptima.

     

                Si se intentara resolver esto con métodos tradicionales existentes, el problema radicaría en como representar las restricciones adecuadamente.  Las restricciones varían de acuerdo a la especificación del problema, entonces, si yo quisiese implementar una solución a esta situación debo basarme necesariamente en su especificidad: sus restricciones.

     

                Por otro lado, como abordé esta situación con una técnica de IA tuve que adaptar la metodología y así generar un algoritmo robusto SOLO para problemas como los míos.  Lo que hice fue hacer una mezcla de Hill Climbing con restart incluido y algo Algoritmo voraz todo esto para darle más eficacia a el método resolutivo.

     


    Definición formal del problema

     

    A continuación el Objetivo, variables, dominios, restricciones y función objetivo del problema planteado.

     

    Objetivo

    Dado un grafo de “n” nodos completamente conexo y sus arcos con un peso determinado.  El objetivo es dividir el grafo K subgrafos.  Todos estos subgrafos deben tener incorporados a lo menos 2 nodos y a lo más el doble de los nodos que habría de existir en cada subgrafo si se divide el grafo total en K subgrafos de igual cantidad de nodos.  La principal idea y final es que estos subgrafos al quedar conectados entre sí por arcos, tengan el menor grado de cohesión posible, es decir, que los arcos que unen los subgrafos pesen lo menos posible y de esa manera poder evitar una cierta “dependencia trascendental” entre ellos.

     

     

     

     

     

    Variables

     

    En cuanto a la información de los nodos

     

    Xif :representa al nodo i que pertenece al subgrafo f

    i = {1,2,3,... ,n}

    f = {1,2,3,... ,l}

    l : # total de grafos

    n: # total de nodos

               

    En cuanto a la información de los arcos

     

                pij :representa al peso o ponderación del arco que sustentan los arcos “i” y “j”

    i = {1,2,3,... ,n}

    j = {1,2,3,... ,n}

               

     

     

    Dominios

     

               

                                                               Estos son pesos discretos entre 1 y 100

     

     

     

     

               

     

    ,si el nodo “i” NO pertenece al subgrafo “j”

     

    ,si el nodo “i”  SI pertenece al subgrafo “j”

     

               

    Restricciones

     

                Básicamente la única restricción trascendental es que hay un número mínimo y máximo de nodos pertenecientes a cada subgrafo, a continuación las definiciones formales.

     

     

    Vemos que la cantidad máxima de nodos, sumadas todas las variables, es “n”

     

     

     

    Donde “l” es el número promedio de nodos por subgrafo si se desea una partición de “k” subgrafos sobre un total de “n” nodos.

     

     

    Para un determinado subgrafo “f” la cantidad de nodos esta limitada por “abajo” con 2 y “arriba” con 2l.  Esto para no disparar la cantidad de nodos agrupada.

     

     

    La función objetivo

               

    Esta función objetivo como ya se señaló en una oportunidad pretende minimizar los arcos de conexión entre subgrafos.  Lo anterior es equivalente a analizar su complemento también, o sea, intentar maximizar el peso de los arcos que pertenecen a un subgrafo.  Por lo tanto la función objetivo sería la siguiente