Sei sulla pagina 1di 5

Qu es matemtica discreta?

Citamos dos opiniones que definen la relacin entre matemtica y computacin bajo una perspectiva que compartimos. La primera est extrada de la traduccin castellana del articulo "La revolucin en matemticas" de Marshall Stone, aparecido en 1978 en "La enseanza de las matemticas modernas" de Jean Piaget y otros autores. Refirindose a la introduccin de computadores, a los que llama "potentes auxiliares" en el quehacer matemtico, dice as: Despus de la introduccin de estos potentes auxiliares los matemticos ya no tienen que preocuparse de reducir sus soluciones a una forma sencilla de calcular a mano o con calculadoras corrientes; su misin ha pasado a ser la de traducir estos clculos a programas de cuya ejecucin se encargarn computadoras electrnicas de gran velocidad, lo que ha dado lugar a la aparicin de una nueva rama de las matemticas dedicada a la teora y prctica de la confeccin de programas. Unos aos mas tarde, en "On the cruelty of really teaching computer science", Dijkstra (uno de los pioneros en ciencia de la computacin) define ciencia de la computacin con estas palabras: It is -and will always be- concerned with the interplay between mechanized and human symbol manipulation, usually referred to as "computing" and "programming" respectively. (Concierne -y siempre lo har- a la relacin entre la manipulacin simblica mecanizada y la humana, referidas como computar y programar respectivamente.)

Observar que computar es una actividad matemtica y programar es computar por medio de una mquina, por lo tanto es tambin una actividad matemtica. Y agrega: In the map of academic disciplines, computer science has to be located in the direction of formal mathematics and applied logic.

(En el mapa de las disciplinas acadmicas, la ciencia de la computacin debe ser ubicada entre la matemtica formal y la lgica aplicada.) Esta relacin entre computacin y matemtica, que estaba muy clara para los pioneros en ciencia de la computacin y para los matemticos (que muchas veces eran los investigadores en ciencia de la computacin) en las dcadas de los 60, 70 y 80, se ha diludo en el tiempo, fundamentalmente por dos razones: 1) el avance y la popularizacin de la tecnologa, que lleva a confundir alfabetizacin informtica con informtica, 2) el estrecho vnculo entre matemtica y computacin NO se ha volcado al sistema educativo, sino que ha quedado restringido a los mbitos de investigacin y a las carreras especficas en computacin. Los programas, metodologas y objetivos de la educacin en matemtica NO han incorporado el desarrollo de la rama de la matemtica denominada ciencia de la computacin o informtica. Lo que sealamos en el segundo punto, es decir, que la matemtica se ha desarrollado hacia direcciones que estn fuera del sistema educativo, cuyas aplicaciones son fundamentales para la formacin actual del estudiantado (el pensamiento algortmico, el razonamiento lgico, la formalizacin de soluciones), atae a docentes en matemtica y en computacin. Es el trabajo conjunto de ambas comunidades lo que va a permitir vencer el obstculo que implica ese anacronismo. Aspiramos a construir un ambiente de dilogo entre los docentes de matemtica de la enseanza media y los docentes del Instituto de Computacin de la Facultad de Ingeniera de la UdelaR que nos permita avanzar hacia una educacin en matemtica que resulte en mejores estudiantes y mejores profesionales.

Los lenguajes de programacin y el lenguaje matemtico Los objetos matemticos se describen usando un lenguaje al que llamamos lenguaje matemtico. Como este lenguaje tiene pautas claras que indican cules descripciones tienen sentido y cuales no, podemos llamarlo lenguaje formal o formalismo: identificamos una expresin con sentido por su forma. Es as que podemos reconocer un objeto matemtico en la expresin "(2 + 1) * 5"; y un sinsentido en la expresin "/* 111 5 -+ 34". Las expresiones del lenguaje matemtico se evalan utilizando reglas de transformacin que describen cmo al ser aplicadas a expresiones (una o ms de una) se obtiene otra expresin ms simple que la original. Ms simple significa que el nmero de pasos de reduccin para llegar a obtener una expresin para la cual no hay regla a aplicar (o sea, no puede ser reducida), es menor. La expresin que no puede ser reducida se denomina forma cannica de la expresin (en realidad, de todas las obtenidas en los pasos de reduccin). El trmino reducir proviene del hecho de que el nmero de pasos hasta la forma cannica es menor y el trmino evaluar proviene de que la forma cannica se denomina tambin el valor de la expresin. Ejemplo: (2 + 1) * 5 puede reducirse a la expresin 3 * 5 y sta a 15, que est en forma cannica. Decimos que 15 ( est en forma cannica) o es la forma cannica de la expresin (2 + 1) * 5 o que (2 + 1) * 5 tiene forma cannica 15. Las reglas de transformacin que se aplican son la funciones + y *. 3 * 5 es ms simple que (2+1)*5 porque el nmero de pasos de reduccin hasta la forma cannica es menor (desde (2+1)*5 a 15 hay dos pasos, mientras que de 3 *5 hay un solo paso). Las reglas pueden ser aplicadas siguiendo distintas estrategias, pero por cualquiera de ellas se llega a una misma forma cannica (si la misma existe). Por ejemplo, la expresin (2 + 1) * 5 puede reducirse a la expresin 3 * 5 y sta a 15, o a la expresin 10 + 5 y luego a 15. Algunas expresiones que no tienen forma cannica, por ejemplo 2/0, porque la regla involucrada (/) no est definida para denominador 0.

Un lenguaje de programacin es un formalismo en el cual se representan objetos por medio de expresiones del lenguaje, que se evalan utilizando reglas de transformacin sobre las expresiones. Las reglas tambin se representan en el lenguaje, de modo que puedan ser aplicadas por un computador y la evaluacin de las expresiones se hace entonces automticamente. Veremos que las reglas son algoritmos y que tambin pueden ser representados en el lenguaje matemtico. Existen lenguajes de programacin en los cuales pueden representarse las pruebas de propiedades y ejecutarse (semi) automticamente (el semi es porque hay partes de las pruebas que son indecidibles). El lenguaje matemtico es manejado por humanos, mientras que un lenguaje de programacin es manejado por un autmata, un computador. Esto plantea algunas consideraciones, la primera de las cuales es que ambos lenguajes han sido diseados por humanos y por lo tanto pueden contener inexactitudes o ambigedades. Ahora bien, el lenguaje matemtico es usado por humanos, quienes pueden advertir las inexactitudes y/o ambigedades, de una manera similar a lo que sucede con el lenguaje natural. Sin embargo, un lenguaje de programacin es usado por un computador, que ejecutar o realizar las instrucciones sin detenerse a reflexionar ni en la pertinencia ni en el significado de las mismas, actuando siempre como si estuvieran completas y fueran exactas. Por ello, el programar exige rigurosidad en el uso del lenguaje, es ms, cumplir con este requisito, es una de las mayores dificultades en la construccin de software y una de las fuentes de errores del mismo. Otra diferencia entre el lenguaje matemtico y (algunos) lenguajes de programacin, es que el orden de evaluacin de las expresiones es relevante. Ejemplos de ello se plantean en la actividad 1. Tipos de expresiones Los elementos de un conjunto pueden ser las letras del abecedario. Podemos definir palabras como los subconjuntos de ese conjunto de letras. Y podemos definir relaciones y funciones sobre conjuntos de letras o de palabras. Por ejemplo, usaremos ms adelante, una operacin que dadas dos palabras, nos devolver otra formada por las letras de la primera seguidas por las de la segunda.

Cuando buscamos una palabra en un diccionario, utilizamos una relacin de orden entre las palabras. Sabemos por ejemplo, que gato est despus de casa y antes que sol y esa relacin determina el algoritmo de bsqueda que empleamos para buscarla. Cree Ud. que puede definirse en matemtica ese algoritmo de bsqueda? Si, se puede y este problema es uno de los tipos de problemas que se tratan en matemtica discreta. Tambin puede programarse es decir, representarse en un lenguaje de programacin. En matemtica discreta y en programacin, a las letras (y smbolos en general, por ejemplo los del teclado) se les llama caracteres y a las palabras se les llama cadenas de caracteres o strings y se denotan entre omillas, por ejemplo Sylvia es la cadena formada por los caracteres S, etc. Expresiones booleanas Uno de los conjuntos con los que trabajamos es el conjunto llamado Bool, formado por los valores true y false (verdadero y falso, usaremos los nombres en ingls para comodidad con Isetl que usa esos). O sea que Bool = {true, false}. Las expresiones que evalan o reducen a true o a false se denominan expresiones booleanas de la misma forma que las expresiones que evalan a un valor entero, se denominan expresiones enteras. Todo lo que hemos dicho vale para expresiones booleanas, por ejemplo, 2*(3+1) > 4 reduce a 2*4 > 4 reduce a 8 > 4 reduce a true true es la forma cannica de las expresiones y es una expresin cannica (o sea un valor). La regla que se aplica en este caso es la denotada por >. abc < abd evala a true y en este caso < denota la relacin de orden lexicogrfico entre palabras (la que usa el diccionario).

Potrebbero piacerti anche