Criptografía
C Fundamentos Teoría de grafos
Lógica matemáticas
matemáticos Teoría de tipos
i
Teoría de la
e computación
Teoría de autómatas
Teoría de la
n computación
Teoría de la computabilidad
Teoría de la complejidad computacional
c Análisis de algoritmos
Algoritmos
i D Algoritmos y
estructura de
Estructuras de datos
datos
a e
s Lenguajes de Compiladores
programación y
LC compiladores Teoría de lenguajes de programación
a o
Bases de Minería de datos
m datos
p Sistemas Programación concurrente
concurrentes, p Redes de computadoras
aralelos y
u distribuidos
Computo paralelo
Sistemas
t Inteligencia artificial
distribuidos
Razonamiento Automatizado
a Inteligencia
artificial
Robótica
Visión por computador
c Computación grafica
Aprendizaje automático
i Gráficos por Procesamiento digital de imágenes
computador Geometría computacional
ó
n Computación
científica Bioinformatica
Computación cuántica
Ciencias de la computación
Las ciencias de la computación abarcan el estudio de las bases teóricas de la
información y la computación y su aplicación en sistemas computacionales.
Existen diversos campos dentro de la disciplina de las ciencias de la computación;
algunos enfatizan los resultados específicos del cómputo, mientras que otros se
relacionan con propiedades de los algoritmos usados al realizar cómputos. Otros por
su parte se enfocan en los problemas que requieren la implementación de cómputos.
Historia de las ciencias de la computación
La historia de la ciencia de la computación antecede a la invención del computador
digital moderno. Antes de la década de 1920, el término computador se refería a un ser
humano que realizaba cálculos.
Los primeros investigadores en lo que después se convertiría las ciencias de la
computación, estaban interesados en la cuestión de la compatibilidad: qué cosas
pueden ser computadas por un ser humano que simplemente siga una lista de
instrucciones con lápiz y papel, durante el tiempo que sea necesario, con ingenuidad y
sin conocimiento previo del problema. Parte de la motivación para este trabajo era el
desarrollar máquinas que computaran, y que pudieran automatizar el tedioso y lleno
de errores trabajo de la computación humana.
Durante la década de 1940, conforme se desarrollaban nuevas y más poderosas
máquinas para computar, el término computador se comenzó a utilizar para referirse
a las máquinas en vez de a sus antecesores humanos. Conforme iba quedando claro
que las computadoras podían usarse para más cosas que solamente cálculos
matemáticos, el campo de la ciencia de la computación se fue ampliando para
estudiar a la computación (informática) en general.
La ciencia de la computación comenzó entonces a establecerse como una disciplina
académica en la década de 1960, con la creación de los primeros departamentos de
ciencia de la computación y los primeros programas de licenciatura (Denning 2000).
Volver
Criptografía
“Criptografía (comunicaciones), es la
ciencia que trata del enmascaramiento de la
comunicación de modo que sólo resulte
inteligible para la persona que posee la
clave, o método para averiguar el
significado oculto, mediante el
criptoanálisis de un texto aparentemente
incoherente. En su sentido más amplio, la
criptografía abarca el uso de mensajes
encubiertos, códigos y cifras. Los mensajes
encubiertos, como los ocultos en textos
infantiles o los escritos con tinta
invisible, cifran todo su éxito en no levantar
ninguna sospecha; una vez descubiertos, a
menudo no resultan difíciles de descifrar.
Los códigos, en que las palabras y las frases
se representan mediante vocablos, números
o símbolos preestablecidos, por lo general
resultan imposibles de leer si no se dispone
del libro con el código clave”.
¿Qué tipos de criptografía se emplean en la actualidad?
Criptografía estratégica:
Actualmente su aplicación se ha extendido a diversas actividades basadas en el uso
de la tecnología de la información y las comunicaciones (TIC) constituyéndose en
elemento indispensable para garantizar la seguridad en el manejo de la
información. Estas herramientas han permitido proteger cada carácter con una
llave que puede conformarse hasta por 256 bits. Es decir, que para encontrar esta
llave en particular, tendríamos que buscarla entre combinaciones posibles”.
La criptografía simétrica:
Es en donde se usa la misma contraseña o llave
para encriptar y para desencriptar la
información. El usar la misma llave para
encriptar y para desencriptar es un problema a
la hora de enviar datos, ya que el remitente
debe enviar previamente la llave al destinatario
para que éste pueda desencriptar la
información, y debe hacerlo por un canal
seguro. Por lo tanto la criptografía simétrica se
emplea especialmente para almacenamiento
seguro de datos (solamente una persona
necesita la llave). Para envío de datos es
preferible la criptografía asimétrica”.
La criptografía asimétrica:
Es la que emplea un esquema de llave pública y llave privada. La información se
encriptar con la llave pública, y se desencriptar con la llave privada. No presenta el
problema de transmisión de la llave que tiene la criptografía simétrica, ya que la
llave pública no sirve para desencriptar la información”.
Volver
Teoría de grafos
En matemáticas y en ciencias de la computación, la teoría de grafos (también
llamada teoría de las gráficas) estudia las propiedades de los grafos (también
llamadas gráficas). Un grafo es un conjunto, no vacío, de objetos llamados vértices (o
nodos) y una selección de pares de vértices, llamados aristas (edges en inglés) que
pueden ser orientados o no. Típicamente, un grafo se representa mediante una serie
de puntos (los vértices) conectados por líneas (las aristas).
Estructuras de datos en la representación de grafos
Existen diferentes formas de almacenar grafos en una computadora. La estructura
de datos usada depende de las características del grafo y el algoritmo usado para
manipularlo. Entre las estructuras más sencillas y usadas se encuentran las listas y
las matrices, aunque frecuentemente se usa una combinación de ambas. Las listas
son preferidas en grafos dispersos porque tienen un eficiente uso de la memoria.
Por otro lado, las matrices proveen acceso rápido, pero pueden consumir grandes
cantidades de memoria.
Volver
Lógica matemática
La lógica matemática es una parte de la lógica y las matemáticas, que consiste en el
estudio matemático de la lógica y en la aplicación de este estudio a otras áreas de las
matemáticas. La lógica matemática guarda estrechas conexiones con la ciencias de la
computación y la lógica filosófica.
La lógica matemática estudia los sistemas formales en relación con el modo en el que
codifican conceptos intuitivos de objetos matemáticos como
conjuntos, números, demostraciones y computación.
La lógica matemática suele dividirse
en cuatro subcampos:
•teoría de modelos
•teoría de la demostración
•teoría de conjuntos
•teoría de la recursión.
La investigación en lógica
matemática ha jugado un papel
fundamental en el estudio de los
fundamentos de las matemáticas.
La lógica matemática fue también
llamada lógica simbólica. El primer
término todavía se utiliza como
sinónimo suyo, pero el segundo se
refiere ahora a ciertos aspectos de la
teoría de la demostración.
La lógica matemática no es la "lógica
de las matemáticas" sino la
"matemática de la lógica". Incluye
aquellas partes de la lógica que
pueden ser modeladas y estudiadas
matemáticamente.
Volver
Teoría de tipos de datos
En los lenguajes de programación un tipo de dato es un atributo de una parte de los datos que indica al
ordenador (y/o al programador) algo sobre la clase de datos sobre los que se va a procesar. Esto incluye
imponer restricciones en los datos, como qué valores pueden tomar y qué operaciones se pueden realizar.
Tipos de datos comunes son: enteros, números de coma flotante (decimales), cadenas
alfanuméricas, fechas, horas, colores, coches o cualquier cosa que se nos ocurra.
Los colores, por otra parte, se representan como tres bytes denotando la cantidad de rojo, verde y azul, y
una cadena de caracteres representando el nombre del color; las operaciones permitidas incluyen la
adición y sustracción, pero no la multiplicación.
Un tipo de dato puede ser también visto como una limitación impuesta en la interpretación de los datos en
un sistema de tipificación, describiendo la representación, interpretación y la estructura de los valores u
objetos almacenados en la memoria del ordenador. El sistema de tipificación usa información de los tipos
de datos para comprobar la verificación de los programas que acceden o manipulan los datos.
Volver
Teoría de la computación
La teoría de la computación o informática teórica (en inglés Theoretical Computer
Science) es una ciencia cuyas bases están establecidas básicamente en principios
matemáticos y conjunta varias ramas de las matemáticas. Es un campo
especialmente rico para la indagación filosófica. Alan Turing, establece la relación
entre la lógica y la computación electrónica, plantea la famosa Máquina de Turing, la
cual es la base de la Teoría de la Computación actual. Turing es, por
tanto, considerado el padre de la Teoría de la Computación.
La teoría de la computación se vale de la lógica matemática, teoría de
conjuntos, teoría de grafos, álgebra matricial, álgebra relacional, etc.
Principales subramas Otras subramas
•Teoría de autómatas •Modelos de cómputo
•Teoría de la •Teoría algorítmica de la información
compatibilidad •Especificación y verificación formal
•Teoría de la complejidad •La Teoría del aprendizaje
computacional computacional
•Teoría de tipos
Volver
Teoría de autómatas
Un autómata es un sistema secuencial, aunque en ocasiones la palabra es utilizada
también para referirse a un robot. Puede definirse como un equipo electrónico
programable en lenguaje no informático y diseñado para controlar, en tiempo real y en
ambiente industrial, procesos secuenciales. Sin embargo, la rápida evolución de los
autómatas hace que esta definición no esté cerrada.
Un autómata programable se puede considerar como un sistema basado en
un microprocesador, siendo sus partes fundamentales la Unidad Central de Proceso
(CPU), la Memoria y el Sistema de Entradas y Salidas (E/S).
Volver
Teoría de la computabilidad
La Teoría de la computabilidad
es la parte de la computación
que estudia los problemas de
decisión que pueden ser
resueltos con un algoritmo o
equivalentemente con una
máquina de Turing.
La teoría de la complejidad
computacional clasifica las
funciones computables según el
uso que hacen de diversos
recursos en diversos tipos de
máquina.
Volver
Teoría de la complejidad computacional
La teoría de la complejidad computacional es la rama de la teoría de la computación
que estudia, de manera teórica, los recursos requeridos durante el cómputo de un
algoritmo para resolver un problema. Los recursos comúnmente estudiados son el
tiempo (mediante una aproximación al número y tipo de pasos de ejecución de un
algoritmo para resolver un problema) y el espacio (mediante una aproximación a la
cantidad de memoria utilizada para resolver un problema). Se pueden estudiar
igualmente otros parámetros, tales como el número de procesadores necesarios para
resolver el problema en paralelo. La teoría de la complejidad difiere de la teoría de la
compatibilidad en que ésta se ocupa de la factibilidad de expresar problemas como
algoritmos efectivos sin tomar en cuenta los recursos necesarios para ello.
Clases de complejidad:
Los problemas de decisión se clasifican en conjuntos de complejidad
comparable llamados clases de complejidad.
La clase de complejidad P es el conjunto de los problemas de
decisión que pueden ser resueltos en una máquina determinista en
tiempo poli nómico, lo que corresponde intuitivamente a problemas
que pueden ser resueltos aún en el peor de sus casos.
La clase de complejidad NP es el conjunto de los problemas de
decisión que pueden ser resueltos por una máquina no determinista
en tiempo poli nómico.
Esta clase contiene muchos problemas que se desean resolver en la
práctica, incluyendo el problema de satisfacibilidad booleana y el
problema del viajante, un camino Hamiltoniano para recorrer todos
los vértices una sola vez. Todos los problemas de esta clase tienen la
propiedad de que su solución puede ser verificada efectivamente.
Volver
Análisis de algoritmos
El análisis de algoritmos es una parte
importante de la Teoría de
complejidad computacional más
amplia, que provee estimaciones
teóricas para los recursos que
necesita cualquier algoritmo que
resuelva un problema computacional
dado. Estas estimaciones resultan ser
bastante útiles en la búsqueda de
algoritmos eficientes.
Volver
Algoritmos
Un algoritmo es un conjunto finito de pasos
definidos, estructurados en el tiempo y formulados con base a
un conjunto finito de reglas no ambiguas, que proveen un
procedimiento para dar la solución o indicar la falta de esta a
un problema en un tiempo determinado. [Rodolfo Quispe-
Otazu, 2004]
Características:
Las características fundamentales que
debe cumplir todo algoritmo son:
•Bigüedad, cada paso del algoritmo
debe indicar la acción a realizar sin
criterios de interpretación.
•Ser finito: Un número específico y
numerable de pasos debe componer al
algoritmo, el cual deberá finalizar al
completarlos.
•Tener cero o más entradas: Datos son
proporcionados a un algoritmo como
insumo (o estos son generados de
alguna forma) para llevar a cabo las
operaciones que comprende.
•Tener una o más salidas:
Debe siempre devolver un resultado; de
nada sirve un algoritmo que hace algo y
nunca sabemos que fue. El devolver un
resultado no debe ser considerado como
únicamente “verlos” en forma impresa o en
pantalla, como ocurre con las
computadoras. Existen muchos otros
mecanismos susceptibles de programación
que no cuentan con una salida de
resultados de esta forma. Por salida de
resultados debe entenderse todo medio o
canal por el cual es posible apreciar los
efectos de las acciones del algoritmo.
•Efectividad:
El tiempo y esfuerzo por cada paso
realizado debe ser preciso, no usando nada
más ni nada menos que aquello que se
requiera para y en su ejecución
Volver
Estructuras de datos
En programación, una estructura de datos es una forma de organizar un
conjunto de datos elementales con el objetivo de facilitar su
manipulación. Un dato elemental es la mínima información que se tiene
en un sistema.
Una estructura de datos define la organización e interrelación de éstos y
un conjunto de operaciones que se pueden realizar sobre ellos.
Las operaciones básicas Otras operaciones que se
son: pueden realizar son:
•Alta, adicionar un nuevo •Ordenamiento, de los
valor a la estructura. elementos pertenecientes a
•Baja, borrar un valor de la la estructura.
estructura. •Apareo, dadas dos
•Búsqueda, encontrar un estructuras originar una
determinado valor en la nueva ordenada y que
estructura para realizar una contenga a las apareadas.
operación con este valor, en
forma secuencial o binario
(siempre y cuando los datos
estén ordenados).
Cada estructura ofrece ventajas y desventajas en relación a la simplicidad
y eficiencia para la realización de cada operación. De esta forma, la
elección de la estructura de datos apropiada para cada problema depende
de factores como la frecuencia y el orden en que se realiza cada operación
sobre los datos. Volver
Compiladores
Los compiladores son programas o herramientas encargadas de compilar. Un compilador
toma un texto (código fuente) escrito en un lenguaje de alto nivel y lo traduce a un lenguaje
comprensible por las computadoras (código objeto).
Básicamente, existen dos grandes formas de ejecutar programas: programas compilados
(previamente pasados por un compilador) y programas interpretados (necesitan pasar por un
intérprete para ejecutarse en tiempo real).
Características de un compilador
Generalmente un compilador se divide en dos partes:
•Front End: parte que analiza el código fuente, comprueba su validez, genera el árbol de
derivación y rellena los valores de la tabla de símbolos. Parte que suele ser independiente de
la plataforma o sistema operativo para el que funcionará.
•Back End: parte en donde se genera el código máquina exclusivo para una plataforma a
partir de lo analizado en el front end.
Por lo general el resultado del back end no puede ser ejecutado directamente, se necesita
pasar por un proceso de enlazado (linker).
Existen varios tipos de compiladores:
•Compiladores cruzados
•Compiladores optimizadores
•Compiladores de una sola pasada
•Compiladores de varias pasadas
•Compiladores JIT (Just In Time).
Volver
Teoría de lenguajes de programación
Teoría del lenguaje de programación (conocido comúnmente como PLT) es un
rama de informática ese se ocupa del diseño, de la puesta en práctica, del análisis,
de la caracterización, y de la clasificación de lenguajes de programación y lenguaje
de programación características.
Es un campo multidisciplinario, ambos dependiendo de (y en algunos casos
afectando) matemáticas, tecnología de dotación lógica, lingüística, e incluso
ciencias cognoscitivas. Es un rama bien-reconocido de la informática, y en fecha
2006, un área activa de la investigación, con los resultados publicados en numeroso
diarios dedicado al PLT, así como en general publicaciones de la informática y de
la ingeniería. Volver
Minería de datos
Algunos sistemas que son sólo parcialmente conocidos, producen una cantidad
inmensa de datos; estos datos con frecuencia contienen valiosa información que
puede resultar muy útil y ser vista como vetas de oro por los ojos de un ejecutivo
de una corporación.
Las dimensiones de las base de datos grandes (montañas) y sus velocidades de
crecimiento, hacen muy difícil para un humano su análisis y la extracción de
alguna información importante (oro). Aún con el uso de herramientas estadísticas
clásicas esta tarea es casi imposible.
El descubrimiento de
conocimiento en base de datos
(KDD) combina las técnicas
tradicionales con numerosos
recursos desarrollados en el
área de la inteligencia artificial.
En estas aplicaciones el
término "Minería de Datos"
(Data mining) ha tenido más
aceptación.
En algunos casos las
herramientas provenientes de
la inteligencia artificial son
nuevas, no del todo
comprendidas y carentes de un
soporte teórico formal. Pero en
este caso el objetivo es tan
valioso, que los resultados
prácticos han rebasado a la
elegancia académica.
Volver
Programación concurrente
Un programa concurrente es un programa que tiene mas de una línea lógica de ejecución, es decir, es un
programa que parece que varias partes del mismo se ejecutan simultáneamente. Un ejemplo de esto es un
programa que realice determinada función y, simultáneamente, exponga datos en la pantalla. Un programa
concurrente puede correr en varios procesadores simultáneamente o no. Esta importancia de la concurrencia
es especialmente destacable en sistemas operativos como Linux, que además de concurrentes, presentan
unos mecanismos de concurrencia estables.
El concepto fundamental de la programación concurrente es la noción de proceso. El termino proceso fue
utilizado por primera vez por los diseñadores del sistema Multics en los años 60’s. Desde entonces, el
termino proceso, utilizado a veces como sinónimo de tarea, ha tenido muchas definiciones.
Volver
Redes de computadoras
Una red de computadoras es un sistema de comunicación de datos que enlaza
varias computadoras y periféricos como impresoras, sistemas de almacenamiento
masivo, bibliotecas de CD-ROM, módem, fax y muchos otros dispositivos.
La más simple de las redes es una caja de conexiones y un cable, que permite
compartir la misma impresora a varios usuarios. Con este sistema, sólo hay un
usuario que puede enviar trabajos de impresión en cada momento.
Los conectores serie o paralelo ofrecen un modo económico de montar una
red, pero tienen capacidades limitadas de impresión y transferencia de archivos.
Para montar una red multiusuario, realmente útil, hacen falta tarjetas de interfaz
de red (NICs = Netware Interface Cards) y sistemas de cableado.
Volver
Computo paralelo
La computación paralela es una técnica de programación en la que muchas instrucciones se ejecutan
simultáneamente. Se basa en el principio de que los problemas grandes se pueden dividir en partes más
pequeñas que pueden resolverse de forma concurrente ("en paralelo"). Existen varios tipos de
computación paralela: paralelismo a nivel de bit, paralelismo a nivel de instrucción, paralelismo de datos
y paralelismo de tareas. Durante muchos años, la computación paralela se ha aplicado en la computación
de altas prestaciones, pero el interés en ella ha aumentado en los últimos años debido a las restricciones
físicas que impiden el escalado en frecuencia. La computación paralela se ha convertido en el paradigma
dominante en la arquitectura de computadores, principalmente en los procesadores multinúcleo. Sin
embargo, recientemente, el consumo de energía de los ordenadores paralelos se ha convertido en una
preocupación.
Los ordenadores paralelos se pueden clasificar según el nivel de paralelismo que
admite su hardware: los ordenadores multinúcleo y multiproceso tienen varios
elementos de procesamiento en una sola máquina, mientras que los clusters, los
MPP y los grids emplean varios ordenadores para trabajar en la misma tarea.
Los programas de ordenador paralelos son más difíciles de escribir que los
secuenciales porque la concurrencia introduce nuevos tipos de errores de
software, siendo las condiciones de carrera los más comunes. La comunicación y la
sincronización entre las diferentes subtareas son típicamente las grandes barreras
para conseguir un buen rendimiento de los programas paralelos. El incremento de
velocidad que consigue un programa como resultado de la paralelisacion viene
dado por la ley de Amdahl.
Volver
Sistemas Distribuidos
La computación distribuida o informática en
malla, es un nuevo modelo para resolver
problemas de computación masiva utilizando un
gran número de computadoras organizadas en
racimos incrustados en una infraestructura de
telecomunicaciones distribuida.
Un sistema distribuido se define como: una
colección de computadoras separados físicamente
y conectados entre sí por una red de
comunicaciones distribuida; cada máquina posee
sus componentes de hardware y software que el
usuario percibe como un solo sistema (no necesita
saber qué cosas están en qué máquinas).
El usuario accede a los recursos remotos (RPC) de la misma manera en que accede a
recursos locales, o un grupo de computadores que usan un software para conseguir un
objetivo en común. Los sistemas distribuidos deben ser muy confiables, ya que si un
componente del sistema se descompone otro componente debe de ser capaz de
reemplazarlo, esto se denomina Tolerancia a Fallos. El tamaño de un sistema distribuido
puede ser muy variado, ya sean decenas de hosts (red de área local), centenas de hosts (red
de área metropolitana), y miles o millones de hosts (Internet); esto se denomina
escalabilidad.
Volver
Inteligencia Artificial
Se denomina inteligencia artificial (IA) a la rama de las Ciencias de la Computación dedicada al
desarrollo de agentes racionales no vivos.
Para explicar la definición anterior, entiéndase a un agente como cualquier cosa capaz de percibir su
entorno (recibir entradas), procesar tales percepciones y actuar en su entorno (proporcionar salidas), y
entiéndase a la racionalidad como la característica que posee una elección de ser correcta, más
específicamente, de tender a maximizar un resultado esperado (este concepto de racionalidad es más
general y por ello más adecuado que inteligencia para definir la naturaleza del objetivo de esta
disciplina).
Por lo tanto, y de manera más
específica la inteligencia artificial es la
disciplina que se encarga de construir
procesos que al ser ejecutados sobre
una arquitectura física producen
acciones o resultados que maximizan
una medida de rendimiento
determinada, basándose en la
secuencia de entradas percibidas y en
el conocimiento almacenado en tal
arquitectura.
Existen distintos tipos de conocimiento
y medios de representación del
conocimiento, el cual puede ser
cargado en el agente por su diseñador
o puede ser aprendido por el mismo
agente utilizando técnicas de
aprendizaje.
También se distinguen varios tipos de procesos válidos para obtener resultados racionales,
que determinan el tipo de agente inteligente. De más simples a más complejos, los cinco
principales tipos de procesos son:
•Ejecución de una respuesta predeterminada por cada entrada (análogas a actos reflejos en
seres vivos).
•Búsqueda del estado requerido en el conjunto de los estados producidos por las acciones
posibles.
•Algoritmos genéticos (análogo al proceso de evolución de las cadenas de ADN).
•Redes neuronales artificiales (análogo al funcionamiento físico del cerebro de animales y
humanos).
•Razonamiento mediante una lógica formal (análogo al pensamiento abstracto humano).
También existen distintos tipos de percepciones y acciones, pueden ser obtenidas y
producidas, respectivamente por sensores físicos y sensores mecánicos en
máquinas, pulsos eléctricos u ópticos en computadoras, tanto como por entradas y
salidas de bits de un software y su entorno software.
Varios ejemplos se encuentran en el área de control de sistemas, planificación
automática, la habilidad de responder a diagnósticos y a consultas de los
consumidores, reconocimiento de escritura, reconocimiento del habla y
reconocimiento de patrones. Los sistemas de IA actualmente son parte de la rutina en
campos como economía, medicina, ingeniería y la milicia, y se ha usado en gran
variedad de aplicaciones de software, juegos de estrategia como ajedrez de
computador y otros videojuegos.
Volver
Razonamiento Automatizado
Razonamiento automatizado es un área de informática dedicado a entender diversos
aspectos de razonamiento de una manera que permite la creación del software que permite
que razonen las computadoras totalmente o casi totalmente automáticamente. Como
tal, generalmente se considera un subcampos de inteligencia artificial, solamente también
tiene conexiones fuertes a informática teórica e iguale filosofía.
Las subzonas desarrolladas del razonamiento automatizado están probablemente el probar
automatizado del teorema (y el subcampo menos automatizado pero más pragmático de el
probar interactivo del teorema) y comprobación automatizada de la prueba (visto como
razonamiento correcto garantizado bajo asunciones fijas), solamente trabajo extenso
también se ha hecho en razonar cerca analogía, inducción y abducción.
Otros asuntos importantes están razonando debajo incertidumbre y no-
mono tónico razonamiento. Una parte importante del campo de la
incertidumbre es la de la argumentación, donde otros apremios del
minimality y de la consistencia se aplican encima de la deducción
automatizada más estándar. El sistema de Oscar del Pollock de Juan es un
ejemplo de un sistema automatizado de la argumentación que sea más
específico que siendo justo un proveer automatizado del teorema. La
argumentación formal es subcampo de la inteligencia artificial.
Las herramientas y las técnicas incluyen las lógicas y el calculi clásicos del
teorema automatizado que prueba, pero también lógica confusa, Inferencia
Bayesian, razonando con entropía máxima y una gran cantidad de técnicas
ad hoc menos formales.
Volver
Robótica
La robótica es un concepto de dominio publico.
La mayor parte de la gente tiene una idea de lo
que es la robótica, sabe sus aplicaciones y el
potencial que tiene; sin embargo, no conocen el
origen de la palabra robot, ni tienen idea del
origen de las aplicaciones útiles de la robótica
como ciencia.
La robótica como hoy en día la
conocemos, tiene sus orígenes hace miles de
anos. Nos basaremos en hechos registrados a
través de la historia, y comenzaremos aclarando
que antiguamente los robots eran conocidos con
el nombre de autómatas, y la robótica no era
reconocida como ciencia, es mas, la palabra
robot surgió hace mucho después del origen de
los autómatas.
Desde el principio de los tiempos, el hombre ha deseado crear vida artificial. Se
ha empeñado en dar vida a seres artificiales que le acompañen en su
morada, seres que realicen sus tareas repetitivas, tareas pesadas o difíciles de
realizar por un ser humano. De acuerdo a algunos autores, como J. J. C. Smart y
Jasia Reichardt, consideran que el primer autómata en toda la historia fue Adán
creado por Dios. De acuerdo a esto, Adán y Eva son los primero autómatas
inteligentes creados, y Dios fue quien los programó y les dio sus primeras
instrucciones que debieran de seguir. Dentro de la mitología griega se puede
encontrar varios relatos sobre la creación de vida artificial, por ejemplo, Prometeo
creo el primer hombre y la primer mujer con barro y animados con el fuego de
los cielos. De esta manera nos damos cuenta de que la humanidad tiene la
obsesión de crear vida artificial desde el principio de los tiempos. Muchos han
sido los intentos por lograrlo.
Los hombres creaban autómatas como un pasatiempo, eran creados con el fin de
entretener a su dueño. Los materiales que se utilizaban se encontraban al alcance
de todo el mundo, esto es, utilizaban maderas resistentes, metales como el cobre
y cualquier otro material moldeable, esto es, que no necesitara o requiriera de
algún tipo de transformación para poder ser utilizado en la creación de los
autómatas.
Estos primeros autómatas utilizaban, principalmente, la fuerza bruta para poder
realizar sus movimientos. A las primeras maquinas herramientas que ayudaron al
hombre a facilitarle su trabajo no se les daba el nombre de autómata, sino más
bien se les reconocía como artefactos o simples maquinas.
Volver
Visión por computador
La Visión artificial, también conocida como Visión por Computador (del inglés Computer Visión) o
Visión técnica, es un subcampo de la inteligencia artificial. El propósito de la visión artificial es
programar un computador para que "entienda" una escena o las características de una imagen. Esquema
de relaciones entre visión por computadora y otras áreas afines.
Los objetivos típicos de la visión artificial incluyen:
•La detección, segmentación, localización y reconocimiento de ciertos objetos en imágenes.
•La evaluación de los resultados.
•Registro de diferentes imágenes de una misma escena u objeto, i.e., hacer concordar un
mismo objeto en diversas imágenes.
•Seguimiento de un objeto en una secuencia de imágenes.
•Mapeo de una escena para generar un modelo tridimensional de la escena; tal modelo
podría ser usado por un robot para navegar por la escena.
•Estimación de las posturas tridimensionales de humanos.
•Búsqueda de imágenes digitales por su
•contenido.
•Estos objetivos se consiguen por medio de reconocimiento de patrones,
• aprendizaje estadístico, geometría de
proyección, procesado de imágenes,
teoría de gráficos y otros campos.
•La visión artificial cognitiva está muy
relacionada con la psicología cognitiva
y la computación biológica.
Volver
Aprendizaje Automático
El Aprendizaje Automático o Aprendizaje de Máquinas es una rama de la Inteligencia
Artificial cuyo objetivo es desarrollar técnicas que permitan a las computadoras aprender.
De forma más concreta, se trata de crear programas capaces de generalizar
comportamientos a partir de una información no estructurada suministrada en forma de
ejemplos. Es, por lo tanto, un proceso de inducción del conocimiento.
En muchas ocasiones el campo de actuación del Aprendizaje Automático se solapa con el
de la Estadística, ya que las dos disciplinas se basan en el análisis de datos. Sin embargo, el
Aprendizaje Automático se centra más en el estudio de la Complejidad Computacional de
los problemas. Muchos problemas son de clase NP-hard, por lo que gran parte de la
investigación realizada en Aprendizaje Automático está enfocada al diseño de soluciones
factibles a esos problemas. El Aprendizaje Automático puede ser visto como un intento de
automatizar algunas partes del Método Científico mediante métodos matemáticos.
El Aprendizaje Automático tiene una amplia gama de aplicaciones, incluyendo
motores de búsqueda, diagnósticos médicos, detección de fraude en el uso de
tarjetas de crédito, análisis del mercado de valores, clasificación de secuencias de
ADN, reconocimiento del habla y del lenguaje escrito, juegos y robótica.
Tipos de algoritmos
Los diferentes algoritmos de Aprendizaje Automático se agrupan en una
taxonomía en función de la salida de los mismos. Algunos tipos de algoritmos son:
•Aprendizaje supervisado (El algoritmo produce una función que establece una
correspondencia entre las entradas y las salidas deseadas del sistema. )
•Aprendizaje no supervisado (Todo el proceso de modelado se lleva a cabo sobre
un conjunto de ejemplos formado tan sólo por entradas al sistema. No se tiene
información sobre las categorías de esos ejemplos.)
•Aprendizaje por refuerzo (El algoritmo aprende observando el mundo que le
rodea. Su información de entrada es el feedback o retroalimentación que obtiene
del mundo exterior como respuesta a sus acciones.)
•Transducción (Trata de predecir las categorías de los futuros ejemplos basándose
en los ejemplos de entrada, sus respectivas categorías y los ejemplos nuevos al
sistema.)
•Aprendizaje multi-tarea (Métodos de aprendizaje que usan conocimiento
previamente aprendido por el sistema de cara a enfrentarse a problemas parecidos
a los ya vistos.)
En el aprendizaje automático podemos obtener 3 tipos de conocimiento los cuáles son:
1. Crecimiento
Es el que se adquiere de lo que nos rodea, el cual guarda la información en la memoria como
si dejara huellas.
2. Reestructuración
Al interpretar los conocimientos el individuo razona y genera nuevo conocimiento al cual se
le llama de reestructuración.
3. Ajuste
Es el que se obtiene al generalizar varios conceptos o generando los propios.
Los tres tipos se efectúan durante un proceso de aprendizaje automático pero la importancia
de cada tipo de conocimiento depende de las características de lo que se está tratando de
aprender.
El aprendizaje es más que una necesidad, es un factor primordial para satisfacer las
necesidades de la inteligencia artificial.
Volver
Computación grafica
La computación gráfica o gráficos por ordenador es el campo de la informática
visual, donde se utilizan computadoras tanto para generar imágenes visuales sintéticamente
como integrar o cambiar la información visual y espacial probada del mundo real.
El primer mayor avance en la gráfica realizada por computadora era el desarrollo de
Sketchpad en 1962 por Ivan Sutherland.
Este campo puede ser dividido en varias áreas: Interpretado 3D en tiempo real (a menudo
usado en juegos de vídeo), animación de computadora, captura de vídeo y creación de vídeo
interpretado, edición de efectos especiales (a menudo usado para películas y
televisión), edición de imagen, y modelado (a menudo usado para ingeniería y objetivos
médicos).
El desarrollo en la gráfica realizada por computadora
fue primero alimentado por intereses académicos y
patrocinio del gobierno. Sin embargo, cuando las
aplicaciones verdaderas mundiales de la gráfica
realizada por computadora (CG) en televisión y
películas demostraron una alternativa viable a efectos
especiales más a las tradicionales y las técnicas de
animación, los comerciales han financiado cada vez
más el avance de este campo.
A menudo se piensa que la primera película para usar
gráficos realizados por computadora era 2001: A Space
Odyssey (1968), que intentó mostrar como las
computadoras serían mucho más gráficas en el futuro.
Sin embargo, todos los gráficos de computadora en
aquella película eran la animación dibujada a mano
(por ejemplo en las pantallas de televisión se simulaba
el comportamiento de las computadoras con dibujos), y
las secuencias de efectos especiales fue producida
completamente con efectos ópticos y modelos
convencionales.
Quizás el primer uso de la gráfica realizada por
computadora expresamente para ilustrar gráfica
realizada por computadora estaba en Futureworld
(1976), que incluyó una animación de una cara humana
y mano - producido por Ed Catmull y Fred Parke en la
Universidad de Utah. Volver
Procesamiento digital de imágenes
El termino procesamiento digital de imágenes versa sobre la manipulación y análisis
de imágenes por computadora. De aquí en adelante se usara el termino procesado de
imágenes refiriéndose a procesamiento digital de imágenes.
El procesamiento de imagen puede considerarse como un tipo especial del
procesamiento digital en dos dimensiones, el cual se usa para revelar información
sobre imágenes y que
involucra hardware, software y soporte teórico.
Volver
Geometría computacional
Geometría Computacional es un ramo de la
Ciencia de la Computación que estudia
algoritmos y estructuras de datos para la
resolución computacional de problemas
geométricos. Además de eso, algunos
problemas puramente geométricos surgen del
estudio de algoritmos y, por eso, también son
considerados parte de la geometría
computacional.
Los problemas en Geometría Computacional
son tratados en términos de objetos
geométricos elementales como
puntos, rectas, segmentos de
recta, polígonos, etc. En general, el objetivo de
esta disciplina es resolver los problemas
geométricos de forma eficiente, es
decir, utilizando el más pequeño número
posible de operaciones simples sobre los
elementos geométricos. La Geometría
Computacional da enfuse la complexidades
computacional de los problemas y algoritmos
estudiados.
La Geometría Computacional emergió de áreas de desarrollo y análisis de
algoritmos a mediados de la década de 1970. El primer uso del término
Geometría Computacional con este sentido ocurrió en 1975.
La geometría computacional estudia tanto problemas geométricos
clásicos, como también problemas motivados por diversas áreas de la
computación como Computación Gráfica, dibujo asistido por ordenador
(CAD/CAM), robótica, sistemas de información geográfica, visión
computacional, optimización combinatoria, procesamiento de imágenes, teoría
de los grafos, dibujo de circuitos integrados, aprendizaje de máquina etc.
Volver
Bioinformatica
Bioinformatica es una disciplina científica emergente que utiliza tecnología de la
información para organizar, analizar y distribuir información biológica con la finalidad de
responder preguntas complejas en biología. Bioinformatica es un área de investigación
multidisciplinaria, la cual puede ser ampliamente definida como la interface entre dos
ciencias: Biología y Computación y esta impulsada por la incógnita del genoma humano y la
promesa de una nueva era en la cual la investigación genómica puede ayudar dramáticamente
a mejorar la condición y calidad de vida humana.
Avances en la detección y tratamiento de enfermedades y la producción de alimentos
genéticamente modificados son entre otros ejemplos de los beneficios mencionados más
frecuentemente. Involucra la solución de problemas complejos usando herramientas de
sistemas y computación. También incluye la colección, organización, almacenamiento y
recuperación de la información biológica que se encuentra en base de datos.
Según la definición del Centro Nacional para la Información Biotecnológica "National
Center for Biotechnology Information" (NCBI por sus siglas en Inglés, 2001):
"Bioinformatica es un campo de la ciencia en el cual confluyen varias disciplinas tales
como: biología, computación y tecnología de la información. El fin último de este
campo es facilitar el descubrimiento de nuevas ideas biológicas así como crear
perspectivas globales a partir de las cuales se puedan discernir principios unificadores
en biología. Al comienzo de la "revolución genómica", el concepto de Bioinformatica se
refería sólo a la creación y mantenimiento de base de datos donde se almacena
información biológica, tales como secuencias de nucleótidos y aminoácidos. El
desarrollo de este tipo de base de datos no solamente significaba el diseño de la misma
sino también el desarrollo de interfaces complejas donde los investigadores pudieran
acceder los datos existentes y suministrar o revisar datos
Volver
Computación cuántica
La computación cuántica es producto de la combinación de la mecánica cuántica y la
teoría de la computación, que se enfoca a estudiar si un problema puede ser resuelto
utilizando un procedimiento programado en una computadora, así como la cantidad
de recursos como energía y tiempo que se deben aplicar en caso de existir solución. En
consecuencia, la computación cuántica tiene como propósito la utilización de las
teorías de las que surge para incrementar la capacidad de las computadoras para
procesar información y solucionar problemas.
En la computación cuántica también convergen otras disciplinas como la
microelectrónica, la nanotecnología, las matemáticas, la criptografía, entre otras.
Los científicos se plantearon desde hace algunos años la interrogante de cuáles serían
las propiedades de una computadora en la cual los ceros y los unos (sistema binario)
estuvieran codificados en sistemas de dimensiones atómicas (un electrón, un
fotón, un átomo). En nuestro mundo, el procesamiento y almacenamiento de la
información sigue las leyes de la llamada mecánica clásica. Al pasar a sistemas de
tamaños atómicos las reglas cambiarían y la mecánica cuántica regiría el
comportamiento de los equipos. Los ceros y unos con que se maneja la información
actual en nuestros equipos de cómputo, denominados bits, se transformarían en
qubits (contracción del término inglés quantumbits), o bits cuánticos, siguiendo
reglas muy diferentes. Los qubits son los componentes básicos de una computadora
cuántica y están formados a partir de partículas subatómicas que interactúan para el
intercambio de información, lo que permitirá computadoras más poderosas para el
procesamiento de información.
Las computadoras clásicas o digitales codifican
información utilizando números binarios y pueden
hacer cálculos de un conjunto de números de una sola
vez cada uno. En cambio las computadoras cuánticas en
teoría codificarían información como una serie de
estados mecánicos cuánticos tales como las direcciones
de los electrones o las polarizaciones de un fotón, estas
características entre otras, permitirán la realización de
diversos cálculos simultáneamente a una velocidad y
capacidad nunca antes vistos.
Hasta el momento en varios laboratorios del mundo se
ha logrado con éxito arreglos y enlaces cuánticos de dos
y hasta tres qubits de estado sólido, materiales nano
estructurados que se localizan en chips que
interacciona y podrían formar un arsenal de qubits.
Otros de los temas relevantes en el campo de computación cuántica se refieren al desarrollo
de los algoritmos cuánticos. Un algoritmo (convencional) es un procedimiento matemático
programado en computadora. La creación de un algoritmo cuántico se ha convertido en uno
de los grandes retos que enfrentan la ciencia en la actualidad pues dicho algoritmo debe
resolver el problema para el que fue diseñado y además debe ser más veloz que cualquier
algoritmo convencional para resolver cualquier problema. Computadoras equipadas con
algoritmos cuánticos abren posibilidades antes no consideradas, disminuciones
exponenciales en el tiempo de procesamiento y realización de operaciones en paralelo sin
necesidad de agregar procesadores a la computadora.
Volver