P. 1
Grafo bipartito

Grafo bipartito

|Views: 210|Likes:
Publicado porDugart Sanchez

More info:

Published by: Dugart Sanchez on May 11, 2012
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as DOCX, PDF, TXT or read online from Scribd
See more
See less

01/15/2013

pdf

text

original

Grafo bipartito

Un Grafo bipartito se denomina en Teoría de grafos a un grafo cuyos vértices se pueden separar en dos conjuntos disjuntos V1 y V2 y las aristas siempre unen vértices de un conjunto con vértices de otro:
  

no existe ninguna arista e = (x1,x2) ni e = (y1,y2)

Grafo bipartito completo K2,3 Siendo V el conjunto que contiene todos los vértices del grafo. El conjunto de todos los grafos bipartitos es denominado ; en particular, un grafo bipartito uniendo dos conjuntos, de m y n elementos, respectivamente, se denota por , o, simplemente, Km,n. Un grafo bipartito en el cual todos los elementos de V1 están unidos con todos los elementos de V2 se denomina bipartito completo Los grafos bipartitos suelen representarse gráficamente con dos columnas (o filas) de vértices y las aristas uniendo vértices de columnas (o filas) diferentes.

Por ejemplo: En este caso los vértices A. B y C (Subdivisión 1) están conectados con los vértices D y E (Subdivisión 2). Grafo bipartito completo Es igual que el grafo bipartito. de tal forma que cada uno de los vértices pertenecientes a ambas subdivisiones se encuentra conectado al resto de los vértices de la otra subdivisión. B y C. . a los vértices D y E. B y C y la otra.Grafos bipartitos Es aquel grafo que puede ser “dividido en dos partes” de tal forma que una de las partes del mismo tiene aristas en las que exclusivamente se conecta a los vértices de la otra parte. la diferencia es que cada vértice perteneciente a una subdivisión (parte) del grafo completo está conectada a todos los vértices de la otra subdivisión del grafo. Un ejemplo puede ser el siguiente: En este caso tenemos las aristas A-E. ya que no existen aristas entre E y D ni tampoco entre A. la primera parte contendría a los vértices A. Se podría dividir el grafo en dos partes. B-D y C-E. El grafo es bipartito.

Pero si por error habla primero el nieto que su. Problema Tu tarea es escribir un programa que pueda encontrar.Ordenamiento topológico (Topological Sort). de una vez por todas. Nadie se sorprende por tener cientos de hijos. donde la i-ésima línea contiene a la lista de hijos del i-ésimo . Sin embargo. pero nunca se puede formar un ciclo (o no se podrían estudiar estas materias). en apariencia más joven. por lo que un marciano puede tener sólo un padre o quizás diez. A esto se le conoce como ordenamiento topológico. Y pueden hacerlo en grupo. Entrada La primera línea en la entrada estándar contiene solo un número n. Y el problema se agrava porque un marciano no siempre conoce a todos sus padres (¡y ni se diga de sus abuelos!). se acostumbra cederles la palabra a los marcianos ancianos primero. Ellos pueden reproducirse cuando quieran y donde quieran. ya que un descendiente no puede hablar antes que un superior. Esto puede producir situaciones vergonzosas en el Consejo Planetario. seguido por los adultos. en la entrada existen exactamente n líneas. y topológico viene de Topología que es la rama de las matemáticas que estudia problemas geométricos no por la forma del objeto sino por la forma en que está conectado. Un ejemplo de cuando se dan este tipo de gráficas. un orden que garantice que todos los miembros del Consejo tengan la palabra antes que cualquiera de sus descendientes. Se tienen que tomar algunas materias antes que otras (materias seriadas). Los marcianos están acostumbrados a esto. abuelo. es en las materias de estudios superiores. encontrar este orden no es una tarea trivial. Además. se forma un tremendo escándalo. nos interesa encontrar una forma en que podamos acomodar los vértices en línea recta de tal forma que la dirección de los arcos siempre apunte hacia un mismo lado. Podemos utilizar cualquier forma de recorrer un árbol para encontrar el ordenamiento topológico. 1 ≤ n ≤ 100 — la cantidad de miembros del Consejo Planetario Marciano. por sus siglas en inglés). ya que estamos acomodando los vértices en cierto orden. Para respetar jerarquías y no ofender a nadie. los miembros del Consejo están numerados de 1 a n. De acuerdo a una tradición centenaria. pero es más conveniente utilizar una búsqueda en profundidad ya que es más fácil de implementar. después los jóvenes y así sucesivamente. Como no hay forma en que nos podamos regresar. Problema ejemplo Árbol Genealógico El parentesco entre marcianos es bastante confuso. Teniendo una gráfica acíclica dirigida (DAG. podemos ver a este tipo de gráfica en forma similar a un árbol. y para ellos es normal.

miembro. La variable n indica la . Si existen varias listas que cumplan las condiciones del problema. Ural: 1022 Solución: Necesitamos que tener a los marcianos ordenados de tal forma que cualquiera de ellos hable antes que sus descendientes. Salida La salida estándar debe contener en una sola línea una serie de números separados por un espacio en blanco. Código La declaración de variables la realizamos entre las líneas 1 y 4. La lista de hijos es una serie de números en orden arbitrario separados por espacios. y a las aristas como descendencia. la cual puede estar vacía. Siempre existirá por lo menos una de ellas. que representa el orden en que van a tomar la palabra los miembros del Consejo. Tomando a cada marciano como un vértice. La lista (incluso si está vacía) termina con un 0. puedes escribir cualquiera de ellas. tenemos que las aristas están dirigidas y no hay ciclos por la misma razón: no es posible que alguien sea ancestro de un ancestro.

es decir. Inicializamos el arreglo de visitados a false.1]= TRUE. Por adyacente en este caso estamos revisando si marciano actual tiene ascendencia. num[3. vis[4]= FALSE 4. num[2. vis[2]= FALSE 1. es una búsqueda en profundidad.cantidad de vértices. num[4.4]= TRUE. vis[2]= TRUE 5.5]= TRUE. num[4. vis[4]= TRUE Entrada: . num[2. i es para los ciclos y t la utilizamos para leer los vértices adyacentes. num[5.1]= TRUE.3]= TRUE. Como ya habíamos mencionado. Utilizamos el arreglo vis para saber si ya visitamos determinado vértice. En la función t_sort realizamos el ordenamiento topológico. Después leemos la descendencia de cada uno (líneas 19 a 24). En la línea 16 leemos la cantidad de vértices. Escribimos el número del vértice hasta el final para empezar desde las hojas hasta la raíz. vis[3]= FALSE write(2) 3.5]= TRUE. vis[2]= TRUE write(4) 3. num[2. y en las siguientes dos líneas buscamos sus vértices adyacentes. y m es la matriz de adyacencia. Caso ejemplo 5 0 4510 10 530 30 num[] 1 2 3 4 5 1 FALSE FALSE FALSE FALSE FALSE 2 TRUE FALSE FALSE TRUE TRUE 3 TRUE FALSE FALSE FALSE FALSE 4 FALSE FALSE TRUE FALSE TRUE 5 FALSE FALSE TRUE FALSE FALSE Desarrollo: v 1. desde quienes no tienen ascendencia (mayores) hasta quienes tienen más (menores). y realizamos un ordenamiento cada que encontremos un vértice sin visitar (que sería una vez por cada componente). vis[5]= FALSE 5. En la línea 9 marcamos el vértice como visitado. Entre las líneas 15 y 29 tenemos la parte principal del código.3]= TRUE.

write(5) write(3) write(1) Salida: 24531 Código en C Tiempo de ejecución .

001 0.001 218 0.015 1.Lenguaje Pascal C Tiempos [s] Memoria [Kb] Ejecución Mejor Mediana Peor 04-May-2006 0.001 162 Fecha Otros problemas .101 04-May-2006 0.

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->