SlideShare ist ein Scribd-Unternehmen logo
1 von 29
Downloaden Sie, um offline zu lesen
ALGORITMOS
DIGITALES II


Ing. Hugo Fdo. Velasco Peña
Universidad Nacional
© 2006
OBJETIVOS
Conocer los principios básicos de los
algoritmos.
Establecer paralelos entre los algoritmos,
los programas y las máquinas de estado.
ALGORITMIA
Definición
Ciencia del cálculo aritmético y algebraico;
teoría de los números.

La algoritmia es uno de los pilares de la
programación y su relevancia se muestra en el
desarrollo de cualquier aplicación, más allá de la
mera construcción de programas.
ALGORITMO
Un algoritmo es un conjunto de pasos
claramente definidos, que a partir de una
cierta entrada produce una determinada
salida.
CARACTERÍSTICAS DE UN
ALGORITMO
 Todo algoritmo debe tener las siguientes
 características:
   Debe ser preciso, es decir, cada instrucción
   debe indicar de forma inequívoca que se
   tiene que hacer.
   Debe ser finito, es decir, debe tener un
   número limitado de pasos.
   Debe ser definido, es decir, debe producir
   los mismos resultados para las mismas
   condiciones de entrada.
ALGORITMOS Y PROGRAMAS
Debemos distinguir algoritmo de programa un
algoritmo es independiente del lenguaje en el cual
se programa, de la maquina en la cual se
implemente y de otras restricciones que hacen a la
puesta en operación del algoritmo.


Desde el punto de vista del estudio de los algoritmos
los mismos pueden considerarse como entidades
matemáticas abstractas independientes de
restricciones tecnológicas.
VALIDACIÓN DE UN ALGORITMO
 Un algoritmo es correcto si el resultado que
 produce siempre resuelve un determinado
 problema a partir de una entrada valida.

 Demostrar ya sea en forma rigurosa o intuitiva
 que un algoritmo es correcto es el primer paso
 indispensable en el análisis de un algoritmo.

 Los algoritmos que no son correctos a veces
 pueden ser útiles si por ejemplo producen una
 respuesta aproximada a un problema
 particularmente difícil en forma eficiente.
ALGORITMOS
DETERMINISTICOS
 Un algoritmo es deterministico si la respuesta
 que produce se puede conocer a partir de los
 datos de entrada.

  Un algoritmo es no deterministico cuando no es
 deterministico.

  Que un algoritmo sea o no sea deterministico
 no aporta dato alguno sobre la validez del
 algoritmo.
ÁREAS DE LA ALGORITMIA
 El estudio de los algoritmos se puede
 dividir en dos grandes categorías:

   Análisis de algoritmos.
   Diseño de algoritmos.
ANÁLISIS DE ALGORITMOS
 El analisis intenta determinar que tan
 eficiente es un algoritmo para resolver un
 determinado problema.

 En general el aspecto mas interesante a
 analizar de un algoritmo son sus costos de
 espacio y tiempo.
COSTOS DE TIEMPO
Suele ser el mas importante indica cuanto
tiempo insume un determinado algoritmo
para encontrar la solución a un problema.
Se mide en función de la cantidad o del
tamaño de los datos de entrada.
COSTO DE ESPACIO
Mide cuanta memoria (espacio) necesita
el algoritmo para funcionar correctamente.
DISEÑO DE ALGORITMOS
El diseño de algoritmos se encarga de encontrar
cual es el mejor algoritmo para un problema
determinado. En general existen algunos
paradigmas básicos que pueden aplicarse para
encontrar un buen algoritmo.
Es claro que esta es una tarea dificil que
requiere de conocimientos especicos y de una
habilidad particular.
DISEÑO DE ALGORITMOS
Algunas de las técnicas mas utilizadas en el
diseño de algoritmos son las siguientes:
   Dividir para conquistar
   Algoritmos aleatorizados
   Programación dinámica
   Algoritmos golosos Greedy
   Algoritmos de heurísticos
   Reducción a otro problema conocido
   Uso de estructuras de datos que solucionen
   el problema
MODELOS COMPUTACIONALES

 Para poder estudiar en detalle un
 algoritmo debemos establecer un marco
 en el cual podamos probar y analizar un
 algoritmo, así como también que permita
 comparar dos algoritmos entre si.
 Este ambiente necesario para el estudio
 de los algoritmos se conoce como modelo
 computacional.
MAQUINA DE TURING
La maquina de Turing
es el mas básico de
los modelos
computacionales y
fue propuesta por el
celebre matemático
Alan Turing.
MAQUINA DE TURING
La maquina de Turing maneja tres símbolos que
llamaremos, a, b y espacio.
Además cuenta con una memoria infinita que
puede verse como una cinta infinita.
La maquina es capaz de leer en cada paso un
símbolo de la cinta escribir el mismo u otro
símbolo en la cinta y avanzar o retroceder una
posición.
MAQUINA DE TURING
  El cómputo es determinado a partir de una tabla de
  estados de la forma:

(estado, valor)→(nuevo estado, nuevo valor, dirección)

  Esta tabla toma como parámetros el estado actual de
  la máquina y el carácter leído de la cinta, dando la
  dirección para mover el cabezal, el nuevo estado de
  la máquina y el valor a ser escrito en la cinta.
  Con este aparato extremadamente sencillo es
  posible realizar cualquier cómputo que un
  computador digital sea capaz de realizar.
MAQUINA DE TURING
Una máquina de Turing con una sola cinta puede ser
definida como una 6-tupl,                      donde
Q es un conjunto finito de estados
Γ es un conjunto finito de símbolos de cinta, el alfabeto
de cinta
        es el estado inicial
       es un símbolo denominado blanco, y es el único
símbolo que se puede repetir un número infinito de
veces
        es el conjunto de estados finales de aceptación
                             es una función parcial
denominada función de transición, donde L es un
movimiento a la izquierda y R es el movimiento a la
derecha.
MÁQUINA UNIVERSAL DE
TURING
 Una máquina de Turing computa una
 determinada función parcial de carácter
 definido, y unívoca, definida sobre las
 secuencias de posibles cadenas de símbolos de
 su alfabeto.

 En este sentido se puede considerar como
 equivalente a un programa de ordenador, o lo
 que es lo mismo, a un algoritmo.
MÁQUINA UNIVERSAL DE
TURING
 En 1947, Turing indicó:
 Se puede demostrar que es posible construir
 una máquina especial de este tipo que pueda
 realizar el trabajo de todas las demás. Esta
 máquina especial puede ser denominada
 máquina universal.

 Esto pudo ser demostrado, y por lo tanto
 cualquier problema que una computadora pueda
 resolver puede resolverse en una maquina de
 Turing
REPRESENTACIÓN DE LA
MAQUINA DE TURING
Podemos representar un programa para la maquina de Turing
como un autómata de estados finitos donde cada estado tiene
la siguiente notación




donde s1 es el símbolo que la maquina lee de la cinta, s2 es el
símbolo que la maquina escribe en la cinta en la misma
posición donde leyó s1 y el +1 o -1 indica si se avanza o se
retrocede una posición en la cinta. La flecha indica cual es el
estado hacia el cual se desplaza la maquina que podría ser el
mismo estado donde estaba antes.
Ejemplo 1
 En algún lugar de la cinta se pueden
 encontrar dos o mas letras “a” seguidas.
 Copiar una “b” a continuación de la última
 “a”

             λaaaλ → λaaabλ
Ejemplo 2
 Copiar todas las “a” de la memoria a
 continuación de las “b”

λλλλaaaλλλbbbbbλλλλλ→λλλλλλλbbbbbaaaλλλ
COSTOS
En la maquina de Turing, y en general para
cualquier algoritmo, los costos se pueden medir
de la siguiente forma:

  Costo de tiempo
  Costo de espacio
COSTO DE TIEMPO
Es la cantidad de transiciones cambios de
estado que realiza la maquina, contando
también aquellas transiciones que parten
de un estado y vuelven al mismo.

Por ejemplo nuestro programa para la
máquina de Turing del ejemplo 1 Para el
caso λaaaaλ insume 5 transiciones y la
cinta queda de la forma λaaaabλ
COSTO DE ESPACIO
Se puede medir como la cantidad de estados
del programa.

Cada estado en la maquina de Turing
representa una cierta memoria por lo que medir
la cantidad de estados es una buena forma de
medir el costo espacial.

Nuestro primer algoritmo para la maquina de
Turing tiene 4 estados.
EFICIENCIA DE UN ALGORITMO

 En la maquina de Turing el análisis de la
 eficiencia de un algoritmo pasa por
 averiguar si no existe un programa que
 pueda resolver el mismo problema en
 forma mas rápida empleando menos
 transiciones o bien utilizando menos
 espacio menor cantidad de estados.
EFICIENCIA DE UN ALGORITMO

 Desarrolle un algoritmo para cambiar una
 bombilla.

Weitere ähnliche Inhalte

Was ist angesagt?

Programacion Estructurada
Programacion EstructuradaProgramacion Estructurada
Programacion EstructuradaJoseph Bros
 
Gramática Libre de Contexto
Gramática Libre de ContextoGramática Libre de Contexto
Gramática Libre de ContextoBrayhan Acosta
 
Manual del Programador Juego Ahorcado Educativo
Manual del Programador Juego Ahorcado EducativoManual del Programador Juego Ahorcado Educativo
Manual del Programador Juego Ahorcado EducativoJerry Alexander RC
 
Algoritmos de gestión de memoria
Algoritmos de gestión de memoriaAlgoritmos de gestión de memoria
Algoritmos de gestión de memoriaadolfoahumada94
 
Lenguajes de Programación
Lenguajes de ProgramaciónLenguajes de Programación
Lenguajes de ProgramaciónSandra Esposito
 
Cramer method in excel
Cramer method in excelCramer method in excel
Cramer method in excelEdgar Mata
 
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regularesPortafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regularesHumano Terricola
 
ESPRESIONES REGULARES
ESPRESIONES REGULARESESPRESIONES REGULARES
ESPRESIONES REGULARESAnel Sosa
 
Expresiones regulares
Expresiones regularesExpresiones regulares
Expresiones regularesJordan-P
 

Was ist angesagt? (20)

Programacion Estructurada
Programacion EstructuradaProgramacion Estructurada
Programacion Estructurada
 
Tipos de lenguaje formal según Chomsky
Tipos de lenguaje formal según ChomskyTipos de lenguaje formal según Chomsky
Tipos de lenguaje formal según Chomsky
 
Cifrado por Sustitución y por Transposición
Cifrado por Sustitución y por TransposiciónCifrado por Sustitución y por Transposición
Cifrado por Sustitución y por Transposición
 
Sistemas de cifrado
Sistemas de cifradoSistemas de cifrado
Sistemas de cifrado
 
Introducción a la Programación en Visual C# (C Sharp)
Introducción a la Programación en Visual C# (C Sharp)Introducción a la Programación en Visual C# (C Sharp)
Introducción a la Programación en Visual C# (C Sharp)
 
Tópicos Avanzados de Programación - Unidad 1 GUI
Tópicos Avanzados de Programación - Unidad 1 GUITópicos Avanzados de Programación - Unidad 1 GUI
Tópicos Avanzados de Programación - Unidad 1 GUI
 
Gramática Libre de Contexto
Gramática Libre de ContextoGramática Libre de Contexto
Gramática Libre de Contexto
 
Manual del Programador Juego Ahorcado Educativo
Manual del Programador Juego Ahorcado EducativoManual del Programador Juego Ahorcado Educativo
Manual del Programador Juego Ahorcado Educativo
 
Algoritmos de gestión de memoria
Algoritmos de gestión de memoriaAlgoritmos de gestión de memoria
Algoritmos de gestión de memoria
 
Lógica de programación
Lógica de programaciónLógica de programación
Lógica de programación
 
Automatas y gramaticas
Automatas y gramaticasAutomatas y gramaticas
Automatas y gramaticas
 
Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
Lenguajes de Programación
Lenguajes de ProgramaciónLenguajes de Programación
Lenguajes de Programación
 
PROGRAMACION CONCURRENTE
PROGRAMACION CONCURRENTEPROGRAMACION CONCURRENTE
PROGRAMACION CONCURRENTE
 
Cramer method in excel
Cramer method in excelCramer method in excel
Cramer method in excel
 
Unidad 2 expresiones regulares
Unidad 2 expresiones regularesUnidad 2 expresiones regulares
Unidad 2 expresiones regulares
 
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regularesPortafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
 
ESPRESIONES REGULARES
ESPRESIONES REGULARESESPRESIONES REGULARES
ESPRESIONES REGULARES
 
Memoria 3
Memoria 3Memoria 3
Memoria 3
 
Expresiones regulares
Expresiones regularesExpresiones regulares
Expresiones regulares
 

Andere mochten auch

Estructuras de control repetitivas
Estructuras de control repetitivas Estructuras de control repetitivas
Estructuras de control repetitivas william salazar
 
Programacion en WinCupl
Programacion en WinCuplProgramacion en WinCupl
Programacion en WinCuplGilbert_28
 
8 estructuras de control repetitivas...
8 estructuras de control repetitivas...8 estructuras de control repetitivas...
8 estructuras de control repetitivas...alithu1
 
Introducción a la informática, sistema binario y codificación
Introducción a la informática, sistema binario y codificaciónIntroducción a la informática, sistema binario y codificación
Introducción a la informática, sistema binario y codificaciónTm-CS
 
Estructuras de control
Estructuras de controlEstructuras de control
Estructuras de controlLic_Vera
 
Solucion de problemas matematicos
Solucion de problemas matematicosSolucion de problemas matematicos
Solucion de problemas matematicosJainer Lopez
 
Estructuras de control selectivas
Estructuras de control selectivasEstructuras de control selectivas
Estructuras de control selectivasmarigelcontreras
 
Algoritmo cualitativos
Algoritmo cualitativosAlgoritmo cualitativos
Algoritmo cualitativosjdazas
 
Introduccion a Algoritmos
Introduccion a AlgoritmosIntroduccion a Algoritmos
Introduccion a Algoritmossmog2010
 
Elementos de la comunicacion
Elementos de la comunicacionElementos de la comunicacion
Elementos de la comunicacionlmvqz
 
Los Algoritmos En La Enseñanza De La Matemáticas
Los   Algoritmos  En La  Enseñanza  De La  MatemáticasLos   Algoritmos  En La  Enseñanza  De La  Matemáticas
Los Algoritmos En La Enseñanza De La Matemáticasguest21cdf17
 
Analisis De Problemas Y Toma De Decisiones
Analisis De Problemas Y Toma De DecisionesAnalisis De Problemas Y Toma De Decisiones
Analisis De Problemas Y Toma De DecisionesJesus Sanchez
 
Diagramas de flujo, especificaciones y diseño de procesos
Diagramas de flujo, especificaciones y diseño de procesosDiagramas de flujo, especificaciones y diseño de procesos
Diagramas de flujo, especificaciones y diseño de procesosIvan Vera Montenegro
 

Andere mochten auch (16)

Estructuras de control repetitivas
Estructuras de control repetitivas Estructuras de control repetitivas
Estructuras de control repetitivas
 
Programacion en WinCupl
Programacion en WinCuplProgramacion en WinCupl
Programacion en WinCupl
 
8 estructuras de control repetitivas...
8 estructuras de control repetitivas...8 estructuras de control repetitivas...
8 estructuras de control repetitivas...
 
Los algoritmos
Los algoritmosLos algoritmos
Los algoritmos
 
Introducción a la informática, sistema binario y codificación
Introducción a la informática, sistema binario y codificaciónIntroducción a la informática, sistema binario y codificación
Introducción a la informática, sistema binario y codificación
 
Estructuras de control
Estructuras de controlEstructuras de control
Estructuras de control
 
Solucion de problemas matematicos
Solucion de problemas matematicosSolucion de problemas matematicos
Solucion de problemas matematicos
 
Estructuras de control selectivas
Estructuras de control selectivasEstructuras de control selectivas
Estructuras de control selectivas
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Algoritmo cualitativos
Algoritmo cualitativosAlgoritmo cualitativos
Algoritmo cualitativos
 
Introduccion a Algoritmos
Introduccion a AlgoritmosIntroduccion a Algoritmos
Introduccion a Algoritmos
 
Elementos de la comunicacion
Elementos de la comunicacionElementos de la comunicacion
Elementos de la comunicacion
 
Los Algoritmos En La Enseñanza De La Matemáticas
Los   Algoritmos  En La  Enseñanza  De La  MatemáticasLos   Algoritmos  En La  Enseñanza  De La  Matemáticas
Los Algoritmos En La Enseñanza De La Matemáticas
 
Analisis De Problemas Y Toma De Decisiones
Analisis De Problemas Y Toma De DecisionesAnalisis De Problemas Y Toma De Decisiones
Analisis De Problemas Y Toma De Decisiones
 
Solución de problemas con algoritmos
Solución de problemas con algoritmosSolución de problemas con algoritmos
Solución de problemas con algoritmos
 
Diagramas de flujo, especificaciones y diseño de procesos
Diagramas de flujo, especificaciones y diseño de procesosDiagramas de flujo, especificaciones y diseño de procesos
Diagramas de flujo, especificaciones y diseño de procesos
 

Ähnlich wie Algoritmos (20)

Algoritmos univ colombia
Algoritmos univ colombiaAlgoritmos univ colombia
Algoritmos univ colombia
 
Manual users algoritmos
Manual users   algoritmosManual users   algoritmos
Manual users algoritmos
 
EL ALGORITMO
EL ALGORITMOEL ALGORITMO
EL ALGORITMO
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Tema 5 computabilidad y algoritmos
Tema 5 computabilidad y algoritmosTema 5 computabilidad y algoritmos
Tema 5 computabilidad y algoritmos
 
Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
Unidad algoritmos y df
Unidad algoritmos y dfUnidad algoritmos y df
Unidad algoritmos y df
 
Tema v
Tema vTema v
Tema v
 
Tarea 4 algoritmos
Tarea 4 algoritmosTarea 4 algoritmos
Tarea 4 algoritmos
 
Maquina de turing - Enzo y Bolivar - Teoria de Automatas
Maquina de turing - Enzo y Bolivar - Teoria de AutomatasMaquina de turing - Enzo y Bolivar - Teoria de Automatas
Maquina de turing - Enzo y Bolivar - Teoria de Automatas
 
Tema v
Tema vTema v
Tema v
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Resolución de problemas y algoritmo
Resolución de problemas y algoritmoResolución de problemas y algoritmo
Resolución de problemas y algoritmo
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Tema v
Tema vTema v
Tema v
 
algoritmo
algoritmoalgoritmo
algoritmo
 
Algoritmo Matematicas
Algoritmo MatematicasAlgoritmo Matematicas
Algoritmo Matematicas
 
Unidad i-guia1
Unidad i-guia1Unidad i-guia1
Unidad i-guia1
 
Algoritmos y programacion en C++
Algoritmos y programacion en C++Algoritmos y programacion en C++
Algoritmos y programacion en C++
 
maquinas de turing
maquinas de turingmaquinas de turing
maquinas de turing
 

Mehr von Carlos

01 algoritmos
01 algoritmos01 algoritmos
01 algoritmosCarlos
 
01 algoritmos
01 algoritmos01 algoritmos
01 algoritmosCarlos
 
01 algoritmos
01 algoritmos01 algoritmos
01 algoritmosCarlos
 
05 sentencias basicas
05 sentencias basicas05 sentencias basicas
05 sentencias basicasCarlos
 
04b operadores
04b operadores04b operadores
04b operadoresCarlos
 
Ejemplos c
Ejemplos cEjemplos c
Ejemplos cCarlos
 
Lenguajesdeprogramacion c nivel1-unidad1-04-funcion main
Lenguajesdeprogramacion c nivel1-unidad1-04-funcion mainLenguajesdeprogramacion c nivel1-unidad1-04-funcion main
Lenguajesdeprogramacion c nivel1-unidad1-04-funcion mainCarlos
 
Lenguajesdeprogramacion c nivel1-unidad1-03-funciones definidas por el usuario
Lenguajesdeprogramacion c nivel1-unidad1-03-funciones definidas por el usuarioLenguajesdeprogramacion c nivel1-unidad1-03-funciones definidas por el usuario
Lenguajesdeprogramacion c nivel1-unidad1-03-funciones definidas por el usuarioCarlos
 
Lenguajesdeprogramacion c nivel1declaracion de variables
Lenguajesdeprogramacion c nivel1declaracion de variablesLenguajesdeprogramacion c nivel1declaracion de variables
Lenguajesdeprogramacion c nivel1declaracion de variablesCarlos
 
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1Carlos
 
Historia De la Informatica
Historia De la InformaticaHistoria De la Informatica
Historia De la InformaticaCarlos
 
Lenguajesdeprogramacion c nivel1-unidad4-01-estatuto while
Lenguajesdeprogramacion c nivel1-unidad4-01-estatuto whileLenguajesdeprogramacion c nivel1-unidad4-01-estatuto while
Lenguajesdeprogramacion c nivel1-unidad4-01-estatuto whileCarlos
 
Lenguajesdeprogramacion c nivel1-unidad2-03-expresiones y funciones matematicas
Lenguajesdeprogramacion c nivel1-unidad2-03-expresiones y funciones matematicasLenguajesdeprogramacion c nivel1-unidad2-03-expresiones y funciones matematicas
Lenguajesdeprogramacion c nivel1-unidad2-03-expresiones y funciones matematicasCarlos
 
Lenguajesdeprogramacion c nivel1-unidad2-01-instalando compilador el compilador
Lenguajesdeprogramacion c nivel1-unidad2-01-instalando compilador el compiladorLenguajesdeprogramacion c nivel1-unidad2-01-instalando compilador el compilador
Lenguajesdeprogramacion c nivel1-unidad2-01-instalando compilador el compiladorCarlos
 
Lenguajesdeprogramacion c nivel1-unidad2-01-instalando compilador el compilador
Lenguajesdeprogramacion c nivel1-unidad2-01-instalando compilador el compiladorLenguajesdeprogramacion c nivel1-unidad2-01-instalando compilador el compilador
Lenguajesdeprogramacion c nivel1-unidad2-01-instalando compilador el compiladorCarlos
 
Lenguajesdeprogramacion c nivel1-unidad2-01-instalando compilador el compilador
Lenguajesdeprogramacion c nivel1-unidad2-01-instalando compilador el compiladorLenguajesdeprogramacion c nivel1-unidad2-01-instalando compilador el compilador
Lenguajesdeprogramacion c nivel1-unidad2-01-instalando compilador el compiladorCarlos
 
Lenguajesdeprogramacion c nivel1-unidad1-02-declaracion de variables
Lenguajesdeprogramacion c nivel1-unidad1-02-declaracion de variablesLenguajesdeprogramacion c nivel1-unidad1-02-declaracion de variables
Lenguajesdeprogramacion c nivel1-unidad1-02-declaracion de variablesCarlos
 
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1Carlos
 
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1Carlos
 

Mehr von Carlos (19)

01 algoritmos
01 algoritmos01 algoritmos
01 algoritmos
 
01 algoritmos
01 algoritmos01 algoritmos
01 algoritmos
 
01 algoritmos
01 algoritmos01 algoritmos
01 algoritmos
 
05 sentencias basicas
05 sentencias basicas05 sentencias basicas
05 sentencias basicas
 
04b operadores
04b operadores04b operadores
04b operadores
 
Ejemplos c
Ejemplos cEjemplos c
Ejemplos c
 
Lenguajesdeprogramacion c nivel1-unidad1-04-funcion main
Lenguajesdeprogramacion c nivel1-unidad1-04-funcion mainLenguajesdeprogramacion c nivel1-unidad1-04-funcion main
Lenguajesdeprogramacion c nivel1-unidad1-04-funcion main
 
Lenguajesdeprogramacion c nivel1-unidad1-03-funciones definidas por el usuario
Lenguajesdeprogramacion c nivel1-unidad1-03-funciones definidas por el usuarioLenguajesdeprogramacion c nivel1-unidad1-03-funciones definidas por el usuario
Lenguajesdeprogramacion c nivel1-unidad1-03-funciones definidas por el usuario
 
Lenguajesdeprogramacion c nivel1declaracion de variables
Lenguajesdeprogramacion c nivel1declaracion de variablesLenguajesdeprogramacion c nivel1declaracion de variables
Lenguajesdeprogramacion c nivel1declaracion de variables
 
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
 
Historia De la Informatica
Historia De la InformaticaHistoria De la Informatica
Historia De la Informatica
 
Lenguajesdeprogramacion c nivel1-unidad4-01-estatuto while
Lenguajesdeprogramacion c nivel1-unidad4-01-estatuto whileLenguajesdeprogramacion c nivel1-unidad4-01-estatuto while
Lenguajesdeprogramacion c nivel1-unidad4-01-estatuto while
 
Lenguajesdeprogramacion c nivel1-unidad2-03-expresiones y funciones matematicas
Lenguajesdeprogramacion c nivel1-unidad2-03-expresiones y funciones matematicasLenguajesdeprogramacion c nivel1-unidad2-03-expresiones y funciones matematicas
Lenguajesdeprogramacion c nivel1-unidad2-03-expresiones y funciones matematicas
 
Lenguajesdeprogramacion c nivel1-unidad2-01-instalando compilador el compilador
Lenguajesdeprogramacion c nivel1-unidad2-01-instalando compilador el compiladorLenguajesdeprogramacion c nivel1-unidad2-01-instalando compilador el compilador
Lenguajesdeprogramacion c nivel1-unidad2-01-instalando compilador el compilador
 
Lenguajesdeprogramacion c nivel1-unidad2-01-instalando compilador el compilador
Lenguajesdeprogramacion c nivel1-unidad2-01-instalando compilador el compiladorLenguajesdeprogramacion c nivel1-unidad2-01-instalando compilador el compilador
Lenguajesdeprogramacion c nivel1-unidad2-01-instalando compilador el compilador
 
Lenguajesdeprogramacion c nivel1-unidad2-01-instalando compilador el compilador
Lenguajesdeprogramacion c nivel1-unidad2-01-instalando compilador el compiladorLenguajesdeprogramacion c nivel1-unidad2-01-instalando compilador el compilador
Lenguajesdeprogramacion c nivel1-unidad2-01-instalando compilador el compilador
 
Lenguajesdeprogramacion c nivel1-unidad1-02-declaracion de variables
Lenguajesdeprogramacion c nivel1-unidad1-02-declaracion de variablesLenguajesdeprogramacion c nivel1-unidad1-02-declaracion de variables
Lenguajesdeprogramacion c nivel1-unidad1-02-declaracion de variables
 
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
 
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
Lenguajesdeprogramacion c nivel1-unidad1-01-componentes y tipos de datos_1
 

Kürzlich hochgeladen

Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosJhonJairoRodriguezCe
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIhmpuellon
 

Kürzlich hochgeladen (10)

Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 

Algoritmos

  • 1. ALGORITMOS DIGITALES II Ing. Hugo Fdo. Velasco Peña Universidad Nacional © 2006
  • 2. OBJETIVOS Conocer los principios básicos de los algoritmos. Establecer paralelos entre los algoritmos, los programas y las máquinas de estado.
  • 3. ALGORITMIA Definición Ciencia del cálculo aritmético y algebraico; teoría de los números. La algoritmia es uno de los pilares de la programación y su relevancia se muestra en el desarrollo de cualquier aplicación, más allá de la mera construcción de programas.
  • 4. ALGORITMO Un algoritmo es un conjunto de pasos claramente definidos, que a partir de una cierta entrada produce una determinada salida.
  • 5. CARACTERÍSTICAS DE UN ALGORITMO Todo algoritmo debe tener las siguientes características: Debe ser preciso, es decir, cada instrucción debe indicar de forma inequívoca que se tiene que hacer. Debe ser finito, es decir, debe tener un número limitado de pasos. Debe ser definido, es decir, debe producir los mismos resultados para las mismas condiciones de entrada.
  • 6. ALGORITMOS Y PROGRAMAS Debemos distinguir algoritmo de programa un algoritmo es independiente del lenguaje en el cual se programa, de la maquina en la cual se implemente y de otras restricciones que hacen a la puesta en operación del algoritmo. Desde el punto de vista del estudio de los algoritmos los mismos pueden considerarse como entidades matemáticas abstractas independientes de restricciones tecnológicas.
  • 7. VALIDACIÓN DE UN ALGORITMO Un algoritmo es correcto si el resultado que produce siempre resuelve un determinado problema a partir de una entrada valida. Demostrar ya sea en forma rigurosa o intuitiva que un algoritmo es correcto es el primer paso indispensable en el análisis de un algoritmo. Los algoritmos que no son correctos a veces pueden ser útiles si por ejemplo producen una respuesta aproximada a un problema particularmente difícil en forma eficiente.
  • 8. ALGORITMOS DETERMINISTICOS Un algoritmo es deterministico si la respuesta que produce se puede conocer a partir de los datos de entrada. Un algoritmo es no deterministico cuando no es deterministico. Que un algoritmo sea o no sea deterministico no aporta dato alguno sobre la validez del algoritmo.
  • 9. ÁREAS DE LA ALGORITMIA El estudio de los algoritmos se puede dividir en dos grandes categorías: Análisis de algoritmos. Diseño de algoritmos.
  • 10. ANÁLISIS DE ALGORITMOS El analisis intenta determinar que tan eficiente es un algoritmo para resolver un determinado problema. En general el aspecto mas interesante a analizar de un algoritmo son sus costos de espacio y tiempo.
  • 11. COSTOS DE TIEMPO Suele ser el mas importante indica cuanto tiempo insume un determinado algoritmo para encontrar la solución a un problema. Se mide en función de la cantidad o del tamaño de los datos de entrada.
  • 12. COSTO DE ESPACIO Mide cuanta memoria (espacio) necesita el algoritmo para funcionar correctamente.
  • 13. DISEÑO DE ALGORITMOS El diseño de algoritmos se encarga de encontrar cual es el mejor algoritmo para un problema determinado. En general existen algunos paradigmas básicos que pueden aplicarse para encontrar un buen algoritmo. Es claro que esta es una tarea dificil que requiere de conocimientos especicos y de una habilidad particular.
  • 14. DISEÑO DE ALGORITMOS Algunas de las técnicas mas utilizadas en el diseño de algoritmos son las siguientes: Dividir para conquistar Algoritmos aleatorizados Programación dinámica Algoritmos golosos Greedy Algoritmos de heurísticos Reducción a otro problema conocido Uso de estructuras de datos que solucionen el problema
  • 15. MODELOS COMPUTACIONALES Para poder estudiar en detalle un algoritmo debemos establecer un marco en el cual podamos probar y analizar un algoritmo, así como también que permita comparar dos algoritmos entre si. Este ambiente necesario para el estudio de los algoritmos se conoce como modelo computacional.
  • 16. MAQUINA DE TURING La maquina de Turing es el mas básico de los modelos computacionales y fue propuesta por el celebre matemático Alan Turing.
  • 17. MAQUINA DE TURING La maquina de Turing maneja tres símbolos que llamaremos, a, b y espacio. Además cuenta con una memoria infinita que puede verse como una cinta infinita. La maquina es capaz de leer en cada paso un símbolo de la cinta escribir el mismo u otro símbolo en la cinta y avanzar o retroceder una posición.
  • 18. MAQUINA DE TURING El cómputo es determinado a partir de una tabla de estados de la forma: (estado, valor)→(nuevo estado, nuevo valor, dirección) Esta tabla toma como parámetros el estado actual de la máquina y el carácter leído de la cinta, dando la dirección para mover el cabezal, el nuevo estado de la máquina y el valor a ser escrito en la cinta. Con este aparato extremadamente sencillo es posible realizar cualquier cómputo que un computador digital sea capaz de realizar.
  • 19. MAQUINA DE TURING Una máquina de Turing con una sola cinta puede ser definida como una 6-tupl, donde Q es un conjunto finito de estados Γ es un conjunto finito de símbolos de cinta, el alfabeto de cinta es el estado inicial es un símbolo denominado blanco, y es el único símbolo que se puede repetir un número infinito de veces es el conjunto de estados finales de aceptación es una función parcial denominada función de transición, donde L es un movimiento a la izquierda y R es el movimiento a la derecha.
  • 20. MÁQUINA UNIVERSAL DE TURING Una máquina de Turing computa una determinada función parcial de carácter definido, y unívoca, definida sobre las secuencias de posibles cadenas de símbolos de su alfabeto. En este sentido se puede considerar como equivalente a un programa de ordenador, o lo que es lo mismo, a un algoritmo.
  • 21. MÁQUINA UNIVERSAL DE TURING En 1947, Turing indicó: Se puede demostrar que es posible construir una máquina especial de este tipo que pueda realizar el trabajo de todas las demás. Esta máquina especial puede ser denominada máquina universal. Esto pudo ser demostrado, y por lo tanto cualquier problema que una computadora pueda resolver puede resolverse en una maquina de Turing
  • 22. REPRESENTACIÓN DE LA MAQUINA DE TURING Podemos representar un programa para la maquina de Turing como un autómata de estados finitos donde cada estado tiene la siguiente notación donde s1 es el símbolo que la maquina lee de la cinta, s2 es el símbolo que la maquina escribe en la cinta en la misma posición donde leyó s1 y el +1 o -1 indica si se avanza o se retrocede una posición en la cinta. La flecha indica cual es el estado hacia el cual se desplaza la maquina que podría ser el mismo estado donde estaba antes.
  • 23. Ejemplo 1 En algún lugar de la cinta se pueden encontrar dos o mas letras “a” seguidas. Copiar una “b” a continuación de la última “a” λaaaλ → λaaabλ
  • 24. Ejemplo 2 Copiar todas las “a” de la memoria a continuación de las “b” λλλλaaaλλλbbbbbλλλλλ→λλλλλλλbbbbbaaaλλλ
  • 25. COSTOS En la maquina de Turing, y en general para cualquier algoritmo, los costos se pueden medir de la siguiente forma: Costo de tiempo Costo de espacio
  • 26. COSTO DE TIEMPO Es la cantidad de transiciones cambios de estado que realiza la maquina, contando también aquellas transiciones que parten de un estado y vuelven al mismo. Por ejemplo nuestro programa para la máquina de Turing del ejemplo 1 Para el caso λaaaaλ insume 5 transiciones y la cinta queda de la forma λaaaabλ
  • 27. COSTO DE ESPACIO Se puede medir como la cantidad de estados del programa. Cada estado en la maquina de Turing representa una cierta memoria por lo que medir la cantidad de estados es una buena forma de medir el costo espacial. Nuestro primer algoritmo para la maquina de Turing tiene 4 estados.
  • 28. EFICIENCIA DE UN ALGORITMO En la maquina de Turing el análisis de la eficiencia de un algoritmo pasa por averiguar si no existe un programa que pueda resolver el mismo problema en forma mas rápida empleando menos transiciones o bien utilizando menos espacio menor cantidad de estados.
  • 29. EFICIENCIA DE UN ALGORITMO Desarrolle un algoritmo para cambiar una bombilla.