Ciencias de la computacion

70
Ciencias de la computación Instituto Tecnológico de Saltillo Valdes Gaytan Daira A. Grupo de 11:00 a 12:00

Transcript of Ciencias de la computacion

Page 1: Ciencias de la computacion

Ciencias de la

computación

Instituto Tecnológico de SaltilloValdes Gaytan Daira A.Grupo de 11:00 a 12:00

Page 2: Ciencias de la computacion

C

i

e

n

c

i

a

s

D

e

L

aC

o

m

p

u

t

a

c

i

ó

n

Fundamentos

matemáticos

Teoría de la computación

Algoritmos y

estructura de

datos

Lenguajes de

programación y

compiladores

Bases de

datos

Sistemas concurrentes, p

aralelos y distribuidos

Inteligencia

artificial

Gráficos por computador

Computación científica

Fuentes

CriptografíaTeoría de grafos

Lógica matemáticasTeoría de tipos

Teoría de la computación

Teoría de autómatas

Teoría de la computabilidad

Teoría de la complejidad computacional

Análisis de algoritmosAlgoritmos

Estructuras de datos

Compiladores

Teoría de lenguajes de programación

Minería de datos

Programación concurrenteRedes de computadoras

Computo paraleloSistemas

distribuidosInteligencia artificial

Razonamiento AutomatizadoRobótica

Visión por computador

Aprendizaje automático

Computación grafica

Procesamiento digital de imágenes

Geometría computacional

Bioinformatica

Computación cuántica

Page 3: Ciencias de la computacion

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.

Page 4: Ciencias de la computacion

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.

Page 5: Ciencias de la computacion

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

Page 6: Ciencias de la computacion

Campos de las Ciencias de la Computación

Page 7: Ciencias de la computacion

Fundamentos matemáticos

Volver

Page 8: Ciencias de la computacion

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”.

Page 9: Ciencias de la computacion

¿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”.

Page 10: Ciencias de la computacion

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”.

Page 11: Ciencias de la computacion

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

Page 12: Ciencias de la computacion

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).

Page 13: Ciencias de la computacion

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

Page 14: Ciencias de la computacion

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.

Page 15: Ciencias de la computacion

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

Page 16: Ciencias de la computacion

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

Page 17: Ciencias de la computacion

Teoría de la computación

Volver

Page 18: Ciencias de la computacion

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

•Teoría de autómatas•Teoría de la compatibilidad•Teoría de la complejidad computacional

Otras subramas

•Modelos de cómputo•Teoría algorítmica de la información•Especificación y verificación formal•La Teoría del aprendizaje computacional•Teoría de tipos

Volver

Page 19: Ciencias de la computacion

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

Page 20: Ciencias de la computacion

Teoría de la computabilidad

La Teoría de la computabilidades 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

Page 21: Ciencias de la computacion

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.

Page 22: Ciencias de la computacion

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

Page 23: Ciencias de la computacion

Algoritmos y estructura

de datos

Volver

Page 24: Ciencias de la computacion

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

Page 25: Ciencias de la computacion

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]

Page 26: Ciencias de la computacion

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.

Page 27: Ciencias de la computacion

•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

Page 28: Ciencias de la computacion

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.

Page 29: Ciencias de la computacion

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.

Las operaciones básicas son:

•Alta, adicionar un nuevo valor a la estructura.•Baja, borrar un valor de la estructura.•Búsqueda, encontrar un determinado valor en la estructura para realizar una operación con este valor, en forma secuencial o binario (siempre y cuando los datos estén ordenados).

Otras operaciones que se pueden realizar son:

•Ordenamiento, de los elementos pertenecientes a la estructura.•Apareo, dadas dos estructuras originar una nueva ordenada y que contenga a las apareadas.

Volver

Page 30: Ciencias de la computacion

Lenguajes de programación

y compiladores

Volver

Page 31: Ciencias de la computacion

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).

Page 32: Ciencias de la computacion

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

Page 33: Ciencias de la computacion

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

Page 34: Ciencias de la computacion

Bases de datos

Volver

Page 35: Ciencias de la computacion

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.

Page 36: Ciencias de la computacion

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

Page 37: Ciencias de la computacion

Sistemas concurrentes,

paralelos y distribuidos

Volver

Page 38: Ciencias de la computacion

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

Page 39: Ciencias de la computacion

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

Page 40: Ciencias de la computacion

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.

Page 41: Ciencias de la computacion

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

Page 42: Ciencias de la computacion

Sistemas Distribuidos

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.

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).

Volver

Page 43: Ciencias de la computacion

Inteligencia Artificial

Volver

Page 44: Ciencias de la computacion

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).

Page 45: Ciencias de la computacion

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.

Page 46: Ciencias de la computacion

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).

Page 47: Ciencias de la computacion

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

Page 48: Ciencias de la computacion

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.

Page 49: Ciencias de la computacion

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

Page 50: Ciencias de la computacion

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.

Page 51: Ciencias de la computacion

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

Page 52: Ciencias de la computacion

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.

Page 53: Ciencias de la computacion

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

Page 54: Ciencias de la computacion

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.

Page 55: Ciencias de la computacion

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.)

Page 56: Ciencias de la computacion

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

Page 57: Ciencias de la computacion

Gráficos por computador

Volver

Page 58: Ciencias de la computacion

Computación grafica

La computación gráfica o gráficos por ordenador es el campo de la informáticavisual, donde se utilizan computadoras tanto para generar imágenes visuales sintéticamentecomo 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 deSketchpad en 1962 por Ivan Sutherland.

Este campo puede ser dividido en varias áreas: Interpretado 3D en tiempo real (a menudousado en juegos de vídeo), animación de computadora, captura de vídeo y creación de vídeointerpretado, edición de efectos especiales (a menudo usado para películas ytelevisión), edición de imagen, y modelado (a menudo usado para ingeniería y objetivosmédicos).

Page 59: Ciencias de la computacion

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

Page 60: Ciencias de la computacion

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

Page 61: Ciencias de la computacion

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.

Page 62: Ciencias de la computacion

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

Page 63: Ciencias de la computacion

Computación científica

Volver

Page 64: Ciencias de la computacion

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.

Page 65: Ciencias de la computacion

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

Page 66: Ciencias de la computacion

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.

Page 67: Ciencias de la computacion

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.

Page 68: Ciencias de la computacion

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

Page 69: Ciencias de la computacion

Fuentes:

http://www.grupoeducare.com/blog/template_permalink.asp?id=93

http://cienciasdelacomputacion.com

http://es.wikipedia.org/wiki/Ciencias_de_la_computaci%C3%B3n

http://www.rodolfoquispe.org/blog/que-es-un-algoritmo.php

http://homepages.mty.itesm.mx/al796887/criptografia.ppt

http://es.wikipedia.org/wiki/Teor%C3%ADa_de_grafos

http://es.wikipedia.org/wiki/Tipo_de_dato

http://enciclopedia.us.es/index.php/Teor%C3%ADa_de_la_computaci%C3%B3n

http://www.angelfire.com/oz/automatas/

http://es.wikipedia.org/wiki/Teor%C3%ADa_de_la_computabilidad

http://es.wikipedia.org/wiki/Complejidad_computacional

http://es.wikipedia.org/wiki/An%C3%A1lisis_de_algoritmos

http://www.mitecnologico.com/Main/Automatas

Page 70: Ciencias de la computacion

http://es.wikipedia.org/wiki/Estructura_de_datos

http://www.alegsa.com.ar/Dic/compilador.php

http://www.worldlingo.com/ma/enwiki/es/Programming_language_theory

http://www.answermath.com/mineria_de_datos.htm

http://www.depi.itch.edu.mx/apacheco/lengs/paralelo/index.html

http://www.angelfire.com/nc2/misdocumentos/redes/REDES.html

http://es.wikipedia.org/wiki/Programaci%C3%B3n_paralela

http://es.wikipedia.org/wiki/Sistemas_Distribuidos

http://es.wikipedia.org/wiki/Inteligencia_artificial

http://www.worldlingo.com/ma/enwiki/es/Automated_reasoning

http://www.monografias.com/trabajos6/larobo/larobo.shtml#intro

http://es.wikipedia.org/wiki/Visi%C3%B3n_por_computador

http://es.wikipedia.org/wiki/Aprendizaje_Autom%C3%A1tico

http://es.wikipedia.org/wiki/Computaci%C3%B3n_gr%C3%A1fica

http://delta.cs.cinvestav.mx/~fraga/Cursos/PDI/cap1.pdf

http://es.wikilingue.com/pt/Geometria_computacional

http://www.solociencia.com/biologia/bioinformatica-concepto.htm

http://www.periodistasenlinea.org/modules.php?op=modload&name=News&file=article&sid=1217

Volver