Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Fisica 2 Tarea

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 9

UNIVERSIDAD AUTONOMA DE NUEVO LEON

FACULTAD DE INGENIERIA MECANICA Y ELECTRICA

Materia: Algoritmos Computacionales

UNIDAD 1: Algoritmos Simples


UNIDAD 2: Fundamentos de la Complejidad Computacional

Docente: Selene Guadalupe Pinal Gómez


Nombre: Daniel Antonio Hernández Portes
Matricula: 2007139
Carrera: ITS

Fecha de entrega: 16/09/2022


Introducción

Durante la realización de este reporte, analizaremos de


manera concreta los algoritmos computacionales como tal,
dando un enfoque general a lo que contribuye dentro de la
computación y como es que actúa en un contexto social.
Como proceso fundamental, abarcaremos cada punto
crucial de los algoritmos, subrayando de manera ideal y
concisa cada subtema planteado.
Posterior a ello, pondremos especial atención a cada uno
de los conceptos, para, asimismo, darle un sentido a todo
aquello investigado, dando como resultado, una
conclusión a lo que llegamos a analizar dentro de esta
rama.
Por último, tomando como base la conclusión de la misma,
podremos entender de mejor manera la importancia de los
algoritmos en la vida cotidiana
Desarrollo

Algoritmos simples

Algoritmos computacionales
Desde el punto de vista informático un algoritmo es cualquier
procedimiento computacional bien definido que parte de un estado
inicial y un valor o un conjunto de valores de entrada, a los cuales
se les aplica una secuencia de pasos computacionales finitos,
produciendo una salida o solución.

Tipos
Algoritmos computacionales. En este tipo de algoritmos la
resolución depende de un cálculo matemático por lo que puede ser
resuelto por una computadora o calculadora.
Algoritmos no computacionales. Son aquellos algoritmos que no
pueden ser resueltos por una computadora y necesitan de la
intervención humana para ello.
Algoritmos cualitativos. En este tipo de algoritmo no se realizan
cálculos numéricos para su resolución, sino secuencias lógicas o
formales. Algoritmos cuantitativos. Este tipo de algoritmo depende
de un cálculo numérico para poder mostrar el output
Complejidad Algorítmica
Cuando se comienza a ejercer empíricamente la programación, ya sea gracias a tutoriales
en YT o foros educativos, se suele omitir muchas veces el rigor de las ciencias exactas
porque se cree que es información redundante, y que deteriora el proceso de aprendizaje.
la complejidad algorítmica es una métrica teórica que nos ayuda a describir el
comportamiento de un algoritmo en términos de tiempo de ejecución (tiempo que tarda
un algoritmo en resolver un problema) y memoria requerida (cantidad de memoria
necesaria para procesar las instrucciones que solucionan dicho problema). Esto nos ayuda
a comparar entre la efectividad de un algoritmo y otro, y decidir cuál es el que nos
conviene implementar.

¿Qué es el Algoritmo?
Es un conjunto de instrucciones o reglas definidas y no-ambiguas, ordenadas y finitas que
permite, típicamente, solucionar un problema, realizar un cómputo, procesar datos y
llevar a cabo otras tareas o actividades.2 Dado un estado inicial y una entrada, siguiendo
los pasos sucesivos se llega a un estado final y se obtiene una solución.
En la vida cotidiana, se emplean algoritmos frecuentemente para resolver problemas
determinados. Algunos ejemplos son los manuales de usuario, que muestran algoritmos
para usar un aparato, o las instrucciones que recibe un trabajador de su patrón. Algunos
ejemplos en matemática son el algoritmo de multiplicación, para calcular el producto, el
algoritmo de la división para calcular el cociente 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.
¿Qué es Pseudocodigo?
El pseudocódigo es una forma de expresar los distintos pasos que va a realizar un
programa, de la forma más parecida a un lenguaje de programación. Su principal función
es la de representar por pasos la solución a un problema o algoritmo, de la forma más
detallada posible, utilizando un lenguaje cercano al de programación. El pseudocódigo no
puede ejecutarse en un ordenador ya que entonces dejaría de ser pseudocódigo, como su
propio nombre indica, se trata de un código falso (pseudo = falso), es un código escrito
para que lo entienda el ser humano y no la máquina.

el pseudocódigo es una forma de describir instrucciones lógicas que estructuralmente se


asemeja a los lenguajes de programación. No obstante, el pseudocódigo se creó con el fin
de que las personas puedan leer y escribir dichas instrucciones de forma sencilla, donde
en la mayoría de los casos, se utiliza como estructura básica para el posterior desarrollo en
un lenguaje de programación propiamente dicho.
El pseudocódigo opera como una descripción de alto nivel, lo que significa que la forma en
la que se representa resulta mucho más didáctica, fluida y sencilla para los seres humanos.
A pesar de eso, por medio del pseudocódigo se crean algoritmos complejos capaces de
permitir la solución de problemas de cualquier tipo.
Es posible describir el pseudocódigo como un lenguaje de programación a medias, esto se
debe a que al igual que un lenguaje informático, el pseudocódigo es una herramienta útil
para la programación y el desarrollo de softwares de cualquier tipo. Por medio de este una
persona puede recrear una serie de instrucciones detalladas en forma de algoritmo, el
cual puede llevar a la resolución de una tarea o problema concreto. Sin embargo, no
termina de ser un lenguaje, ya que el pseudocódigo no utiliza código y no puede ser
comprendido de manera directa por un ordenador.
¿Cuáles son algunos errores de lógica?
Los errores lógicos son los más difíciles de localizar y eliminar. Este tipo de error se
produce cuando un código perfectamente válido hace lo que se le dice, pero no lo que el
programador esperaba, como, por ejemplo:

<?php
for ($i=0; $i < 10; $i++);
{
echo "Hacer algo aquí<br />";
}
?>
Este fragmento es perfectamente válido. Cumple correctamente la sintaxis de PHP. No
depende de servicios externos, por lo que es poco probable que falle durante el tiempo de
ejecución.
A simple vista, parece que iterará diez veces el bucle _for_ , repitiendo "Hacer algo aquí"
cada vez. La inclusión de un punto y coma al final de la primera línea significa que el bucle
no afecta a las líneas siguientes. El bucle _for_ iterará diez veces sin resultados y, tras ello,
la instrucción echo se ejecutará una vez.
Como este código es una forma válida pero ineficaz de escribir código para obtener este
resultado, el analizador no se queja. El realizar casos de prueba que cubran todo nuestro
código hará que muchos de esos fallos lógicos salgan a la luz.
Un error lógico como el del ejemplo anterior se puede cometer con facilidad, pero
también resulta sencillo de corregir ya que la primera vez que se ejecute el código
obtendremos un resultado distinto al esperado. La mayoría de los errores lógicos son
ligeramente más nocivos.
Técnicas de análisis y de algoritmos

TÉCNICA TOP DOWN.


También conocida como de arriba-abajo y consiste en establecer una serie de niveles de
mayor a menor complejidad (arriba-abajo) que den solución al problema. Al diseñar un
sistema siguiendo una estrategia “top-down” se comienza pensando en una visión global
de cómo va a funcionar todo. Luego se definen cuáles van a ser los grandes componentes
del sistema. Y poco a poco se va refinando y definiendo las funciones de partes más y más
pequeñas hasta que se termina construyendo el sistema entero.

TÉCNICA BOTTOM UP.


A partir de una necesidad se crean soluciones. El diseño Bottom up (de abajo hacia arriba)
o ascendente se refiere a la identificación de aquellos procesos que necesitan
computarizarse conforme vayan apareciendo, su análisis como sistema y su codificación, o
bien, la adquisición de paquetes de software para satisfacer el problema inmediato. Un
ejemplo muy simple: Si necesitas de momento un programa que solamente te sume
números pares, diseñas el código y listo. Utilizas el programa para la necesidad que surgió.
Algoritmos paralelos: permiten la división de un problema en subproblemas deforma que
se puedan ejecutar de forma simultánea en varios procesadores.
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.
Notación complejidad asintótica
Las cotas de complejidad, también llamadas medidas asintóticas sirven para clasificar
funciones de tal forma que podamos compararlas. Las medidas asintóticas permiten
analizar qué tan rápido crece el tiempo de ejecución de un algoritmo cuando crece el
tamaño de los datos de entrada, sin importar el lenguaje en el que esté implementado ni
el tipo de máquina en la que se ejecute. Existen diversas notaciones asintóticas para medir
la complejidad, las tres cotas de complejidad más comunes son: la notación O (o
mayúscula), la notación Ω (omega mayúscula) y la notación θ (theta mayúscula) y todas se
basan en el peor caso.

Naturaleza de problemas de algoritmos


Los problemas algorítmicos son clasificados de acuerdo con su naturaleza intrínseca
respecto a la posibilidad y dificultad de resolverlos.
Por su Tratabilidad
Los problemas que admiten solución son clasificados de acuerdo con la complejidad que
presentan los algoritmos para resolverlos.
Por el tipo de Respuesta
Los problemas son clasificados de acuerdo con la respuesta requerida por el problema.
Clasificación por su Naturaleza
Los problemas de naturaleza algorítmica que no admiten solución por algoritmo son
llamados no - computables. Los problemas de decisión y no-computables son llamados de
indecidibles. Los problemas para los cuales existen algoritmos de complejidad polinomial
para resolverlos son llamados de tratables. Los problemas que admiten solución y para los
cuales comprobadamente no pueden ser resueltos por algoritmos de complejidad
polinomial son rotulados de intratables. No computable. Problemas que no admiten
Solución algorítmica Indecidible Tratable. Problemas que admiten Solución algorítmica
Intratable
Conclusión: Podemos mencionar un sinfín de características que conllevan
los algoritmos computacionales dentro de un contexto tecnológico y en la
vida cotidiana, mostrando la importancia de gran alcance que tiene en
distintas áreas de software y hardware, así como también el concepto de
cada unidad de subtema, como lo son los algoritmos simples, variables,
constantes al igual que los fundamentos de la complejidad computacional,
como lo es la notación de complejidad asintótica, análisis y diseño de
algoritmos entre otros más, asimismo, básicamente entendimos por
algoritmo una secuencia de pasos ordenados que nos permite resolver un
problema. Tomando como acuerdo lo anterior dicho, damos como resultado
final un análisis extenso de lo que conllevan los algoritmos y los procesos que
realiza cada una.

También podría gustarte