lunes, 14 de octubre de 2013

Razonamiento del sentido Comun (Reasoning Common Sense)


Unas observaciones, de la excelente presentacion de CYC en Google Tech 2006 denominada 
"Computers versus Common Sense".

enlace http://www.youtube.com/watch?v=gAtn-4fhuWA 


La conferencia fue hecha en el 2006, por lo cual hay puntos señalados que no tienen validez en la actualidad, como que Google no te da respuestas concretas a algunas de tus pregunta. Ya que actualmente, pones en Google “President of Cuba” y Google te muestra una tarjeta con el nombre del presidente de Cuba.
Otro punto es que, según el ejemplo que dio del perro y la madre, que dice:

El perro de mi mama murió.

Y el programa le preguntó: háblame mas sobre su madre; porque era lo único que sabía.
Pues la razón que pase eso, a mi manera de ver, es que, el programa que recibe la pregunta, si desconoce un concepto, debería preguntárselo al usuario y así, el programa tener el concepto del usuario. Y poder inferir conocimiento.
Por ejemplo:
Si el software no sabe que es dog, el preguntaría:
Perdóname, no se lo que es dog.¿Me podrías definirlo?

De esa manera podría crear definiciones de cosas con los usuarios, uno a uno y de esa manera para un usuario tendrías una definición, sin embargo podrías usar esa misma definición para la definición general, cogiendo lo común que cada uno dice o al menos la unión. O podría ser como un nCaptcha. De esa manera estamos enseñando a las maquinas hacer y saber las cosas.
Dicho lo anterior, el principal problema parece venir de que no se sabe trabajar con lo desconocido, y eso es lo que la maquina debe saber preguntar. Como saber sobre lo desconocido.
Si usas un sistema estático, creo que resultaría sencillo, porque al final, si tienes el conocimiento representado con un numero finito de propiedades, pp1, pp2, ... ,ppN, entonces las preguntas serian de acuerdo a esas propiedades. Digo sistema estático a un sistema donde la cantidad de propiedades que se trabajan son fijas y son las mismas.
Por ejemplo:

Dime la descripción, dime el nombre, etc.


Todas estas preguntas es sobre lo desconocido. Como es estático, se podría hacer un estudio mas detallado de cuales propiedades depende una de otras, cuales preguntar primero, etc.

Ahora si se trabaja con un sistema dinámico, o sea, que la cantidad de propiedades no es fija, sino que ira variando. Entonces se debería preguntar por las mas frecuentes, por las propiedades que aparezcan en todos los objetos, o por lo menos en los que mas, y así de alguna manera puedes terminar clasificándolo en una categoría. Por ejemplo:
Una clase podría ser los objetos que tienen descripción, en este sentido todo lo que existe en el mundo tiene una descripción, una definición y un nombre, a eso se le denomina objeto, ahora si además de eso tiene una propiedad tamaño, entonces se puede decir que es medible, y de la propiedad tamaño debería existir un conjunto de reglas que podamos inferir solo desde esa propiedad. La idea aquí, es que dada una propiedad se infiera todo el conocimiento de ella independiente del objeto (como si fueran estructuras algebraicas). De esa manera, si el usuario especifica que ese concepto tiene esa propiedad, ya puedes inferir conocimiento.

¿Que mas pasa la propiedad tamaño? Es que tamaño puede ser que se modifique, puede ser fija, puede cambiar en la instancia o puede tener varios tamaños. Luego se irán haciendo clustering, de acuerdo a sus propiedades sin valores (a su clase). Pero la clase también se puede definir por instancias, por ejemplo:

Tengo clase persona. Y la instancia de la edad es menor que 15 años se considera un niño y no un adolescente. Entonces ahí se tiene una clase niño que depende de los valores de la instancia. Pero creo que esta forma de clasificar (por valores de instancias) seria el ultimo a tomar en cuenta.
Se empieza hablar sobre las construcciones de las base de datos y los errores que tienen la gente a introducir datos, es verdad, que a la hora de concebir el modelo debería concebirse la semántica, como se expone en el video, si esta la fecha de contratación y esta la fecha de nacimiento, es real que debería haber entre ellos una diferencia de al menos 18 años (edad a la cual se permite trabajar) , para así evitar errores. La idea principal es que deberían haber relaciones verificables entre los datos como la expuesta anteriormente. Pero si algo no cumple con el patrón (la edad es menor que 18 años) también debería poder agregarse, pero con el objetivo de que sea como excepción o warning de la regla, ya que, podría darse que alguien muy talentoso que tuviera solo 15 años y pudiera trabajar en la empresa, sin embargo podría ser también un error, entonces el usuario que entra los datos, se le avisa que algo parece no estar bien, en este caso la fecha de nacimiento con la fecha en que empezó a trabajar, si el operador decide insertar los datos igualmente, este dato pasaría a tener un warning diciendo que es una excepción de la regla.

Se habla también del completamiento de contenido por el conocimiento, como el ejemplo del niño y la mama. Creo q seria incorrecto ese completamiento. Ya que podría tener otra interpretación diferente a la “que se cree que será el sentido comun”. Porque lo que significa evidente para ti, no tiene porque ser claro para mi. Los ejemplos que pone son muy sencillos, y al parecer, la única respuesta es esa, pero puede ser que no. Que después de tanto conocimiento la respuesta sea mucho mas completa y compleja. Y no resultaría evidente.(18:10)

Se habla también del completamiento de información de las base de datos, lo mismo que hicieron con lo de rellenar o ver si tenia datos inválidos.

Algunas de las estrategias es que Cycs tiene muchas micro definiciones.
Se habla también que la cantidad de conceptos no es muy importante, principalmente porque hay algunas definiciones (pocas), que abarcan mucho conocimiento, que funcionan como axiomas (34:36).
Hay una regla que creo que se asume muy bien, que dice: “Si dos objetos no se sabe su relación taxonómica entonces se consideran disjuntos”. Porque al final una clase puede ser tan especifica como se quiera, se habla de clases y de instancias de clases pero al final son lo mismo, lo que las clases son instancias sin valores. (video en 35:30)
Si existen dos clases que no se conocen (dos taxones, dos ramas de la taxonomía), entonces se asume que son disjuntas. Y en realidad lo son, porque en su nivel de especificidad se hacen diferentes. Pero que pasa si una es una instancia de la otra.? No pasa nada porque también se puede ver como subconjunto pero también como diferentes grupos como lo son clases y lo son las instancias.
Open CYC es una ontología abierta. Y podemos usarla tanto para investigación como para comercialización.

Estas son unas notas, perdonen si no todas las ideas estan muy esclarecidas y si el cambio de las mismas sea muy brusco.

miércoles, 2 de octubre de 2013

Una forma rapida de dar semantica a tu web

RDF (Resource Description Framework) es la forma de dar semantica a tu pagina. Con RDF se puede describir cualquier concepto, relacion o objeto del universo.

Hay tres cosas principales en las que se basa RDF, sujeto, predicado y objeto.

Sujeto: Es lo que se quiere describir.
Predicado: Generalmente se refiera a un atributo de lo que estas describiendo.
Objeto: Es lo que estas referenciando con el Predicado.

Jorge le gustan las manzanas.

Jorge - es el sujeto, lo que se esta describiendo
le gustan - es el predicado un atributo de Mauricio
las manzanas: es el objeto al cual se le aplica el predicado

Usando esta simple idea podemos definir cualquier cosa.

RDF usa URI (es igual que URL pero en vez de ser una local, la URI referencia a un recurso, de facto, una URL es un tipo de URI) para especificar sujetos y predicados.

Un ejemplo de URI:

http://www.ejemplo.org/uris/largas/son/muy/pesadas/de/escribir


Como podemos ver que las URI son muy largas, y pueden ser muy pesadas, por eso en RDF hay las CURI (Compacta URI). CURI es la forma de escribir mas corto la URI.

un ejemplo de una CURI es:

 foaf:name

http://xmlns.com/foaf/0.1/name

Como podemos ver foaf:name es la abreviación de la uri http://xmlns.com/foaf/0.1/name , donde foaf  equivale a http://xmlns.com/foaf/0.1/ y lo que viene despues, en este caso, name, equivale a agregar a la URI, en este caso name.

Ahora no debemos preocuparnos que significa esa URI, ya que despues lo explicare.

RDF es un concepto no es una syntaxis, entonces debemos aprender a como escribir afirmaciones.

Recordemos que en RDF todo es SUJETO, PREDICADO, OBJETO.

Una afirmacion en RDF es una tripleta, si cojemos el ejemplo anterior, podemos darnos cuenta que hicimos una afirmacion en forma de tripleta. Entonces en RDF lo escribir de la siguiente manera:

@prefix pref: <http://ejemplo.org/vocabulary#> .
<#jorge> pref:gustan <#manzanas> .

El "@prefix" nos especifica quien va ser nuestra CURI pref que en este caso es <http://ejemplo.org/vocabulary#> . En la siguiente linea esta definida la tripleta, empezando con el sujeto <#jorge> , los signos de mayor y menor es para especificar que es una URI. El predicado es pref:gustan, que es tambien una URI y el objeto es <#manzanas> que tambien es una URI. Y al final de la tripleta hay un punto para indicar el final de la afirmacion. Pueden escribir cuantas tripletas quieran, mientras mas tripletas haya con un sujeto, mas informacion hay de ese sujeto.

Si nos fijamos pref apunta a algo que dice vocabulary, en español, vocabulario.
Un vocabulario, define que es lo que una tripleta realmente significa. Sin un vocabulario, la tripleta no tendria un concepto global para todos. Un famoso vocabulario se llama Friend of a Friend, también conocido como foaf.  (Si esto no queda claro, siga leyendo entendera mejor con el ejemplo)

foaf tiene muchas relaciones entre personas definidas y tiene muchos conceptos para definir personas. foaf sera el primer vocabulario que vamos a usar en este articulo.

Usando foaf es muy facil describir personas en la Web, todo lo que se necesita es una URI que hable sobre una persona y un URI para usar el predicado que nos convenga. Vamos hacer un ejemplo, especificando que Jorge es una persona y el nombre completo de Jorge.

Lo primero que vamos hacer es especificar que vamos a usar el vocabulario foaf . En nuestro HTML, hacemos esto usando nuestro atributo xmlns . Y lo especificamos de la siguiente manera xmlns:foaf="http://xmlns.com/foaf/0.1".

Tambien vamos a necesitar dos atributos RDF, about y property . El primer atributo es about y se usa para especificar el sujeto. De la siguiente forma about="#jorge". El segundo atributo es property y se usa para especificar el predicado. De la siguiente manera property="foaf:name". Finalmente para asignar el valor, nosotros lo ponemos entre las etiquetas que tienen esos atributos. A seguir pongo el ejemplo completo:

<body xmlns:foaf="http://xmlns.com/foaf/0.1">
    <span   about="#jorge" property="foaf:name">
    Jorge McDreaming 
    </span>
<body>


Si ahora quisieran cambiar el nombre completo en iniciales JM no hay que cambiar nada, solamente la entrada del nombre y los datos estarian actualizados.
En tripleta seria

@prefix foaf: <http://xmlns.com/foaf/0.1> .
<#jorge> foaf:name "Jorge McDreaming" .

Pero tenemos que definir que Jorge es una persona, para eso debemos agregar typeof="foaf:Person" . type sirve para especificar un tipo, un tipo es la clase que debe pertenecer el sujeto, que es una relacion especial del sujeto. El tipo que estamos especificando en este caso es Persona.

<body xmlns:foaf="http://xmlns.com/foaf/0.1">
    <span   about="#jorge" property="foaf:name" typeof="foaf:Person">
    Jorge McDreaming 
    </span>
<body>

Ahora queremos definir una relacion entre esas dos personas. La relacion sera conoce, queremos especificar que Jorge conoce a Sheldon. Primero mostraremos como quedaran las afirmaciones que Jorge y Sheldon son personas.


<body xmlns:foaf="http://xmlns.com/foaf/0.1">

    <span   about="#jorge" property="foaf:name" typeof="foaf:Person">
    Jorge McDreaming 
    </span>

    <span   about="#sheldon" property="foaf:name" typeof="foaf:Person">
    Sheldon Cooper 
    </span>

<body>

Finalmente para espcificar que Jorge y Sheldon son amigos, usamos el atributo rel y el atributo resource. Tambien usamos un vocabulario que tiene foaf que es knows conocer. Luego quedaria especificado todo de la siguiente manera:

<body xmlns:foaf="http://xmlns.com/foaf/0.1">

    <span   about="#jorge" property="foaf:name" typeof="foaf:Person">
    Jorge McDreaming 
    </span>

    <span   about="#sheldon" property="foaf:name" typeof="foaf:Person">
    Sheldon Cooper 
    </span>
    
    <span about="#jorge" rel="foaf:knows" resource="#sheldon">
    Jorge conoce a Sheldon
    </span>   

<body>

Con esto ya tenemos las ideas basicas y podemos crear cualquier semantica compleja.

Asi es como una web semantica es construida, una tripleta atras de otra. Una tripleta relacionado con otra y asi. 

martes, 27 de agosto de 2013

El poema de amor de Neil Hilborn, enfermo de trastorno obsesivo compulsivo



Amor y trastorno obsesivo compulsivo

Neil Hilborn declara su amor obsesivo compulsivo a una chica.

26 de agosto de 2013. Estandarte.com
Qué: El poema de amor de Neil Hilborn, enfermo de trastorno obsesivo compulsivo
El poema de amor compuesto y recitado por Neil Hilborn, enfermo con trastorno obsesivo compulsivo, se ha convertido en todo un éxito gracias a la red. Hilborn participó en la final del concurso 2013 Rustbelt Regional Poetry Slam (Wisconsin, Estados Unidos), el pasado junio, con un poema en el que cuenta su amor hacia una chica, traspasado en todos sus aspectos por su trastorno obsesivo compulsivo. El resultado es el siguiente:

La primera vez que la vi…
Todo en mi cabeza se silenció
Todos los ticks, las imágenes constantes desaparecieron.
Cuando tienes trastorno obsesivo compulsivo en realidad no tienes momentos callados.
Inclusive en la cama estoy pensando:
¿Cerré las puertas? Sí
¿Me lavé las manos? Sí
¿Cerré las puertas? Sí
¿Me lavé las manos? Sí
Pero cuando la vi, la única cosa en la que pude pensar fue en la curva de la horquilla de sus labios.
O la pestaña en su mejilla–
La pestaña en su mejilla–
La pestaña en su mejilla.
Sabía que debía hablar con ella
La invité a salir seis veces en treinta segundos.
Ella dijo que sí después de la tercera,
pero ninguna de las veces que pregunté se sintió bien así que tenía que seguir haciéndolo.
En nuestra primera cita,
pasé más tiempo organizando mi comida por colores de lo que pasé comiéndola o hablando con ella.
Pero le encantó.
Le encantaba que tuviera que besarla para despedirme 16 veces, o 24 si era miércoles.
Le encantaba que me tomaba todo el tiempo caminar hacia casa porque había muchas grietas en la banqueta.
Cuando nos mudamos juntos ella dijo que se sentía segura,
como si nadie nos fuera a robar porque definitivamente había cerrado la puerta 18 veces,
Yo siempre veía su boca cuando hablaba–
Cuando hablaba–
Cuando hablaba–
Cuando hablaba–
Cuando hablaba;
Cuando me dijo que me amaba, su boca se curveaba hacia arriba en los bordes.
En la noche ella se acostaba en la cama y me veía apagar todas las luces, y
prenderlas, y apagarlas, y prenderlas, y apagarlas, y
prenderlas, y apagarlas, y prenderlas, y apagarlas, y
prenderlas, y apagarlas, y prenderlas, y apagarlas, y
prenderlas, y apagarlas, y prenderlas, y apagarlas, y
prenderlas, y apagarlas, y prenderlas, y apagarlas.
Ella cerraba los ojos y se imaginaba que los días y las noches pasaban frente a ella.
Algunas mañanas empezaba a besarla para despedirme y ella sólo se iba porque estaba haciéndola llegar tarde al trabajo.

Cuando me detenía en las grietas de la banqueta ella seguía caminando.
Cuando me decía que me amaba su boca era una línea recta.
Me dijo que estaba tomando mucho de su tiempo.
La semana pasada empezó a dormir en casa de su madre.
Me dijo que nunca debió dejarme apegarme tanto a ella; que todo esto fue un error,
pero… ¡¿Cómo podría ser un error que no tenga que lavarme las manos después de tocarla?!
El amor no es un error y me está matando que ella pueda salirse de esto y yo no.
No puedo–
No puedo salir y encontrar a alguien nuevo porque siempre pienso en ella.
Usualmente, cuando me obsesiono con algo, veo gérmenes escabulléndose en mi piel.
Me veo a mí mismo siendo atropellado por una infinita línea de coches.
Y ella fue la primera cosa hermosa en la que alguna vez me he estancado.
Quiero despertar todas las mañanas pensando en la manera en la que agarra el volante.
Cómo mueve las manijas de la regadera como si estuviera abriendo una caja fuerte.
En cómo sopla las velas–
cómo sopla las velas–
cómo sopla las velas–
cómo sopla las velas–
cómo sopla…
Ahora sólo pienso en quién más está besándola.
No puedo respirar porque él sólo la besa una vez­– ¡No le importa si es perfecto!
La quiero de regreso tanto que…
Dejo la puerta sin cerrar.
Dejo las luces prendidas.
Neil Hilborn ha contado que el poema fue compuesto en 2011 y que, si bien es cierto que la mayoría de los tics que se ven durante su exposición son intencionales, algunos también son reales, provocados por su trastorno obsesivo compulsivo. Sea como fuere, lo cierto es que bien podría ejemplificar una interesante unión de enfermedad y creación artística. Si a esa simbiosis la pasamos por el tamiz de una interpretación en un festival de poetry slam, el resultado es muy atractivo, un caramelo para las redes sociales, que no paran de extenderlo y reproducirlo por cualquier rincón del planeta en estos momentos…

fuente:http://www.estandarte.com/noticias/varios/el-poema-de-amor-de-neil-hilborn-con-trastorno-obsesivo-compulsivo_2000.html?utm_source=twitterfeed&utm_medium=twitter&utm_campaign=Feed%3A+estandarte+%28Estandarte+-+Pasi%C3%B3n+por+leer.+Pasi%C3%B3n+por+escribir.%29

domingo, 23 de junio de 2013

Diez formas de pensar como un matemático


¿Cómo piensa alguien que esté muy metido en las matemáticas? ¿Qué técnicas utiliza para analizar convenientemente las situaciones que se encuentra en sus quehaceres diarios? ¿Hay alguna manera de que cualquier persona pueda llegar a comprender las matemáticas en profundidad? Quizás no, pero lo que sí se puede hacer es seguir algunos consejos sencillos para facilitar esa comprensión y, en su caso, el aprendizaje de las mismas.

Consejos los hay de todo tipo, y seguro que muchos de vosotros habéis seguido algunos que os han dado vuestros profesores o vuestros familiares. Y estoy convencido de que también vosotros mismos habéis dado consejos “matemáticos” en alguna ocasión. Los que aparecen en esta entrada forman parte de un pequeño manual publicado por Kevin Houston, matemático de la Universidad de Leeds, y bajo mi punto de vista forman una lista bastante interesante de ideas para mejorar el aprendizaje y la comprensión de las matemáticas. En lo que sigue podréis leer una traducción de lo más importante que Kevin Houston comenta de cada uno de dichos consejos (en algunos quizás meta algún comentario mío), y al final de este artículo encontraréis el enlace a su manual

Consejo 1: Pregúntate todo

Una de las cosas más bellas de las matemáticas es que pueden ser comprobadas, que no tienes que fiarte de la palabra de nadie. Si alguien dice que algo es cierto, tú puedes pedirle que lo demuestre. O mejor, puedes intentar probarlo tú mismo.
Tu reacción ante un enunciado debería ser desconfiar de él e intentar encontrar un ejemplo que muestre que es falso. Aunque al final dicho enunciado resulte ser cierto, el trabajo mental que conlleva esta búsqueda será beneficioso para ti.

Consejo 2: Escribe con palabras

Se entiende que hablamos de escribir las matemáticas con palabras. ¿Cómo nos puede ayudar esto? Las frases son los ladrillos de los argumentos, y las matemáticas (de alto nivel principalmente) tratan de argumentos en forma de demostraciones (¡no solamente de obtener la respuesta numérica correcta!).
Escribir con palabras en vez de con símbolos te obliga a comprender muy bien el tema del que estás hablando y a pensar muy cuidadosamente tus argumentos. Si no puedes escribirlo bien en una frase quizás es porque no lo has comprendido a la perfección.

Consejo 3: ¿Qué ocurre con el recíproco?

Los enunciados tipo A \rightarrow B aparecen continuamente en matemáticas. Podemos traducirlo como “Si A es cierto, entonces Bes cierto”. El recíproco de A \rightarrow B es B \rightarrow A.
Ante un enunciado tipo A \rightarrow B, un buen matemático se preguntará si el recíproco también es cierto por la sencilla razón de que no tiene por qué serlo. Ahí va un ejemplo:
El recíproco de la expresión (cierta) siguiente

Si nací en Madrid, entonces nací en España

es

Si nací en España, entonces nací en Madrid

enunciado que, claramente, no tiene por qué ser cierto.
Por tanto, plantéate si el recíproco es cierto o no, ya no solamente por la propia veracidad o falsedad del recíproco en el caso que estés estudiando, sino porque ese esfuerzo que realizarás te ayudará a mejorar tus habilidades matemáticas.

Consejo 4: Usa el contrarrecíproco

El contrarrecíproco de un enunciado tipo A \rightarrow B es
no \; B \rightarrow no \; A
Por ejemplo, el contrarrecíproco de

Si nací en Madrid, entonces nací en España

es

Si no nací en España, entonces no nací en Madrid

Para mucha gente es sorprendente que sea así, pero la realidad es que la veracidad o falsedad del contrarrecíproco es la misma que la del enunciado inicial. Esto es, ambas sentencias son equivalentes: si una es falsa la otra también, y si una es verdadera también lo es la otra.
Esto debería aprenderse correctamente, ya que el contrarrecíproco se utiliza con bastante frecuencia tanto en las demostraciones matemáticas como en nuestro razonamiento diario.

Consejo 5: Considera casos extremos

Los resultados obtenidos al aplicar un teorema a los casos triviales y extremos de las hipótesis puede ayudar a su comprensión: ¿qué pasaría si cierto número es 0 ó 1? ¿O si consideramos la función trivial f(x) \equiv 0? ¿Qué ocurriría si tomamos el conjunto vacío? ¿Y la sucesión \{1 ,1,1, \ldots \}? ¿Qué obtenemos con un círculo o una recta?
Por ejemplo, utilizando un “caso extremo” es sencillo mostrar que el siguiente resultado es falso:
“Teorema“: Dados a,b,c,d números enteros, si ab=cd y a=c, entonces b=d.

Consejo 6: Crea tus propios ejemplos

Un matemático crea sus propios ejemplos, tanto ejemplos estándar como ejemplos extremos, e incluso no-ejemplos.
Veamos uno. El método utilizado para calcular los máximos y mínimos de una función de una variable es bastante conocido. Vamos a quedarnos con el método simplificado:
Dada una función f(x), calculamos su derivada, f^\prime (x), la igualamos a cero y resolvemos la ecuación resultante. Los puntos obtenidos son los posibles máximos y mínimos del problema.
Después calculamos la segunda derivada, f^{\prime \prime} (x), y sustituyendo dichos puntos en ella los clasificamos comomáximos, si el valor obtenido al sustituir es negativo, o mínimos, si el valor obtenido al sustituir es positivo.
Con este procedimiento podemos calcular los máximos y los mínimos de una función dada siguiendo estos pasos. Ahora, ¿y si nos piden lo contrario? Es decir, ¿y si nos piden crear una función que, por ejemplo, tenga un máximo en x=1 y un mínimo en x=3? Esto es mucho más complicado que lo anterior, pero por contra nos permite aprender mucho más sobre matemáticas.
Por tanto, dado un método para resolver un cierto tipo de ejercicios es interesante revertir el proceso y crear nuevos problemas yendo del final al principio.

Consejo 7: ¿Dónde se usan las hipótesis?

A menudo comprender la demostración de un resultado es muy complicado. Esto es algo esperado, ya que en muchas ocasiones en las demostraciones no se entra en dar una idea sobre el enunciado del teorema en cuestión o en cómo se descubrió dicha demostración. En definitiva, comprender las demostraciones es una de las cosas más difíciles a las que puede enfrentarse alguien en matemáticas.
Por ello es importante tener alguna idea sobre cómo comenzar a entender una demostración. Y analizar las hipótesis del teorema es un buen comienzo. Investigar dónde se utilizan las hipótesis de nuestro teorema puede ser de gran ayuda a la hora de comprender la demostración. Y encontrar “hipótesis ocultas” (por ejemplo, viendo si dentro de la demostración se usa algún otro resultado que tenga sus propias hipótesis) también puede ser interesante. Además, si encontramos algún resultado que se utilice varias veces a la hora de demostrar teoremas quizás eso indique que el resultado es muy importante o muy útil, por lo que posiblemente nos convenga aprenderlo bien.

Consejo 8: Comienza por el lado complicado

Éste es un consejo interesante a la hora de probar que una igualdad es cierta. Para ello, generalmente es mejor comenzar por el “lado difícil” de la misma y realizar operaciones en él para simplificarlo y así intentar llegar a la expresión que tenemos al otro lado.
Por ejemplo, para demostrar que tg(x)+cotg(x)=2 \; cosec(2x), \; \forall x \in \mathbb{R} tales que x \ne {{n \pi} \over 2}, \; \forall n \in \mathbb{Z}, es mucho mejor comenzar por la parte “más complicada”, la que tiene “más cosas”, la de la izquierda, y realizar operaciones en ella hasta obtener la de la derecha (os lo dejo como ejercicio; si queréis intentarlo no miréis el documento original de Kevin Houston, ya que allí está la solución)
Partir de la igualdad completa y realizar operaciones o reordenaciones en ella puede no ser lo más adecuado, ya que corremos el riesgo de caer en razonamiento circulares o incluso de suponer como cierto lo que queremos demostrar sin darnos cuenta de que lo estamos haciendo.

Consejo 9: Pregúntate qué ocurriría si…

A los buenos matemáticos les gusta preguntarse “¿qué pasaría si…?”. Por ejemplo, “¿qué ocurriría si elimino cierta hipótesis?”.Pensar en esto quizás nos ayude a ver mejor por qué cierto resultado es cierto o por qué una definición es como es. Y hasta podríamos encontrar un nuevo teorema debilitando las hipótesis si encontramos alguna que no sea necesaria.
Otro ejemplo. con frecuencia los objetos matemáticos son conjuntos de elementos que cumplen ciertas condiciones. Y a partir de ciertos conjuntos podemos construir otros conjuntos nuevos. Pues es interesante preguntarse si estos conjuntos nuevos “heredan” las propiedades de los antiguos. Por ejemplo, “si A y B son conjuntos finitos, ¿también lo es su producto cartesianoA \times B?”. “si A y B son conjuntos compactos, ¿también lo es su unión?”.

Consejo 10: ¡Habla!

Cuando Sir Christopher Zeeman fundó el Instituto de Matemáticas de la Universidad de Warwick, una de sus ideas clave para fomentar una atmósfera matemática fue que hubiera pizarras en los pasillos (además de en las clases), para facilitar que la gente pudiera hablar con los demás y explicar su trabajo en cualquier momento (el instituto Isaac Newton de Cambridge tiene pizarras en los baños y hasta en el ascensor…que sólo recorre dos plantas).
Son muchas las ventajas de comunicar tu trabajo a otros. Por un lado, al explicarlo te fuerzas a pensar con claridad. Y por otro lado, puedes aprender de los demás, ya que ellos pueden sugerirte ideas para resolver un problema o avanzar en él o, por otra parte, pueden encontrar errores en tus razonamientos.

Como decía al principio, interesante lista de consejos para pensar “como un matemático”. Creo que todos son muy acertados y muy necesarios para que nuestra mente se acostumbre a pensar de forma matemática. De todas formas, seguro que hay más ideas interesantes que no aparecen en esta lista. Los comentarios son vuestros para plasmarlas.
Aquí tenéis el enlace al manual de Kevin Houston: 10 Ways to Think Line a Mathematician.
Por cierto, la portada del manual incluye varias demostraciones visuales interesantes. Echad un ojo:
Las entendéis todas, ¿verdad?


Fuente: http://gaussianos.com/diez-formas-de-pensar-como-un-matematico/?utm_source=feedburner&utm_medium=email&utm_campaign=Feed%3A+gaussianos+%28Gaussianos%29

viernes, 26 de abril de 2013

Si haces lo que siempre has hecho, nunca llegarás más allá de donde siempre has llegado

Saber es acordarse (Aristóteles)

No llores por haber perdido el Sol, pues las lágrimas no te dejarán ver las estrellas

Muchas veces me moria pensando que no iba verte. Pero moria la muerte cada vez que te veia. E.Galeano.

Si haces lo que siempre has hecho, nunca llegarás más allá de donde siempre has llegado

Pierde un minuto en tu vida y no tu vida en un minuto

Si quieres que tus sueños se cumplan... ¡Despierta!

Rectificar es de sabios equivocados

El que teme sufrir, sufre de temor (Proverbio chino)

Piensa en mí cuando estés triste, porque en la tristeza se piensa en lo que más se ha querido

Si trabajas para vivir, no te mates trabajando

El beso es un te quiero con un te echaré de menos...

No abras los labios si no estás seguro de que lo que vas a decir es más hermoso que el silencio (Proverbio árabe)

Las únicas personas normales son las que uno no conoce bien

Quién da consejos se arriesga a recibirlos

Si estas triste ríe, llorar es demasiado fácil

No por mucho filosofar te entiende más gente

Aprende a decir lo que sientes a la persona que te lo hizo sentir

Si te caes siete veces, levántate ocho

Quien hace puede equivocarse. Quien nada hace ya esta equivocado

Las cosas más importantes de la vida, no son cosas

Un amigo es alguien, con quien se puede no hacer nada y disfrutar de ello

La amistad divide las penas y multiplica las alegrías

Hay dos maneras de vivir feliz: siendo tonto o haciéndose el tonto

El amor es algo difícil de explicar, fácil de sentir e imposible de olvidar

La vida es así y hay que aprender a vivirla

Tal vez para el MUNDO no eres nada, pero para ALGUIEN quizás eres el mundo.

¿Por qué amamos a quien nos ignora e ignoramos a quien nos ama?

No intentes ser tu mismo, porque serás otro.

Si no quieres que nadie se entere, no lo hagas

El mundo es una ostra (Bienvenida Pérez)

No me arrepiento de las cosas que he hecho, sino de las que no hice

Visto lo visto, todo el mundo es listo

El amor no muere, sólo agoniza por el olvido

La vida es demasiado seria para tomarla en serio

La mente busca, el corazón encuentra

No podemos evitar las pasiones, pero si vencerlas

El autentico amigo es el que sabe todo sobre ti y sigue siendo tu amigo

El joven conoce las reglas, pero el viejo las excepciones

Todas hieren, la última mata

El que busca la verdad corre el riesgo de encontrarla.

Una conclusión es cuando te cansas de pensar.

Si no quieres que nadie se entere, no lo hagas.

La ignorancia es temporal, la estupidez es para siempre

Los amigos van y vienen, los enemigos se acumulan

Un pesimista es un optimista con experiencia...

Daría todo lo que sé por saber la mitad de lo que ignoro.

Recuerda siempre que eres único... Exactamente igual que todos los demás.

probando insignia de instagram


Instagram

miércoles, 24 de abril de 2013

Cuentas en Android Parte II


Antes de leer este post es convenietne haber leido el anterior Cuentas en Android Parte I

6. Implementacion del Account manager
6.1 Introduccion

La implementacion de un Account Manager es muy inusual ya que para verlo funcionar tienes que tener al menos 3 archivos.
  1. La activity que utiliza el account manager
  2. El Servicio que debe extender la clase AbstractAccountAuthenticator
  3. El Authenticator (XML, como se va ver la creacion de una cuenta)
  4. The preference file (XML, la configuracion de la cuenta) - Opcional
  5. Las clases que interactuan con el servicio - Opcional

6.2 La actividad principal
La actividad que utiliza account manager coje una instancia de la misma e invoca sus metodos. La mayoria estan explicados aqui.

6.2 El Servicio

El servicio es una de las mas importantes piezas para interactuar con el account manager. Esta es usada cuando el usuario puede crear una cuenta explicitamente, "sin usar una applicacion para eso", sino usando el proprio sistema operativo Android. Quiero decir, cuando el usuario hace click en Configuraciones->; Cuentas y Sincornizacion ->; Crear nueva cuenta (Settings ->; Account and Sync ->; Creates a new accounts), el sistema le monstrara la lista de cuentas que puede crear explicitamente. Si una applicacion puede crear una cuenta, es de esperar que el usuario la pueda crear sin esa aplicacion (de forma explicita).

Cuando el usuario hace click en algun elemento, el account manager vinculara un servicio, el cual debe retornar una implementacion de AbstractAccountAuthenticator. Ademas, el sistema ira invocar un metodo addAccount de tal servicio. Este metodo debe lanzar una actividad que permita el usuario introducir sus credenciales (nombre de usuario, contraseña, etc) y finalmente retornar la respuesta apropriada al account Manager. Aqui hay un buen ejemplo de su implementacion:

Este servicio sera declarado en el fichero AndroidManifest de una manera especial:

android:exported="true" android:process=":auth">



android:resource="@xml/authenticator" />

fuente

El codigo anterior asocia el servicio con el fichero xml que le denominamos authenticator. Este debe ser guardado en xml folder.

6.3 El Authenticator
El authenticator assigna una coleccion de parametros:
  • Account type: El tipo de cuenta. Esta debe ser la misma que cuando la cuenta es creada explicitamente. De lo contrario un error, aparentemente sin sentido saldra. 
  • Icons: Los iconos que apareceran en el account manager
  • Label: El texto de descripcion.
  • AccountPreferences: La localizacion del fichero XML el cual indica la configuracion (preference) que aparecera una vez la cuenta ha sido creada. 
  • etc.
He aqui un ejemplo del fichero xml:

android:accountType="fm.last.android.account"
android:icon="@drawable/icon"
android:smallIcon="@drawable/icon"
android:label="@string/app_name"
android:accountPreferences="@xml/account_preferences"/>
fuente

6.4 Preference file
El siguiente archivo preference es un archivo xml comun y corriente de preference
He aqui un ejemplo:


   

    android:key="account_settings"
                                    android:title="Account Settings"
                                    android:summary="Sync frequency, notifications, etc.">
        android:action="fm.last.android.activity.Preferences.ACCOUNT_SETUP"
                    android:targetPackage="fm.last.android"
                    android:targetClass="fm.last.android.activity.Preferences" />
    




fuente

6.5 El Service helper classes
El service helper classes son usados para ayudar un especifico metodo de la clase. Por ejemplo, el usuario puede desear crear una clase especifica que permita al usuario crear una cuenta, cuando el metodo addAccount del servicio sea llamado.

Para este especifico caso, hay una clase especifica llamada AccountAuthenticatorActivity la provee google que hace la autenticacion un poco mas facil. He aqui el codigo.

Lo que hace esta clase es permitir al usuario, asignar el resultado de la autenticacion, poniendo el nombre de usuario y el tipo de cuenta, cuando este termina lo devuelve al account manager. El uso de esta clase no es obligatorio. Se puede crear cualquier actividad como un AccountAuthenticatorActivity. Vease el ejemplo siguiente.