viernes, 21 de mayo de 2010

Lo prometido es deuda...

Bueno como lo prometi, aqui estan algunas cosas y curiosidades que me plantearon despues de exponer la clase el día del jueves. Aqui pongo, el tema de kruskal en la deteccion de celulas cancerosas (aclaracion) y el video de la clase.
__________________________________________________________

Prueba "Kruskal - Wallis"
Bueno para empezar, en el proyecto 5 explique el algoritmo de Joseph Kruskal (MST). En la informacion que saque venia que tambien se puede usar en la deteccion de celulas cancerosas, me puse a investigar y encontre la prueba "Kruskal-Wallis".
Al principio se puede pensar que es lo mismo, pero la verdad es que no. Esta prueba fue hecha por William H Kruskal.
Segun creo, hubo un error de informacion debido a los apellidos, porque Joseph es hermano del matemático y estadista William Kruskal (autor de la Prueba de Kruskal-Wallis), y del matemático y físico Martin Kruskal (autor de las coordenadas de Kruskal-Szekeres), entonces, en la informacion que saque se pudo confundir los proyectos de los hermanos.

La prueba de Kruskal-Wallis es un método no paramétrico para probar si un grupo de datos proviene de la misma población. Intuitivamente, es idéntico al ANOVA con los datos reemplazados por categorías.

Si quieren informacion del metodo click AQUI

Ejemplo:
Relación entre las reservas de hierro maternas y del recién nacido

Material y métodos. Diseño transversal en el que se incluyó a 163 mujeres embarazadas y sus neonatos de término, derechohabientes del Hospital de Ginecología y Obstetricia número 15 del Instituto Mexicano del Seguro Social (IMSS) en Chihuahua, Chih., México. Se analizaron antecedentes maternos. Se determinaron niveles de hemoglobina, hematocrito y ferritina sérica en muestras maternas y de cordón umbilical. Se definieron reservas de hierro maternas de acuerdo a ferritina (µg /l): bajas £11.9, moderadas de 12 a 20 y normales ³20.1. Se utilizó la prueba de Kruskal Wallis para establecer diferencias entre grupos, ji cuadrada para diferencia de proporciones y r de Pearson para establecer la relación entre reservas de hierro maternas y del recién nacido.

Tengo que recalcar que no es un ejemplo de celulas cancerosas, pero se da a entender con esto que este metodo se utiliza para pruebas medicas y muy posiblemente se utilice para reconocer las celulas cancerosas
__________________________________________________________

El video del proyecto 5



aqui el video de la clase, perdonen la calidad de video, mi celular no es tan potente, pero espero que el audio se oiga bien.
__________________________________________________________

en la prueba kruskal - wallis la verdad es que no encontre mucha informacion, si alguien tiene mas informacion o piensa que la informacion aqui subida esta mal, hagamelo saber por medio de un comentario en esta entrada.

bueno es todo.
Saludos!

jueves, 20 de mayo de 2010

Ayuden porfa :D

Hola raza, bueno para pedirles un favor
yo subi los puntos extra el miercoles en la madrugada
por unos problemillas de conexion que tuve el lunes y martes

Les agradeceria si pudieran checar la entrada de Puntos Extra y luego ir a esta direccion
de las lista de correos:

http://groups.google.com.mx/group/algcomp/browse_thread/thread/87362d920dd39c06

y comentaran a su parecer, cuantos puntos extra me dan :D
__________________________________________________________

en otro tema, mas al rato subire algunas cosillas, engtre ellas tratare de buscar lo de
la ultilizacion del algoritmo de Kruskal en el reconocimiento de celulas cancerosas,
que la verdad me quede intrigado de como se utilizaria este algoritmo.

Saludos raza, comenten!
yo ahorita me paso a los blogs, porque tengo algunas
dudas con algunos temas
para que respondan!

miércoles, 19 de mayo de 2010

Proyecto 5 "Algoritmo de Kruskal"

Primero hay que empezar con algunas definiciones:

Árbol: Es un grafo en el que existe un único nodo desde el que se puede acceder a todos los demás y cada nodo tiene un único predecesor, excepto el primero, que no tiene ninguno. También podemos definir un árbol como:
o Un grafo conexo y sin ciclos.
o Un grafo sin ciclos y con n-1 aristas, siendo n el número de vértices.

Grado de un nodo: en un árbol es el número de subárboles de aquel nodo (en el ejemplo, el grado de v1 es 2 y de v2 1). Denominamos hojas en un árbol a los nodos finales (v3, v5 y v6).
Un árbol de máximo alcance : es aquel que obtenemos en un grafo conexo y sin ciclos.
Árbol de mínima expansión: Árbol de máximo alcance cuyo valor es mínimo, es decir, la suma de sus aristas es mínima.
______________________________________________________

Joseph B. Kruskal investigador del Math Center (Bell-Labs), que en 1956 descubrió su algoritmo para la resolución del problema del Árbol de coste total mínimo (minimum spanning tree - MST) también llamado árbol recubridor euclídeo mínimo. Este problema es un problema típico de optimización combinatoria, que fue considerado originalmente por Otakar Boruvka (1926) mientras estudiaba la necesidad de electrificación rural en el sur de Moravia en Checoslovaquia.

El objetivo del algoritmo de Kruskal es construir un árbol (subgrafo sin ciclos) formado por arcos sucesivamente seleccionados de mínimo peso a partir de un grafo con pesos en los arcos.



Algoritmo de Kruskal:

El algoritmo de Kruskal 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. Si el grafo no es conexo, entonces busca un bosque expandido mínimo (un árbol expandido mínimo para cada componente conexa). El algoritmo de Kruskal es un ejemplo de algoritmo voraz.

El algoritmo de Kruskal permite hallar el árbol minimal de cualquier grafo valorado (con capacidades). Hay que seguir los siguientes pasos:

1. Se marca la arista con menor valor. Si hay más de una, se elige cualquiera de ellas.
2. De las aristas restantes, se marca la que tenga menor valor, si hay más de una, se elige cualquiera de ellas.
3. Repetir el paso 2 siempre que la arista elegida no forme un ciclo con las ya marcadas.
4. El proceso termina cuando tenemos todos los nodos del grafo en alguna de las aristas marcadas, es decir, cuando tenemos marcados n-1 arcos, siendo n el número de nodos del grafo.

Complejidad del algoritmo

m el número de aristas del grafo y n el número de vértices, el algoritmo de Kruskal muestra una complejidad O(m log m) o, equivalentemente, O(m log n), cuando se ejecuta sobre estructuras de datos simples. Los tiempos de ejecución son equivalentes porque:

-m es a lo sumo n2 y log n2 = 2logn es O(log n).
-ignorando los vértices aislados, los cuales forman su propia componente del árbol de expansión mínimo, n ≤ 2m, así que log n es O(log m).

Aplicaciones:

La aplicación típica de este problema es el diseño de redes telefónicas. Una empresa con diferentes oficinas, trata de trazar líneas de teléfono para conectarlas unas con otras. La compañía telefónica le ofrece esta interconexión, pero ofrece tarifas diferentes o costes por conectar cada par de oficinas. Cómo conectar entonces las oficinas al mínimo coste total.

Otra aplicación menos obvia es que el árbol de coste total mínimo puede ser usado como solución aproximada al problema del viajante de comercio (traveling salesman problem), recuerde que encontrar la solución óptima a este problema es NP-completo. La manera formal de definir este problema es encontrar la trayectoria más corta para visitar cada punto al menos una vez. Nótese que si se visitan todos los puntos exactamente una vez, lo que se tiene es un tipo especial de árbol.
Pseudocodigo:

Entrada: Un grafo ponderado conexo con todos sus pesos diferentes.

i : = 1;

N := tamaño del grafo de Entrada en número de vértices;



mientras (i < style="font-weight: bold;">Ejemplo:





Este es el grafo original. Los números de las aristas indican su peso. Ninguna de las aristas está resaltada.








AD y CE son las aristas más cortas, con peso 5, y AD se ha elegido arbitrariamente, por tanto se resalta.









Sin embargo, ahora es CE la arista más pequeña que no forma ciclos, con peso 5, por lo que se resalta como segunda arista.








La siguiente arista, DF con peso 6, ha sido resaltada utilizando el mismo método.









La siguientes aristas más pequeñas son AB y BE, ambas con peso 7. AB se elige arbitrariamente, y se resalta. La arista BD se resalta en rojo, porque formaría un ciclo ABD si se hubiera elegido.







El proceso continúa marcando las aristas, BE con peso 7. Muchas otras aristas se marcan en rojo en este paso: BC (formaría el ciclo BCE), DE (formaría el ciclo DEBA), y FE (formaría el ciclo FEBAD).








Finalmente, el proceso termina con la arista EG de peso 9, y se ha encontrado el árbol expandido mínimo.





Como se puede apreciar, este algoritmo es de optimizacion, ya que saca un coste minimo vistando a todos los nodos. Puede usarse para el problema del viajante.

Algoritmo de Kruskal


ejemplo del algoritmo en la web
para probarlo click AQUI

Para descargar la diapositiva de la clase click AQUI

_____________________________________________________
Autoevaluacion:
Pues este tema me gusto desde el principio, puesto que en proyecto 2 habia hecho el problema del transbordo con costos, y se parece.
De este algoritmo hay mucha informacion en la web, pero creo que pude redactarla en un modo mas entendible.
Creo que si me esforce en cumplir el cometido del blog, ya seran ustedes los que juzguen...
______________________________________________________
Bibliografia:
http://es.wikipedia.org/wiki/Joseph_Kruskal
http://es.wikipedia.org/wiki/Algoritmo_de_Kruskal
http://lear.inforg.uniovi.es/ioperativa/TutorialGrafos/minimaexp/kruskal/appletKruskal.htm
(programa del algoritmo de kruskal en la web)
'http://www.dma.fi.upm.es/gregorio/grafos/primkruskal/kruskal/kruskal.html
http://www.monkers.net/examenes/EDA/practica2.pdf
______________________________________________________
bueno espero que les haya gustado el tema, si tienen algunas preguntas o simplemente comentar algo, no duden en hacerlo.

Puntos Extra (examen) FAIL

Problema No. 1

Represente este pseudocodigo en un diagrama de flujo

Bueno aqui yo lo trate de hacer en raptor para que el programa corriera y me quedo como resultado este diagrama de flujo.
Que hace exactamente?
Pues la funcion del pseudocodigo y que esta representado en el diagrama, es saber si un numero es primo o no. Para esto tiene diferentes funciones el diagrama, tratare de explicar una por una:

Cuando se inicia el programa, se pide un valor "n"cualquiera. Este sera evaluado por la primera condicion: ((n%2)==0)
esto quiere decir, se saca ((n modulo 2)==0), si el resultado del numero n introducido es 0 entra por la parte verdadera donde la condicion
sera que si el residuo de la condicion anterior es 2 entonces el numero no es primo, si no es 2, es primo.

Cuando el ((n modulo 2)==0) sea falso, entrara a otras instrucciones. Al principio de las instrucciones se añade un valor i y este sera igual a 3. Luego se evalua un while con la condicion i<=raiz(n) (en raptor se escribiria: i>=sqrt(n) ). Si esta condicion es verdadera se evaluara
la condicion ((n%i)==0) que evaluaria ((n modulo 3)==0). Si esta condicion se cumple imprime un "no"y si no se cumple va le va sumando a i (3) 2 numeros hasta que se deje de cumplir la expresion i>=sqrt(n). Si al final se deja de cumplir esta condicion se imprimira un "si".
Ejecucion paso a paso.

Tratare de explicar 2 ejecuciones: evaluando 4 y 17

Evaluando numero 4

InicioSe introduce el numero 4
Se cumple la primera condicion del if,quedaria ((4%2)==0)
Entra por la parte verdadera
Se evalua ùn if con la siguiente condicion (4==2)
Como el 4 no es igual a 2 el resultado es Falso
Entra por la parte falsa
Imprime un "no"Fin

Evaluando el numero 17

Inicio
Se introduce el numero 17
No se cumple la primer if con la condicion ((17%2)==0)
Entra por la parte falsaSe añade el valor "i" que es igual a 3
Se evalua un while con la condicion 3<=raiz(17), la afirmacion es verdadera ya que raiz(17)=4.1 y 3 es menor Entra por la parte verdadera Evalua un if con la siguiente condicion ((17%3)==0), esta afirmacion es falsa Se suma 3+2=5 Se evalua la condicion 5<=raiz(17), la afirmacion es falsa ya que 5 es mayor a 4.1 Sale del while Imrpime si Fin tambien aqui dejo un video del diagrama de flujo en raptor, donde se evaluan tres numero que son el 3, 4 y 17. Si quieren descargar el programa click aqui



________________________________________________________

Problema No. 3
Ejecuta paso por paso la máquina Turing definida por la siguiente función de
transición, con la entrada siendo la representación binaria del número decimal 43
Primero que nada, avaluaremos el numero binario para 43, para eso vamos dividiendo el numero de 2 en 2
43/2= 26 residuo 1
26/2= 13 residuo 0
13/2= 6 residuo 1
6/2= 3 residuo 0
3/2=1 residuo 1
1/2= 0 residuo 1

y quedaria el numero binario 101011
Conforme a las instrucciones evaluamos

iniciamos s, inicio
s, inicio - nos movemos hacia la derecha
leemos s,1 - imprimimos 1 y avanzamos hacia la derecha (no hay modificaciones)
leemos s,0 - imprimimos 0 y avanzamos hacia la derecha (no hay modificaciones)
leemos s,1 - imprimimos 1 y avanzamos hacia la derecha (no hay modificaciones)
leemos s,0 - imprimimos 0 y avanzamos hacia la derecha (no hay modificaciones)
leemos s,1 - imprimimos 1 y avanzamos hacia la derecha (no hay modificaciones)
leemos s,1 - imprimimos 1 y avanzamos hacia la derecha (no hay modificaciones)
leemos s, espacio - cambiamos estado "s" a "t", imprimimos 1 y avanzamos hacia la izquierda (si hay modificaciones)
leemos t,1 - imprimimos 1 y avanzamos hacia la izquierda (no hay modificaciones)
leemos t,1 - imprimimos 1 y avanzamos hacia la izquierda (no hay modificaciones)
leemos t,1 - imprimimos 1 y avanzamos hacia la izquierda (no hay modificaciones)
leemos t,0 - imprimimos si y hacemos alto.

(perdonen la tabla mal hecha)

el numero de salida seria 1011111 que seria igual a 95

Lo que hace la maquina es multiplicarse por 2 a agrega un 1 de suma y un 1 en el lugar del 8 (se suma 8, dando (43x2)+8+1=95 )

La complejidad asintotica es lineal O(n).
________________________________________________________