viernes, 14 de enero de 2011

Programación dinamica

PROGRAMACIÓN DINÁMICA
La programación dinámica es un enfoque general para la solución de problemas en los que es necesario tomar decisiones en etapas sucesivas. Las decisiones tomadas en una etapa condicionan la evolución futura del sistema, afectando a las situaciones en las que el sistema se encontrará en el futuro (denominadas estados), y a las decisiones que se plantearán en el futuro.
Conviene resaltar que a diferencia de la programación lineal, el modelado de problemas de programación dinámica no sigue una forma estándar. Así, para cada problema será necesario especificar cada uno de los componentes que caracterizan un problema de programación dinámica.
El procedimiento general de resolución de estas situaciones se divide en el análisis recursivo de cada una de las etapas del problema, en orden inverso, es decir comenzando por la última y pasando en cada iteración a la etapa antecesora. El análisis de la primera etapa finaliza con la obtención del óptimo del problema.
10.1 MODELOS DE PROGRAMACIÓN DINÁMICA
Existen tres modelos diferentes manejados por WINQSB.
* Problema de la diligencia (Stagecoach Problem)
* Problema de la mochila (Snapsack Problem)
* programación de producción e inventarios (Production and Inventory Scheduling)
10.2 EL PROBLEMA DE LA DILIGENCIA
Ejemplo 10-1:
Considérese el gráfico que contempla las rutas posibles para ir desde la ciudad 1 hasta la ciudad 10. Cada nodo representa una ciudad y los arcos la infraestructura vial disponible. La tabla recoge el costo asociado al desplazamiento entre cada par de nodos para cada una de las etapas. Supondremos que todos los desplazamientos tienen la misma duración, y que el viaje ha de realizarse en cuatro etapas. Cada una de ellas se corresponde con un único desplazamiento entre un par de nodos del grafo, así al finalizar la primera etapa estaremos en una de las ciudades 2, 3 ó 4. La segunda etapa finalizará en la ciudad 5, la número 6 ó la número7. La tercera jornada nos llevará a la ciudad 8 o a la número 9. La cuarta etapa permite finalizar el viaje en la ciudad 10.
10.3 TERMINOLOGÍA Y NOTACIÓN BÁSICA
Períodos o etapas: Sea N= {1, 2,....., n} un conjunto finito de elementos. Mediante el índice , representamos cada uno de ellos. N es el conjunto de períodos o etapas del proceso. En la ilustración anterior N= {1, 2, 3, 4}, las cuatro etapas del viaje, cada una de ellas es un período y se representa mediante un valor del índice n, así cuando n =1 nos estamos refiriendo a la primera etapa del proceso.
Espacio de estados: { } es una familia de conjuntos, uno para cada período n. S se denomina espacio de estados en el período n. Cada uno de sus elementos, que se representa mediante Sn, es un estado, que describe una posible situación del proceso en ese período. En nuestro ejemplo, S1 = {1}, S2= {2, 3, 4}, S3= {5, 6, 7}, S4= {8, 9}.
La función recursiva: Dados unos nodos y unos arcos que conectan estos nodos, el problema de la diligencia intenta encontrar la ruta más corta que conecta un nodo de arranque con el nodo final (el destino).
Sea s: el estado de inicio; j: estado destino
* n: la fase, normalmente representa el número de arcos hasta el destino.
* C(s,j): costo o distancia de ir desde s hasta j.
* f(n,s): la política de costo mínimo cuando se encuentra en el estado s de la etapa n.
La relación recursiva dinámica se expresa como
f(n,s) = mínimo [C(s,j) + f(n-1,,j)] para todos los arcos ( s,j) en la red
10.4 INGRESANDO EL PROBLEMA AL WINQSB
El problema contiene 10 nodos claramente identificados:
Al pulsar OK podremos ingresar el resto de información, el cual se basa en las relaciones existentes entre los nodos:
Los valores van de acuerdo a la red establecida en el problema:
Para resolver el problema pulsamos la opción Resolver el problema (Solve the Problem) del menú Resolver y analizar (Solve and Analyze).
La ventana siguiente permite identificar los nodos de inicio y fin:
Al pulsar SOLVE generamos la solución al problema:
Si queremos una solución detallada debemos pulsar sobre Mostrar solución detallada (Show Solution Detail) en el menú Resultados (Results):
10.5 PROBLEMA DE LA MOCHILA O CANASTA DE EQUIPAJE
La idea básica es que existen N tipos distintos de artículos que pueden cargarse en una mochila; cada artículo tiene asociados un peso y un valor. El problema consiste en determinar cuántas unidades de cada artículo se deben colocar en la mochila para maximizar el valor total. Nótese que este enfoque resulta útil para la planificación del transporte de artículos en algún medio, por ejemplo: carga de un buque, avión, camión etc. También es utilizable este modelo en planificación de producción, por ejemplo enrutamiento de la producción a través de varias máquinas.
Ejemplo 10-2:
La carga de un avión se distribuye con el propósito de maximizar el ingreso total. Se consideran 5 elementos y sólo se necesita uno de cada uno. La compañía gana 5000 u.m. por elemento más una bonificación por elemento. El avión puede transportar 2000 libras.
Elemento Peso, lb Volumen, pies3 Valor bonificación 1 1000 70 700 2 1100 100 800 3 700 100 1100 4 800 80 1000 5 500 50 700a) ¿Cuáles elementos deben transportarse?
b) Si se considera un volumen máximo de 200 pies cúbicos. ¿cuáles elementos deben transportarse?
El problema se desarrolla bajo las dos consideraciones, primero teniendo en cuenta el peso y luego el volumen. Como puede apreciarse este es un problema que bien podría resolverse por programación lineal entera teniendo en cuenta la función objetivo y restricciones siguientes:
Siendo xj el elemento j a transportar.
Para el caso del volumen se reformaría la primera restricción cambiando los coeficientes por los volúmenes de los ítems.
Sea j: la variable que representa el artículo:
* x(j): el número de unidades el número de unidades cargadas del artículo j
* w(j): el espacio o el peso que demanda cada unidad del artículo j
* R(j,x(j)): la función del retorno del artículo j si se llevan x(j) unidades en la mochila, del artículo j
* g(j,w): retorno del total acumulativo dado el espacio w disponible para el artículo j
La relación recursiva dinámica se expresa como:
g(j,w) = máximo {R(j,x(j)) + g[j-1,w-w(j)x(j)]} para todo posible x(j)
Ahora ingresemos los datos al WINQSB:
La entrada de datos queda como sigue.
Al resolver el problema tenemos:
La solución nos indica que se deben transportar los ítems 3, 4 y 5 con un retorno total de 17800 u.m. y utilización plena de la capacidad (en peso), disponible del avión. Teniendo en cuenta sólo el volumen, el nuevo modelo es:
La solución es:
10.6 PROGRAMACIÓN DE PRODUCCIÓN E INVENTARIOS
El problema consiste en determinar un programa de producción para un periodo de tiempo con el fin de minimizar los costos totales relacionados. Hay demandas conocidas para cada periodo, límites de capacidad tanto para la producción como para los inventarios (almacenamiento). Cuando hay más producción que demanda, se acumula inventario, y cuando la producción es menor que la demanda, se generarán retrasos en el cumplimiento de pedidos (backorder). Para cada periodo, una producción no-cero incurre en un costo de preparación. En programación dinámica, el costo variable se expresa como una función de la producción (P), el inventario (H), y backorder (B).
Sea:
* P(n): el número de unidades producidas en el periodo n
* D(n): la demanda en el periodo n
* H(n): el inventario disponible al final del periodo n
* B(n): el backorder al final del periodo n
* I(n): la posición del inventario al final del periodo n, es decir, I(n) = H(n) o I(n) =B(n)
I(n) = I(n-1) + P(n) - D(n)
* S(n): el costo de preparación en el periodo n
* V (P(n), I(n)): el costo variable = función de P(n), H(n), y/o B(n)
* C(n,P(n),I(n)): = S(n) + V(P(n),I(n)) si P(n)>0, = V(P(n),I(n)) si P(n)=0
* f(n,i): costo total acumulativo dado el nivel del inventario inicial i para el periodo n
La relación recursiva dinámica se expresa como:
f(n,i) = máximo {C(n,P(n),i+P(n)-D(n)) + f(n-1,i+P(n)-D(n))} para todo posible P(n).
Ejemplo 10-3:
La tabla muestra los datos del siguiente problema de producción e inventario: la demanda para los meses de enero, febrero, marzo y abril es de 4, 5, 3 y 4 unidades, respectivamente. Las capacidades de producción son de 6, 4, 7, y 5 unidades; las capacidades de almacenaje son 4, 3, 2 y 4 unidades respectivamente. Los costos de preparación varían de un mes a otro y son: 500, 450, 500 y 600 u.m. para enero, febrero, marzo y abril.
Mes Costos Demanda Capacidad de producción Capacidad de Almacenamiento Enero 500 4 6 4 Febrero 450 5 4 3 Marzo 500 3 7 2 Abril 600 4 5 4Determinar un programa de producción con el fin de minimizar los costos totales relacionados.
Al igual que en los ejercicios anteriores, se procede a ingresar los datos:
La tabla inicial permite ingresar los datos expuestos en el ejemplo.
La ventana debería quedar como sigue:
La solución del problema es:
Las cantidades a producir mostradas en la tabla son de tal forma que permiten un costo mínimo en la planeación: se deben producir 5, 4, 3 y 4 unidades para los meses de enero, febrero, marzo y abril respectivamente. El costo total es de $7080, dividido en $2050 por concepto de costos de preparación y $5030 de costos variables. La tabla también muestra el juego de inventarios resultante de la producción y la demanda mensuales.

Programación lineal

Programación lineal
La Programación Lineal es un procedimiento o algoritmo matemático mediante el cual se resuelve un problema indeterminado, formulado a través de ecuaciones lineales, optimizando la función objetivo, también lineal.
Consiste en optimizar (minimizar o maximizar) una función lineal, que denominaremos función objetivo, de tal forma que las variables de dicha función estén sujetas a una serie de restricciones que expresamos mediante un sistema de inecuaciones lineales.
Historia de la programación lineal
El problema de la resolución de un sistema lineal de inecuaciones se remonta, al menos, a Fourier, después de quien nace el método de eliminación de Fourier-Motzkin. La programación lineal se plantea como un modelo matemático desarrollado durante la Segunda Guerra Mundial para planificar los gastos y los retornos, a fin de reducir los costos al ejército y aumentar las pérdidas del enemigo. Se mantuvo en secreto hasta 1947. En la posguerra, muchas industrias lo usaron en su planificación diaria.
Los fundadores de la técnica son George Dantzig, quien publicó el algoritmo simplex, en 1947, John von Neumann, que desarrolló la teoría de la dualidad en el mismo año, y Leonid Kantoróvich, un matemático ruso, que utiliza técnicas similares en la economía antes de Dantzig y ganó el premio Nobel en economía en 1975. En 1979, otro matemático ruso, Leonid Khachiyan, demostró que el problema de la programación lineal era resoluble en tiempo polinomial. Más tarde, en 1984, Narendra Karmarkar introduce un nuevo método del punto interior para resolver problemas de programación lineal, lo que constituiría un enorme avance en los principios teóricos y prácticos en el área.
El ejemplo original de Dantzig de la búsqueda de la mejor asignación de 70 personas a 70 puestos de trabajo es un ejemplo de la utilidad de la programación lineal. La potencia de computación necesaria para examinar todas las permutaciones a fin de seleccionar la mejor asignación es inmensa; el número de posibles configuraciones excede al número de partículas en el universo. Sin embargo, toma sólo un momento encontrar la solución óptima mediante el planteamiento del problema como una programación lineal y la aplicación del algoritmo simplex. La teoría de la programación lineal reduce drásticamente el número de posibles soluciones óptimas que deberán ser revisadas.
Variables
Las variables son números reales mayores o iguales a cero. \ X _i >= 0
En caso que se requiera que el valor resultante de las variables sea un número entero, el procedimiento de resolución se denomina Programación entera.
Restricciones
Las restricciones pueden ser de la forma:
Tipo 1: A_j = \sum_{i=1}^N a_{i,j} \times X_i
Tipo 2: B_j \leq \sum_{i=1}^N b_{i,j} \times X_i
Tipo 3: C_j \geq \sum_{i=1}^N c_{i,j} \times X_i
Donde:
  • A = valor conocido a ser respetado estrictamente;
  • B = valor conocido que debe ser respetado o puede ser superado;
  • C = valor conocido que no debe ser superado;
  • j = número de la ecuación, variable de 1 a M (número total de restricciones);
  • a; b; y, c = coeficientes técnicos conocidos;
  • X = Incógnitas, de 1 a N;
  • i = número de la incógnita, variable de 1 a N.
En general no hay restricciones en cuanto a los valores de N y M. Puede ser N = M; N > M; ó, N < M.
Sin embargo si las restricciones del Tipo 1 son N, el problema puede ser determinado, y puede no tener sentido una optimización.
Los tres tipos de restricciones pueden darse simultáneamente en el mismo problema.
Función Objetivo
La función objetivo puede ser:

Max! = \sum_{i=1}^N f_{i} \times X_i
ó
Min! = \sum_{i=1}^N f_{i} \times X_i
Donde:
  • f = coeficientes son relativamente iguales a cero.
Programación entera
En algunos casos se requiere que la solución óptima se componga de valores enteros para algunas de las variables. La resolución de este problema se obtiene analizando las posibles alternativas de valores enteros de esas variables en un entorno alrededor de la solución obtenida considerando las variables reales.
Muchas veces la solución del programa lineal truncado esta lejos de ser el óptimo entero, por lo que se hace necesario usar algún algoritmo para hallar esta solución de forma exacta. El más famoso es el método de 'Ramificar y Acotar' o Branch and Bound por su nombre en inglés. El método de Ramificar y Acotar parte de la adición de nuevas restricciones para cada variable de decisión (acotar) que al ser evaluado independientemente (ramificar) lleva al óptimo entero.
Aplicaciones
La programación lineal constituye un importante campo de la optimización por varias razones, muchos problemas prácticos de la investigación de operaciones pueden plantearse como problemas de programación lineal. Algunos casos especiales de programación lineal, tales como los problemas de flujo de redes y problemas de flujo de mercancías se consideraron en el desarrollo de las matemáticas lo suficientemente importantes como para generar por si mismos mucha investigación sobre algoritmos especializados en su solución. Una serie de algoritmos diseñados para resolver otros tipos de problemas de optimización constituyen casos particulares de la más amplia técnica de la programación lineal. Históricamente, las ideas de programación lineal han inspirado muchos de los conceptos centrales de la teoría de optimización tales como la dualidad, la descomposición y la importancia de la convexidad y sus generalizaciones. Del mismo modo, la programación lineal es muy usada en la microeconomía y la administración de empresas, ya sea para aumentar al máximo los ingresos o reducir al mínimo los costos de un sistema de producción. Algunos ejemplos son la mezcla de alimentos, la gestión de inventarios, la cartera y la gestión de las finanzas, la asignación de recursos humanos y recursos de máquinas, la planificación de campañas de publicidad, etc.
Otros son:
  • Optimización de la combinación de diámetros comerciales en una red ramificada de distribución de agua.
  • Aprovechamiento óptimo de los recursos de una cuenca hidrográfica, para un año con afluencias caracterizadas por corresponder a una determinada frecuencia.
  • Soporte para toma de decisión en tiempo real, para operación de un sistema de obras hidráulicas;
  • Solución de problemas de transporte.
Caso curioso

http://es.wikipedia.org/skins-1.5/common/images/magnify-clip.png
Éste es un caso curioso, con solo 6 variables (un caso real de problema de transporte puede tener fácilmente más de 1.000 variables) en el cual se aprecia la utilidad de este procedimiento de cálculo.
Existen tres minas de carbón cuya producción diaria es:
  • La mina "a" produce 40 toneladas de carbón por día;
  • La mina "b" otras 40 t/día; y,
  • La Mina "c" produce 20 t/día.
En la zona hay dos centrales termoeléctricas que consumen:
  • La central "d" consume 40 t/día de carbon; y,
  • La central "e" consume 60 t/día
Los costos, de mercado, de transporte por tonelada son:
  • De "a" a "d" = 2 monedas
  • De "a" a "e" = 11 monedas
  • De "b" a "d" = 12 monedas
  • De "b" a "e" = 24 monedas
  • De "c" a "d" = 13 monedas
  • De "c" a "e" = 18 monedas
Si preguntáramos a una asamblea de pobladores de la zona, cómo organizar el transporte, con certeza, la gran mayoría opinaría que debemos aprovechar el precio ofrecido por el transportista que va de "a" a "d", porque es mucho más conveniente que los otros.
En este caso, el costo total del transporte seria:
  • Transporte de 40 t de "a" a "d" = 80 monedas
  • Transporte de 20 t de "c" a "e" = 360 monedas
  • Transporte de 40 t de "b" a "e" = 960 monedas
  • Total 1.400 monedas.
Sin embargo, formulando el problema para ser resuelto por la programación lineal tendríamos las siguientes ecuaciones:
  • Restricciones de la producción:
X_{a \to d} + X_{a \to e} \le 40
 [ \mbox{T/dia} ] \,\!
X_{b \to d} + X_{b \to e} \le 40
 [ \mbox{T/dia} ] \,\!
X_{c \to d} + X_{c \to e} \le 20
 [ \mbox{T/dia} ] \,\!
  • Restricciones del consumo:
X_{a \to d} + X_{b \to d} + X_{c \to d} \ge 40
 [ \mbox{T/dia} ] \,\!
X_{a \to e} + X_{b \to e} + X_{c \to e} \ge 60
 [ \mbox{T/dia} ] \,\!
  • La función objetivo será:
2X_{a \to d} + 11X_{a \to e} + 12X_{b \to d} + 24X_{b \to e} + 13X_{c \to d} + 18X_{c \to e} = Min!
La solución de costo mínimo de transporte diario resulta:
  • Xb-d = 40 resultando un costo de 12 x 40 = 480 monedas
  • Xa-e = 40 resultando un costo de 11 x 40 = 440 monedas
  • Xc-e = 20 resultando un costo de 18 x 20 = 360 monedas
  • Total 1.280 monedas.
Reflexiones que surgen del problema:
  1. Es discutible la conveniencia de tomar decisiones por consenso en cuestiones estrictamente técnicas;
  2. Es discutible la aplicación de la intuición en el caso de problemas con más de 4 variables;
  3. Una vez conocida la solución del problema lineal, generalmente le resulta casi evidente al analista que ésa es la solución correcta, si bien no la veía antes. 

Teoria de grafos

La teoría de grafos

Más tarde, otros problemas influyeron en el desarrollo de la teoría de grafos como el estudio de las redes eléctricas, la enumeración de isómeros de hidrocarburos,...
Hoy en día es rara la disciplina científica o humanística que no utiliza la teoría de grafos. Como ejemplos podemos citar la psicología en dinámica de grupos, la sociología en los sociogramas, la física teórica, que usa los diagramas de Feynmann, donde se representan mediante líneas las partículas elementales, el estudio de flujos en redes en programación lineal e investigación operativa, los cambios de variable en el cálculo diferencial...
Dibujar un grafo para resolver un problema es un reflejo muy común, que no precisa conocimientos matemáticos. Un grafo se parece a la figura siguiente, y consta de vértices y de aristas que reúnen algunos de ellos.
En la teoría de los grafos, sólo se queda lo esencial del dibujo: la forma de las aristas no son relevantes, sólo importan sus extremidades (o cabos); la posición de los vertices tampoco, y se puede variar para obtener un grafo más claro, y hasta sus nombres se pueden cambiar. Estos cambios se llaman isomorfismos de grafos. Generalmente, se considera que colocar los vértices en forma de polígono regular da grafos muy leíbles.

ejemplo de grafo
Formalmente: Un grafo es una pareja G = (V, A), donde V es un conjunto de puntos, llamados vértices, y A es un conjunto de pares de vértices, llamadas aristas. Para simplificar, la arista {a,b} se denota ab.

En la figura, V = { a, b, c, d, e, f }, y A = { ab, ac, ae, bc, bd, df, ef }.
Una red de autovías que conectan ciudades, una red elétrica, un alcantarillado se pueden modelizar con grafos.
grafo orientado
En algunos casos es necesario imponer un sentido a las aristas, por ejemplo si se quiere representar la red de las calles de una ciudad con sus inevitables direcciones únicas. Las aristas son entonces pares ordenados de vértices, con (a,b) ≠ (b,a), y se define así grafos orientados (figura a la izquierda).
En este grafo se ha autorizado una arista que tiene sus dos cabos idénticos: es un rizo (o bucle), y aparece también una arista sin flecha: significa que la arista se puede recorrer en cualquier sentido: es bidirreccional, y corresponde o dos aristas orientadas.
En el ejemplo, V = { a, b, c, d, e }, y A = { (a,c), (a,d), (a,e), (b,e), (c,a),(c,c), (d,b) }.
Del vértice d sólo salen aristas: es una fuente. Del vértice e sólo entran aristas: es un agujero, o pozo.
ciclo hamiltoniano
Un ciclo es un camino, es decir una sucesión de aristas adyacientes, donde no se recorre dos veces la misma arista, y donde se regresa al punto inicial. Un ciclo hamiltoniano tiene además que recorrer todas los vértices.
Por ejemplo, en un museo grande (al estilo del Louvre), lo idóneo sería recorrer todas las salas una sóla vez, esto es buscar un ciclo hamiltoniano en el grafo que representa el museo (los vertices son las salas, y las aristas los corredores o puertas entre ellas).
Se habla también de camino hamiltoniano si no se impone regresar al punto de partida, como en un museo con una única puerta de entrada.
Por ejemplo, un caballo puede recorrer todas las casillas de un tablero de ajedrez sin pasar dos veces por la misma: es un camino hamiltoniano. La figura muestra un ciclo hamiltoniano en el grafo del dodecaedro.
Hoy en día, no se conocen métodos generales para hallar un ciclo hamiltoniano.

grafo árbol
Un grafo que no tiene circuito y que conecta a todos los puntos, se llama un árbol.
En un grafo con n vertices, los arboles tienen exactamente n - 1 aristas, y hay nn-2 árboles posibles. Los árboles son grafos que conectan vertices utilizando el menor número posible de aristas, de ahí su interés concreto, por ejemplo en las líneas eléctricas o telefónicas.

En muchos casos, es preciso atribuir a cada arista un número específico, llamado valuación, ponderación o coste según el contexto, y se obtiene así un grafo valuado. Formalmente, es un grafo con una función v: A → R+.
Por ejemplo, un representante comercial tiene que visitar n ciudades conectadas entre si por carreteras; su interés previsible será minimizar la distancia recorrida (o el tiempo, si se pueden prever atascos). El grafo correspondiente tendrá como vértices las ciudades, como aristas las carreteras y la valuación será la distancia entre ellas. Y, de momento, no se conocen métodos generales para hallar un ciclo de valuación mínima, pero sí para los caminos desde a hasta b, sin más condición.
Otro problema famoso relativo a los grafos: ¿Cuántos colores son necesarios para dibujar un mapa político, con la condición obvia que dos países adyacientes no puedan tener el mismo color? Se supone que los países son de un solo pedazo, y que el mundo es esférico o plano. En un mundo en forma de toro; el teorema siguiente no es válido:
Teorema de los cuatro colores: Cuatro colores son siempre suficientes para colorear el un mapa.
http://enciclopedia.us.es/images/5/5e/Grafo_ejemplo_5_pa%C3%ADses.png
El mapa siguiente muestra que tres colores no bastan: Si se empieza por el país central a y se esfuerza uno en utilizar el menor número de colores, entonces en la corona alrededor de a alternan dos colores. Llegando al país h se tiene que introducir un cuarto color. Lo mismo sucede en i si se emplea el mismo método.

La forma precisa de cada país no importa; lo único relevante es saber cual país toca cual otro.
http://enciclopedia.us.es/images/6/69/Grafo_ejemplo_5_conexi%C3%B3n.png
Estos datos están incluidos en el grafo donde los vértices son los países y las aristas conectan los que justamente son adyacientes (figura derecha). Entonces la cuestión equivale a atribuir a cada vértice un color distinto del de sus vecinos.
Hemos visto que tres colores no son suficientes, y demostrar que con cinco siempre se llega, es bastante fácil. Pero el teorema de los cuatro colores no es nada obvio. prueba de ello es que se ha tenido que emplear los ordenadores para acabar la demostración (se ha hecho un programa que permitió verificar una multitud de casos, lo que ahorró muchísimo tiempo a los matemáticos). Fue la primera vez que la comunidad matemática aceptó una demostración asistida por ordenador.

http://enciclopedia.us.es/images/0/04/Grafo_ejemplo_6.png
Un juego muy conocido es el siguiente: Se dibuja tres casas y tres pozos. Los vecinos de las casas tienen todos el derecho de utilizar los tres pozos. Como no se llevan bien en absoluto, no quieren cruzarse jamás. ¿Es posible trazar los nueve caminos que juntan las tres casas con los tres pozos sin que haya cruces?
Pues no: cualquier disposición de las casas, los pozos y los caminos implica la presencia de al menos un cruce. Se nota Kn el grafo completo con n vértices, es decir en el cual cada par de vertices están conectadas por una arista. Kn,p es el grafo compuesto de un grupo de nvértices y otro de p, tal que cada vértice del primer grupo está conectado con cada del segundo, y no hay más aristas.
http://enciclopedia.us.es/images/f/f7/Grafo_ejemplo_7.png
El juego anterior equivale a descubrir si el grafo K3,3 es planario, es decir si se puede dibujar en un plano sin que haya cruces. Y la respuesta es no.
Establecer qué grafos son planarios no es obvio, y tiene que ver con la topología.
En la figura, se nota que K4 es planar (con tal de desviar la arista ab al exterior del cuadrado), que K5 no lo es en absoluto, y que K3,2 lo es también (desvíos en gris).
En un grafo, La distancia entre dos vértices es el menor número de aristas de un recorrido entre ellos. El diámetro, en una figura como en un grafo, es la mayor distancia entre dos puntos de la misma. El dimetro de los Kn es 1, y el de los Kn,p es 2. Un diametro infinito puede significar que el grafo tiene una infinidad e vértices o simplemente que no es conexo. También se puede considerar el diámetro promedio, como el promedio de las distancias entre dos vértices.
El mundo de Internet ha puesto de moda esa idea del diámetro: Si descartamos los sitios que no tienen enlaces, y escojamos dos paginas güeb al azar: ¿En cuántos cliques o clics se puede pasar de la primera a la segunda? El resultado es el diametro de la Red, vista como un grafo cuyos vértices son los sitios, y cuyas aristas son logicamente los enlaces.
En el mundo real hay una analogía: tomando al azar dos seres humanos del mundo, ¿en cuántos saltos se puede pasar de uno a otro, con la condición de sólo saltar de una persona a otra cuando ellas se conocen personalmente? Con esta definición, se estima que el diámetro de la humanidad es de ... ¡ocho solamente!
Este concepto refleja mejor la complejidad de una red que el número de sus elementos.