SlideShare una empresa de Scribd logo
1 de 57
Descargar para leer sin conexión
Enseñanza Mesclada
A distancia
Índice general
1 Algoritmo 1
1.1 Definición formal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Medios de expresión de un algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.1 Diagrama de flujo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.2 Pseudocódigo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.3 Sistemas formales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.4 Implementación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.5 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.6 Estructuras secuenciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Algoritmos como funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4 Análisis de algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.5 Ejemplo de algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.5.1 Descripción de alto nivel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.5.2 Descripción formal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.5.3 Implementación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.6 Véase también . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.6.1 Tipos de algoritmos según su función . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.6.2 Técnicas de diseño de algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.6.3 Temas relacionados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.6.4 Disciplinas relacionadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.7 Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.8 Bibliografía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.9 Enlaces externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2 Computación cuántica 7
2.1 Origen de la computación cuántica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2 Problemas de la computación cuántica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.3 Hardware para computación cuántica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.3.1 Condiciones a cumplir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.3.2 Candidatos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.4 Software para computación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.4.1 Algoritmos cuánticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.4.2 Modelos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
i
ii ÍNDICE GENERAL
2.4.3 Complejidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.4.4 Problemas propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.5 Cronología . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.5.1 Años 80 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.5.2 Años 90 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.5.3 Año 2000 hasta ahora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.6 Véase también . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.7 Notas y referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.8 Bibliografía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.9 Bibliografía complementaria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.10 Enlaces externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3 Computadora óptica 13
3.1 Componentes ópticos para la computadora digital binaria . . . . . . . . . . . . . . . . . . . . . . 13
3.2 Ideas falsas, retos y perspectivas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.3 Véase también . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.4 Enlaces externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4 Ciencias de la computación 15
4.1 Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.1.1 Mayores logros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.2 Filosofía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.2.1 Nombre del campo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.3 Campos de las ciencias de la computación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.3.1 Métodos formales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.3.2 Ciencias de la computación aplicadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.4 Relación con otros campos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.5 Véase también . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.6 Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.7 Bibliografía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.8 Enlaces externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
5 Educación a distancia 25
5.1 Características . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
5.1.1 Beneficios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
5.2 Ventajas y desventajas de la educación a distancia . . . . . . . . . . . . . . . . . . . . . . . . . . 26
5.2.1 Ventajas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
5.2.2 Desventajas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5.3 Generaciones de la Educación a Distancia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5.4 La relación telemática . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5.5 Roles en la educación a distancia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.6 Educación semipresencial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
ÍNDICE GENERAL iii
5.6.1 Ventajas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5.6.2 Desventajas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5.7 Educación a distancia en Hispanoamérica y España . . . . . . . . . . . . . . . . . . . . . . . . . 30
5.8 Biblioteca Virtual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5.9 Véase también . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5.10 Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5.11 Enlaces externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
5.11.1 Publicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
5.11.2 Universidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
6 Tecnologías de la información y la comunicación 32
6.1 Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
6.2 Un concepto nuevo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
6.3 Las tecnologías . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
6.3.1 Las redes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
6.3.2 Los terminales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
6.3.3 Consolas de juego . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
6.3.4 Servicios en las TIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
6.3.5 Nueva generación de servicios TIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
6.3.6 Blogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
6.3.7 Impacto y evolución de los servicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
6.4 Papel de las TIC en la empresa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
6.5 Límites de la inversión en las TIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
6.6 Efectos de las TIC en la opinión pública . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
6.7 Apertura de los países a las TIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
6.8 Lo que abarca el concepto de “nuevas tecnologías” . . . . . . . . . . . . . . . . . . . . . . . . . . 46
6.9 Véase también . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
6.10 Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
6.11 Enlaces externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
6.12 Origen del texto y las imágenes, colaboradores y licencias . . . . . . . . . . . . . . . . . . . . . . 49
6.12.1 Texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
6.12.2 Imágenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
6.12.3 Licencia del contenido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Capítulo 1
Algoritmo
La lámpara
no funciona
¿Está
enchufada?
¿Foco
quemado?
Comprar
nueva lámpara
No
Reemplazar
el foco
Enchufarla
Sí
No
Sí
Los diagramas de flujo sirven para representar algoritmos de
manera gráfica.
En matemáticas, lógica, ciencias de la computación y dis-
ciplinas relacionadas, un algoritmo (del griego y latín,
dixit algorithmus y éste a su vez del matemático persa Al-
Juarismi[1]
) es un conjunto prescrito de instrucciones o
reglas bien definidas, ordenadas y finitas que permite rea-
lizar una actividad mediante pasos sucesivos que no gene-
ren dudas a quien deba realizar dicha actividad.[2]
Dados
un estado inicial y una entrada, siguiendo los pasos sucesi-
vos se llega a un estado final y se obtiene una solución. Los
algoritmos son el objeto de estudio de la algoritmia.[1]
En la vida cotidiana, se emplean algoritmos frecuente-
mente para resolver problemas. Algunos ejemplos son los
manuales de usuario, que muestran algoritmos para usar
un aparato, o las instrucciones que recibe un trabajador
por parte de su patrón. Algunos ejemplos en matemática
son el algoritmo de multiplicación, para calcular el pro-
ducto, el algoritmo de la división para calcular el cocien-
te de dos números, el algoritmo de Euclides para obtener
el máximo común divisor de dos enteros positivos, o el
método de Gauss para resolver un sistema de ecuaciones
lineales.
1.1 Definición formal
En general, no existe ningún consenso definitivo en cuan-
to a la definición formal de algoritmo. Muchos autores
los señalan como listas de instrucciones para resolver un
cálculo o un problema abstracto, es decir, que un número
finito de pasos convierten los datos de un problema (en-
trada) en una solución (salida).[1][2][3][4][5][6]
Sin embar-
go cabe notar que algunos algoritmos no necesariamente
tienen que terminar o resolver un problema en particular.
Por ejemplo, una versión modificada de la criba de Era-
tóstenes que nunca termine de calcular números primos
no deja de ser un algoritmo.[7]
A lo largo de la historia varios autores han tratado de
definir formalmente a los algoritmos utilizando modelos
matemáticos. Esto fue realizado por Alonzo Church en
1936 con el concepto de “calculabilidad efectiva” basa-
da en su cálculo lambda y por Alan Turing basándose en
la máquina de Turing. Los dos enfoques son equivalen-
tes, en el sentido en que se pueden resolver exactamente
los mismos problemas con ambos enfoques.[8][9]
Sin em-
bargo, estos modelos están sujetos a un tipo particular de
datos como son números, símbolos o gráficas mientras
que, en general, los algoritmos funcionan sobre una vasta
cantidad de estructuras de datos.[3][1]
En general, la parte
común en todas las definiciones se puede resumir en las
siguientes tres propiedades siempre y cuando no conside-
remos algoritmos paralelos:[7]
Tiempo secuencial. Un algoritmo funciona en
tiempo discretizado –paso a paso–, definiendo
así una secuencia de estados "computacionales"
por cada entrada válida (la entrada son los da-
tos que se le suministran al algoritmo antes de
comenzar).
Estado abstracto. Cada estado computacional
puede ser descrito formalmente utilizando una
estructura de primer orden y cada algoritmo es
1
2 CAPÍTULO 1. ALGORITMO
independiente de su implementación (los algo-
ritmos son objetos abstractos) de manera que
en un algoritmo las estructuras de primer orden
son invariantes bajo isomorfismo.
Exploración acotada. La transición de un es-
tado al siguiente queda completamente deter-
minada por una descripción fija y finita; es de-
cir, entre cada estado y el siguiente solamente
se puede tomar en cuenta una cantidad fija y
limitada de términos del estado actual.
En resumen, un algoritmo es cualquier cosa que funcio-
ne paso a paso, donde cada paso se pueda describir sin
ambigüedad y sin hacer referencia a una computadora en
particular, y además tiene un límite fijo en cuanto a la
cantidad de datos que se pueden leer/escribir en un so-
lo paso. Esta amplia definición abarca tanto a algoritmos
prácticos como aquellos que solo funcionan en teoría, por
ejemplo el método de Newton y la eliminación de Gauss-
Jordan funcionan, al menos en principio, con números de
precisión infinita; sin embargo no es posible programar la
precisión infinita en una computadora, y no por ello dejan
de ser algoritmos.[10]
En particular es posible considerar
una cuarta propiedad que puede ser usada para validar la
tesis de Church-Turing de que toda función calculable se
puede programar en una máquina de Turing (o equivalen-
temente, en un lenguaje de programación suficientemente
general):[10]
Aritmetizabilidad. Solamente operaciones
innegablemente calculables están disponibles
en el paso inicial.
1.2 Medios de expresión de un al-
goritmo
Los algoritmos pueden ser expresados de muchas ma-
neras, incluyendo al lenguaje natural, pseudocódigo,
diagramas de flujo y lenguajes de programación entre
otros. Las descripciones en lenguaje natural tienden a ser
ambiguas y extensas. El usar pseudocódigo y diagramas
de flujo evita muchas ambigüedades del lenguaje natural.
Dichas expresiones son formas más estructuradas para re-
presentar algoritmos; no obstante, se mantienen indepen-
dientes de un lenguaje de programación específico.
La descripción de un algoritmo usualmente se hace en tres
niveles:
1. Descripción de alto nivel. Se establece el proble-
ma, se selecciona un modelo matemático y se expli-
ca el algoritmo de manera verbal, posiblemente con
ilustraciones y omitiendo detalles.
2. Descripción formal. Se usa pseudocódigo para des-
cribir la secuencia de pasos que encuentran la solu-
ción.
3. Implementación. Se muestra el algoritmo expresa-
do en un lenguaje de programación específico o al-
gún objeto capaz de llevar a cabo instrucciones.
También es posible incluir un teorema que demuestre que
el algoritmo es correcto, un análisis de complejidad o am-
bos.
1.2.1 Diagrama de flujo
Diagrama de flujo que expresa un algoritmo para calcular la raíz
cuadrada de un número x
Los diagramas de flujo son descripciones gráficas de algo-
ritmos; usan símbolos conectados con flechas para indicar
la secuencia de instrucciones y están regidos por ISO.
Los diagramas de flujo son usados para representar al-
goritmos pequeños, ya que abarcan mucho espacio y su
construcción es laboriosa. Por su facilidad de lectura son
usados como introducción a los algoritmos, descripción
de un lenguaje y descripción de procesos a personas aje-
nas a la computación.
1.2.2 Pseudocódigo
El pseudocódigo (falso lenguaje, el prefijo pseudo signifi-
ca falso) es una descripción de alto nivel de un algoritmo
que emplea una mezcla de lenguaje natural con algunas
convenciones sintácticas propias de lenguajes de progra-
mación, como asignaciones, ciclos y condicionales, aun-
1.3. ALGORITMOS COMO FUNCIONES 3
que no está regido por ningún estándar. Es utilizado para
describir algoritmos en libros y publicaciones científicas,
y como producto intermedio durante el desarrollo de un
algoritmo, como los diagramas de flujo, aunque presentan
una ventaja importante sobre estos, y es que los algorit-
mos descritos en pseudocódigo requieren menos espacio
para representar instrucciones complejas.
El pseudocódigo está pensado para facilitar a las perso-
nas el entendimiento de un algoritmo, y por lo tanto pue-
de omitir detalles irrelevantes que son necesarios en una
implementación. Programadores diferentes suelen utili-
zar convenciones distintas, que pueden estar basadas en la
sintaxis de lenguajes de programación concretos. Sin em-
bargo, el pseudocódigo, en general, es comprensible sin
necesidad de conocer o utilizar un entorno de programa-
ción específico, y es a la vez suficientemente estructurado
para que su implementación se pueda hacer directamente
a partir de él.
Así el pseudocódigo cumple con las funciones antes men-
cionadas para representar algo abstracto los protocolos
son los lenguajes para la programación. Busque fuentes
más precisas para tener mayor comprensión del tema.
1.2.3 Sistemas formales
La teoría de autómatas y la teoría de funciones recur-
sivas proveen modelos matemáticos que formalizan el
concepto de algoritmo. Los modelos más comunes son
la máquina de Turing, máquina de registro y funciones
μ-recursivas. Estos modelos son tan precisos como un
lenguaje máquina, careciendo de expresiones coloquiales
o ambigüedad, sin embargo se mantienen independien-
tes de cualquier computadora y de cualquier implemen-
tación.
1.2.4 Implementación
Muchos algoritmos son ideados para implementarse en
un programa. Sin embargo, los algoritmos pueden ser im-
plementados en otros medios, como una red neuronal, un
circuito eléctrico o un aparato mecánico y eléctrico. Al-
gunos algoritmos inclusive se diseñan especialmente para
implementarse usando lápiz y papel. El algoritmo de mul-
tiplicación tradicional, el algoritmo de Euclides, la criba
de Eratóstenes y muchas formas de resolver la raíz cua-
drada son sólo algunos ejemplos.
1.2.5 Variables
Son elementos que toman valores específicos de un tipo
de datos concreto. La declaración de una variable puede
realizarse comenzando con var. Principalmente, existen
dos maneras de otorgar valores iniciales a variables:
1. Mediante una sentencia de asignación.
2. Mediante un procedimiento de entrada de datos (por
ejemplo: 'read').
Ejemplo:
... i:=1; read(n); while i < n do begin (* cuerpo del bucle
*) i := i + 1 end; ...
1.2.6 Estructuras secuenciales
La estructura secuencial es aquella en la que una acción
sigue a otra en secuencia. Las operaciones se suceden de
tal modo que la salida de una es la entrada de la siguiente
y así sucesivamente hasta el fin del proceso. La asignación
de esto consiste, en el paso de valores o resultados a una
zona de la memoria. Dicha zona será reconocida con el
nombre de la variable que recibe el valor. La asignación
se puede clasificar de la siguiente forma:
1. Simples: Consiste en pasar un valor constante a una
variable (a ← 15)
2. Contador: Consiste en usarla como un verificador
del número de veces que se realiza un proceso (a ←
a + 1)
3. Acumulador: Consiste en usarla como un sumador
en un proceso (a ← a + b)
4. De trabajo: Donde puede recibir el resultado de una
operación matemática que involucre muchas varia-
bles (a ← c + b*1/2).
Un ejemplo de estructura secuencial, como obtener el
área de un triángulo:
Inicio ... float b, h, a; printf(“Diga la base”); scanf("%f”,
&b); printf(“Diga la altura”); scanf("%f”, &h); a =
(b*h)/2; printf(“El área del triángulo es %f”, a) ... Fin
1.3 Algoritmos como funciones
Esquemática de un algoritmo solucionando un problema de ciclo
hamiltoniano.
Un algoritmo se puede concebir como una función que
transforma los datos de un problema (entrada) en los da-
tos de una solución (salida). Más aun, los datos se pueden
representar a su vez como secuencias de bits, y en general,
de símbolos cualesquiera.[1][9][11]
Como cada secuencia
de bits representa a un número natural (véase Sistema bi-
nario), entonces los algoritmos son en esencia funciones
de los números naturales en los números naturales que sí
se pueden calcular. Es decir que todo algoritmo calcula
4 CAPÍTULO 1. ALGORITMO
una función f : N → N donde cada número natural es la
codificación de un problema o de una solución.
En ocasiones los algoritmos son susceptibles de nunca ter-
minar, por ejemplo, cuando entran a un bucle infinito.
Cuando esto ocurre, el algoritmo nunca devuelve ningún
valor de salida, y podemos decir que la función queda
indefinida para ese valor de entrada. Por esta razón se
considera que los algoritmos son funciones parciales, es
decir, no necesariamente definidas en todo su dominio de
definición.
Cuando una función puede ser calculada por medios algo-
rítmicos, sin importar la cantidad de memoria que ocu-
pe o el tiempo que se tarde, se dice que dicha función
es computable. No todas las funciones entre secuencias
datos son computables. El problema de la parada es un
ejemplo.
1.4 Análisis de algoritmos
Como medida de la eficiencia de un algoritmo, se suelen
estudiar los recursos (memoria y tiempo) que consume
el algoritmo. El análisis de algoritmos se ha desarrollado
para obtener valores que de alguna forma indiquen (o es-
pecifiquen) la evolución del gasto de tiempo y memoria
en función del tamaño de los valores de entrada.
El análisis y estudio de los algoritmos es una disciplina de
las ciencias de la computación y, en la mayoría de los ca-
sos, su estudio es completamente abstracto sin usar nin-
gún tipo de lenguaje de programación ni cualquier otra
implementación; por eso, en ese sentido, comparte las ca-
racterísticas de las disciplinas matemáticas. Así, el aná-
lisis de los algoritmos se centra en los principios básicos
del algoritmo, no en los de la implementación particular.
Una forma de plasmar (o algunas veces “codificar”) un
algoritmo es escribirlo en pseudocódigo o utilizar un len-
guaje muy simple tal como Lexico, cuyos códigos pueden
estar en el idioma del programador.
Algunos escritores restringen la definición de algoritmo
a procedimientos que deben acabar en algún momento,
mientras que otros consideran procedimientos que po-
drían ejecutarse eternamente sin pararse, suponiendo el
caso en el que existiera algún dispositivo físico que fue-
ra capaz de funcionar eternamente. En este último caso,
la finalización con éxito del algoritmo no se podría defi-
nir como la terminación de este con una salida satisfac-
toria, sino que el éxito estaría definido en función de las
secuencias de salidas dadas durante un periodo de vida
de la ejecución del algoritmo. Por ejemplo, un algoritmo
que verifica que hay más ceros que unos en una secuencia
binaria infinita debe ejecutarse siempre para que pueda
devolver un valor útil. Si se implementa correctamente,
el valor devuelto por el algoritmo será válido, hasta que
evalúe el siguiente dígito binario. De esta forma, mien-
tras evalúa la siguiente secuencia podrán leerse dos tipos
de señales: una señal positiva (en el caso de que el nú-
mero de ceros sea mayor que el de unos) y una negativa
en caso contrario. Finalmente, la salida de este algoritmo
se define como la devolución de valores exclusivamente
positivos si hay más ceros que unos en la secuencia y, en
cualquier otro caso, devolverá una mezcla de señales po-
sitivas y negativas.
1.5 Ejemplo de algoritmo
El problema consiste en encontrar el máximo de un con-
junto de números. Para un ejemplo más complejo véase
Algoritmo de Euclides.
1.5.1 Descripción de alto nivel
Dado un conjunto finito C de números, se tiene el pro-
blema de encontrar el número más grande. Sin pérdi-
da de generalidad se puede asumir que dicho conjunto
no es vacío y que sus elementos están numerados como
c0, c1, . . . , cn .
Es decir, dado un conjunto C = {c0, c1, . . . , cn} se pide
encontrar m tal que x ≤ m para todo elemento x que
pertenece al conjunto C .
Para encontrar el elemento máximo, se asume que el pri-
mer elemento ( c0 ) es el máximo; luego, se recorre el
conjunto y se compara cada valor con el valor del má-
ximo número encontrado hasta ese momento. En el caso
que un elemento sea mayor que el máximo, se asigna su
valor al máximo. Cuando se termina de recorrer la lista,
el máximo número que se ha encontrado es el máximo de
todo el conjunto.
1.5.2 Descripción formal
El algoritmo puede ser escrito de una manera más formal
en el siguiente pseudocódigo:
Sobre la notación:
• "←" representa una asignación: m ← x significa que
la variable m toma el valor de x ;
• "devolver" termina el algoritmo y devuelve el valor
a su derecha (en este caso, el máximo de C ).
1.5.3 Implementación
En lenguaje C++:
int max(int c[], int n) { int i, m = c[0]; for (i = 1; i < n;
i++) if (c[i] > m) m = c[i]; return m; }
1.7. REFERENCIAS 5
1.6 Véase también
1.6.1 Tipos de algoritmos según su función
• Algoritmo de ordenamiento
• Algoritmo de búsqueda
1.6.2 Técnicas de diseño de algoritmos
• Algoritmos voraces (greedy): seleccionan los ele-
mentos más prometedores del conjunto de candida-
tos hasta encontrar una solución. En la mayoría de
los casos la solución no es óptima.
• Algoritmos paralelos: permiten la división de un
problema en subproblemas de forma que se puedan
ejecutar de forma simultánea en varios procesado-
res.
• Algoritmos probabilísticos: algunos de los pasos de
este tipo de algoritmos están en función de valores
pseudoaleatorios.
• Algoritmos determinísticos: el comportamiento del
algoritmo es lineal: cada paso del algoritmo tiene
únicamente un paso sucesor y otro antecesor.
• Algoritmos no determinísticos: el comportamiento
del algoritmo tiene forma de árbol y a cada paso del
algoritmo puede bifurcarse a cualquier número de
pasos inmediatamente posteriores, además todas las
ramas se ejecutan simultáneamente.
• Divide y vencerás: dividen el problema en subcon-
juntos disjuntos obteniendo una solución de cada
uno de ellos para después unirlas, logrando así la so-
lución al problema completo.
• Metaheurísticas: encuentran soluciones aproxima-
das (no óptimas) a problemas basándose en un cono-
cimiento anterior (a veces llamado experiencia) de
los mismos.
• Programación dinámica: intenta resolver problemas
disminuyendo su coste computacional aumentando
el coste espacial.
• Ramificación y acotación: se basa en la construcción
de las soluciones al problema mediante un árbol im-
plícito que se recorre de forma controlada encon-
trando las mejores soluciones.
• Vuelta atrás (backtracking): se construye el espa-
cio de soluciones del problema en un árbol que se
examina completamente, almacenando las solucio-
nes menos costosas.
1.6.3 Temas relacionados
• Cota inferior asintótica
• Cota ajustada asintótica
• Complejidad computacional
• Diagramas de flujo
• Diagrama Nassi-Shneiderman
• Máquina de Turing
1.6.4 Disciplinas relacionadas
• Ciencias de la Computación
• Análisis de algoritmos
• Complejidad computacional
• Informática
• Inteligencia artificial
• Investigación operativa
• Matemáticas
• Programación
1.7 Referencias
[1] Brassard, Gilles; Bratley, Paul (1997). Fundamentos
de Algoritmia. Madrid: PRENTICE HALL. ISBN 84-
89660-00-X.
[2] Real Academia Española. Diccionario de la lengua espa-
ñola "Conjunto ordenado y finito de operaciones que per-
mite hallar la solución de un problema."
[3] Cormen, Thomas; Leiserson, Charles; Rivest, Ronald;
Stein, Clifford (2009). Introduction to algorithms. Cam-
bridge, Massachusetts: The MIT Press. ISBN 978-0-262-
53305-8.
[4] Ralph P. Grimaldi (1998). «Propiedades de los números
enteros: Inducción matemática». Matemáticas Discreta y
Combinatoria. México: Addison Wesley Longman de Mé-
xico. ISBN 968-444-324-2.
[5] Johnsonbaugh, Richard (2005). «Introducción a la teoría
de números». Matemáticas Discretas. México: PEARSON
EDUCACIÓN. ISBN 970-26-0637-3.
[6] Carl Reynolds & Paul Tymann (2008). Schaum’s Outli-
ne of Principles of Computer Science. McGraw-Hill. ISBN
978-0-07-146051-4.
[7] Gurevich, Yuri (2000). «Sequential Abstract State Machi-
nes capture Sequential Algorithms». ACM Transactions
on Computational Logic 1 (1). ISSN 1529-3785, 77-111.
6 CAPÍTULO 1. ALGORITMO
[8] John E. Savage (1987). The Complexity of Computing.
Krieger Publishing Co. ISBN 089874833X.
[9] Sipser, Michael (2005). Introduction to the Theory of
Computation (2 edición). Course Technology. ISBN 978-
0534950972.
[10] Nachum Dershowitz & Yuri Gurevich (2008). «A na-
tural axiomatization of computability and proof of
Church’s Thesis». Bulletin of Symbolic Logic 14 (3). ISSN
10798986, 299-350.
[11] Kelley, Dean (1995). Teoría de Autómatas y Lenguajes
Formales. Prentice Hall. ISBN 0-13-497777-7.
1.8 Bibliografía
• Aho, A. The Design and Analysis of Computer Algo-
rithms
• Cormen, T. H., Leiserson, C. E., Rivest, R. L. y
Stein, C. Introduction to Algorithms (2nd ed.)
• Brassard, G. y P. Bratley. Fundamentos de Algorit-
mia, (ISBN 848966000X)
• Knuth, D. E. The Art of Computer Programming,
[quien fue también, el creador del TeX]
• Mamber, U. Introduction to Algorithms. A Creative
Approach
• Sedgewick, R. Algorithms in C (3r ed) (también exis-
ten versiones en C++ y Java)
1.9 Enlaces externos
Wikilibros
• Wikilibros alberga un libro o manual sobre
Algoritmia.
• Wikcionario tiene definiciones y otra informa-
ción sobre algoritmo.Wikcionario
• Algoritmos para principiantes
• Portal de algoritmia
• Técnicas de Diseño de Algoritmos manual que ex-
plica y ejemplifica los distintos paradigmas de dise-
ño de algoritmos. Rosa Guerequeta y Antonio Va-
llecillo (profesores de la Universidad de Málaga).
• Transparencias de la asignatura “Esquemas Algorít-
micos”, Campos, J.
• Apuntes y problemas de Algorítmica por Domingo
Giménez Cánovas
• Curso de Diseño de Algoritmos de Carlos Pes
Capítulo 2
Computación cuántica
La esfera de Bloch es una representación de un qubit, el bloque
de construcción fundamental de los computadores cuánticos.
La computación cuántica es un paradigma de
computación distinto al de la computación clásica. Se
basa en el uso de qubits en lugar de bits, y da lugar
a nuevas puertas lógicas que hacen posible nuevos
algoritmos.
Una misma tarea puede tener diferente complejidad en
computación clásica y en computación cuántica, lo que
ha dado lugar a una gran expectación, ya que algunos pro-
blemas intratables pasan a ser tratables. Mientras que un
computador clásico equivale a una máquina de Turing,[1]
un computador cuántico equivale a una máquina de Tu-
ring cuántica.
2.1 Origen de la computación
cuántica
A medida que evoluciona la tecnología, aumenta la esca-
la de integración y caben más transistores en el mismo
espacio; así se fabrican microchips cada vez más peque-
ños, y es que, cuanto más pequeño es, mayor velocidad
de proceso alcanza el chip. Sin embargo, no podemos ha-
cer los chips infinitamente pequeños. Hay un límite en el
cual dejan de funcionar correctamente. Cuando se llega
a la escala de nanómetros, los electrones se escapan de
los canales por donde deben circular. A esto se le llama
efecto túnel.
Una partícula clásica, si se encuentra con un obstáculo,
no puede atravesarlo y rebota. Pero con los electrones,
que son partículas cuánticas y se comportan como ondas,
existe la posibilidad de que una parte de ellos pueda atra-
vesar las paredes si son demasiado finas; de esta manera la
señal puede pasar por canales donde no debería circular.
Por ello, el chip deja de funcionar correctamente.
En consecuencia, la computación digital tradicional no
tardaría en llegar a su límite, puesto que ya se ha llegado
a escalas de sólo algunas decenas de nanómetros. Surge
entonces la necesidad de descubrir nuevas tecnologías y
es ahí donde la computación cuántica entra en escena.
La idea de computación cuántica surge en 1981, cuando
Paul Benioff expuso su teoría para aprovechar las leyes
cuánticas en el entorno de la computación. En vez de tra-
bajar a nivel de voltajes eléctricos, se trabaja a nivel de
cuanto. En la computación digital, un bit sólo puede to-
mar dos valores: 0 ó 1. En cambio, en la computación
cuántica, intervienen las leyes de la mecánica cuántica,
y la partícula puede estar en superposición coherente:
puede ser 0, 1 y puede ser 0 y 1 a la vez (dos estados
ortogonales de una partícula subatómica). Eso permite
que se puedan realizar varias operaciones a la vez, según
el número de qubits.
El número de qubits indica la cantidad de bits que pue-
den estar en superposición. Con los bits convencionales,
si teníamos un registro de tres bits, había ocho valores po-
sibles y el registro sólo podía tomar uno de esos valores.
En cambio, si tenemos un vector de tres qubits, la partí-
cula puede tomar ocho valores distintos a la vez gracias
a la superposición cuántica. Así, un vector de tres qubits
permitiría un total de ocho operaciones paralelas. Como
cabe esperar, el número de operaciones es exponencial
con respecto al número de qubits.
Para hacerse una idea del gran avance, un computador
cuántico de 30 qubits equivaldría a un procesador con-
vencional de 10 teraflops (10 millones de millones de ope-
raciones en coma flotante por segundo), cuando actual-
7
8 CAPÍTULO 2. COMPUTACIÓN CUÁNTICA
mente las computadoras trabajan en el orden de gigaflops
(miles de millones de operaciones).
2.2 Problemas de la computación
cuántica
Uno de los obstáculos principales para la computación
cuántica es el problema de la decoherencia cuántica, que
causa la pérdida del carácter unitario (y, más específica-
mente, la reversibilidad) de los pasos del algoritmo cuán-
tico. Los tiempos de decoherencia para los sistemas can-
didatos, en particular el tiempo de relajación transversal
(en la terminología usada en la tecnología de resonan-
cia magnética nuclear e imaginería por resonancia mag-
nética) está típicamente entre nanosegundos y segundos,
a temperaturas bajas. Las tasas de error son típicamen-
te proporcionales a la razón entre tiempo de operación
frente a tiempo de decoherencia, de forma que cualquier
operación debe ser completada en un tiempo mucho más
corto que el tiempo de decoherencia. Si la tasa de error es
lo bastante baja, es posible usar eficazmente la corrección
de errores cuántica, con lo cual sí serían posibles tiempos
de cálculo más largos que el tiempo de decoherencia y, en
principio, arbitrariamente largos. Se cita con frecuencia
una tasa de error límite de 10−4
, por debajo de la cual se
supone que sería posible la aplicación eficaz de la correc-
ción de errores cuánticos.
Otro de los problemas principales es la escalabilidad,
especialmente teniendo en cuenta el considerable incre-
mento en qubits necesarios para cualquier cálculo que im-
plica la corrección de errores. Para ninguno de los siste-
mas actualmente propuestos es trivial un diseño capaz de
manejar un número lo bastante alto de qubits para resol-
ver problemas computacionalmente interesantes hoy en
día.
2.3 Hardware para computación
cuántica
Aún no se ha resuelto el problema de qué hardware sería
el ideal para la computación cuántica. Se ha definido una
serie de condiciones que debe cumplir, conocida como la
lista de Di Vincenzo, y hay varios candidatos actualmente.
2.3.1 Condiciones a cumplir
• El sistema ha de poder inicializarse, esto es, llevarse
a un estado de partida conocido y controlado.
• Ha de ser posible hacer manipulaciones a los qubits
de forma controlada, con un conjunto de operacio-
nes que forme un conjunto universal de puertas ló-
gicas (para poder reproducir cualquier otra puerta
lógica posible).
• El sistema ha de mantener su coherencia cuántica a
lo largo del experimento.
• Ha de poder leerse el estado final del sistema, tras el
cálculo.
• El sistema ha de ser escalable: tiene que haber una
forma definida de aumentar el número de qubits, pa-
ra tratar con problemas de mayor coste computacio-
nal.
2.3.2 Candidatos
• Espines nucleares de moléculas en disolución, en un
aparato de RMN.
• Flujo eléctrico en SQUIDs.
• Iones suspendidos en vacío .
• Puntos cuánticos en superficies sólidas.
• Imanes moleculares en micro-SQUIDs.
• Computadora cuántica de Kane.
• Computación adiabática, basada en el teorema adia-
bático.
Procesadores
En 2004, científicos del Instituto de Física aplicada de la
Universidad de Bonn publicaron resultados sobre un re-
gistro cuántico experimental. Para ello utilizaron átomos
neutros que almacenan información cuántica, por lo que
son llamados qubits por analogía con los bits. Su objeti-
vo actual es construir una puerta cuántica, con lo cual se
tendrían los elementos básicos que constituyen los proce-
sadores, que son el corazón de los computadores actuales.
Cabe destacar que un chip de tecnología VLSI contiene
actualmente más de 100.000 puertas, de manera que su
uso práctico todavía se presenta en un horizonte lejano.
Transmisión de datos
Científicos de los laboratorios Max Planck y Niels Bohr
publicaron, en noviembre de 2005, en la revista Nature,
resultados sobre la transmisión de información cuánti-
ca, usando la luz como vehículo, a distancias de 100
km[cita requerida]
. Los resultados dan niveles de éxito en las
transmisiones del 70%, lo que representa un nivel de ca-
lidad que permite utilizar protocolos de transmisión con
autocorrección.
Actualmente se trabaja en el diseño de repetidores, que
permitirían transmitir información a distancias mayores
a las ya alcanzadas.
2.5. CRONOLOGÍA 9
2.4 Software para computación
2.4.1 Algoritmos cuánticos
Los algoritmos cuánticos se basan en un margen de error
conocido en las operaciones de base y trabajan reducien-
do el margen de error a niveles exponencialmente peque-
ños, comparables al nivel de error de las máquinas actua-
les.
• Algoritmo de Shor
• Algoritmo de Grover
• Algoritmo de Deutsch-Jozsa
2.4.2 Modelos
• Computadora cuántica de Benioff
• Computadora cuántica de Feynman
• Computadora cuántica de Deutsch
2.4.3 Complejidad
La clase de complejidad BQP estudia el costo de los al-
goritmos cuánticos con bajo margen de error.
2.4.4 Problemas propuestos
Se ha sugerido el uso de la computación cuántica como
alternativa superior a la computación clásica para varios
problemas, entre ellos:
• Factorización de números enteros
• Logaritmo discreto
• Simulación de sistemas cuánticos: Richard Feynman
conjeturó en 1982 que los ordenadores cuánticos se-
rían eficaces como simuladores universales de siste-
mas cuánticos, y en 1996 se demostró que la conje-
tura era correcta.[2]
2.5 Cronología
2.5.1 Años 80
A comienzos de la década de los 80, empezaron a sur-
gir las primeras teorías que apuntaban a la posibilidad de
realizar cálculos de naturaleza cuántica.
1981 - Paul Benioff
Las ideas esenciales de la computación cuántica surgie-
ron de la mente de Paul Benioff que trabajaba en el Ar-
gone National Laboratory en Illinois (EE. UU.). Teorizó
un ordenador tradicional (máquina de Turing) operando
con algunos principios de la mecánica cuántica.
1981-1982 Richard Feynman
El Dr. Richard Feynman, físico del California Institute
of Technology en California (EE. UU.) y ganador del
premio Nobel en 1965 realizó una ponencia durante el
“First Conference on the Physics of Computation” reali-
zado en el Instituto Tecnológico de Massachusetts (EE.
UU.) Su charla, bajo el título de “Simulating Physics
With Computers” proponía el uso de fenómenos cuánti-
cos para realizar cálculos computacionales y exponía que
dada su naturaleza algunos cálculos de gran complejidad
se realizarían más rápidamente en un ordenador cuántico.
1985 - David Deutsch
Este físico israelí de la Universidad de Oxford, Inglaterra,
describió el primer computador cuántico universal, es de-
cir, capaz de simular cualquier otro computador cuánti-
co (principio de Church-Turing ampliado). De este modo
surgió la idea de que un computador cuántico podría eje-
cutar diferentes algoritmos cuánticos.
2.5.2 Años 90
En esta época la teoría empezó a plasmarse en la prác-
tica: aparecieron los primeros algoritmos cuánticos, las
primeras aplicaciones cuánticas y las primeras máquinas
capaces de realizar cálculos cuánticos.
1993 - Dan Simon
Desde el departamento de investigación de Microsoft
(Microsoft Research), surgió un problema teórico que de-
mostraba la ventaja práctica que tendría un computador
cuántico frente a uno tradicional.
Comparó el modelo de probabilidad clásica con el modelo
cuántico y sus ideas sirvieron como base para el desarrollo
de algunos algoritmos futuros (como el de Shor).
1993 - Charles Benett
Este trabajador del centro de investigación de IBM en
Nueva York descubrió el teletransporte cuántico y que
abrió una nueva vía de investigación hacia el desarrollo
de comunicaciones cuánticas.
1994-1995 Peter Shor
Este científico estadounidense de AT&T Bell Laborato-
ries definió el algoritmo que lleva su nombre y que per-
mite calcular los factores primos de números a una velo-
cidad mucho mayor que en cualquier computador tradi-
cional. Además su algoritmo permitiría romper muchos
de los sistemas de criptografía utilizados actualmente. Su
algoritmo sirvió para demostrar a una gran parte de la co-
munidad científica que observaba incrédula las posibili-
dades de la computación cuántica, que se trataba de un
10 CAPÍTULO 2. COMPUTACIÓN CUÁNTICA
campo de investigación con un gran potencial. Además,
un año más tarde, propuso un sistema de corrección de
errores en el cálculo cuántico.
1996 - Lov Grover
Inventó el algoritmo de búsqueda de datos que lleva su
nombre "Algoritmo de Grover". Aunque la aceleración
conseguida no es tan drástica como en los cálculos facto-
riales o en simulaciones físicas, su rango de aplicaciones
es mucho mayor. Al igual que el resto de algoritmos cuán-
ticos, se trata de un algoritmo probabilístico con un alto
índice de acierto.
1997 - Primeros experimentos
En 1997 se iniciaron los primeros experimentos prácticos
y se abrieron las puertas para empezar a implementar to-
dos aquellos cálculos y experimentos que habían sido des-
critos teóricamente hasta entonces. El primer experimen-
to de comunicación segura usando criptografía cuántica
se realiza con éxito a una distancia de 23 Km. Además se
realiza el primer teletransporte cuántico de un fotón.
1998 - 1999 Primeros Qbit
Investigadores de Los Álamos y el Instituto Tecnológi-
co de Massachusets consiguen propagar el primer Qbit a
través de una solución de aminoácidos. Supuso el primer
paso para analizar la información que transporta un Qbit.
Durante ese mismo año, nació la primera máquina de 2-
Qbit, que fue presentada en la Universidad de Berkeley,
California (EE. UU.) Un año más tarde, en 1999, en los
laboratorios de IBM-Almaden, se creó la primera máqui-
na de 3-Qbit y además fue capaz de ejecutar por primera
vez el algoritmo de búsqueda de Grover.
2.5.3 Año 2000 hasta ahora
2000 - Continúan los progresos
De nuevo IBM, dirigido por Isaac Chuang (Figura 4.1),
creó un computador cuántico de 5-Qbit capaz de ejecu-
tar un algoritmo de búsqueda de orden, que forma parte
del Algoritmo de Shor. Este algoritmo se ejecutaba en un
simple paso cuando en un computador tradicional reque-
riría de numerosas iteraciones. Ese mismo año, científi-
cos de Los Álamos National Laboratory (EE. UU.) anun-
ciaron el desarrollo de un computador cuántico de 7-Qbit.
Utilizando un resonador magnético nuclear se consiguen
aplicar pulsos electromagnéticos y permite emular la co-
dificación en bits de los computadores tradicionales.
2001 - El algoritmo de Shor ejecutado
IBM y la Universidad de Stanford, consiguen ejecutar por
primera vez el algoritmo de Shor en el primer computador
cuántico de 7-Qbit desarrollado en Los Álamos. En el ex-
perimento se calcularon los factores primos de 15, dando
el resultado correcto de 3 y 5 utilizando para ello 1018
moléculas, cada una de ellas con 7 átomos.
2005 - El primer Qbyte
El Instituto de “Quantum Optics and Quantum Informa-
tion” en la Universidad de Innsbruck (Austria) anunció
que sus científicos habían creado el primer Qbyte, una
serie de 8 Qbits utilizando trampas de iones.
2006 - Mejoras en el control del cuanto
Científicos en Waterloo y Massachusetts diseñan métodos
para mejorar el control del cuanto y consiguen desarrollar
un sistema de 12-Qbits. El control del cuanto se hace cada
vez más complejo a medida que aumenta el número de
Qbits empleados por los computadores.
2007 - D-Wave
La empresa canadiense D-Wave Systems había supues-
tamente presentado el 13 de febrero de 2007 en Silicon
Valley, una primera computadora cuántica comercial de
16-qubits de propósito general; luego la misma compañía
admitió que tal máquina, llamada Orion, no es realmente
una computadora cuántica, sino una clase de máquina de
propósito general que usa algo de mecánica cuántica para
resolver problemas.[cita requerida]
2007 - Bus cuántico
En septiembre de 2007, dos equipos de investigación es-
tadounidenses, el National Institute of Standards (NIST)
de Boulder y la Universidad de Yale en New Haven con-
siguieron unir componentes cuánticos a través de super-
conductores.
De este modo aparece el primer bus cuántico, y este dis-
positivo además puede ser utilizado como memoria cuán-
tica, reteniendo la información cuántica durante un cor-
to espacio de tiempo antes de ser transferido al siguiente
dispositivo.
2008 - Almacenamiento
Según la Fundación Nacional de Ciencias (NSF) de los
EE. UU., un equipo de científicos consiguió almacenar
por primera vez un Qubit en el interior del núcleo de un
átomo de fósforo, y pudieron hacer que la información
permaneciera intacta durante 1,75 segundos. Este perio-
do puede ser expansible mediante métodos de corrección
de errores, por lo que es un gran avance en el almacena-
miento de información.
2.7. NOTAS Y REFERENCIAS 11
2009 - Procesador cuántico de estado sólido
El equipo de investigadores estadounidense dirigido por
el profesor Robert Schoelkopf, de la Universidad de Ya-
le, que ya en 2007 había desarrollado el Bus cuántico,
crea ahora el primer procesador cuántico de estado sóli-
do, mecanismo que se asemeja y funciona de forma si-
milar a un microprocesador convencional, aunque con la
capacidad de realizar sólo unas pocas tareas muy simples,
como operaciones aritméticas o búsquedas de datos.
Para la comunicación en el dispositivo, esta se realiza me-
diante fotones que se desplazan sobre el bus cuántico, cir-
cuito electrónico que almacena y mide fotones de micro-
ondas, aumentando el tamaño de un átomo artificialmen-
te.
2011 - Primera computadora cuántica vendida
La primera computadora cuántica comercial es vendi-
da por la empresa D-Wave Systems, fundada en 1999 a
Lockheed Martin, por 10 millones de dólares.[3]
2012 - Avances en chips cuánticos
IBM anuncia que ha creado un chip lo suficientemente
estable como para permitir que la informática cuántica
llegue a hogares y empresas. Se estima que en unos 10
o 12 años se puedan estar comercializando los primeros
sistemas cuánticos.[4]
2013 - Computadora cuántica más rápida que un
computador convencional
En abril la empresa D-Wave Systems lanza el nuevo
computador cuántico D-Wave Two el cual es 500000 ve-
ces superior a su antecesor D-Wave One, con un poder
de cálculo de 439 qubits. Realmente el D-Wave Two tuvo
graves problemas finalmente, dado a que no tenía las me-
joras de procesamiento teóricas frente al D-Wave One[5]
Éste fue comparado con un computador basado en el mi-
croprocesador Intel Xeon E5-2690 a 2.9 GHz, teniendo
en cuenta que lo obteniendo, es decir, el resultado en pro-
medio de 4000 veces superior.[6]
2.6 Véase también
• Computación basada en ADN
• Criptografía cuántica
• Electrónica molecular
• Entrelazamiento cuántico
• Fotónica
• Intelligence Advanced Research Projects Activity
(IARPA)
• Simulador cuántico universal
• Teleportación cuántica
• Valletrónica
2.7 Notas y referencias
[1] Con la salvedad de que una máquina de Turing tiene me-
moria infinita.
[2] Lloyd, Seth (1996). «Universal Quantum Simulators».
Science 273: 1073–1078.
[3] World’s first commercial quantum computer sold to Lock-
heed Martin, 27 de mayo de 2011
[4] IBM shows off quantum computing advances, says prac-
tical qubit computers are close
[5]
[6] computer finally proves its faster than a conventional PC,
but only just
2.8 Bibliografía
• Ordenador cuántico universal y la tesis de
Church-Turing
• Deutsch, D. “Quantum Theory, the Church-
Turing Principle, and the Universal Quan-
tum Computer” Proc. Roy. Soc. Lond. A400
(1985) pp. 97–117.
• Uso de computadoras cuánticas para simular
sistemas cuánticos
• Feynman, R. P. “Simulating Physics with
Computers” International Journal of Theore-
tical Physics, Vol. 21 (1982) pp. 467–488.
• Computación Cuántica e Información Cuántica
• Nielsen, M. y Chuang, I. “Quantum Compu-
tation and Quantum Information” Cambridge
University Press (September, 2000), ISBN 0-
521-63503-9.
2.9 Bibliografía complementaria
• Agustín Rayo, «Computación cuántica», Investiga-
ción y Ciencia, 405, junio de 2010, págs. 92-93.
12 CAPÍTULO 2. COMPUTACIÓN CUÁNTICA
• Mastriani, Mario (4 de septiembre de 2014).
Memorias matriciales correlacionadas cuánticas,
simples y mejoradas: una propuesta para su estudio y
simulación sobre GPGPU. p. 268. Consultado el 12
de septiembre de 2014.
2.10 Enlaces externos
• Frecuencias Cuánticas
• Wikimedia Commons alberga contenido multi-
media sobre Computación cuánticaCommons.
• Referencias generales
• Computación cuántica Escrito por Sergi Baila
• Computación cuántica Epistemowikia
• Qubit.org (Centre for Quantum Computation)
(en inglés)
• Institute for Quantum Computing (en inglés)
• Grupo de Información y Computación Cuán-
tica de la Universidad Politécnica de Madrid.
• Computación, Información y Criptografía
Cuántica en la Comunidad de Madrid (QUI-
TEMAD)
• QubitNews (en inglés)
• Qwiki (Wiki sobre Computación Cuántica)
(en inglés)
• Artículos sobre física cuántica (libre acceso)
(en inglés)
• Algunos tutoriales
• El ordenador Insuperable Artículo divulgativo
de David Deutsch.
• Informática Cuántica Historia, Modelos y Al-
goritmos.
• La Nación: Qubit x Qubit
• La Nación: Por qué Google y el Pentágono
quieren computadoras cuánticas
• La Nación: Microsoft apuesta a que la compu-
tación cuántica sea el próximo gran salto
• Compañías que desarrollan computadoras
cuánticas
• D-Wave Systems, Vancouver, BC, Canada
• IBM
• Patentes relacionadas con la computación cuán-
tica
• Algunas patentes concedidas relacionadas con
la computación cuántica
• Algunas patentes publicadas relacionadas con
la computación cuántica
Capítulo 3
Computadora óptica
Una computadora óptica es una computadora que usa
la luz en vez de la electricidad (es decir fotones en lugar
de electrones) para manipular, almacenar y transmitir da-
tos. Los fotones tienen propiedades físicas fundamenta-
les diferentes a las de los electrones, y los investigadores
han intentado hacer uso de estas propiedades, sobre todo
usando los principios básicos de la óptica, para producir
computadores con el desempeño y/o capacidades mayo-
res que los de los computadores electrónicos. La tecno-
logía de computadores ópticos todavía está en los prime-
ros tiempos: computadoras ópticas funcionales han sido
construidas en el laboratorio, pero ninguna ha progresado
más allá de la etapa del prototipo.
La mayoría de los proyectos de investigación se enfocan
en el reemplazo de los componentes de computadora ac-
tuales por equivalentes ópticos, dando por resultado un
sistema de computadora digital óptica que procesa da-
tos binarios. Este acercamiento parece ofrecer las mejo-
res perspectivas a corto plazo para la computación óp-
tica comercial, puesto que los componentes ópticos po-
drían ser integrados en los computadores tradicionales
para producir un híbrido óptico/electrónico. Otros pro-
yectos de investigación toman un acercamiento no tradi-
cional, intentando desarrollar enteramente nuevos méto-
dos de computar que no son físicamente posibles con la
electrónica.
3.1 Componentes ópticos para la
computadora digital binaria
El bloque de construcción fundamental de computado-
res electrónicos modernos es el transistor. Para substi-
tuir componentes electrónicos por los ópticos, es reque-
rido un “transistor óptico” equivalente. Esto es alcanzado
usando materiales con un índice de refracción no lineal.
En particular, existen materiales donde la intensidad de
la luz entrante afecta a la intensidad de la luz transmitida
a través del material, de una manera similar a la respues-
ta del voltaje en un transistor electrónico. Este efecto del
“transistor óptico” es usado para crear puertas de lógica,
que a su vez están ensamblados en los componentes de
alto nivel del CPU del computador.
3.2 Ideas falsas, retos y perspecti-
vas
Otra aclamada ventaja de la óptica es que puede reducir
el consumo de energía, pero, sobre distancias cortas, un
sistema de comunicación óptico típicamente usará más
energía que uno electrónico. Esto es porque el ruido de
disparo de un canal de comunicación óptico es mayor que
el ruido de Johnson-Nyquist (también conocido como rui-
do térmico) de un canal eléctrico, lo que en teoría de la in-
formación significa que requerimos más energía de señal
para alcanzar la misma capacidad de datos. Sin embargo,
sobre distancias más largas y a mayores velocidades de
datos, la pérdida en las líneas eléctricas es suficientemen-
te mayor que en las comunicaciones ópticas, las cuales
comparativamente usarán una cantidad de energía más
baja. A medida que se eleva la velocidad de datos de co-
municación, esta distancia llega a ser más corta y así la
perspectiva de usar la óptica en sistemas de cálculo llega
a ser más práctica.[cita requerida]
Un significativo desafío a la computación óptica es que
el cómputo es un proceso no lineal, en el cual múltiples
señales deben interactuar para computar la respuesta. La
luz, que es una onda electromagnética, solamente puede
interactuar con otra onda electromagnética en presencia
de los electrones en un material, y la fuerza de esta in-
teracción es mucho más débil para la luz de onda elec-
tromagnética, que para las señales electrónicas en una
computadora convencional. Esto da como resultado que
los elementos de procesamiento para una computadora
óptica requieren más energía y mayores dimensiones que
para una computadora electrónica convencional usando
transistores.[cita requerida]
3.3 Véase también
• Computadora
• Computadora electrónica
• Computadora mecánica
• Red neural óptica
13
14 CAPÍTULO 3. COMPUTADORA ÓPTICA
3.4 Enlaces externos
• Optical Computer Architectures: The Application of
Optical Concepts to Next Generation Computers, Op-
tical Computer Architectures: The Application of Op-
tical Concepts to Next Generation Computers book by
Alastair D. McAulay (1999)
• BARROS S., GUAN S. & ALUKAIDEY T., “An
MPP reconfigurable architecture using free-space
optical interconnects and Petri net configuring” in
Journal of System Architecture (The EUROMI-
CRO Journal) Special Double Issue on Massively
Parallel Computing Systems vol. 43, no. 6 & 7, pp.
391-402, April 1997
• T.S. Guan & S.P.V. Barros, “Reconfigurable Multi-
Behavioural Architecture using Free-Space Optical
Communication” in Proceedings of the IEEE Inter-
national Workshop on Massively Parallel Processing
using Optical Interconnections. , April 1994
• T.S. Guan & S.P.V. Barros, “Parallel Processor
Communications through Free-Space Optics” in
IEEE Region 10’s Ninth Annual International Con-
ference on Frontiers of Computer Technology , Au-
gust 1994
• Architectural issues in designing symbolic processors
in optics
• D. Goswami, “Optical Computing”, Resonance, Ju-
ne 2003; ibid July 2003. ,
• K.-H. Brenner, Alan Huang: “Logic and architectu-
res for digital optical computers (A)", J. Opt. Soc.
Am., A 3, 62, (1986)
• K.-H. Brenner: “A programmable optical processor
based on symbolic substitution”, Appl. Opt. 27, No.
9, 1687 - 1691, (1988)
• NASA scientists working to improve optical computing
technology
• International Workshop on Optical SuperComputing
• Optical solutions for NP-complete problems
• Speed-of-light computing comes a step closer New
Scientist
Capítulo 4
Ciencias de la computación
Las Ciencias de la computación estudian los fundamen-
tos teóricos de la información y el cómputo, junto con
técnicas prácticas para la implementación y aplicación
de estos fundamentos teóricos.
Las ciencias de la computacion son aquellas que abar-
can las bases teóricas de la información y la computación,
así como su aplicación en sistemas computaciona-
les.[1][2][3]
El cuerpo de conocimiento de las ciencias de la
computación es frecuentemente descrito como el estudio
sistemático de los procesos algorítmicos que describen y
transforman información: su teoría, análisis, diseño, efi-
ciencia, implementación y aplicación.[4]
Es el estudio sistemático de la factibilidad, estructura,
expresión y mecanización de procedimientos metó-
dicos (o algoritmos) que subyacen en la adquisi-
ción, representación, procesamiento, almacenamiento,
comunicación y acceso a la información si dicha infor-
mación está codificada en forma de bits en una memoria
de computadora o especificada en una estructura de genes
y proteínas en una célula biológica.[5]
Existen diversos campos o disciplinas dentro de las cien-
cias de la computación o ciencias computacionales; algu-
nos resaltan los resultados específicos del cómputo (como
los gráficos por computadora), mientras que otros (co-
mo la teoría de la complejidad computacional) se rela-
cionan con propiedades de los algoritmos usados al rea-
lizar cómputo y otros se enfocan en los problemas que
requieren la implementación de sistemas computaciona-
les. Por ejemplo, los estudios de la teoría de lenguajes
de programación describen un cómputo, mientras que la
programación de computadoras aplica lenguajes de pro-
gramación específicos para desarrollar una solución a un
problema computacional específico. Un científico de la
computación o computólogo se especializa en teoría de
la computación y en el diseño e implementación de siste-
mas de computacionales.[6]
Según Peter J. Denning, la cuestión fundamental en que
se basa la ciencia de la computación es: «¿Qué puede ser
(eficientemente) automatizado?».[7]
4.1 Historia
Charles Babbage es reconocido por inventar la primera compu-
tadora mecánica.
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.[8]
Los primeros cimien-
tos de lo que se convertiría en ciencias de la computación
son anteriores a la invención de la computadora digital
moderna. Se trataba de máquinas para el cálculo de las ta-
reas numéricas fijas, como el ábaco han existido desde la
antigüedad, ayudando en cálculos tales como la multipli-
cación y la división. Además, los algoritmos para realizar
cálculos han existido desde la antigüedad, incluso antes
de que se crearan equipos de computación sofisticados.
Los antiguos sánscritos tratadistas Shulba Sutras, o “Re-
glas de la cuerda”, es un libro de algoritmos escritos en
800 a. C. para la construcción de objetos geométricos co-
mo altares utilizando una clavija y cuerda, un precursor
temprano del campo moderno de la geometría compu-
tacional.
Blaise Pascal diseñó y construyo la primera calculadora
mecánica de trabajo, la Pascalina, en 1642.[9]
En 1673
Gottfried Leibniz creó una calculadora mecánica digital,
15
16 CAPÍTULO 4. CIENCIAS DE LA COMPUTACIÓN
Ada Lovelace es reconocida por escribir el primer algoritmo pro-
cesado por una computadora.
llamada el 'Stepped Reckoner'.[10]
Él puede ser conside-
rado el primer computólogo y teórico de la información,
entre otras razones, porque fue el primero en documen-
tar el sistema numérico binario. En 1820, Charles Xa-
vier Thomas de Colmar lanzó la calculadora mecánica
industrial[11]
cuando lanzó su simplificado aritmómetro,
que fue la primera máquina de calcular lo suficientemen-
te fuerte y lo suficientemente confiable para ser usada a
diario en un entorno industrial. Charles Babbage inició el
diseño de la primera calculadora automática mecánica,
su máquina diferencial, en 1822, que finalmente le dio la
idea de la primera calculadora mecánica programable, su
máquina analítica.[12]
Él comenzó a desarrollar esta má-
quina en 1834 y “en menos de dos años que había esboza-
do muchas de las características más destacadas del mo-
derno equipo. Un paso fundamental fue la adopción de un
sistema de tarjetas perforadas derivado del telar de Jac-
quard"[13]
haciéndolo infinitamente programable.[14]
En
1843, durante la traducción de un artículo francés sobre
la máquina analítica, Ada Lovelace escribió, en una de las
muchas notas que incluye el artículo, un algoritmo para
calcular los números de Bernoulli, que es considerado co-
mo el primer programa de ordenador.[15]
Al rededor de
1885, Herman Hollerith inventó la máquina tabuladora,
que usaba tarjetas perforadas para procesar información
estadística; finalmente, su compañía se convirtió en parte
de IBM. En 1937, cien años después del sueño imposible
de Babbage, Howard Aiken convencidos por IBM, que
estaban manufacturando todo tipo de equipos de tarje-
tas perforadas y así como la calculadora de negocio [16]
para desarrollar su calculadora programable gigante, el
ASCC/Harvard Mark I, se basó en la máquina analítica
de Babbage, que a su vez utiliza las tarjetas perforadas
y una unidad central de cálculo. Cuando se terminó de
construir la máquina, algunas personas lo aclamaron co-
mo “el sueño de Babbage hecho realidad”.[17]
Durante la década de 1940, conforme se desarrollaban
nuevas y más poderosas máquinas para computar, el tér-
mino computador se comenzó a utilizar para referirse
a las máquinas y ya no a sus antecesores humanos.[18]
Cuando se hizo evidente que las computadoras no so-
lamente podrían utilizarse para realizar cálculos mate-
máticos, el campo de las ciencias de la computación se
amplió para estudiar cómputo en general. Las ciencias
de la computación empezaron a establecerse como una
disciplina académica distinta de las demás en la déca-
da de 1950 y principios de 1960.[7][19]
Entonces sur-
gió el primer programa de grado universitario mundo, el
Cambridge Diploma in Computer Science, se inició en
la Universidad de Cambridge en el Cambridge Compu-
ter Lab (departamento de ciencias de la computación) en
1953. El primer programa de grado universitario en cien-
cias de la computación en los Estados Unidos se formó en
Universidad de Purdue en 1962.[20]
Desde que se dispo-
ne ordenadores prácticos, muchas aplicaciones la compu-
tación se han convertido en las distintas áreas de estudio
en sus propios términos.
Aunque inicialmente muchos creyeron que era imposi-
ble que las computadoras en sí mismas podrían consti-
tuir en realidad un campo científico de estudio, a fina-
les de los años cincuenta se fue volviendo gradualmente
aceptada entre la población mayor académica.[21][22]
Es
la marca IBM que a 2015 es muy conocida la que formó
parte de la revolución de las ciencias de la computación
durante este tiempo. IBM (abreviación de International
Business Machines) lanzó el IBM 704[23]
y más tarde las
computadoras de IBM 709[24]
que fueron ampliamente
utilizadas durante el período de exploración de este ti-
po de dispositivos. “Sin embargo, el trabajo con las IBM
[computadoras] fue frustrante ... si hubieras perdido tanto
como una letra en una instrucción, el programa chocaría,
y usted tendría que empezar todo el proceso otra vez”.[21]
Durante a finales de 1950, la disciplinas de las ciencias de
la computación estaban en sus etapas de desarrollo más
primordiales, y tales cuestiones eran comunes.[22]
La disciplina científica de las ciencias de la computación
nace a principios de 1940 con la confluencia de la teoría
de algoritmos, lógica matemática y la invención del pro-
grama almacenado en una computadora electrónica.[4]
Ejemplos de esto son los trabajos de Alan Turing, Alonzo
Church y Kurt Gödel en 1930 acerca de los algoritmos y
su trabajo en sistemas de reglas (véase Cálculo Lamb-
da, Máquina de Turing y Problemas Indecidibles), los al-
goritmos creados por Augusta Ada sesenta años antes,
la computadora analógica construida por Vannevar Bush
en 1920 y las computadoras eléctricas construidas por
4.1. HISTORIA 17
Howard Aiken y Konrad Zuse en 1930. Los escritos de
John Von Neumann dieron una profundidad intelectual
considerable a esta disciplina emergente a mediados de
la década de 1940.
En 1960, había suficientemente cuerpo de conocimiento
que ameritaba la creación de departamentos académicos
y programas de grado universitario para esta disciplina.[4]
IBM es reconocida como la marca que formó parte de la
revolución de las ciencias de la computación durante ese
tiempo. IBM (abreviación de International Business Ma-
chines) lanzó la IBM 704[25]
y más tarde la IBM 709[26]
computadoras, que fueron ampliamente utilizadas duran-
te el período de exploración de este tipo de dispositivos.
“Sin embargo, el trabajo con la IBM [equipo] era frus-
trante ... si te equivocas en una letra de alguna instrucción,
el programa se arruinaría, y se tendría que empezar todo
el proceso otra vez”.[21]
Durante la década de 1950, la
disciplina de las ciencias de la computación estaba en su
etapa de desarrollo, y estos problemas eran algo común.
El tiempo ha dado mejoras significativas en la capacidad
de uso y la eficacia de la tecnología de la computación.
La sociedad moderna ha presenciado un cambio signifi-
cativo en los usuarios de la tecnología en cómputo, de ser
utilizada únicamente por expertos, profesionales y cien-
tíficos, a una base de usuarios que es casi omnipresente
a la teoría con la cual se desarrolló y funciona este tipo
de tecnología. Inicialmente, las computadoras eran bas-
tante costosas, y era necesario un cierto grado de ayuda
humana para el uso eficiente - en parte de operadores de
computadoras profesionales. Como la adopción equipo se
hizo más generalizado y asequible, se necesitaba menos
asistencia humana en el uso común.
4.1.1 Mayores logros
A pesar de su corto tiempo de ser una disciplina cientí-
fica formal, las ciencias de la computación han hecho un
gran número de contribuciones importantes a la ciencia
y la sociedad –de hecho, junto con la electrónica, es una
ciencia fundacional de la época actual de la historia hu-
mana llamada Era de la información y la Revolución de la
Información, visto como el tercer gran salto en el progre-
so tecnológico humano después de la Revolución Indus-
trial (1750-1850) y la revolución neolítica (8000-5000 a.
C.)–.
Estas contribuciones a la humanidad incluyen:
• El comienzo de la "Revolución digital", la cual inclu-
ye la actual Era de la información y el Internet.[28]
• Una definición formal de computación y
computabilidad, y una demostración formal de
que existen problemas que son computacionale-
mente irresolubles e intratables.[29]
• El concepto de lenguaje de programación, una he-
rramienta para la expresión precisa de información
El ejército alemán uso la máquina enigma durante la Segunda
Guerra Mundial; su sistema de cifrado fue finalmente descubier-
to por Alan Turing, considerado el padre de la Computación. La
lectura de la información que contenían los mensajes supuesta-
mente encriptados son considerados, a veces, como la causa de
haber podido concluir la Segunda Guerra Mundial al menos dos
años antes de lo que hubiera acaecido sin su descifrado. El des-
cifrado a gran escala del tráfico de Enigma en Bletchley Park
fue uno de los factores más importantes que contribuyeron a la
victoria Aliada.[27]
metodológica a varios niveles de abstracción.[30]
• En criptología, el criptoanálisis de Enigma fue un
factor importante, el cual contribuyó a la victoria
Aliada en la Segunda Guerra Mundial.[27]
• Cómputo Científico permitió la evaluación de pro-
cesos y situaciones de gran complejidad, así como la
experimentación mediante software. También per-
mitió el avance en investigación de la mente huma-
na y el mapeo del genoma humano junto el Proyecto
Genoma Humano.[28]
proyectos de Cómputo Distri-
buido tales como Folding@home que estudiaron el
plegamiento de proteínas.
• El Comercio algorítmico ha incrementado la
eficiencia y la liquidez de los mercados finan-
cieros mediante técnicas de inteligencia artifi-
cial, aprendizaje automático, y otros métodos
estadísticos y numéricos a gran escala.[31]
Alta fre-
cuencia de comercio algorítmico también puede
exacerbar la volatilidad financiera.[32]
• Computación gráfica e imágenes generadas por
computadora se han convertido omnipresentes en
18 CAPÍTULO 4. CIENCIAS DE LA COMPUTACIÓN
la era moderna del entretenimiento, sobre to-
do en televisión, cine, publicidad, animación y
videojuegos. [cita requerida]
• Simulación de varios procesos, incluyendo dinámica
de fluidos computacionales, sistemas físicos, eléctri-
cos, electrónicos y de circuitos, así como las socie-
dades y las situaciones sociales (sobre todo juegos de
guerra), junto con sus hábitats, entre muchos otros.
Las computadoras modernas permiten la optimiza-
ción de diseños tales como aviones completos. Se
destaca el diseño de circuitos eléctricos y electró-
nicos con SPICE, así como software para la reali-
zación física de nuevos diseños. Este último incluye
software de diseño esencial para circuito integrados.
• La Inteligencia artificial (IA) es cada vez más impor-
tante, ya que se hace más eficiente y compleja. Exis-
ten muchas aplicaciones de la IA, algunas se pueden
ver en el hogar, tales como aspiradores robóticos.
También está presente en los videojuegos y en el
campo de batalla moderno en aviones no tripulados,
sistemas antimisiles, y robots de apoyo para escua-
drones.
4.2 Filosofía
Un gran número de científicos de la computación han ar-
gumentado a favor de la distinción de tres paradigmas di-
ferentes en ciencias de la computación. Peter Wegner ha
argumentado que esos paradigmas son la ciencia, la tec-
nología y las matemáticas.[33]
El grupo de investigación
de Peter Denning argumentó que son la abstracción (mo-
delado), y diseño. Amnon H. Eden lo describe como el
“paradigma racionalista” (el cual trata a las ciencias de la
computación como una rama de las matemáticas, la cual
prevalence en ciencias de la computación teórica y princi-
palmente emplea el razonamiento deductivo), el paradig-
ma tecnocrático (que podría ser encontrado en enfoques
ingenieriles, más prominente en la ingeniería de software)
y el paradigma científico (que se enfoca a objetos relacio-
nados con la computación desde la perspectiva empírica
de las ciencias naturales identificable en algunas ramas de
la inteligencia artificial.
4.2.1 Nombre del campo
A pesar de su primera proposición en 1956,[22]
el término
“ciencias de la computación” aparece en 1959 en un ar-
tículo de la revista Communications of the ACM (presti-
giada publicación científica destinada a lectores con ex-
periencia en todos los ámbitos de la computación y los
sistemas de información),[34]
en el cual Louis Fein discu-
te sobre la creación de una Escuela de Estudios de Pos-
grado en Ciencias Computacionales análoga a la creación
de Harvard Business School en 1921,[35]
justificando el
nombre con el argumento de que: Como la ciencia admi-
nistrativa, el tema o área de conocimiento puede ser apli-
cado, es de carácter interdisciplinario y que cuenta con
las características típicas de una disciplina académica.[36]
Sus esfuerzos y los de otros, como el analista numérico
George Forsythe, fueron recompensados: universidades
pasaron a crear este tipo de programas de estudio, a partir
de 1962 en Purdue.[37]
A pesar del nombre de esta dis-
ciplina académica, una cantidad significativa de tópicos
en ciencias de la computación no involucran el estudio de
las computadoras, por esta razón muchos nombres alter-
nativos han sido propuestos.[38]
Algunos departamentos de universidades prefieren el tér-
mino “ciencias de la computación” para hacer énfasis en
esta diferencia. El científico danés Peter Naur sugirió el
término datología,[39]
para reflejar el hecho de que esta
disciplina científica gira en torno a los datos y a al tra-
tamiento de estos, mientras que no necesariamente invo-
lucra a las computadoras. La primer institución cientí-
fica en usar el término fue el Departamento de Datolo-
gía de la Universidad de Copenhague, fundado en 1969,
con Peter Naur como profesor de datología. El término
es usado en países escandinavos. En los primeros años de
la computación, un número de terminus para los practi-
cantes del campo de la computación fueron propuestos
en la revista Communications of the ACM – turingeniero,
turologo, hombre de los diagramas de flujo, matemático
meta-aplicado, and epistemologo aplicado.[40]
Tres me-
ses después en esa misma publicación científica, el tér-
mino computólogo fue sugerido. El siguiente año en la
misma publicación surgió el término hypologo.[41]
El tér-
mino computica también ha sido sugerido.[42]
En Euro-
pa, términos derivados de traducciones de la expresión
“automatic information” (e.g. “informazione automatica”
en Italiano) or “información y matemáticas” son frecuen-
temente usados, e.g. informatique (francés), Informatik
(alemán), Informática (Italia, Países Bajos), Informáti-
ca (España y Portugal), informatika (lenguas eslavas) o
pliroforiki (πληροφορική, que significa informática) en
Griego. Palabras similares han sido adoptadas en algunos
lugares del Reino Unido, por ejemplo en la Universidad
de Edimburgo.[43]
Pero estas no reflejan el aspecto de la
computabilidad, por esta razón en un contexto de investi-
gación científica tanto académica como industrial el tér-
mino ciencias de la computación es mayormente usado
en publicaciones y conferencias científicas.
4.3 Campos de las ciencias de la
computación
Como disciplina científica, las ciencias de la computación
abarcan una gama de temas, desde los estudios teóricos
de los algoritmos y los límites de la computación a los
problemas prácticos de la implementación de sistemas
computacionales en hardware y software.[44][45]
Compu-
ting Sciences Acreditation Board o la Junta de Acre-
4.3. CAMPOS DE LAS CIENCIAS DE LA COMPUTACIÓN 19
ditación en Ciencias de la Computación. –Compuesta
por representantes de la Association for Computing Ma-
chinery (ACM), y la Sociedad de Computación IEEE
(IEEE-CS) [46]
– identifica cuatro áreas que considera cru-
ciales para la disciplina de ciencias de la computación:
teoría de la computación, algoritmos y estructuras de
datos, metodología y lenguajes de programación, arqui-
tectura de computadoras. Además de estas cuatro áreas,
C.S.A.B. también identifica ámbitos como la ingeniería
de software, inteligencia artificial, redes de computado-
ras y de telecomunicaciones, sistemas de bases de da-
tos, computación paralela, computación distribuida, la
interacción persona-computador, gráficos por ordenador,
sistemas operativos, cálculo numérico y simbólico siendo
importantes áreas de las ciencias de la computación.[44]
Ciencias de la computación teóricas El campo más
amplio de la ciencia de la computación teórica abarca tan-
to la teoría clásica de la computación y una amplia gama
de otros temas que se centran en los aspectos más abs-
tractos, lógicos y matemáticos de la computación.
Teoría de la computación
De acuerdo a Peter J. Denning, la pregunta fundamen-
tal en ciencias de la computación es, «¿Que puede ser
eficientemente automatizado?»[7]
El estudio de la teoría
de la computación está enfocado en responder pregun-
tas fundamentales acerca de que puede ser computado y
que cantidad de recursos son requeridos para ejecutar ta-
les cómputos. En un esfuerzo por resolver esta pregun-
ta, la teoría de la computabilidad examina que proble-
mas computacionales se pueden resolver en varios mode-
los teóricos de cómputo. La segunda pregunta está diri-
gida por la teoría de la complejidad computacional, que
estudia los costos de tiempo y espacio asociados a dife-
rentes enfoques para resolver una multitud de problemas
computacionales.
El famoso problema "¿P=NP?" es uno de los Problemas
del milenio,[47]
es un problema abierto en ciencias de la
computación.
Teoría de la información y códigos
La teoría de la información está relacionada a la cuanti-
ficación de la información. Fue desarrollada por Claude
E. Shannon para desarrollar los límites fundamentales del
procesamiento de señales así como sus operaciones, tales
como compresión y almacenamiento de datos así como la
comunicación de los datos de manera fiable.[48]
La teoría
de códigos es el estudio de las propiedades de los códigos
(sistemas para conversión de información de un lugar a
otro) y su ajuste para una aplicación específica. Los có-
digos son usados para comprimir datos, criptografía, de-
tección y corrección de errores y más recientemente para
la codificación de redes. Los códigos son estudiados para
el propósito de diseñar métodos eficientes y seguros para
la transmisión de datos.
Algoritmos y estructuras de datos
Los algoritmos y las estructuras de datos son el estudio de
métodos computacionales comúnmente usados así como
su eficiencia computacional.
Teoría de lenguajes de programación
La teoría del lenguaje de programación es una rama de
las ciencias de la computación que se ocupa del diseño,
implementación, análisis, caracterización y clasificación
de los lenguaje de programación y sus características in-
dividuales, cae dentro de la disciplina de las ciencias de
la computación, tanto en dependencia de las matemáticas
y la lingüística. Es un área de investigación activa, con
numerosas revistas académicas y conferencias especiali-
zadas en el tema.
4.3.1 Métodos formales
Los métodos formales son un tipo particular de la técnica
basada en las matemáticas para la especificación formal,
desarrollo y verificación formal de los sistemas de softwa-
re y hardware. El uso de métodos formales para el diseño
de software y hardware está motivado por la expectativa
de que, la realización de un análisis matemático adecuado
puede contribuir a la fiabilidad y robustez de un diseño.
Estos forman una importante base teórica para la ingenie-
ría de software, especialmente cuando está involucrado la
seguridad o robustez. Los métodos formales son un com-
plemento útil para las pruebas de software, ya que ayudan
a evitar errores y también pueden dar un marco para ha-
cer pruebas. Para su uso industrial, se requiere el apoyo de
herramientas. Sin embargo, el alto costo de la utilización
de métodos formales significa que por lo general sólo se
utilizan en el desarrollo de sistemas críticos de alta inte-
gridad donde la vida o la seguridad es de muy alta impor-
tancia. Los métodos formales se describen mejor como
la aplicación de un bastante amplia variedad de teóricos
fundamentales de la informática, en particular, los cálcu-
los lógica, los lenguajes formales, la teoría de autómatas,
y la semántica de los programas, sino también de tipo de
sistemas y tipos de datos algebraicos a los problemas en
el software y hardware de especificación y verificación.
Los métodos formales se describen mejor como la apli-
cación de una amplia variedad de fundamentos teóricos
de las ciencias de la computación, en particular la lógica
computaciónal, lenguajes formales, teoría de autómatas
y Semántica de lenguajes de programación pero también
áreas como sistemas de tipos y tipos de datos algebraicos
a problemas en la especificación y verificación de softwa-
re y hardware.
20 CAPÍTULO 4. CIENCIAS DE LA COMPUTACIÓN
4.3.2 Ciencias de la computación aplicadas
Las ciencias de la computación aplicadas tratan de identi-
ficar ciertos aspectos conceptuales y teóricos de las cien-
cias de la computación que pueden ser aplicados directa-
mente para resolver problemas del mundo real.
Inteligencia artificial
Esta rama de las ciencias de la computación pretende o
es requerida para la síntesis de procesos meta-orientados
tales como la resolución de problemas, toma de decisio-
nes, la adaptación del medio ambiente, el aprendizaje y
la comunicación que se encuentran en los seres huma-
nos y los animales. Desde sus orígenes en la cibernética
y en la Conferencia de Dartmouth (1956), la investiga-
ción en inteligencia artificial (IA) ha sido necesariamen-
te multidisciplinaria, aprovechando áreas de especializa-
ción, tales como las matemáticas, la lógica simbólica, la
semiótica, la ingeniería eléctrica, la filosofía de la mente,
la neurofisiología, y la inteligencia social. La IA errónea-
mente es asociada en la mente popular con el desarrollo
robótico, pero el principal campo de aplicación prácti-
ca ha sido como un componente integrado en las áreas
de desarrollo de software que requieren la comprensión
y modelación computacional, tales como las finanzas y la
economía, la minería de datos y las ciencias físicas. El
término fue acuñado por el científico de la computación
y matemático John McCarthy en 1955.
Arquitectura de computadoras
La arquitectura de computadores u organización de
computadoras digitales es el diseño conceptual y la es-
tructura operacional fundamental de un sistema cómputo.
Se centra en gran medida de la manera en que la unidad
central de procesamiento realiza internamente y accede
a las direcciones en la memoria.[49]
El campo involucra
disciplinas de la ingeniería en computación y la ingenie-
ría eléctrica, la selección y la interconexión de los com-
ponentes de hardware para crear los equipos que cumplen
funciones, de rendimiento, y costes.
Análisis de rendimiento de computadoras
Análisis de rendimiento del equipo es el estudio del tra-
bajo que fluye a través de los equipos con el objetivo ge-
neral de mejora de rendimiento y control de tiempo de
respuesta, utilizando los recursos de manera eficiente, la
eliminación de los cuellos de botella, y la predicción de
rendimiento bajo cargas máximas previstas.[50]
Cómputo científico
La ciencia computacional (o computación científica) es el
campo de estudio que trata con la construcción de mode-
los matemáticos y técnicas de análisis cuantitativos así
como el uso de computadoras para analizar y resolver
problemas científicos. En el uso práctico, es típicamente
la aplicación de simulación por ordenador y otras formas
de cálculo a los problemas en diversas disciplinas cientí-
ficas.
Redes de computadoras
Esta rama de las ciencias de la computación que tiene co-
mo objetivo gestionar las redes entre computadoras en
todo el mundo.
Sistemas concurrentes, paralelos y distribuidos
Concurrencia es una propiedad de los sistemas en los
que varios cálculos están ejecutando de forma simultá-
nea, y, potencialmente, que interactúan entre sí. Un nú-
mero de modelos matemáticos han sido desarrollados pa-
ra el cálculo concurrente general, incluyendo las redes de
Petri, cálculos de proceso y del modelo de máquina de
acceso aleatorio en paralelo. Un sistema distribuido se
extiende la idea de la simultaneidad en varios ordenado-
res conectados a través de una red. Computadoras dentro
del mismo sistema distribuido tienen su propia memoria
privada, y la información es a menudo intercambian entre
sí para lograr un objetivo común.
Bases de datos
Una base de datos tiene la intención de organizar, alma-
cenar y recuperar grandes cantidades de datos de forma
sencilla. Bases de datos digitales se gestionan median-
te sistemas de gestión de base de datos para almacenar,
crear, mantener y consultar los datos, a través de mode-
los de bases de datos y lenguajes de consulta. Una base
de datos es un conjunto de datos interrelacionados entre
si mismos.
Informática en salud
Informática de la Salud se ocupa de las técnicas compu-
tacionales para la solución de problemas en el cuidado de
la salud.
Ciencia de la información
El campo estudia la estructura, algoritmos, comporta-
miento e interacciones de los sistemas naturales y arti-
ficiales que guardan, procesan, acceden a y comunican
información. También desarrolla sus propios fundamen-
tos conceptuales y teóricos y emplea fundamentos desa-
rrollados en otros campos.
4.5. VÉASE TAMBIÉN 21
Ingeniería de software
Ingeniería de software es el estudio del diseño, imple-
mentación y modificación de software con la finalidad
de asegurarse de que es de alta calidad, asequible, fácil
de mantener, y rápido de construir. Es un enfoque siste-
mático para el diseño de software, que implica la aplica-
ción de prácticas de ingeniería de software. Los ingenie-
ros de software comercian con la organización y análisis
de software— no solo lidian con la creación o fabricación
de un nuevo software, sino también con su mantenimien-
to y disposición interna. Se prevé que estén entre las ocu-
paciones de más rápido crecimiento entre 2008 y 2018.
Debido a la novedad de este subcampo, la educación for-
mal en Ingeniería de software generalmente es parte de
los planes de estudio de ciencias de la computación, la
gran mayoría de ingenieros de software tienen un grado
académico en ciencias de la computación sin tener rela-
ción con la ingeniería.[51]
4.4 Relación con otros campos
Por ser una disciplina reciente, existen varias definiciones
alternativas para la ciencia de la computación. Esta puede
ser vista como una forma de ciencia, matemáticas o una
nueva disciplina que no puede ser categorizada siguiendo
los modelos actuales.
Las ciencias de la computación frecuentemente se cruzan
con otras áreas de investigación, tales como la física y la
lingüística. Pero es con las matemáticas con las que se
considera que tiene un grado mayor de relación. Eso es
evidenciado por el hecho de que los primeros trabajos en
el área fueran fuertemente influenciados por matemáticos
como Kurt Gödel y Alan Turing. En la actualidad sigue
habiendo un intercambio de ideas útil entre ambos cam-
pos en áreas como la lógica matemática, la teoría de ca-
tegorías, la teoría de dominios, el álgebra y la geometría.
Otro punto a destacar es que, a pesar de su nombre, las
ciencias de la computación raramente involucran el estu-
dio mismo de las máquinas conocidas como computado-
ras. De hecho, el renombrado científico Edsger Dijkstra
es muy citado por la frase «Las ciencias de la compu-
tación están tan poco relacionadas con las computadoras
como la astronomía con los telescopios». La investiga-
ción en ciencias de la computación también suele rela-
cionarse con otras disciplinas, como la ciencia cognitiva,
la física (véase computación cuántica), la lingüística, et-
cétera.
La relación entre las ciencias de la computación y la
ingeniería de software es un tema muy discutido, por
disputas sobre lo que realmente significa el término inge-
niería de software y sobre cómo se define a las ciencias de
la computación. Algunas personas creen que la ingenie-
ría de software sería un subconjunto de las ciencias de la
computación. Otras, tomando en cuenta la relación entre
otras disciplinas científicas y de la ingeniería, creen que el
principal objetivo de las ciencias de la computación sería
estudiar las propiedades del cómputo en general, mientras
que el objetivo de la ingeniería de software sería diseñar
cómputos específicos para lograr objetivos prácticos, con
lo que se convertiría en disciplinas diferentes. Este punto
de vista es el que sostiene, por ejemplo, Parnas (1998).
Incluso hay otros que sostienen que no podría existir una
ingeniería de software.
Los aspectos académicos, políticos y de financiamiento
en las áreas de ciencias de la computación tienden a ver-
se influidos drásticamente por el criterio del departamen-
to encargado de la investigación y la educación en cada
universidad, que puede estar orientado a la matemática
o a la ingeniería. Los departamentos de ciencias de la
computación orientados a la matemáticas teóricas sue-
len alinearse del lado de la computación científica y las
aplicaciones de cálculo numérico.
El término computación científica, que no debe confun-
dirse con ciencia de la computación, designa a todas aque-
llas prácticas destinadas a modelar, plantear experimen-
tos y validar teorías científicas sirviéndose de medios
computacionales. En estos casos la computación es una
mera herramienta y el esfuerzo se dirige a avanzar en los
campos objetivo (física, biología, mecánica de fluidos,
radiotransmisión,...), más que en la propia ciencia de la
computación.
Finalmente, el público en general algunas veces confun-
de la ciencia de la computación con áreas vocacionales
que trabajan con computadoras o piensan que trata acer-
ca de su propia experiencia con las computadoras, lo cual
suele incluir actividades como los juegos, la navegación
web y el procesamiento de texto. Sin embargo, el punto
central de la ciencia de la computación va más allá de en-
tender las propiedades de los programas que se emplean
para implementar aplicaciones de software como juegos
y navegadores web, y utiliza ese entendimiento para crear
nuevos programas o mejorar los existentes.[52]
4.5 Véase también
• Informático teórico
• Ciencias de la información
• Matemáticas
• Ingeniería en computación
• Anexo:Informáticos teóricos
• Programación
• Teoría de la computación
• Teoría de la complejidad computacional
• Problema de la cena de los filósofos
22 CAPÍTULO 4. CIENCIAS DE LA COMPUTACIÓN
• Problemas no resueltos de las Ciencias de la Compu-
tación
• Anexo:Informáticos teóricos
• Mujeres en informática
• Premio Turing
4.6 Referencias
[1] "Computer science is the study of information" Department
of Computer and Information Science, Guttenberg Infor-
mation Technologies
[2] "Computer science is the study of computation." Computer
Science Department, College of Saint Benedict, Saint
John’s University
[3] "Computer Science is the study of all aspects of computer
systems, from the theoretical foundations to the very prac-
tical aspects of managing large software projects." Massey
University
[4] Anthony Ralston, Edwin D. Reilly, David Hemmendinger
(2000). Encyclopedia of Computer Science. Wiley. 978-0-
470-86412-8.
[5] http://www.cs.bu.edu/AboutCS/WhatIsCS.pdf.
[6] «WordNet Search - 3.1». Wordnetweb.princeton.edu.
Consultado el 14 de mayo de 2012.
[7] Denning, P.J. (2000). «Computer Science: The Discipli-
ne» (PDF). Encyclopedia of Computer Science.
[8] David Alan Grier (2005). When computers were human.
Princeton University Press. ISBN 84-89660-00-X.
[9] «Blaise Pascal». School of Mathematics and Statistics
University of St Andrews, Scotland.
[10] «A Brief History of Computing».
[11] En 1851
[12] «Science Museum - Introduction to Babbage». Archivado
desde el original el 8 de septiembre de 2006. Consultado
el 24 de septiembre de 2006.
[13] Anthony Hyman (1982). Charles Babbage, pioneer of the
computer.
[14] “La introducción de tarjetas perforadas en el nuevo mo-
tor era importante no sólo como una forma más conve-
niente de control que los tambores, si no porque se podría
programar de forma ilimitada, y estos programas podrían
ser almacenados y repetidos sin el peligro de introducir
errores en la configuracion a mano de la máquina; era im-
portante también porque sirvió para cristalizar sensación
de Babbage que había inventado algo realmente nuevo, al-
go mucho más que una máquina calculadora sofisticada.”
Bruce Collier, 1970
[15] «A Selection and Adaptation From Ada’s Notes found in
Ada, The Enchantress of Numbers,” by Betty Alexandra
Toole Ed.D. Strawberry Press, Mill Valley, CA». Con-
sultado el 4 de mayo de 2006. (enlace roto disponible en
Internet Archive; véase el historial y la última versión).
[16] “En este sentido Aiken necesitaba de IBM, cuya tecnolo-
gía incluida el uso de tarjetas perforadas, la acumulación
de datos numéricos, y la transferencia de los datos numé-
ricos de un registro a otro ", Bernard Cohen, p.44 (2000)
[17] Brian Randell, p. 187, 1975
[18] La Association for Computing Machinery (ACM) fue
fundada en 1947.
[19] «Some EDSAC statistics». Cl.cam.ac.uk. Consultado el
19 de noviembre de 2011.
[20] «Computer science pioneer Samuel D. Conte dies at 85».
Purdue Computer Science. 1 de julio de 2002. Consultado
el 12 de diciembre de 2014.
[21] Levy, Steven (1984). Hackers: Heroes of the Computer Re-
volution. Doubleday. ISBN 0-385-19195-2.
[22] Tedre, Matti (2014). The Science of Computing: Shaping
a Discipline. Taylor and Francis / CRC Press.
[23] «IBM 704 Electronic Data Processing System - CHM Re-
volution» (en inglés). Computerhistory.org. Consultado el
7 de julio de 2013.
[24] «IBM 709: a powerful new data processing system» (en
inglés). Computer History Museum. Consultado el 12 de
diciembre de 2014.
[25] «IBM 704 Electronic Data Processing System - CHM Re-
volution». Computerhistory.org. Consultado el 7 de julio
de 2013.
[26] «IBM 709: a powerful new data processing system».
Computer History Museum. Consultado el 12 de diciem-
bre de 2014.
[27] David Kahn, The Codebreakers, 1967, ISBN 0-684-
83130-9.
[28] http://web.archive.org/web/http://www.cis.cornell.edu/
Dean/Presentations/Slides/bgu.pdf
[29] Constable, R.L. (March 2000). Computer Science: Achie-
vements and Challenges circa 2000 (PDF).
[30] Abelson, H.; G.J. Sussman with J. Sussman (1996). Struc-
ture and Interpretation of Computer Programs (2nd edi-
ción). MIT Press. ISBN 0-262-01153-0. «La revolución
de la computadora es una revolución en la manera de pen-
sar y en la forma en que expresamos lo que pensamos. La
esencia de este cambio es la aparición de lo que podría
llamarse mejor epistemología procedimental —el estudio
de la estructura del conocimiento desde un punto de vista
imperativo, en oposición al punto de vista más declarativo
tomada por temas matemáticos clásicos–.»
[31] «Black box traders are on the march.» The Telegraph, 26
de agosto de 2006.
Enseñanza mesclada
Enseñanza mesclada
Enseñanza mesclada
Enseñanza mesclada
Enseñanza mesclada
Enseñanza mesclada
Enseñanza mesclada
Enseñanza mesclada
Enseñanza mesclada
Enseñanza mesclada
Enseñanza mesclada
Enseñanza mesclada
Enseñanza mesclada
Enseñanza mesclada
Enseñanza mesclada
Enseñanza mesclada
Enseñanza mesclada
Enseñanza mesclada
Enseñanza mesclada
Enseñanza mesclada
Enseñanza mesclada
Enseñanza mesclada
Enseñanza mesclada
Enseñanza mesclada
Enseñanza mesclada
Enseñanza mesclada
Enseñanza mesclada
Enseñanza mesclada
Enseñanza mesclada
Enseñanza mesclada
Enseñanza mesclada

Más contenido relacionado

La actualidad más candente

La actualidad más candente (9)

Curso power point 97
Curso power point 97Curso power point 97
Curso power point 97
 
Tecnologia 7º grado
Tecnologia 7º gradoTecnologia 7º grado
Tecnologia 7º grado
 
Curso Completo De Html [447 Paginas En EspañOl]
Curso Completo De Html [447 Paginas   En EspañOl]Curso Completo De Html [447 Paginas   En EspañOl]
Curso Completo De Html [447 Paginas En EspañOl]
 
Curso html
Curso htmlCurso html
Curso html
 
Manual de inf para negocios
Manual de inf para negociosManual de inf para negocios
Manual de inf para negocios
 
Informatica 1
Informatica 1Informatica 1
Informatica 1
 
Manualmoodle
ManualmoodleManualmoodle
Manualmoodle
 
Creacion mapasconceptuales
Creacion mapasconceptualesCreacion mapasconceptuales
Creacion mapasconceptuales
 
Wiki libro matemática
Wiki libro matemáticaWiki libro matemática
Wiki libro matemática
 

Destacado

AceCertificate-3
AceCertificate-3AceCertificate-3
AceCertificate-3Adam Taylor
 
Zeldarecomendationletter
ZeldarecomendationletterZeldarecomendationletter
ZeldarecomendationletterIon Buia
 
Portafolio de servicios
Portafolio de serviciosPortafolio de servicios
Portafolio de serviciosjuandsuarez1
 
Resume - KCooper
Resume - KCooperResume - KCooper
Resume - KCooperKyle Cooper
 
Presentación dibujo Daniel Bengoa y Derlis Dario Villalba
Presentación dibujo Daniel Bengoa y Derlis Dario VillalbaPresentación dibujo Daniel Bengoa y Derlis Dario Villalba
Presentación dibujo Daniel Bengoa y Derlis Dario VillalbaFran Garza
 
If u like Planes...this maybe the right choice Baby...he he he
If u like Planes...this maybe the right choice Baby...he he heIf u like Planes...this maybe the right choice Baby...he he he
If u like Planes...this maybe the right choice Baby...he he heHarish Khosla
 
El menor y la familia acogedora
El menor y la familia acogedoraEl menor y la familia acogedora
El menor y la familia acogedoraisabelmadruga
 
Review powerwolf, orden ogan en civil war trix antwerpen 01 november 2015
Review powerwolf, orden ogan en civil war trix antwerpen 01 november 2015Review powerwolf, orden ogan en civil war trix antwerpen 01 november 2015
Review powerwolf, orden ogan en civil war trix antwerpen 01 november 2015Paperwall Online Magazine
 
Tecnologia tercer ciclo energias
Tecnologia tercer ciclo  energias Tecnologia tercer ciclo  energias
Tecnologia tercer ciclo energias nancigl
 
10. actividades elect-digital
10. actividades elect-digital10. actividades elect-digital
10. actividades elect-digitalsonsolesbar
 
PRODUCCIÓN DE ANIMACIÓN CON ELEMENTOS MULTIMEDIA
PRODUCCIÓN DE ANIMACIÓN CON ELEMENTOS MULTIMEDIAPRODUCCIÓN DE ANIMACIÓN CON ELEMENTOS MULTIMEDIA
PRODUCCIÓN DE ANIMACIÓN CON ELEMENTOS MULTIMEDIAArgenis Ortiz Diaz
 

Destacado (20)

Certification
CertificationCertification
Certification
 
RESUME
RESUMERESUME
RESUME
 
Grupo 2
Grupo 2Grupo 2
Grupo 2
 
AceCertificate-3
AceCertificate-3AceCertificate-3
AceCertificate-3
 
Zeldarecomendationletter
ZeldarecomendationletterZeldarecomendationletter
Zeldarecomendationletter
 
Portafolio de servicios
Portafolio de serviciosPortafolio de servicios
Portafolio de servicios
 
Resume - KCooper
Resume - KCooperResume - KCooper
Resume - KCooper
 
Repozitoriuhttp
RepozitoriuhttpRepozitoriuhttp
Repozitoriuhttp
 
Review opeth 15 oktober 2015 ab brussel
Review opeth 15 oktober 2015 ab brusselReview opeth 15 oktober 2015 ab brussel
Review opeth 15 oktober 2015 ab brussel
 
Cultura de paz
Cultura de pazCultura de paz
Cultura de paz
 
Presentación dibujo Daniel Bengoa y Derlis Dario Villalba
Presentación dibujo Daniel Bengoa y Derlis Dario VillalbaPresentación dibujo Daniel Bengoa y Derlis Dario Villalba
Presentación dibujo Daniel Bengoa y Derlis Dario Villalba
 
If u like Planes...this maybe the right choice Baby...he he he
If u like Planes...this maybe the right choice Baby...he he heIf u like Planes...this maybe the right choice Baby...he he he
If u like Planes...this maybe the right choice Baby...he he he
 
El menor y la familia acogedora
El menor y la familia acogedoraEl menor y la familia acogedora
El menor y la familia acogedora
 
Review powerwolf, orden ogan en civil war trix antwerpen 01 november 2015
Review powerwolf, orden ogan en civil war trix antwerpen 01 november 2015Review powerwolf, orden ogan en civil war trix antwerpen 01 november 2015
Review powerwolf, orden ogan en civil war trix antwerpen 01 november 2015
 
Tecnologia tercer ciclo energias
Tecnologia tercer ciclo  energias Tecnologia tercer ciclo  energias
Tecnologia tercer ciclo energias
 
10. actividades elect-digital
10. actividades elect-digital10. actividades elect-digital
10. actividades elect-digital
 
Etude beton
Etude betonEtude beton
Etude beton
 
PRODUCCIÓN DE ANIMACIÓN CON ELEMENTOS MULTIMEDIA
PRODUCCIÓN DE ANIMACIÓN CON ELEMENTOS MULTIMEDIAPRODUCCIÓN DE ANIMACIÓN CON ELEMENTOS MULTIMEDIA
PRODUCCIÓN DE ANIMACIÓN CON ELEMENTOS MULTIMEDIA
 
constitucao federal_educacao
constitucao federal_educacaoconstitucao federal_educacao
constitucao federal_educacao
 
Sistema nervioso
Sistema nerviosoSistema nervioso
Sistema nervioso
 

Similar a Enseñanza mesclada

Conceptos informáticos generales
Conceptos informáticos generalesConceptos informáticos generales
Conceptos informáticos generalesLeonel Sartori
 
Informática y tics
Informática y ticsInformática y tics
Informática y ticsstanyPR
 
Tic en educación
Tic en educaciónTic en educación
Tic en educaciónMóni Alemi
 
Funciones cuadráticas
Funciones cuadráticasFunciones cuadráticas
Funciones cuadráticasprofejmarisel
 
Relacion entre didactica en nivel superior y tics
Relacion entre didactica en nivel superior y ticsRelacion entre didactica en nivel superior y tics
Relacion entre didactica en nivel superior y ticsANALIESTEVEZ
 
Introducción a la programación en c
Introducción a la programación en cIntroducción a la programación en c
Introducción a la programación en cvictdiazm
 
Compresión y encriptación
Compresión y encriptaciónCompresión y encriptación
Compresión y encriptaciónmenamigue
 
Actividad economica
Actividad economicaActividad economica
Actividad economicaxpcmarkos
 
Actividad economica
Actividad economicaActividad economica
Actividad economicacuevasromi
 
Apunts dintel ligencia_artificial
Apunts dintel ligencia_artificialApunts dintel ligencia_artificial
Apunts dintel ligencia_artificialAndreu Garcia
 
Sujeto de la educación primaria
Sujeto de la educación primariaSujeto de la educación primaria
Sujeto de la educación primariaMaricel Benvenuti
 
Fundamentos de Programacion.pdf
Fundamentos de Programacion.pdfFundamentos de Programacion.pdf
Fundamentos de Programacion.pdfJorge Serran
 

Similar a Enseñanza mesclada (20)

Conceptos informáticos generales
Conceptos informáticos generalesConceptos informáticos generales
Conceptos informáticos generales
 
Software libre.
Software libre.Software libre.
Software libre.
 
Informática y tics
Informática y ticsInformática y tics
Informática y tics
 
Informática 2015
Informática 2015 Informática 2015
Informática 2015
 
Wikilibro. Fundamentos.
Wikilibro. Fundamentos. Wikilibro. Fundamentos.
Wikilibro. Fundamentos.
 
Tic en educación
Tic en educaciónTic en educación
Tic en educación
 
Funciones cuadráticas
Funciones cuadráticasFunciones cuadráticas
Funciones cuadráticas
 
Relacion entre didactica en nivel superior y tics
Relacion entre didactica en nivel superior y ticsRelacion entre didactica en nivel superior y tics
Relacion entre didactica en nivel superior y tics
 
Introducción a la programación en C
Introducción a la programación en CIntroducción a la programación en C
Introducción a la programación en C
 
Introducción a la programación en c
Introducción a la programación en cIntroducción a la programación en c
Introducción a la programación en c
 
Compresión y encriptación
Compresión y encriptaciónCompresión y encriptación
Compresión y encriptación
 
Informatica
InformaticaInformatica
Informatica
 
Manual de c# 2
Manual de c# 2Manual de c# 2
Manual de c# 2
 
Manual de C
Manual de CManual de C
Manual de C
 
Actividad economica
Actividad economicaActividad economica
Actividad economica
 
Actividad economica
Actividad economicaActividad economica
Actividad economica
 
Enredados en la lengua
Enredados en la lenguaEnredados en la lengua
Enredados en la lengua
 
Apunts dintel ligencia_artificial
Apunts dintel ligencia_artificialApunts dintel ligencia_artificial
Apunts dintel ligencia_artificial
 
Sujeto de la educación primaria
Sujeto de la educación primariaSujeto de la educación primaria
Sujeto de la educación primaria
 
Fundamentos de Programacion.pdf
Fundamentos de Programacion.pdfFundamentos de Programacion.pdf
Fundamentos de Programacion.pdf
 

Último

Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleJonathanCovena1
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptxFelicitasAsuncionDia
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxAna Fernandez
 
Herramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfHerramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfMARIAPAULAMAHECHAMOR
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxlclcarmen
 
Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadAlejandrino Halire Ccahuana
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...JAVIER SOLIS NOYOLA
 
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdfResolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptELENA GALLARDO PAÚLS
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptxJunkotantik
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arteRaquel Martín Contreras
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSjlorentemartos
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoFundación YOD YOD
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxjosetrinidadchavez
 
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxPRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxinformacionasapespu
 

Último (20)

Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo Sostenible
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docx
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
Herramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfHerramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdf
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
 
Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.
 
La Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdfLa Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdf
 
Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdad
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
 
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdfResolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptx
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arte
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativo
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
 
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxPRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
 

Enseñanza mesclada

  • 2. Índice general 1 Algoritmo 1 1.1 Definición formal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Medios de expresión de un algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2.1 Diagrama de flujo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2.2 Pseudocódigo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2.3 Sistemas formales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2.4 Implementación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2.5 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2.6 Estructuras secuenciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.3 Algoritmos como funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.4 Análisis de algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.5 Ejemplo de algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.5.1 Descripción de alto nivel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.5.2 Descripción formal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.5.3 Implementación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.6 Véase también . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.6.1 Tipos de algoritmos según su función . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.6.2 Técnicas de diseño de algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.6.3 Temas relacionados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.6.4 Disciplinas relacionadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.7 Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.8 Bibliografía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.9 Enlaces externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2 Computación cuántica 7 2.1 Origen de la computación cuántica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.2 Problemas de la computación cuántica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.3 Hardware para computación cuántica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.3.1 Condiciones a cumplir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.3.2 Candidatos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.4 Software para computación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.4.1 Algoritmos cuánticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.4.2 Modelos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 i
  • 3. ii ÍNDICE GENERAL 2.4.3 Complejidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.4.4 Problemas propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.5 Cronología . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.5.1 Años 80 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.5.2 Años 90 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.5.3 Año 2000 hasta ahora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.6 Véase también . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.7 Notas y referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.8 Bibliografía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.9 Bibliografía complementaria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.10 Enlaces externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3 Computadora óptica 13 3.1 Componentes ópticos para la computadora digital binaria . . . . . . . . . . . . . . . . . . . . . . 13 3.2 Ideas falsas, retos y perspectivas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.3 Véase también . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.4 Enlaces externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 4 Ciencias de la computación 15 4.1 Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.1.1 Mayores logros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 4.2 Filosofía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4.2.1 Nombre del campo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4.3 Campos de las ciencias de la computación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4.3.1 Métodos formales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 4.3.2 Ciencias de la computación aplicadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 4.4 Relación con otros campos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.5 Véase también . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.6 Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 4.7 Bibliografía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.8 Enlaces externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 5 Educación a distancia 25 5.1 Características . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 5.1.1 Beneficios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 5.2 Ventajas y desventajas de la educación a distancia . . . . . . . . . . . . . . . . . . . . . . . . . . 26 5.2.1 Ventajas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 5.2.2 Desventajas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 5.3 Generaciones de la Educación a Distancia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 5.4 La relación telemática . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 5.5 Roles en la educación a distancia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 5.6 Educación semipresencial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
  • 4. ÍNDICE GENERAL iii 5.6.1 Ventajas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 5.6.2 Desventajas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 5.7 Educación a distancia en Hispanoamérica y España . . . . . . . . . . . . . . . . . . . . . . . . . 30 5.8 Biblioteca Virtual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 5.9 Véase también . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 5.10 Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 5.11 Enlaces externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 5.11.1 Publicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 5.11.2 Universidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 6 Tecnologías de la información y la comunicación 32 6.1 Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 6.2 Un concepto nuevo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 6.3 Las tecnologías . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 6.3.1 Las redes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 6.3.2 Los terminales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 6.3.3 Consolas de juego . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 6.3.4 Servicios en las TIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 6.3.5 Nueva generación de servicios TIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 6.3.6 Blogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 6.3.7 Impacto y evolución de los servicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 6.4 Papel de las TIC en la empresa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 6.5 Límites de la inversión en las TIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 6.6 Efectos de las TIC en la opinión pública . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 6.7 Apertura de los países a las TIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 6.8 Lo que abarca el concepto de “nuevas tecnologías” . . . . . . . . . . . . . . . . . . . . . . . . . . 46 6.9 Véase también . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 6.10 Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 6.11 Enlaces externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 6.12 Origen del texto y las imágenes, colaboradores y licencias . . . . . . . . . . . . . . . . . . . . . . 49 6.12.1 Texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 6.12.2 Imágenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 6.12.3 Licencia del contenido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
  • 5. Capítulo 1 Algoritmo La lámpara no funciona ¿Está enchufada? ¿Foco quemado? Comprar nueva lámpara No Reemplazar el foco Enchufarla Sí No Sí Los diagramas de flujo sirven para representar algoritmos de manera gráfica. En matemáticas, lógica, ciencias de la computación y dis- ciplinas relacionadas, un algoritmo (del griego y latín, dixit algorithmus y éste a su vez del matemático persa Al- Juarismi[1] ) es un conjunto prescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite rea- lizar una actividad mediante pasos sucesivos que no gene- ren dudas a quien deba realizar dicha actividad.[2] Dados un estado inicial y una entrada, siguiendo los pasos sucesi- vos se llega a un estado final y se obtiene una solución. Los algoritmos son el objeto de estudio de la algoritmia.[1] En la vida cotidiana, se emplean algoritmos frecuente- mente para resolver problemas. Algunos ejemplos son los manuales de usuario, que muestran algoritmos para usar un aparato, o las instrucciones que recibe un trabajador por parte de su patrón. Algunos ejemplos en matemática son el algoritmo de multiplicación, para calcular el pro- ducto, el algoritmo de la división para calcular el cocien- te de dos números, el algoritmo de Euclides para obtener el máximo común divisor de dos enteros positivos, o el método de Gauss para resolver un sistema de ecuaciones lineales. 1.1 Definición formal En general, no existe ningún consenso definitivo en cuan- to a la definición formal de algoritmo. Muchos autores los señalan como listas de instrucciones para resolver un cálculo o un problema abstracto, es decir, que un número finito de pasos convierten los datos de un problema (en- trada) en una solución (salida).[1][2][3][4][5][6] Sin embar- go cabe notar que algunos algoritmos no necesariamente tienen que terminar o resolver un problema en particular. Por ejemplo, una versión modificada de la criba de Era- tóstenes que nunca termine de calcular números primos no deja de ser un algoritmo.[7] A lo largo de la historia varios autores han tratado de definir formalmente a los algoritmos utilizando modelos matemáticos. Esto fue realizado por Alonzo Church en 1936 con el concepto de “calculabilidad efectiva” basa- da en su cálculo lambda y por Alan Turing basándose en la máquina de Turing. Los dos enfoques son equivalen- tes, en el sentido en que se pueden resolver exactamente los mismos problemas con ambos enfoques.[8][9] Sin em- bargo, estos modelos están sujetos a un tipo particular de datos como son números, símbolos o gráficas mientras que, en general, los algoritmos funcionan sobre una vasta cantidad de estructuras de datos.[3][1] En general, la parte común en todas las definiciones se puede resumir en las siguientes tres propiedades siempre y cuando no conside- remos algoritmos paralelos:[7] Tiempo secuencial. Un algoritmo funciona en tiempo discretizado –paso a paso–, definiendo así una secuencia de estados "computacionales" por cada entrada válida (la entrada son los da- tos que se le suministran al algoritmo antes de comenzar). Estado abstracto. Cada estado computacional puede ser descrito formalmente utilizando una estructura de primer orden y cada algoritmo es 1
  • 6. 2 CAPÍTULO 1. ALGORITMO independiente de su implementación (los algo- ritmos son objetos abstractos) de manera que en un algoritmo las estructuras de primer orden son invariantes bajo isomorfismo. Exploración acotada. La transición de un es- tado al siguiente queda completamente deter- minada por una descripción fija y finita; es de- cir, entre cada estado y el siguiente solamente se puede tomar en cuenta una cantidad fija y limitada de términos del estado actual. En resumen, un algoritmo es cualquier cosa que funcio- ne paso a paso, donde cada paso se pueda describir sin ambigüedad y sin hacer referencia a una computadora en particular, y además tiene un límite fijo en cuanto a la cantidad de datos que se pueden leer/escribir en un so- lo paso. Esta amplia definición abarca tanto a algoritmos prácticos como aquellos que solo funcionan en teoría, por ejemplo el método de Newton y la eliminación de Gauss- Jordan funcionan, al menos en principio, con números de precisión infinita; sin embargo no es posible programar la precisión infinita en una computadora, y no por ello dejan de ser algoritmos.[10] En particular es posible considerar una cuarta propiedad que puede ser usada para validar la tesis de Church-Turing de que toda función calculable se puede programar en una máquina de Turing (o equivalen- temente, en un lenguaje de programación suficientemente general):[10] Aritmetizabilidad. Solamente operaciones innegablemente calculables están disponibles en el paso inicial. 1.2 Medios de expresión de un al- goritmo Los algoritmos pueden ser expresados de muchas ma- neras, incluyendo al lenguaje natural, pseudocódigo, diagramas de flujo y lenguajes de programación entre otros. Las descripciones en lenguaje natural tienden a ser ambiguas y extensas. El usar pseudocódigo y diagramas de flujo evita muchas ambigüedades del lenguaje natural. Dichas expresiones son formas más estructuradas para re- presentar algoritmos; no obstante, se mantienen indepen- dientes de un lenguaje de programación específico. La descripción de un algoritmo usualmente se hace en tres niveles: 1. Descripción de alto nivel. Se establece el proble- ma, se selecciona un modelo matemático y se expli- ca el algoritmo de manera verbal, posiblemente con ilustraciones y omitiendo detalles. 2. Descripción formal. Se usa pseudocódigo para des- cribir la secuencia de pasos que encuentran la solu- ción. 3. Implementación. Se muestra el algoritmo expresa- do en un lenguaje de programación específico o al- gún objeto capaz de llevar a cabo instrucciones. También es posible incluir un teorema que demuestre que el algoritmo es correcto, un análisis de complejidad o am- bos. 1.2.1 Diagrama de flujo Diagrama de flujo que expresa un algoritmo para calcular la raíz cuadrada de un número x Los diagramas de flujo son descripciones gráficas de algo- ritmos; usan símbolos conectados con flechas para indicar la secuencia de instrucciones y están regidos por ISO. Los diagramas de flujo son usados para representar al- goritmos pequeños, ya que abarcan mucho espacio y su construcción es laboriosa. Por su facilidad de lectura son usados como introducción a los algoritmos, descripción de un lenguaje y descripción de procesos a personas aje- nas a la computación. 1.2.2 Pseudocódigo El pseudocódigo (falso lenguaje, el prefijo pseudo signifi- ca falso) es una descripción de alto nivel de un algoritmo que emplea una mezcla de lenguaje natural con algunas convenciones sintácticas propias de lenguajes de progra- mación, como asignaciones, ciclos y condicionales, aun-
  • 7. 1.3. ALGORITMOS COMO FUNCIONES 3 que no está regido por ningún estándar. Es utilizado para describir algoritmos en libros y publicaciones científicas, y como producto intermedio durante el desarrollo de un algoritmo, como los diagramas de flujo, aunque presentan una ventaja importante sobre estos, y es que los algorit- mos descritos en pseudocódigo requieren menos espacio para representar instrucciones complejas. El pseudocódigo está pensado para facilitar a las perso- nas el entendimiento de un algoritmo, y por lo tanto pue- de omitir detalles irrelevantes que son necesarios en una implementación. Programadores diferentes suelen utili- zar convenciones distintas, que pueden estar basadas en la sintaxis de lenguajes de programación concretos. Sin em- bargo, el pseudocódigo, en general, es comprensible sin necesidad de conocer o utilizar un entorno de programa- ción específico, y es a la vez suficientemente estructurado para que su implementación se pueda hacer directamente a partir de él. Así el pseudocódigo cumple con las funciones antes men- cionadas para representar algo abstracto los protocolos son los lenguajes para la programación. Busque fuentes más precisas para tener mayor comprensión del tema. 1.2.3 Sistemas formales La teoría de autómatas y la teoría de funciones recur- sivas proveen modelos matemáticos que formalizan el concepto de algoritmo. Los modelos más comunes son la máquina de Turing, máquina de registro y funciones μ-recursivas. Estos modelos son tan precisos como un lenguaje máquina, careciendo de expresiones coloquiales o ambigüedad, sin embargo se mantienen independien- tes de cualquier computadora y de cualquier implemen- tación. 1.2.4 Implementación Muchos algoritmos son ideados para implementarse en un programa. Sin embargo, los algoritmos pueden ser im- plementados en otros medios, como una red neuronal, un circuito eléctrico o un aparato mecánico y eléctrico. Al- gunos algoritmos inclusive se diseñan especialmente para implementarse usando lápiz y papel. El algoritmo de mul- tiplicación tradicional, el algoritmo de Euclides, la criba de Eratóstenes y muchas formas de resolver la raíz cua- drada son sólo algunos ejemplos. 1.2.5 Variables Son elementos que toman valores específicos de un tipo de datos concreto. La declaración de una variable puede realizarse comenzando con var. Principalmente, existen dos maneras de otorgar valores iniciales a variables: 1. Mediante una sentencia de asignación. 2. Mediante un procedimiento de entrada de datos (por ejemplo: 'read'). Ejemplo: ... i:=1; read(n); while i < n do begin (* cuerpo del bucle *) i := i + 1 end; ... 1.2.6 Estructuras secuenciales La estructura secuencial es aquella en la que una acción sigue a otra en secuencia. Las operaciones se suceden de tal modo que la salida de una es la entrada de la siguiente y así sucesivamente hasta el fin del proceso. La asignación de esto consiste, en el paso de valores o resultados a una zona de la memoria. Dicha zona será reconocida con el nombre de la variable que recibe el valor. La asignación se puede clasificar de la siguiente forma: 1. Simples: Consiste en pasar un valor constante a una variable (a ← 15) 2. Contador: Consiste en usarla como un verificador del número de veces que se realiza un proceso (a ← a + 1) 3. Acumulador: Consiste en usarla como un sumador en un proceso (a ← a + b) 4. De trabajo: Donde puede recibir el resultado de una operación matemática que involucre muchas varia- bles (a ← c + b*1/2). Un ejemplo de estructura secuencial, como obtener el área de un triángulo: Inicio ... float b, h, a; printf(“Diga la base”); scanf("%f”, &b); printf(“Diga la altura”); scanf("%f”, &h); a = (b*h)/2; printf(“El área del triángulo es %f”, a) ... Fin 1.3 Algoritmos como funciones Esquemática de un algoritmo solucionando un problema de ciclo hamiltoniano. Un algoritmo se puede concebir como una función que transforma los datos de un problema (entrada) en los da- tos de una solución (salida). Más aun, los datos se pueden representar a su vez como secuencias de bits, y en general, de símbolos cualesquiera.[1][9][11] Como cada secuencia de bits representa a un número natural (véase Sistema bi- nario), entonces los algoritmos son en esencia funciones de los números naturales en los números naturales que sí se pueden calcular. Es decir que todo algoritmo calcula
  • 8. 4 CAPÍTULO 1. ALGORITMO una función f : N → N donde cada número natural es la codificación de un problema o de una solución. En ocasiones los algoritmos son susceptibles de nunca ter- minar, por ejemplo, cuando entran a un bucle infinito. Cuando esto ocurre, el algoritmo nunca devuelve ningún valor de salida, y podemos decir que la función queda indefinida para ese valor de entrada. Por esta razón se considera que los algoritmos son funciones parciales, es decir, no necesariamente definidas en todo su dominio de definición. Cuando una función puede ser calculada por medios algo- rítmicos, sin importar la cantidad de memoria que ocu- pe o el tiempo que se tarde, se dice que dicha función es computable. No todas las funciones entre secuencias datos son computables. El problema de la parada es un ejemplo. 1.4 Análisis de algoritmos Como medida de la eficiencia de un algoritmo, se suelen estudiar los recursos (memoria y tiempo) que consume el algoritmo. El análisis de algoritmos se ha desarrollado para obtener valores que de alguna forma indiquen (o es- pecifiquen) la evolución del gasto de tiempo y memoria en función del tamaño de los valores de entrada. El análisis y estudio de los algoritmos es una disciplina de las ciencias de la computación y, en la mayoría de los ca- sos, su estudio es completamente abstracto sin usar nin- gún tipo de lenguaje de programación ni cualquier otra implementación; por eso, en ese sentido, comparte las ca- racterísticas de las disciplinas matemáticas. Así, el aná- lisis de los algoritmos se centra en los principios básicos del algoritmo, no en los de la implementación particular. Una forma de plasmar (o algunas veces “codificar”) un algoritmo es escribirlo en pseudocódigo o utilizar un len- guaje muy simple tal como Lexico, cuyos códigos pueden estar en el idioma del programador. Algunos escritores restringen la definición de algoritmo a procedimientos que deben acabar en algún momento, mientras que otros consideran procedimientos que po- drían ejecutarse eternamente sin pararse, suponiendo el caso en el que existiera algún dispositivo físico que fue- ra capaz de funcionar eternamente. En este último caso, la finalización con éxito del algoritmo no se podría defi- nir como la terminación de este con una salida satisfac- toria, sino que el éxito estaría definido en función de las secuencias de salidas dadas durante un periodo de vida de la ejecución del algoritmo. Por ejemplo, un algoritmo que verifica que hay más ceros que unos en una secuencia binaria infinita debe ejecutarse siempre para que pueda devolver un valor útil. Si se implementa correctamente, el valor devuelto por el algoritmo será válido, hasta que evalúe el siguiente dígito binario. De esta forma, mien- tras evalúa la siguiente secuencia podrán leerse dos tipos de señales: una señal positiva (en el caso de que el nú- mero de ceros sea mayor que el de unos) y una negativa en caso contrario. Finalmente, la salida de este algoritmo se define como la devolución de valores exclusivamente positivos si hay más ceros que unos en la secuencia y, en cualquier otro caso, devolverá una mezcla de señales po- sitivas y negativas. 1.5 Ejemplo de algoritmo El problema consiste en encontrar el máximo de un con- junto de números. Para un ejemplo más complejo véase Algoritmo de Euclides. 1.5.1 Descripción de alto nivel Dado un conjunto finito C de números, se tiene el pro- blema de encontrar el número más grande. Sin pérdi- da de generalidad se puede asumir que dicho conjunto no es vacío y que sus elementos están numerados como c0, c1, . . . , cn . Es decir, dado un conjunto C = {c0, c1, . . . , cn} se pide encontrar m tal que x ≤ m para todo elemento x que pertenece al conjunto C . Para encontrar el elemento máximo, se asume que el pri- mer elemento ( c0 ) es el máximo; luego, se recorre el conjunto y se compara cada valor con el valor del má- ximo número encontrado hasta ese momento. En el caso que un elemento sea mayor que el máximo, se asigna su valor al máximo. Cuando se termina de recorrer la lista, el máximo número que se ha encontrado es el máximo de todo el conjunto. 1.5.2 Descripción formal El algoritmo puede ser escrito de una manera más formal en el siguiente pseudocódigo: Sobre la notación: • "←" representa una asignación: m ← x significa que la variable m toma el valor de x ; • "devolver" termina el algoritmo y devuelve el valor a su derecha (en este caso, el máximo de C ). 1.5.3 Implementación En lenguaje C++: int max(int c[], int n) { int i, m = c[0]; for (i = 1; i < n; i++) if (c[i] > m) m = c[i]; return m; }
  • 9. 1.7. REFERENCIAS 5 1.6 Véase también 1.6.1 Tipos de algoritmos según su función • Algoritmo de ordenamiento • Algoritmo de búsqueda 1.6.2 Técnicas de diseño de algoritmos • Algoritmos voraces (greedy): seleccionan los ele- mentos más prometedores del conjunto de candida- tos hasta encontrar una solución. En la mayoría de los casos la solución no es óptima. • Algoritmos paralelos: permiten la división de un problema en subproblemas de forma que se puedan ejecutar de forma simultánea en varios procesado- res. • Algoritmos probabilísticos: algunos de los pasos de este tipo de algoritmos están en función de valores pseudoaleatorios. • Algoritmos determinísticos: el comportamiento del algoritmo es lineal: cada paso del algoritmo tiene únicamente un paso sucesor y otro antecesor. • Algoritmos no determinísticos: el comportamiento del algoritmo tiene forma de árbol y a cada paso del algoritmo puede bifurcarse a cualquier número de pasos inmediatamente posteriores, además todas las ramas se ejecutan simultáneamente. • Divide y vencerás: dividen el problema en subcon- juntos disjuntos obteniendo una solución de cada uno de ellos para después unirlas, logrando así la so- lución al problema completo. • Metaheurísticas: encuentran soluciones aproxima- das (no óptimas) a problemas basándose en un cono- cimiento anterior (a veces llamado experiencia) de los mismos. • Programación dinámica: intenta resolver problemas disminuyendo su coste computacional aumentando el coste espacial. • Ramificación y acotación: se basa en la construcción de las soluciones al problema mediante un árbol im- plícito que se recorre de forma controlada encon- trando las mejores soluciones. • Vuelta atrás (backtracking): se construye el espa- cio de soluciones del problema en un árbol que se examina completamente, almacenando las solucio- nes menos costosas. 1.6.3 Temas relacionados • Cota inferior asintótica • Cota ajustada asintótica • Complejidad computacional • Diagramas de flujo • Diagrama Nassi-Shneiderman • Máquina de Turing 1.6.4 Disciplinas relacionadas • Ciencias de la Computación • Análisis de algoritmos • Complejidad computacional • Informática • Inteligencia artificial • Investigación operativa • Matemáticas • Programación 1.7 Referencias [1] Brassard, Gilles; Bratley, Paul (1997). Fundamentos de Algoritmia. Madrid: PRENTICE HALL. ISBN 84- 89660-00-X. [2] Real Academia Española. Diccionario de la lengua espa- ñola "Conjunto ordenado y finito de operaciones que per- mite hallar la solución de un problema." [3] Cormen, Thomas; Leiserson, Charles; Rivest, Ronald; Stein, Clifford (2009). Introduction to algorithms. Cam- bridge, Massachusetts: The MIT Press. ISBN 978-0-262- 53305-8. [4] Ralph P. Grimaldi (1998). «Propiedades de los números enteros: Inducción matemática». Matemáticas Discreta y Combinatoria. México: Addison Wesley Longman de Mé- xico. ISBN 968-444-324-2. [5] Johnsonbaugh, Richard (2005). «Introducción a la teoría de números». Matemáticas Discretas. México: PEARSON EDUCACIÓN. ISBN 970-26-0637-3. [6] Carl Reynolds & Paul Tymann (2008). Schaum’s Outli- ne of Principles of Computer Science. McGraw-Hill. ISBN 978-0-07-146051-4. [7] Gurevich, Yuri (2000). «Sequential Abstract State Machi- nes capture Sequential Algorithms». ACM Transactions on Computational Logic 1 (1). ISSN 1529-3785, 77-111.
  • 10. 6 CAPÍTULO 1. ALGORITMO [8] John E. Savage (1987). The Complexity of Computing. Krieger Publishing Co. ISBN 089874833X. [9] Sipser, Michael (2005). Introduction to the Theory of Computation (2 edición). Course Technology. ISBN 978- 0534950972. [10] Nachum Dershowitz & Yuri Gurevich (2008). «A na- tural axiomatization of computability and proof of Church’s Thesis». Bulletin of Symbolic Logic 14 (3). ISSN 10798986, 299-350. [11] Kelley, Dean (1995). Teoría de Autómatas y Lenguajes Formales. Prentice Hall. ISBN 0-13-497777-7. 1.8 Bibliografía • Aho, A. The Design and Analysis of Computer Algo- rithms • Cormen, T. H., Leiserson, C. E., Rivest, R. L. y Stein, C. Introduction to Algorithms (2nd ed.) • Brassard, G. y P. Bratley. Fundamentos de Algorit- mia, (ISBN 848966000X) • Knuth, D. E. The Art of Computer Programming, [quien fue también, el creador del TeX] • Mamber, U. Introduction to Algorithms. A Creative Approach • Sedgewick, R. Algorithms in C (3r ed) (también exis- ten versiones en C++ y Java) 1.9 Enlaces externos Wikilibros • Wikilibros alberga un libro o manual sobre Algoritmia. • Wikcionario tiene definiciones y otra informa- ción sobre algoritmo.Wikcionario • Algoritmos para principiantes • Portal de algoritmia • Técnicas de Diseño de Algoritmos manual que ex- plica y ejemplifica los distintos paradigmas de dise- ño de algoritmos. Rosa Guerequeta y Antonio Va- llecillo (profesores de la Universidad de Málaga). • Transparencias de la asignatura “Esquemas Algorít- micos”, Campos, J. • Apuntes y problemas de Algorítmica por Domingo Giménez Cánovas • Curso de Diseño de Algoritmos de Carlos Pes
  • 11. Capítulo 2 Computación cuántica La esfera de Bloch es una representación de un qubit, el bloque de construcción fundamental de los computadores cuánticos. La computación cuántica es un paradigma de computación distinto al de la computación clásica. Se basa en el uso de qubits en lugar de bits, y da lugar a nuevas puertas lógicas que hacen posible nuevos algoritmos. Una misma tarea puede tener diferente complejidad en computación clásica y en computación cuántica, lo que ha dado lugar a una gran expectación, ya que algunos pro- blemas intratables pasan a ser tratables. Mientras que un computador clásico equivale a una máquina de Turing,[1] un computador cuántico equivale a una máquina de Tu- ring cuántica. 2.1 Origen de la computación cuántica A medida que evoluciona la tecnología, aumenta la esca- la de integración y caben más transistores en el mismo espacio; así se fabrican microchips cada vez más peque- ños, y es que, cuanto más pequeño es, mayor velocidad de proceso alcanza el chip. Sin embargo, no podemos ha- cer los chips infinitamente pequeños. Hay un límite en el cual dejan de funcionar correctamente. Cuando se llega a la escala de nanómetros, los electrones se escapan de los canales por donde deben circular. A esto se le llama efecto túnel. Una partícula clásica, si se encuentra con un obstáculo, no puede atravesarlo y rebota. Pero con los electrones, que son partículas cuánticas y se comportan como ondas, existe la posibilidad de que una parte de ellos pueda atra- vesar las paredes si son demasiado finas; de esta manera la señal puede pasar por canales donde no debería circular. Por ello, el chip deja de funcionar correctamente. En consecuencia, la computación digital tradicional no tardaría en llegar a su límite, puesto que ya se ha llegado a escalas de sólo algunas decenas de nanómetros. Surge entonces la necesidad de descubrir nuevas tecnologías y es ahí donde la computación cuántica entra en escena. La idea de computación cuántica surge en 1981, cuando Paul Benioff expuso su teoría para aprovechar las leyes cuánticas en el entorno de la computación. En vez de tra- bajar a nivel de voltajes eléctricos, se trabaja a nivel de cuanto. En la computación digital, un bit sólo puede to- mar dos valores: 0 ó 1. En cambio, en la computación cuántica, intervienen las leyes de la mecánica cuántica, y la partícula puede estar en superposición coherente: puede ser 0, 1 y puede ser 0 y 1 a la vez (dos estados ortogonales de una partícula subatómica). Eso permite que se puedan realizar varias operaciones a la vez, según el número de qubits. El número de qubits indica la cantidad de bits que pue- den estar en superposición. Con los bits convencionales, si teníamos un registro de tres bits, había ocho valores po- sibles y el registro sólo podía tomar uno de esos valores. En cambio, si tenemos un vector de tres qubits, la partí- cula puede tomar ocho valores distintos a la vez gracias a la superposición cuántica. Así, un vector de tres qubits permitiría un total de ocho operaciones paralelas. Como cabe esperar, el número de operaciones es exponencial con respecto al número de qubits. Para hacerse una idea del gran avance, un computador cuántico de 30 qubits equivaldría a un procesador con- vencional de 10 teraflops (10 millones de millones de ope- raciones en coma flotante por segundo), cuando actual- 7
  • 12. 8 CAPÍTULO 2. COMPUTACIÓN CUÁNTICA mente las computadoras trabajan en el orden de gigaflops (miles de millones de operaciones). 2.2 Problemas de la computación cuántica Uno de los obstáculos principales para la computación cuántica es el problema de la decoherencia cuántica, que causa la pérdida del carácter unitario (y, más específica- mente, la reversibilidad) de los pasos del algoritmo cuán- tico. Los tiempos de decoherencia para los sistemas can- didatos, en particular el tiempo de relajación transversal (en la terminología usada en la tecnología de resonan- cia magnética nuclear e imaginería por resonancia mag- nética) está típicamente entre nanosegundos y segundos, a temperaturas bajas. Las tasas de error son típicamen- te proporcionales a la razón entre tiempo de operación frente a tiempo de decoherencia, de forma que cualquier operación debe ser completada en un tiempo mucho más corto que el tiempo de decoherencia. Si la tasa de error es lo bastante baja, es posible usar eficazmente la corrección de errores cuántica, con lo cual sí serían posibles tiempos de cálculo más largos que el tiempo de decoherencia y, en principio, arbitrariamente largos. Se cita con frecuencia una tasa de error límite de 10−4 , por debajo de la cual se supone que sería posible la aplicación eficaz de la correc- ción de errores cuánticos. Otro de los problemas principales es la escalabilidad, especialmente teniendo en cuenta el considerable incre- mento en qubits necesarios para cualquier cálculo que im- plica la corrección de errores. Para ninguno de los siste- mas actualmente propuestos es trivial un diseño capaz de manejar un número lo bastante alto de qubits para resol- ver problemas computacionalmente interesantes hoy en día. 2.3 Hardware para computación cuántica Aún no se ha resuelto el problema de qué hardware sería el ideal para la computación cuántica. Se ha definido una serie de condiciones que debe cumplir, conocida como la lista de Di Vincenzo, y hay varios candidatos actualmente. 2.3.1 Condiciones a cumplir • El sistema ha de poder inicializarse, esto es, llevarse a un estado de partida conocido y controlado. • Ha de ser posible hacer manipulaciones a los qubits de forma controlada, con un conjunto de operacio- nes que forme un conjunto universal de puertas ló- gicas (para poder reproducir cualquier otra puerta lógica posible). • El sistema ha de mantener su coherencia cuántica a lo largo del experimento. • Ha de poder leerse el estado final del sistema, tras el cálculo. • El sistema ha de ser escalable: tiene que haber una forma definida de aumentar el número de qubits, pa- ra tratar con problemas de mayor coste computacio- nal. 2.3.2 Candidatos • Espines nucleares de moléculas en disolución, en un aparato de RMN. • Flujo eléctrico en SQUIDs. • Iones suspendidos en vacío . • Puntos cuánticos en superficies sólidas. • Imanes moleculares en micro-SQUIDs. • Computadora cuántica de Kane. • Computación adiabática, basada en el teorema adia- bático. Procesadores En 2004, científicos del Instituto de Física aplicada de la Universidad de Bonn publicaron resultados sobre un re- gistro cuántico experimental. Para ello utilizaron átomos neutros que almacenan información cuántica, por lo que son llamados qubits por analogía con los bits. Su objeti- vo actual es construir una puerta cuántica, con lo cual se tendrían los elementos básicos que constituyen los proce- sadores, que son el corazón de los computadores actuales. Cabe destacar que un chip de tecnología VLSI contiene actualmente más de 100.000 puertas, de manera que su uso práctico todavía se presenta en un horizonte lejano. Transmisión de datos Científicos de los laboratorios Max Planck y Niels Bohr publicaron, en noviembre de 2005, en la revista Nature, resultados sobre la transmisión de información cuánti- ca, usando la luz como vehículo, a distancias de 100 km[cita requerida] . Los resultados dan niveles de éxito en las transmisiones del 70%, lo que representa un nivel de ca- lidad que permite utilizar protocolos de transmisión con autocorrección. Actualmente se trabaja en el diseño de repetidores, que permitirían transmitir información a distancias mayores a las ya alcanzadas.
  • 13. 2.5. CRONOLOGÍA 9 2.4 Software para computación 2.4.1 Algoritmos cuánticos Los algoritmos cuánticos se basan en un margen de error conocido en las operaciones de base y trabajan reducien- do el margen de error a niveles exponencialmente peque- ños, comparables al nivel de error de las máquinas actua- les. • Algoritmo de Shor • Algoritmo de Grover • Algoritmo de Deutsch-Jozsa 2.4.2 Modelos • Computadora cuántica de Benioff • Computadora cuántica de Feynman • Computadora cuántica de Deutsch 2.4.3 Complejidad La clase de complejidad BQP estudia el costo de los al- goritmos cuánticos con bajo margen de error. 2.4.4 Problemas propuestos Se ha sugerido el uso de la computación cuántica como alternativa superior a la computación clásica para varios problemas, entre ellos: • Factorización de números enteros • Logaritmo discreto • Simulación de sistemas cuánticos: Richard Feynman conjeturó en 1982 que los ordenadores cuánticos se- rían eficaces como simuladores universales de siste- mas cuánticos, y en 1996 se demostró que la conje- tura era correcta.[2] 2.5 Cronología 2.5.1 Años 80 A comienzos de la década de los 80, empezaron a sur- gir las primeras teorías que apuntaban a la posibilidad de realizar cálculos de naturaleza cuántica. 1981 - Paul Benioff Las ideas esenciales de la computación cuántica surgie- ron de la mente de Paul Benioff que trabajaba en el Ar- gone National Laboratory en Illinois (EE. UU.). Teorizó un ordenador tradicional (máquina de Turing) operando con algunos principios de la mecánica cuántica. 1981-1982 Richard Feynman El Dr. Richard Feynman, físico del California Institute of Technology en California (EE. UU.) y ganador del premio Nobel en 1965 realizó una ponencia durante el “First Conference on the Physics of Computation” reali- zado en el Instituto Tecnológico de Massachusetts (EE. UU.) Su charla, bajo el título de “Simulating Physics With Computers” proponía el uso de fenómenos cuánti- cos para realizar cálculos computacionales y exponía que dada su naturaleza algunos cálculos de gran complejidad se realizarían más rápidamente en un ordenador cuántico. 1985 - David Deutsch Este físico israelí de la Universidad de Oxford, Inglaterra, describió el primer computador cuántico universal, es de- cir, capaz de simular cualquier otro computador cuánti- co (principio de Church-Turing ampliado). De este modo surgió la idea de que un computador cuántico podría eje- cutar diferentes algoritmos cuánticos. 2.5.2 Años 90 En esta época la teoría empezó a plasmarse en la prác- tica: aparecieron los primeros algoritmos cuánticos, las primeras aplicaciones cuánticas y las primeras máquinas capaces de realizar cálculos cuánticos. 1993 - Dan Simon Desde el departamento de investigación de Microsoft (Microsoft Research), surgió un problema teórico que de- mostraba la ventaja práctica que tendría un computador cuántico frente a uno tradicional. Comparó el modelo de probabilidad clásica con el modelo cuántico y sus ideas sirvieron como base para el desarrollo de algunos algoritmos futuros (como el de Shor). 1993 - Charles Benett Este trabajador del centro de investigación de IBM en Nueva York descubrió el teletransporte cuántico y que abrió una nueva vía de investigación hacia el desarrollo de comunicaciones cuánticas. 1994-1995 Peter Shor Este científico estadounidense de AT&T Bell Laborato- ries definió el algoritmo que lleva su nombre y que per- mite calcular los factores primos de números a una velo- cidad mucho mayor que en cualquier computador tradi- cional. Además su algoritmo permitiría romper muchos de los sistemas de criptografía utilizados actualmente. Su algoritmo sirvió para demostrar a una gran parte de la co- munidad científica que observaba incrédula las posibili- dades de la computación cuántica, que se trataba de un
  • 14. 10 CAPÍTULO 2. COMPUTACIÓN CUÁNTICA campo de investigación con un gran potencial. Además, un año más tarde, propuso un sistema de corrección de errores en el cálculo cuántico. 1996 - Lov Grover Inventó el algoritmo de búsqueda de datos que lleva su nombre "Algoritmo de Grover". Aunque la aceleración conseguida no es tan drástica como en los cálculos facto- riales o en simulaciones físicas, su rango de aplicaciones es mucho mayor. Al igual que el resto de algoritmos cuán- ticos, se trata de un algoritmo probabilístico con un alto índice de acierto. 1997 - Primeros experimentos En 1997 se iniciaron los primeros experimentos prácticos y se abrieron las puertas para empezar a implementar to- dos aquellos cálculos y experimentos que habían sido des- critos teóricamente hasta entonces. El primer experimen- to de comunicación segura usando criptografía cuántica se realiza con éxito a una distancia de 23 Km. Además se realiza el primer teletransporte cuántico de un fotón. 1998 - 1999 Primeros Qbit Investigadores de Los Álamos y el Instituto Tecnológi- co de Massachusets consiguen propagar el primer Qbit a través de una solución de aminoácidos. Supuso el primer paso para analizar la información que transporta un Qbit. Durante ese mismo año, nació la primera máquina de 2- Qbit, que fue presentada en la Universidad de Berkeley, California (EE. UU.) Un año más tarde, en 1999, en los laboratorios de IBM-Almaden, se creó la primera máqui- na de 3-Qbit y además fue capaz de ejecutar por primera vez el algoritmo de búsqueda de Grover. 2.5.3 Año 2000 hasta ahora 2000 - Continúan los progresos De nuevo IBM, dirigido por Isaac Chuang (Figura 4.1), creó un computador cuántico de 5-Qbit capaz de ejecu- tar un algoritmo de búsqueda de orden, que forma parte del Algoritmo de Shor. Este algoritmo se ejecutaba en un simple paso cuando en un computador tradicional reque- riría de numerosas iteraciones. Ese mismo año, científi- cos de Los Álamos National Laboratory (EE. UU.) anun- ciaron el desarrollo de un computador cuántico de 7-Qbit. Utilizando un resonador magnético nuclear se consiguen aplicar pulsos electromagnéticos y permite emular la co- dificación en bits de los computadores tradicionales. 2001 - El algoritmo de Shor ejecutado IBM y la Universidad de Stanford, consiguen ejecutar por primera vez el algoritmo de Shor en el primer computador cuántico de 7-Qbit desarrollado en Los Álamos. En el ex- perimento se calcularon los factores primos de 15, dando el resultado correcto de 3 y 5 utilizando para ello 1018 moléculas, cada una de ellas con 7 átomos. 2005 - El primer Qbyte El Instituto de “Quantum Optics and Quantum Informa- tion” en la Universidad de Innsbruck (Austria) anunció que sus científicos habían creado el primer Qbyte, una serie de 8 Qbits utilizando trampas de iones. 2006 - Mejoras en el control del cuanto Científicos en Waterloo y Massachusetts diseñan métodos para mejorar el control del cuanto y consiguen desarrollar un sistema de 12-Qbits. El control del cuanto se hace cada vez más complejo a medida que aumenta el número de Qbits empleados por los computadores. 2007 - D-Wave La empresa canadiense D-Wave Systems había supues- tamente presentado el 13 de febrero de 2007 en Silicon Valley, una primera computadora cuántica comercial de 16-qubits de propósito general; luego la misma compañía admitió que tal máquina, llamada Orion, no es realmente una computadora cuántica, sino una clase de máquina de propósito general que usa algo de mecánica cuántica para resolver problemas.[cita requerida] 2007 - Bus cuántico En septiembre de 2007, dos equipos de investigación es- tadounidenses, el National Institute of Standards (NIST) de Boulder y la Universidad de Yale en New Haven con- siguieron unir componentes cuánticos a través de super- conductores. De este modo aparece el primer bus cuántico, y este dis- positivo además puede ser utilizado como memoria cuán- tica, reteniendo la información cuántica durante un cor- to espacio de tiempo antes de ser transferido al siguiente dispositivo. 2008 - Almacenamiento Según la Fundación Nacional de Ciencias (NSF) de los EE. UU., un equipo de científicos consiguió almacenar por primera vez un Qubit en el interior del núcleo de un átomo de fósforo, y pudieron hacer que la información permaneciera intacta durante 1,75 segundos. Este perio- do puede ser expansible mediante métodos de corrección de errores, por lo que es un gran avance en el almacena- miento de información.
  • 15. 2.7. NOTAS Y REFERENCIAS 11 2009 - Procesador cuántico de estado sólido El equipo de investigadores estadounidense dirigido por el profesor Robert Schoelkopf, de la Universidad de Ya- le, que ya en 2007 había desarrollado el Bus cuántico, crea ahora el primer procesador cuántico de estado sóli- do, mecanismo que se asemeja y funciona de forma si- milar a un microprocesador convencional, aunque con la capacidad de realizar sólo unas pocas tareas muy simples, como operaciones aritméticas o búsquedas de datos. Para la comunicación en el dispositivo, esta se realiza me- diante fotones que se desplazan sobre el bus cuántico, cir- cuito electrónico que almacena y mide fotones de micro- ondas, aumentando el tamaño de un átomo artificialmen- te. 2011 - Primera computadora cuántica vendida La primera computadora cuántica comercial es vendi- da por la empresa D-Wave Systems, fundada en 1999 a Lockheed Martin, por 10 millones de dólares.[3] 2012 - Avances en chips cuánticos IBM anuncia que ha creado un chip lo suficientemente estable como para permitir que la informática cuántica llegue a hogares y empresas. Se estima que en unos 10 o 12 años se puedan estar comercializando los primeros sistemas cuánticos.[4] 2013 - Computadora cuántica más rápida que un computador convencional En abril la empresa D-Wave Systems lanza el nuevo computador cuántico D-Wave Two el cual es 500000 ve- ces superior a su antecesor D-Wave One, con un poder de cálculo de 439 qubits. Realmente el D-Wave Two tuvo graves problemas finalmente, dado a que no tenía las me- joras de procesamiento teóricas frente al D-Wave One[5] Éste fue comparado con un computador basado en el mi- croprocesador Intel Xeon E5-2690 a 2.9 GHz, teniendo en cuenta que lo obteniendo, es decir, el resultado en pro- medio de 4000 veces superior.[6] 2.6 Véase también • Computación basada en ADN • Criptografía cuántica • Electrónica molecular • Entrelazamiento cuántico • Fotónica • Intelligence Advanced Research Projects Activity (IARPA) • Simulador cuántico universal • Teleportación cuántica • Valletrónica 2.7 Notas y referencias [1] Con la salvedad de que una máquina de Turing tiene me- moria infinita. [2] Lloyd, Seth (1996). «Universal Quantum Simulators». Science 273: 1073–1078. [3] World’s first commercial quantum computer sold to Lock- heed Martin, 27 de mayo de 2011 [4] IBM shows off quantum computing advances, says prac- tical qubit computers are close [5] [6] computer finally proves its faster than a conventional PC, but only just 2.8 Bibliografía • Ordenador cuántico universal y la tesis de Church-Turing • Deutsch, D. “Quantum Theory, the Church- Turing Principle, and the Universal Quan- tum Computer” Proc. Roy. Soc. Lond. A400 (1985) pp. 97–117. • Uso de computadoras cuánticas para simular sistemas cuánticos • Feynman, R. P. “Simulating Physics with Computers” International Journal of Theore- tical Physics, Vol. 21 (1982) pp. 467–488. • Computación Cuántica e Información Cuántica • Nielsen, M. y Chuang, I. “Quantum Compu- tation and Quantum Information” Cambridge University Press (September, 2000), ISBN 0- 521-63503-9. 2.9 Bibliografía complementaria • Agustín Rayo, «Computación cuántica», Investiga- ción y Ciencia, 405, junio de 2010, págs. 92-93.
  • 16. 12 CAPÍTULO 2. COMPUTACIÓN CUÁNTICA • Mastriani, Mario (4 de septiembre de 2014). Memorias matriciales correlacionadas cuánticas, simples y mejoradas: una propuesta para su estudio y simulación sobre GPGPU. p. 268. Consultado el 12 de septiembre de 2014. 2.10 Enlaces externos • Frecuencias Cuánticas • Wikimedia Commons alberga contenido multi- media sobre Computación cuánticaCommons. • Referencias generales • Computación cuántica Escrito por Sergi Baila • Computación cuántica Epistemowikia • Qubit.org (Centre for Quantum Computation) (en inglés) • Institute for Quantum Computing (en inglés) • Grupo de Información y Computación Cuán- tica de la Universidad Politécnica de Madrid. • Computación, Información y Criptografía Cuántica en la Comunidad de Madrid (QUI- TEMAD) • QubitNews (en inglés) • Qwiki (Wiki sobre Computación Cuántica) (en inglés) • Artículos sobre física cuántica (libre acceso) (en inglés) • Algunos tutoriales • El ordenador Insuperable Artículo divulgativo de David Deutsch. • Informática Cuántica Historia, Modelos y Al- goritmos. • La Nación: Qubit x Qubit • La Nación: Por qué Google y el Pentágono quieren computadoras cuánticas • La Nación: Microsoft apuesta a que la compu- tación cuántica sea el próximo gran salto • Compañías que desarrollan computadoras cuánticas • D-Wave Systems, Vancouver, BC, Canada • IBM • Patentes relacionadas con la computación cuán- tica • Algunas patentes concedidas relacionadas con la computación cuántica • Algunas patentes publicadas relacionadas con la computación cuántica
  • 17. Capítulo 3 Computadora óptica Una computadora óptica es una computadora que usa la luz en vez de la electricidad (es decir fotones en lugar de electrones) para manipular, almacenar y transmitir da- tos. Los fotones tienen propiedades físicas fundamenta- les diferentes a las de los electrones, y los investigadores han intentado hacer uso de estas propiedades, sobre todo usando los principios básicos de la óptica, para producir computadores con el desempeño y/o capacidades mayo- res que los de los computadores electrónicos. La tecno- logía de computadores ópticos todavía está en los prime- ros tiempos: computadoras ópticas funcionales han sido construidas en el laboratorio, pero ninguna ha progresado más allá de la etapa del prototipo. La mayoría de los proyectos de investigación se enfocan en el reemplazo de los componentes de computadora ac- tuales por equivalentes ópticos, dando por resultado un sistema de computadora digital óptica que procesa da- tos binarios. Este acercamiento parece ofrecer las mejo- res perspectivas a corto plazo para la computación óp- tica comercial, puesto que los componentes ópticos po- drían ser integrados en los computadores tradicionales para producir un híbrido óptico/electrónico. Otros pro- yectos de investigación toman un acercamiento no tradi- cional, intentando desarrollar enteramente nuevos méto- dos de computar que no son físicamente posibles con la electrónica. 3.1 Componentes ópticos para la computadora digital binaria El bloque de construcción fundamental de computado- res electrónicos modernos es el transistor. Para substi- tuir componentes electrónicos por los ópticos, es reque- rido un “transistor óptico” equivalente. Esto es alcanzado usando materiales con un índice de refracción no lineal. En particular, existen materiales donde la intensidad de la luz entrante afecta a la intensidad de la luz transmitida a través del material, de una manera similar a la respues- ta del voltaje en un transistor electrónico. Este efecto del “transistor óptico” es usado para crear puertas de lógica, que a su vez están ensamblados en los componentes de alto nivel del CPU del computador. 3.2 Ideas falsas, retos y perspecti- vas Otra aclamada ventaja de la óptica es que puede reducir el consumo de energía, pero, sobre distancias cortas, un sistema de comunicación óptico típicamente usará más energía que uno electrónico. Esto es porque el ruido de disparo de un canal de comunicación óptico es mayor que el ruido de Johnson-Nyquist (también conocido como rui- do térmico) de un canal eléctrico, lo que en teoría de la in- formación significa que requerimos más energía de señal para alcanzar la misma capacidad de datos. Sin embargo, sobre distancias más largas y a mayores velocidades de datos, la pérdida en las líneas eléctricas es suficientemen- te mayor que en las comunicaciones ópticas, las cuales comparativamente usarán una cantidad de energía más baja. A medida que se eleva la velocidad de datos de co- municación, esta distancia llega a ser más corta y así la perspectiva de usar la óptica en sistemas de cálculo llega a ser más práctica.[cita requerida] Un significativo desafío a la computación óptica es que el cómputo es un proceso no lineal, en el cual múltiples señales deben interactuar para computar la respuesta. La luz, que es una onda electromagnética, solamente puede interactuar con otra onda electromagnética en presencia de los electrones en un material, y la fuerza de esta in- teracción es mucho más débil para la luz de onda elec- tromagnética, que para las señales electrónicas en una computadora convencional. Esto da como resultado que los elementos de procesamiento para una computadora óptica requieren más energía y mayores dimensiones que para una computadora electrónica convencional usando transistores.[cita requerida] 3.3 Véase también • Computadora • Computadora electrónica • Computadora mecánica • Red neural óptica 13
  • 18. 14 CAPÍTULO 3. COMPUTADORA ÓPTICA 3.4 Enlaces externos • Optical Computer Architectures: The Application of Optical Concepts to Next Generation Computers, Op- tical Computer Architectures: The Application of Op- tical Concepts to Next Generation Computers book by Alastair D. McAulay (1999) • BARROS S., GUAN S. & ALUKAIDEY T., “An MPP reconfigurable architecture using free-space optical interconnects and Petri net configuring” in Journal of System Architecture (The EUROMI- CRO Journal) Special Double Issue on Massively Parallel Computing Systems vol. 43, no. 6 & 7, pp. 391-402, April 1997 • T.S. Guan & S.P.V. Barros, “Reconfigurable Multi- Behavioural Architecture using Free-Space Optical Communication” in Proceedings of the IEEE Inter- national Workshop on Massively Parallel Processing using Optical Interconnections. , April 1994 • T.S. Guan & S.P.V. Barros, “Parallel Processor Communications through Free-Space Optics” in IEEE Region 10’s Ninth Annual International Con- ference on Frontiers of Computer Technology , Au- gust 1994 • Architectural issues in designing symbolic processors in optics • D. Goswami, “Optical Computing”, Resonance, Ju- ne 2003; ibid July 2003. , • K.-H. Brenner, Alan Huang: “Logic and architectu- res for digital optical computers (A)", J. Opt. Soc. Am., A 3, 62, (1986) • K.-H. Brenner: “A programmable optical processor based on symbolic substitution”, Appl. Opt. 27, No. 9, 1687 - 1691, (1988) • NASA scientists working to improve optical computing technology • International Workshop on Optical SuperComputing • Optical solutions for NP-complete problems • Speed-of-light computing comes a step closer New Scientist
  • 19. Capítulo 4 Ciencias de la computación Las Ciencias de la computación estudian los fundamen- tos teóricos de la información y el cómputo, junto con técnicas prácticas para la implementación y aplicación de estos fundamentos teóricos. Las ciencias de la computacion son aquellas que abar- can las bases teóricas de la información y la computación, así como su aplicación en sistemas computaciona- les.[1][2][3] El cuerpo de conocimiento de las ciencias de la computación es frecuentemente descrito como el estudio sistemático de los procesos algorítmicos que describen y transforman información: su teoría, análisis, diseño, efi- ciencia, implementación y aplicación.[4] Es el estudio sistemático de la factibilidad, estructura, expresión y mecanización de procedimientos metó- dicos (o algoritmos) que subyacen en la adquisi- ción, representación, procesamiento, almacenamiento, comunicación y acceso a la información si dicha infor- mación está codificada en forma de bits en una memoria de computadora o especificada en una estructura de genes y proteínas en una célula biológica.[5] Existen diversos campos o disciplinas dentro de las cien- cias de la computación o ciencias computacionales; algu- nos resaltan los resultados específicos del cómputo (como los gráficos por computadora), mientras que otros (co- mo la teoría de la complejidad computacional) se rela- cionan con propiedades de los algoritmos usados al rea- lizar cómputo y otros se enfocan en los problemas que requieren la implementación de sistemas computaciona- les. Por ejemplo, los estudios de la teoría de lenguajes de programación describen un cómputo, mientras que la programación de computadoras aplica lenguajes de pro- gramación específicos para desarrollar una solución a un problema computacional específico. Un científico de la computación o computólogo se especializa en teoría de la computación y en el diseño e implementación de siste- mas de computacionales.[6] Según Peter J. Denning, la cuestión fundamental en que se basa la ciencia de la computación es: «¿Qué puede ser (eficientemente) automatizado?».[7] 4.1 Historia Charles Babbage es reconocido por inventar la primera compu- tadora mecánica. 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.[8] Los primeros cimien- tos de lo que se convertiría en ciencias de la computación son anteriores a la invención de la computadora digital moderna. Se trataba de máquinas para el cálculo de las ta- reas numéricas fijas, como el ábaco han existido desde la antigüedad, ayudando en cálculos tales como la multipli- cación y la división. Además, los algoritmos para realizar cálculos han existido desde la antigüedad, incluso antes de que se crearan equipos de computación sofisticados. Los antiguos sánscritos tratadistas Shulba Sutras, o “Re- glas de la cuerda”, es un libro de algoritmos escritos en 800 a. C. para la construcción de objetos geométricos co- mo altares utilizando una clavija y cuerda, un precursor temprano del campo moderno de la geometría compu- tacional. Blaise Pascal diseñó y construyo la primera calculadora mecánica de trabajo, la Pascalina, en 1642.[9] En 1673 Gottfried Leibniz creó una calculadora mecánica digital, 15
  • 20. 16 CAPÍTULO 4. CIENCIAS DE LA COMPUTACIÓN Ada Lovelace es reconocida por escribir el primer algoritmo pro- cesado por una computadora. llamada el 'Stepped Reckoner'.[10] Él puede ser conside- rado el primer computólogo y teórico de la información, entre otras razones, porque fue el primero en documen- tar el sistema numérico binario. En 1820, Charles Xa- vier Thomas de Colmar lanzó la calculadora mecánica industrial[11] cuando lanzó su simplificado aritmómetro, que fue la primera máquina de calcular lo suficientemen- te fuerte y lo suficientemente confiable para ser usada a diario en un entorno industrial. Charles Babbage inició el diseño de la primera calculadora automática mecánica, su máquina diferencial, en 1822, que finalmente le dio la idea de la primera calculadora mecánica programable, su máquina analítica.[12] Él comenzó a desarrollar esta má- quina en 1834 y “en menos de dos años que había esboza- do muchas de las características más destacadas del mo- derno equipo. Un paso fundamental fue la adopción de un sistema de tarjetas perforadas derivado del telar de Jac- quard"[13] haciéndolo infinitamente programable.[14] En 1843, durante la traducción de un artículo francés sobre la máquina analítica, Ada Lovelace escribió, en una de las muchas notas que incluye el artículo, un algoritmo para calcular los números de Bernoulli, que es considerado co- mo el primer programa de ordenador.[15] Al rededor de 1885, Herman Hollerith inventó la máquina tabuladora, que usaba tarjetas perforadas para procesar información estadística; finalmente, su compañía se convirtió en parte de IBM. En 1937, cien años después del sueño imposible de Babbage, Howard Aiken convencidos por IBM, que estaban manufacturando todo tipo de equipos de tarje- tas perforadas y así como la calculadora de negocio [16] para desarrollar su calculadora programable gigante, el ASCC/Harvard Mark I, se basó en la máquina analítica de Babbage, que a su vez utiliza las tarjetas perforadas y una unidad central de cálculo. Cuando se terminó de construir la máquina, algunas personas lo aclamaron co- mo “el sueño de Babbage hecho realidad”.[17] Durante la década de 1940, conforme se desarrollaban nuevas y más poderosas máquinas para computar, el tér- mino computador se comenzó a utilizar para referirse a las máquinas y ya no a sus antecesores humanos.[18] Cuando se hizo evidente que las computadoras no so- lamente podrían utilizarse para realizar cálculos mate- máticos, el campo de las ciencias de la computación se amplió para estudiar cómputo en general. Las ciencias de la computación empezaron a establecerse como una disciplina académica distinta de las demás en la déca- da de 1950 y principios de 1960.[7][19] Entonces sur- gió el primer programa de grado universitario mundo, el Cambridge Diploma in Computer Science, se inició en la Universidad de Cambridge en el Cambridge Compu- ter Lab (departamento de ciencias de la computación) en 1953. El primer programa de grado universitario en cien- cias de la computación en los Estados Unidos se formó en Universidad de Purdue en 1962.[20] Desde que se dispo- ne ordenadores prácticos, muchas aplicaciones la compu- tación se han convertido en las distintas áreas de estudio en sus propios términos. Aunque inicialmente muchos creyeron que era imposi- ble que las computadoras en sí mismas podrían consti- tuir en realidad un campo científico de estudio, a fina- les de los años cincuenta se fue volviendo gradualmente aceptada entre la población mayor académica.[21][22] Es la marca IBM que a 2015 es muy conocida la que formó parte de la revolución de las ciencias de la computación durante este tiempo. IBM (abreviación de International Business Machines) lanzó el IBM 704[23] y más tarde las computadoras de IBM 709[24] que fueron ampliamente utilizadas durante el período de exploración de este ti- po de dispositivos. “Sin embargo, el trabajo con las IBM [computadoras] fue frustrante ... si hubieras perdido tanto como una letra en una instrucción, el programa chocaría, y usted tendría que empezar todo el proceso otra vez”.[21] Durante a finales de 1950, la disciplinas de las ciencias de la computación estaban en sus etapas de desarrollo más primordiales, y tales cuestiones eran comunes.[22] La disciplina científica de las ciencias de la computación nace a principios de 1940 con la confluencia de la teoría de algoritmos, lógica matemática y la invención del pro- grama almacenado en una computadora electrónica.[4] Ejemplos de esto son los trabajos de Alan Turing, Alonzo Church y Kurt Gödel en 1930 acerca de los algoritmos y su trabajo en sistemas de reglas (véase Cálculo Lamb- da, Máquina de Turing y Problemas Indecidibles), los al- goritmos creados por Augusta Ada sesenta años antes, la computadora analógica construida por Vannevar Bush en 1920 y las computadoras eléctricas construidas por
  • 21. 4.1. HISTORIA 17 Howard Aiken y Konrad Zuse en 1930. Los escritos de John Von Neumann dieron una profundidad intelectual considerable a esta disciplina emergente a mediados de la década de 1940. En 1960, había suficientemente cuerpo de conocimiento que ameritaba la creación de departamentos académicos y programas de grado universitario para esta disciplina.[4] IBM es reconocida como la marca que formó parte de la revolución de las ciencias de la computación durante ese tiempo. IBM (abreviación de International Business Ma- chines) lanzó la IBM 704[25] y más tarde la IBM 709[26] computadoras, que fueron ampliamente utilizadas duran- te el período de exploración de este tipo de dispositivos. “Sin embargo, el trabajo con la IBM [equipo] era frus- trante ... si te equivocas en una letra de alguna instrucción, el programa se arruinaría, y se tendría que empezar todo el proceso otra vez”.[21] Durante la década de 1950, la disciplina de las ciencias de la computación estaba en su etapa de desarrollo, y estos problemas eran algo común. El tiempo ha dado mejoras significativas en la capacidad de uso y la eficacia de la tecnología de la computación. La sociedad moderna ha presenciado un cambio signifi- cativo en los usuarios de la tecnología en cómputo, de ser utilizada únicamente por expertos, profesionales y cien- tíficos, a una base de usuarios que es casi omnipresente a la teoría con la cual se desarrolló y funciona este tipo de tecnología. Inicialmente, las computadoras eran bas- tante costosas, y era necesario un cierto grado de ayuda humana para el uso eficiente - en parte de operadores de computadoras profesionales. Como la adopción equipo se hizo más generalizado y asequible, se necesitaba menos asistencia humana en el uso común. 4.1.1 Mayores logros A pesar de su corto tiempo de ser una disciplina cientí- fica formal, las ciencias de la computación han hecho un gran número de contribuciones importantes a la ciencia y la sociedad –de hecho, junto con la electrónica, es una ciencia fundacional de la época actual de la historia hu- mana llamada Era de la información y la Revolución de la Información, visto como el tercer gran salto en el progre- so tecnológico humano después de la Revolución Indus- trial (1750-1850) y la revolución neolítica (8000-5000 a. C.)–. Estas contribuciones a la humanidad incluyen: • El comienzo de la "Revolución digital", la cual inclu- ye la actual Era de la información y el Internet.[28] • Una definición formal de computación y computabilidad, y una demostración formal de que existen problemas que son computacionale- mente irresolubles e intratables.[29] • El concepto de lenguaje de programación, una he- rramienta para la expresión precisa de información El ejército alemán uso la máquina enigma durante la Segunda Guerra Mundial; su sistema de cifrado fue finalmente descubier- to por Alan Turing, considerado el padre de la Computación. La lectura de la información que contenían los mensajes supuesta- mente encriptados son considerados, a veces, como la causa de haber podido concluir la Segunda Guerra Mundial al menos dos años antes de lo que hubiera acaecido sin su descifrado. El des- cifrado a gran escala del tráfico de Enigma en Bletchley Park fue uno de los factores más importantes que contribuyeron a la victoria Aliada.[27] metodológica a varios niveles de abstracción.[30] • En criptología, el criptoanálisis de Enigma fue un factor importante, el cual contribuyó a la victoria Aliada en la Segunda Guerra Mundial.[27] • Cómputo Científico permitió la evaluación de pro- cesos y situaciones de gran complejidad, así como la experimentación mediante software. También per- mitió el avance en investigación de la mente huma- na y el mapeo del genoma humano junto el Proyecto Genoma Humano.[28] proyectos de Cómputo Distri- buido tales como Folding@home que estudiaron el plegamiento de proteínas. • El Comercio algorítmico ha incrementado la eficiencia y la liquidez de los mercados finan- cieros mediante técnicas de inteligencia artifi- cial, aprendizaje automático, y otros métodos estadísticos y numéricos a gran escala.[31] Alta fre- cuencia de comercio algorítmico también puede exacerbar la volatilidad financiera.[32] • Computación gráfica e imágenes generadas por computadora se han convertido omnipresentes en
  • 22. 18 CAPÍTULO 4. CIENCIAS DE LA COMPUTACIÓN la era moderna del entretenimiento, sobre to- do en televisión, cine, publicidad, animación y videojuegos. [cita requerida] • Simulación de varios procesos, incluyendo dinámica de fluidos computacionales, sistemas físicos, eléctri- cos, electrónicos y de circuitos, así como las socie- dades y las situaciones sociales (sobre todo juegos de guerra), junto con sus hábitats, entre muchos otros. Las computadoras modernas permiten la optimiza- ción de diseños tales como aviones completos. Se destaca el diseño de circuitos eléctricos y electró- nicos con SPICE, así como software para la reali- zación física de nuevos diseños. Este último incluye software de diseño esencial para circuito integrados. • La Inteligencia artificial (IA) es cada vez más impor- tante, ya que se hace más eficiente y compleja. Exis- ten muchas aplicaciones de la IA, algunas se pueden ver en el hogar, tales como aspiradores robóticos. También está presente en los videojuegos y en el campo de batalla moderno en aviones no tripulados, sistemas antimisiles, y robots de apoyo para escua- drones. 4.2 Filosofía Un gran número de científicos de la computación han ar- gumentado a favor de la distinción de tres paradigmas di- ferentes en ciencias de la computación. Peter Wegner ha argumentado que esos paradigmas son la ciencia, la tec- nología y las matemáticas.[33] El grupo de investigación de Peter Denning argumentó que son la abstracción (mo- delado), y diseño. Amnon H. Eden lo describe como el “paradigma racionalista” (el cual trata a las ciencias de la computación como una rama de las matemáticas, la cual prevalence en ciencias de la computación teórica y princi- palmente emplea el razonamiento deductivo), el paradig- ma tecnocrático (que podría ser encontrado en enfoques ingenieriles, más prominente en la ingeniería de software) y el paradigma científico (que se enfoca a objetos relacio- nados con la computación desde la perspectiva empírica de las ciencias naturales identificable en algunas ramas de la inteligencia artificial. 4.2.1 Nombre del campo A pesar de su primera proposición en 1956,[22] el término “ciencias de la computación” aparece en 1959 en un ar- tículo de la revista Communications of the ACM (presti- giada publicación científica destinada a lectores con ex- periencia en todos los ámbitos de la computación y los sistemas de información),[34] en el cual Louis Fein discu- te sobre la creación de una Escuela de Estudios de Pos- grado en Ciencias Computacionales análoga a la creación de Harvard Business School en 1921,[35] justificando el nombre con el argumento de que: Como la ciencia admi- nistrativa, el tema o área de conocimiento puede ser apli- cado, es de carácter interdisciplinario y que cuenta con las características típicas de una disciplina académica.[36] Sus esfuerzos y los de otros, como el analista numérico George Forsythe, fueron recompensados: universidades pasaron a crear este tipo de programas de estudio, a partir de 1962 en Purdue.[37] A pesar del nombre de esta dis- ciplina académica, una cantidad significativa de tópicos en ciencias de la computación no involucran el estudio de las computadoras, por esta razón muchos nombres alter- nativos han sido propuestos.[38] Algunos departamentos de universidades prefieren el tér- mino “ciencias de la computación” para hacer énfasis en esta diferencia. El científico danés Peter Naur sugirió el término datología,[39] para reflejar el hecho de que esta disciplina científica gira en torno a los datos y a al tra- tamiento de estos, mientras que no necesariamente invo- lucra a las computadoras. La primer institución cientí- fica en usar el término fue el Departamento de Datolo- gía de la Universidad de Copenhague, fundado en 1969, con Peter Naur como profesor de datología. El término es usado en países escandinavos. En los primeros años de la computación, un número de terminus para los practi- cantes del campo de la computación fueron propuestos en la revista Communications of the ACM – turingeniero, turologo, hombre de los diagramas de flujo, matemático meta-aplicado, and epistemologo aplicado.[40] Tres me- ses después en esa misma publicación científica, el tér- mino computólogo fue sugerido. El siguiente año en la misma publicación surgió el término hypologo.[41] El tér- mino computica también ha sido sugerido.[42] En Euro- pa, términos derivados de traducciones de la expresión “automatic information” (e.g. “informazione automatica” en Italiano) or “información y matemáticas” son frecuen- temente usados, e.g. informatique (francés), Informatik (alemán), Informática (Italia, Países Bajos), Informáti- ca (España y Portugal), informatika (lenguas eslavas) o pliroforiki (πληροφορική, que significa informática) en Griego. Palabras similares han sido adoptadas en algunos lugares del Reino Unido, por ejemplo en la Universidad de Edimburgo.[43] Pero estas no reflejan el aspecto de la computabilidad, por esta razón en un contexto de investi- gación científica tanto académica como industrial el tér- mino ciencias de la computación es mayormente usado en publicaciones y conferencias científicas. 4.3 Campos de las ciencias de la computación Como disciplina científica, las ciencias de la computación abarcan una gama de temas, desde los estudios teóricos de los algoritmos y los límites de la computación a los problemas prácticos de la implementación de sistemas computacionales en hardware y software.[44][45] Compu- ting Sciences Acreditation Board o la Junta de Acre-
  • 23. 4.3. CAMPOS DE LAS CIENCIAS DE LA COMPUTACIÓN 19 ditación en Ciencias de la Computación. –Compuesta por representantes de la Association for Computing Ma- chinery (ACM), y la Sociedad de Computación IEEE (IEEE-CS) [46] – identifica cuatro áreas que considera cru- ciales para la disciplina de ciencias de la computación: teoría de la computación, algoritmos y estructuras de datos, metodología y lenguajes de programación, arqui- tectura de computadoras. Además de estas cuatro áreas, C.S.A.B. también identifica ámbitos como la ingeniería de software, inteligencia artificial, redes de computado- ras y de telecomunicaciones, sistemas de bases de da- tos, computación paralela, computación distribuida, la interacción persona-computador, gráficos por ordenador, sistemas operativos, cálculo numérico y simbólico siendo importantes áreas de las ciencias de la computación.[44] Ciencias de la computación teóricas El campo más amplio de la ciencia de la computación teórica abarca tan- to la teoría clásica de la computación y una amplia gama de otros temas que se centran en los aspectos más abs- tractos, lógicos y matemáticos de la computación. Teoría de la computación De acuerdo a Peter J. Denning, la pregunta fundamen- tal en ciencias de la computación es, «¿Que puede ser eficientemente automatizado?»[7] El estudio de la teoría de la computación está enfocado en responder pregun- tas fundamentales acerca de que puede ser computado y que cantidad de recursos son requeridos para ejecutar ta- les cómputos. En un esfuerzo por resolver esta pregun- ta, la teoría de la computabilidad examina que proble- mas computacionales se pueden resolver en varios mode- los teóricos de cómputo. La segunda pregunta está diri- gida por la teoría de la complejidad computacional, que estudia los costos de tiempo y espacio asociados a dife- rentes enfoques para resolver una multitud de problemas computacionales. El famoso problema "¿P=NP?" es uno de los Problemas del milenio,[47] es un problema abierto en ciencias de la computación. Teoría de la información y códigos La teoría de la información está relacionada a la cuanti- ficación de la información. Fue desarrollada por Claude E. Shannon para desarrollar los límites fundamentales del procesamiento de señales así como sus operaciones, tales como compresión y almacenamiento de datos así como la comunicación de los datos de manera fiable.[48] La teoría de códigos es el estudio de las propiedades de los códigos (sistemas para conversión de información de un lugar a otro) y su ajuste para una aplicación específica. Los có- digos son usados para comprimir datos, criptografía, de- tección y corrección de errores y más recientemente para la codificación de redes. Los códigos son estudiados para el propósito de diseñar métodos eficientes y seguros para la transmisión de datos. Algoritmos y estructuras de datos Los algoritmos y las estructuras de datos son el estudio de métodos computacionales comúnmente usados así como su eficiencia computacional. Teoría de lenguajes de programación La teoría del lenguaje de programación es una rama de las ciencias de la computación que se ocupa del diseño, implementación, análisis, caracterización y clasificación de los lenguaje de programación y sus características in- dividuales, cae dentro de la disciplina de las ciencias de la computación, tanto en dependencia de las matemáticas y la lingüística. Es un área de investigación activa, con numerosas revistas académicas y conferencias especiali- zadas en el tema. 4.3.1 Métodos formales Los métodos formales son un tipo particular de la técnica basada en las matemáticas para la especificación formal, desarrollo y verificación formal de los sistemas de softwa- re y hardware. El uso de métodos formales para el diseño de software y hardware está motivado por la expectativa de que, la realización de un análisis matemático adecuado puede contribuir a la fiabilidad y robustez de un diseño. Estos forman una importante base teórica para la ingenie- ría de software, especialmente cuando está involucrado la seguridad o robustez. Los métodos formales son un com- plemento útil para las pruebas de software, ya que ayudan a evitar errores y también pueden dar un marco para ha- cer pruebas. Para su uso industrial, se requiere el apoyo de herramientas. Sin embargo, el alto costo de la utilización de métodos formales significa que por lo general sólo se utilizan en el desarrollo de sistemas críticos de alta inte- gridad donde la vida o la seguridad es de muy alta impor- tancia. Los métodos formales se describen mejor como la aplicación de un bastante amplia variedad de teóricos fundamentales de la informática, en particular, los cálcu- los lógica, los lenguajes formales, la teoría de autómatas, y la semántica de los programas, sino también de tipo de sistemas y tipos de datos algebraicos a los problemas en el software y hardware de especificación y verificación. Los métodos formales se describen mejor como la apli- cación de una amplia variedad de fundamentos teóricos de las ciencias de la computación, en particular la lógica computaciónal, lenguajes formales, teoría de autómatas y Semántica de lenguajes de programación pero también áreas como sistemas de tipos y tipos de datos algebraicos a problemas en la especificación y verificación de softwa- re y hardware.
  • 24. 20 CAPÍTULO 4. CIENCIAS DE LA COMPUTACIÓN 4.3.2 Ciencias de la computación aplicadas Las ciencias de la computación aplicadas tratan de identi- ficar ciertos aspectos conceptuales y teóricos de las cien- cias de la computación que pueden ser aplicados directa- mente para resolver problemas del mundo real. Inteligencia artificial Esta rama de las ciencias de la computación pretende o es requerida para la síntesis de procesos meta-orientados tales como la resolución de problemas, toma de decisio- nes, la adaptación del medio ambiente, el aprendizaje y la comunicación que se encuentran en los seres huma- nos y los animales. Desde sus orígenes en la cibernética y en la Conferencia de Dartmouth (1956), la investiga- ción en inteligencia artificial (IA) ha sido necesariamen- te multidisciplinaria, aprovechando áreas de especializa- ción, tales como las matemáticas, la lógica simbólica, la semiótica, la ingeniería eléctrica, la filosofía de la mente, la neurofisiología, y la inteligencia social. La IA errónea- mente es asociada en la mente popular con el desarrollo robótico, pero el principal campo de aplicación prácti- ca ha sido como un componente integrado en las áreas de desarrollo de software que requieren la comprensión y modelación computacional, tales como las finanzas y la economía, la minería de datos y las ciencias físicas. El término fue acuñado por el científico de la computación y matemático John McCarthy en 1955. Arquitectura de computadoras La arquitectura de computadores u organización de computadoras digitales es el diseño conceptual y la es- tructura operacional fundamental de un sistema cómputo. Se centra en gran medida de la manera en que la unidad central de procesamiento realiza internamente y accede a las direcciones en la memoria.[49] El campo involucra disciplinas de la ingeniería en computación y la ingenie- ría eléctrica, la selección y la interconexión de los com- ponentes de hardware para crear los equipos que cumplen funciones, de rendimiento, y costes. Análisis de rendimiento de computadoras Análisis de rendimiento del equipo es el estudio del tra- bajo que fluye a través de los equipos con el objetivo ge- neral de mejora de rendimiento y control de tiempo de respuesta, utilizando los recursos de manera eficiente, la eliminación de los cuellos de botella, y la predicción de rendimiento bajo cargas máximas previstas.[50] Cómputo científico La ciencia computacional (o computación científica) es el campo de estudio que trata con la construcción de mode- los matemáticos y técnicas de análisis cuantitativos así como el uso de computadoras para analizar y resolver problemas científicos. En el uso práctico, es típicamente la aplicación de simulación por ordenador y otras formas de cálculo a los problemas en diversas disciplinas cientí- ficas. Redes de computadoras Esta rama de las ciencias de la computación que tiene co- mo objetivo gestionar las redes entre computadoras en todo el mundo. Sistemas concurrentes, paralelos y distribuidos Concurrencia es una propiedad de los sistemas en los que varios cálculos están ejecutando de forma simultá- nea, y, potencialmente, que interactúan entre sí. Un nú- mero de modelos matemáticos han sido desarrollados pa- ra el cálculo concurrente general, incluyendo las redes de Petri, cálculos de proceso y del modelo de máquina de acceso aleatorio en paralelo. Un sistema distribuido se extiende la idea de la simultaneidad en varios ordenado- res conectados a través de una red. Computadoras dentro del mismo sistema distribuido tienen su propia memoria privada, y la información es a menudo intercambian entre sí para lograr un objetivo común. Bases de datos Una base de datos tiene la intención de organizar, alma- cenar y recuperar grandes cantidades de datos de forma sencilla. Bases de datos digitales se gestionan median- te sistemas de gestión de base de datos para almacenar, crear, mantener y consultar los datos, a través de mode- los de bases de datos y lenguajes de consulta. Una base de datos es un conjunto de datos interrelacionados entre si mismos. Informática en salud Informática de la Salud se ocupa de las técnicas compu- tacionales para la solución de problemas en el cuidado de la salud. Ciencia de la información El campo estudia la estructura, algoritmos, comporta- miento e interacciones de los sistemas naturales y arti- ficiales que guardan, procesan, acceden a y comunican información. También desarrolla sus propios fundamen- tos conceptuales y teóricos y emplea fundamentos desa- rrollados en otros campos.
  • 25. 4.5. VÉASE TAMBIÉN 21 Ingeniería de software Ingeniería de software es el estudio del diseño, imple- mentación y modificación de software con la finalidad de asegurarse de que es de alta calidad, asequible, fácil de mantener, y rápido de construir. Es un enfoque siste- mático para el diseño de software, que implica la aplica- ción de prácticas de ingeniería de software. Los ingenie- ros de software comercian con la organización y análisis de software— no solo lidian con la creación o fabricación de un nuevo software, sino también con su mantenimien- to y disposición interna. Se prevé que estén entre las ocu- paciones de más rápido crecimiento entre 2008 y 2018. Debido a la novedad de este subcampo, la educación for- mal en Ingeniería de software generalmente es parte de los planes de estudio de ciencias de la computación, la gran mayoría de ingenieros de software tienen un grado académico en ciencias de la computación sin tener rela- ción con la ingeniería.[51] 4.4 Relación con otros campos Por ser una disciplina reciente, existen varias definiciones alternativas para la ciencia de la computación. Esta puede ser vista como una forma de ciencia, matemáticas o una nueva disciplina que no puede ser categorizada siguiendo los modelos actuales. Las ciencias de la computación frecuentemente se cruzan con otras áreas de investigación, tales como la física y la lingüística. Pero es con las matemáticas con las que se considera que tiene un grado mayor de relación. Eso es evidenciado por el hecho de que los primeros trabajos en el área fueran fuertemente influenciados por matemáticos como Kurt Gödel y Alan Turing. En la actualidad sigue habiendo un intercambio de ideas útil entre ambos cam- pos en áreas como la lógica matemática, la teoría de ca- tegorías, la teoría de dominios, el álgebra y la geometría. Otro punto a destacar es que, a pesar de su nombre, las ciencias de la computación raramente involucran el estu- dio mismo de las máquinas conocidas como computado- ras. De hecho, el renombrado científico Edsger Dijkstra es muy citado por la frase «Las ciencias de la compu- tación están tan poco relacionadas con las computadoras como la astronomía con los telescopios». La investiga- ción en ciencias de la computación también suele rela- cionarse con otras disciplinas, como la ciencia cognitiva, la física (véase computación cuántica), la lingüística, et- cétera. La relación entre las ciencias de la computación y la ingeniería de software es un tema muy discutido, por disputas sobre lo que realmente significa el término inge- niería de software y sobre cómo se define a las ciencias de la computación. Algunas personas creen que la ingenie- ría de software sería un subconjunto de las ciencias de la computación. Otras, tomando en cuenta la relación entre otras disciplinas científicas y de la ingeniería, creen que el principal objetivo de las ciencias de la computación sería estudiar las propiedades del cómputo en general, mientras que el objetivo de la ingeniería de software sería diseñar cómputos específicos para lograr objetivos prácticos, con lo que se convertiría en disciplinas diferentes. Este punto de vista es el que sostiene, por ejemplo, Parnas (1998). Incluso hay otros que sostienen que no podría existir una ingeniería de software. Los aspectos académicos, políticos y de financiamiento en las áreas de ciencias de la computación tienden a ver- se influidos drásticamente por el criterio del departamen- to encargado de la investigación y la educación en cada universidad, que puede estar orientado a la matemática o a la ingeniería. Los departamentos de ciencias de la computación orientados a la matemáticas teóricas sue- len alinearse del lado de la computación científica y las aplicaciones de cálculo numérico. El término computación científica, que no debe confun- dirse con ciencia de la computación, designa a todas aque- llas prácticas destinadas a modelar, plantear experimen- tos y validar teorías científicas sirviéndose de medios computacionales. En estos casos la computación es una mera herramienta y el esfuerzo se dirige a avanzar en los campos objetivo (física, biología, mecánica de fluidos, radiotransmisión,...), más que en la propia ciencia de la computación. Finalmente, el público en general algunas veces confun- de la ciencia de la computación con áreas vocacionales que trabajan con computadoras o piensan que trata acer- ca de su propia experiencia con las computadoras, lo cual suele incluir actividades como los juegos, la navegación web y el procesamiento de texto. Sin embargo, el punto central de la ciencia de la computación va más allá de en- tender las propiedades de los programas que se emplean para implementar aplicaciones de software como juegos y navegadores web, y utiliza ese entendimiento para crear nuevos programas o mejorar los existentes.[52] 4.5 Véase también • Informático teórico • Ciencias de la información • Matemáticas • Ingeniería en computación • Anexo:Informáticos teóricos • Programación • Teoría de la computación • Teoría de la complejidad computacional • Problema de la cena de los filósofos
  • 26. 22 CAPÍTULO 4. CIENCIAS DE LA COMPUTACIÓN • Problemas no resueltos de las Ciencias de la Compu- tación • Anexo:Informáticos teóricos • Mujeres en informática • Premio Turing 4.6 Referencias [1] "Computer science is the study of information" Department of Computer and Information Science, Guttenberg Infor- mation Technologies [2] "Computer science is the study of computation." Computer Science Department, College of Saint Benedict, Saint John’s University [3] "Computer Science is the study of all aspects of computer systems, from the theoretical foundations to the very prac- tical aspects of managing large software projects." Massey University [4] Anthony Ralston, Edwin D. Reilly, David Hemmendinger (2000). Encyclopedia of Computer Science. Wiley. 978-0- 470-86412-8. [5] http://www.cs.bu.edu/AboutCS/WhatIsCS.pdf. [6] «WordNet Search - 3.1». Wordnetweb.princeton.edu. Consultado el 14 de mayo de 2012. [7] Denning, P.J. (2000). «Computer Science: The Discipli- ne» (PDF). Encyclopedia of Computer Science. [8] David Alan Grier (2005). When computers were human. Princeton University Press. ISBN 84-89660-00-X. [9] «Blaise Pascal». School of Mathematics and Statistics University of St Andrews, Scotland. [10] «A Brief History of Computing». [11] En 1851 [12] «Science Museum - Introduction to Babbage». Archivado desde el original el 8 de septiembre de 2006. Consultado el 24 de septiembre de 2006. [13] Anthony Hyman (1982). Charles Babbage, pioneer of the computer. [14] “La introducción de tarjetas perforadas en el nuevo mo- tor era importante no sólo como una forma más conve- niente de control que los tambores, si no porque se podría programar de forma ilimitada, y estos programas podrían ser almacenados y repetidos sin el peligro de introducir errores en la configuracion a mano de la máquina; era im- portante también porque sirvió para cristalizar sensación de Babbage que había inventado algo realmente nuevo, al- go mucho más que una máquina calculadora sofisticada.” Bruce Collier, 1970 [15] «A Selection and Adaptation From Ada’s Notes found in Ada, The Enchantress of Numbers,” by Betty Alexandra Toole Ed.D. Strawberry Press, Mill Valley, CA». Con- sultado el 4 de mayo de 2006. (enlace roto disponible en Internet Archive; véase el historial y la última versión). [16] “En este sentido Aiken necesitaba de IBM, cuya tecnolo- gía incluida el uso de tarjetas perforadas, la acumulación de datos numéricos, y la transferencia de los datos numé- ricos de un registro a otro ", Bernard Cohen, p.44 (2000) [17] Brian Randell, p. 187, 1975 [18] La Association for Computing Machinery (ACM) fue fundada en 1947. [19] «Some EDSAC statistics». Cl.cam.ac.uk. Consultado el 19 de noviembre de 2011. [20] «Computer science pioneer Samuel D. Conte dies at 85». Purdue Computer Science. 1 de julio de 2002. Consultado el 12 de diciembre de 2014. [21] Levy, Steven (1984). Hackers: Heroes of the Computer Re- volution. Doubleday. ISBN 0-385-19195-2. [22] Tedre, Matti (2014). The Science of Computing: Shaping a Discipline. Taylor and Francis / CRC Press. [23] «IBM 704 Electronic Data Processing System - CHM Re- volution» (en inglés). Computerhistory.org. Consultado el 7 de julio de 2013. [24] «IBM 709: a powerful new data processing system» (en inglés). Computer History Museum. Consultado el 12 de diciembre de 2014. [25] «IBM 704 Electronic Data Processing System - CHM Re- volution». Computerhistory.org. Consultado el 7 de julio de 2013. [26] «IBM 709: a powerful new data processing system». Computer History Museum. Consultado el 12 de diciem- bre de 2014. [27] David Kahn, The Codebreakers, 1967, ISBN 0-684- 83130-9. [28] http://web.archive.org/web/http://www.cis.cornell.edu/ Dean/Presentations/Slides/bgu.pdf [29] Constable, R.L. (March 2000). Computer Science: Achie- vements and Challenges circa 2000 (PDF). [30] Abelson, H.; G.J. Sussman with J. Sussman (1996). Struc- ture and Interpretation of Computer Programs (2nd edi- ción). MIT Press. ISBN 0-262-01153-0. «La revolución de la computadora es una revolución en la manera de pen- sar y en la forma en que expresamos lo que pensamos. La esencia de este cambio es la aparición de lo que podría llamarse mejor epistemología procedimental —el estudio de la estructura del conocimiento desde un punto de vista imperativo, en oposición al punto de vista más declarativo tomada por temas matemáticos clásicos–.» [31] «Black box traders are on the march.» The Telegraph, 26 de agosto de 2006.