3 2 1

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

2.3.

1 Elementos y reglas de la representación gráfica manuscrita


de los algoritmos. (Diagrama de flujo, diagramas estructurados,
diagramas de Nassi-Shneiderman, pseudocódigo).

Las tres técnicas más populares de formulación o representación de algoritmos


son las siguientes:
Diagramas de flujo
Pseudocódigo
Diagramas estructurados(nassi/shneiderman)
Algunas de las ventajas de estas técnicas son:
El paso del algoritmo a un lenguaje de programación es relativamente
simple y directo.
La mayor utilidad es al realizar el diseño con cierta independencia de las
características particulares de los lenguajes de programación.
Siguiendo esto se consigue un algoritmo de resolución de un problema que
pueda ser codificado en cualquier lenguaje de cualquier maquina con las
ventajas que porta un diseño.
Algunas de las desventajas de estas técnicas son:
Decayó el uso de técnicas para la representación de algoritmos, siendo que
ya existen muchas aplicaciones que cuentan con ellos en sus publicaciones
y documentación sobre estos temas básicos que utilizan.
2.3.1.1 Diagrama de flujo

Es la representación gráfica de la circulación de datos e informaciones dentro de


un programa (organigrama) así como la representación gráfica de la secuencia de
operaciones que se han de realizar en el programa (ordinograma).
Los diagramas de flujo se basan en el uso de símbolos para representar
operaciones específicas. Estos símbolos se conectan por medio de flechas para
indicar la secuencia de operación de un algoritmo.
Los diagramas de flujo son descripciones gráficas de algoritmos; usan símbolos
conectados con flechas para indicar la secuencia de instrucciones y están regidos
por ISO.
Son usados para representar algoritmos 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 ajenas a la computación.
2.3.1.2 Simbología para la construcción del diagrama
Simbología

Representa el inicio y fin del


diagrama de flujo.
Terminal
Cuando es utilizada para
introducir datos, expresa lectura y
cuando es utilizada para registrar
Entrada/Salida datos en la salida, expresa
En su interior se expresan
asignaciones, operaciones
aritméticas, cambios de valor de
Proceso celdas en memoria, etc.
En su interior se almacena una
condición y dependiendo del
no
resultado de la evaluación de la
si
Decisión misma se sigue por una de las
Una de las ramas o caminos
alternativos. Este símbolo se
utiliza en estructura selectiva si
Desición Múltiple múltiple.
Sirve para enlazar dos partes
cuáles quiera de un ordinograma
a través de un conector de la
Conector salida y control conector en la

Conexión entre dos puntos


situados en páginas diferentes.
Conector
Se utiliza en ocasiones en lugar
del símbolo de E/S. Representa
la impresión de un resultado.
Impresora Expresa escritura.
Se utiliza en ocasiones en lugar
del símbolo de Entrada/Salida.
Representa la lectura de un
Teclado resultado.

Indica el sentido de ejecución de


Indicador de dirección de línea de las operaciones.
fl ujo
Una subrutina es un modelo
independiente del programa
principal, que recibe una entrada
Subrutina procedente de dicho programa,

Se utiliza en ocasiones en lugar


del símbolo de E/S.
Pantalla
Se utiliza para añadir
comentarios clasificadores a
otros símbolos del diagrama. Se
Comentario puede dibujar a cualquier lado
2.3.1.3 Reglas para la construcción del diagrama

1. Todo diagrama debe tener un principio (inicio) y un fin, con objeto de que
pueda ser utilizado como submódulo de nivel superior.

2. Las líneas de conexión de flujo deben ser siempre rectas, y si es posible


que sean sólo verticales y horizontales (no cruzarse, ni inclinadas); para
conseguirlo anterior se debe recurrir a conectores, numerados
convenientemente y sólo en los casos estrictamente necesarios.

3. Las líneas que enlazan los símbolos entre sí deben estar todas conectadas.
Cada línea o flecha debe entrar en un símbolo o en un símbolo de decisión,
terminar en fin o unirse a otra flecha.

4. Se deben dibujar todos los símbolos de modo que se pueda seguir el


proceso visualmente de arriba abajo (conocido como diseño top down) y de
izquierda a derecha.

5. Realizar un gráfico claro y equilibrado, procurando que el flujo central del


diagrama sea la parte central de la hoja de papel.

6. Evitar la utilización de terminología específica de un lenguaje de


programación o máquina, sobre todo en las expresiones donde se tiene
tendencia natural a ello.
7. Se debe dejar un bloqueo o dos de proceso libres al conocimiento del
diagrama, para reservar espacio varias variables, acumuladores,
inicialización de sus índices de listas y tablas (arrays), conmutadores
(switch), etc.

8. Indicar con comentarios al margen o mediante el símbolo gráfico


comentarios, las variables utilizadas y su descripción, procurando no
abusar de su uso. Diferenciar las variables propias del proceso de las
pseudovariables o variables ficticias (contadores, conmutadores o
interruptores.)

9. En las operaciones lógicas recurrir preferentemente a la lógica positiva que


a la lógica negativa (siempre es más claro<<si A=B>> que <<si no es
A<>B>>).

10. A cada bloque o símbolo se accede por arriba y/o por la izquierda y se sale
por abajo y/o a la derecha.

11. Realizar también por cualquier persona ajena al mismo, sobre todo con el
paso del tiempo Y para cuándo se necesita una actualización o
modificación del diagrama.

12. Siempre que sea posible, que el diagrama no sobrepase una página; si no
es posible, numerar adecuadamente las hojas del diagrama y utilizar los
correspondientes conectores de páginas que indiquen sin duda la dirección
correcta del flujo (de dónde viene Y a dónde se dirige).
2.3.1.4 Ventajas

Estos se utilizan para representar y diseñar un algoritmo y pues son una


prueba de escritorio el cual nos sirve para tener una noción de lo que puede
llegar a realizar dicho procedimiento.
Son usados como modelos de estructura para saber lo que hará
futuramente y tienen que diseñarse y comprenderse todos los pasos de su
elaboración.

2.3.1.5 Desventajas

Los diagramas que lleven muchos pasos es decir los más complejos suelen
ser muy laborioso y se puede tornar tedioso para el diseñador de
algoritmos.
En un proceso de decisión puede seguirse varios caminos y puede llegar a
ser que se pierda información o no se elabore adecuadamente.
En estos no se puede incluir detalles que ayuden al buen seguimiento de un
proceso.
2.3.1.6 Ejemplo

Elaborar un algoritmo para calcular el salario de


un trabajador en función del número de horas
trabajadas, precio de la hora de trabajo. Escriba
el resultado.

Terminal (indica el inicio del algoritmo).

Proceso (declara las variables que va a utilizar en


el algoritmo).

Entrada (para introducir los datos a la


computadora).

Proceso (realiza la operación aritmética


multiplicando hora por precio y asignándole
resultado al variable salario).
Salida (para desplegar los datos en la pantalla de la computadora).
Terminal (indica el fin del algoritmo).

2.3.1.7 Diagramas estructurados (Diagramas de nassi-


schneiderman (ns))

Es como un diagrama de flujo omitiendo las flechas. Representada con cajas o


bloques contiguos. En donde las acciones sucesivas se escriben en cajas
sucesivas. Un diagrama ns es como un diagrama de flujo sin las flechas. Es decir,
con los bloques contiguos. Las acciones sucesivas se escriben en cajas
sucesivas. Como ver el diagrama de flujo, diferentes acciones pueden ser escritas
en una caja.

Este sistema de representación permite tener una visión mucho más estructurada
de ellos y por consiguiente mayor facilidad al traducirlos al lenguaje de una
computadora. El diagrama se lee de arriba-abajo. Cada bloque ejecuta una
operación específica que se puede documentar o describir con la precisión de que
se desee.

Precisamente la técnica de Diagramas Rectangulares Estructurados también


permite usar herramientas gráficas para representar la solución a un problema con
la ventaja de que no brinda la posibilidad de que seamos desordenados en
nuestra concepción.
Se basa en representar todo el algoritmo dentro del marco de un rectángulo y a
diferencia de la técnica anterior, se mueve básicamente con la utilización de tres
símbolos que corresponden a cada una de las estructuras básicas de la lógica de
programación.

2.3.1.8 Simbología para la construcción del diagrama


Secuencial: Esta estructura realiza las acciones de manera sucesiva. Ejemplo:

Condicional o alternativo: Si la condición es verdadera se ejecuta la acción uno


y si es falsa la acción 2. Ejemplo:

Selección múltiple: Dependiendo del valor de la variable se ejecuta el proceso


especificado (1, 2,3…) y en caso de que la variable n esté en el rango de 1 n se
ejecuta la opción otro realizando la acción en m. Ejemplo:
En la solución de algunos problemas es necesario ejecutar repetidas veces una
instrucción o un conjunto de instrucciones.

En algunos casos:

El número de repeticiones se conoce con anterioridad, mientras que en otras


depende de operaciones o estados de variables que se dan dentro de las
instrucciones.

Para solucionar este tipo de problemas se utiliza un tipo de estructuras a las que
se conocen como estructuras de repetición, bucles o ciclos.

Un ciclo consiste en un grupo de acciones que se ejecutan repetidas veces


dependiendo del cumplimiento de una condición.

Entre las estructuras repetidas se encuentran:


Mientras (while)
Repetir (repite)
Desde (for)

Ciclo mientras
Es un conjunto de instrucciones que se repiten mientras se cumpla una condición.
Primero la condición es evaluada y retorna un valor lógico, que pueden ser
verdadero o falso.
Las la condición se genera un valor verdadero; es decir, si la condición se cumple;
en caso contrario, se ejecutará la instrucción que aparece después de Fin
mientras.

Comienza evaluando la expresión condicional, si el resultado es verdadero se


ejecutarán las instrucciones que estén entre el mientras y el fin mientras, al
encontrarse la línea fin mientras se volverá a evaluar la condición, resultado de la
condición sea un valor falso, en cuyo caso, línea que aparece después de Fin
mientras.

Si en la primera pasada por el ciclo mientras la condición no se cumple las


instrucciones que están dentro del ciclo no se ejecutarán una sola vez.

Ciclo para
Ejecuta repetidas veces una instrucción o un grupo de ellas, esta maneja el valor
inicial, el valor de incremento o decremento y el valor final de la variable de control
como parte de la instrucción.

Cuando al ejecutarse un algoritmo se encuentra una instrucción para la variable de


control (contador) toma un valor inicial, se verifica que el valor inicial no sobrepase
el valor final y luego se ejecutan las instrucciones del ciclo.

Encontrar la instrucción fin para, se produce el incremento y se vuelve a verificar


que la variable de control no haya superado el límite admitido, y se vuelven a
ejecutar las instrucciones que están dentro del ciclo, y así sucesivamente tantas
veces como sea necesario hasta que se supere el valor inicial establecido.
El ciclo para termina en el momento en que la variable de control (contador)
sobrepasa el valor final.

Ciclo repetir
Es un conjunto de instrucciones que se repiten mientras se cumpla una condición.

Primero se ejecutan el grupo de instrucciones, luego se evalúa la condición y


regresa un valor lógico, qué puede ser verdadero o falso.

Las instrucciones contenidas en la estructura de repetición se ejecutarán al menos


una vez ya que la evaluación se realiza al final.

Comienza realizando las instrucciones que se encuentran después del repetir


después se evalúa la exposición condicional, si el resultado es verdadero se
ejecutarán nuevamente las instrucciones que estén entre el repetir y el hasta, al
encontrarse la línea hasta se volverá a evaluar la condición, resultado de la
condición sea un valor falso, en cuyo caso el programa pasa a la línea que
aparece después del hasta.

Dentro del ciclo ejecutarán una sola vez.


2.3.1.9 Reglas ns

Se escriben de arriba hacia abajo y de izquierda a derecha.


Siempre se usan flechas verticales u horizontales y no curvas.
Se tiene que evitar el cruce de flujo.
En cada paso se tiene que especificar una acción concreta.

2.3.1.10 Ventajas

Es adaptable a distintos lenguajes de programación.


Se ahorra espacio al solo usar solo bloques.

2.3.1.11 Desventajas

Es difícil de entender para los principiantes.


2.3.1.12 Ejemplos del ciclo mientras y ciclo para

2.3.1.13 Diagrama de pseudocódigo

A continuación se analizará la simbología que se utiliza en la elaboración de


pseudocódigo, así como las reglas para su construcción.

Mediante el, podemos describir la solución de un problema en forma de ordenes


dirigidas a la computadora, utilizando palabras y frases del lenguaje natural
sujetas a algunas determinadas reglas.

Pseudo o seudo, significa falso, imitación y código se refiere a las instrucciones


escritas en un lenguaje de programación; pseudocódigo no es realmente un
código sino una invitación y una versión abreviada de instrucciones reales para las
computadoras.

Pseudocódigo es la descripción de un algoritmo que asemeja a un lenguaje de


programación pero con algunas convenciones del lenguaje natural (de ahí que
tenga el prefijo pseudo, que significa falso). Tiene varias ventajas con respecto a
los diagramas de flujo, entre las que se destaca el poco espacio que se requiere
para representar instrucciones complejas. El pseudocódigo no está regido por
ningún estándar.
El pseudocódigo tiene un grupo de palabras claves y símbolos que constituyen su
vocabulario para representar las acciones esta técnica orientada hacia los
algoritmos computacionales.

Para escribir un algoritmo bajo la técnica de pseudocódigo deben seguirse las


siguientes normas:
Primera Norma: Escribir la palabra algoritmo y después de un espacio
escribir el nombre del algoritmo. Es conveniente que dicho nombre haga
una referencia aproximada a lo que contiene. Si a un pseudocódigo lo
llamamos seudo código X es posible que más adelante no nos sea muy
claro su objetivo pero si lo llamamos seudo código Liquidar es muy factible
que cada vez que lo veamos nos vamos a acordar que su objetivo era la
liquidación de un determinado valor. Pero si lo llamamos seudo código
LiqSalNe es muy posible que cada vez que veamos este nombre nos
acordemos que ese seudo código es el que nos permite Liquidar el Salario
Neto.
Segunda Norma: Todo el cuerpo del algoritmo deberá ir “encerrado” entre
las palabras Inicio y Fin indicando donde comienza y donde termina el
seudo código.
Tercera Norma: Luego de colocada la palabra Inicio, debemos a
continuación declarar el entorno con el cual vamos a trabajar.
Cuarta norma: Las acciones se escriben después de declarar el entorno.

El pseudocódigo es una técnica para expresar el lenguaje natural la lógica de un


programa, es decir, su flujo de control. Alto nivel sea sencillo para un programador.
La fase de confección del seudocódigo es inmediatamente anterior a su
codificación en el lenguaje de programación elegido.

2.3.1.14 Simbología

Secuencial:

Inicio. Inicio

Acción 1. Leer nombre, horas, pecio;

Acción 2. Calcular salario=horas*precio;

: Calcular impuesto=0.25*salario;

Acción n. Calcular neto=salario-impuesto;

Escribir nombre, salario, impuesto, neto, Fin.


Fin

Doble: Inicio
Leer número;
Si condición si (número>0)
entonces entonces
acción1 Escribir “positivo”;
acción2 Escribir número;
: si no
Si no Escribir “negativo”;
acción1 Escribir número;
acción2 Fin si
Fin si Escribir “fin del programa”;
acción n Fin

Selección múltiple:
Ejemplo:
casos selector de
Inicio
valor1 : acción1
Leer calificación;
acción2
casos (calificación) de
0: Escribir “CERO “;
valor2 : acción1
1: Escribir “UNO”;
acción2
2: Escribir “DOS”;
3: Escribir “TRES”;
valor n : acción1
4: Escribir “CUATRO”;
acción2
5: Escribir “CINCO”
En caso contrario: acción N
En caso contrario:
Fin casos
Escribir “NOTA NO VALIDA”;
Fin casos;
Fin
CICLO REPETIR Ejemplo:
Condicional al final Inicio
Repetir contador=0;
acción1
acción2 Repetir
: Leer numero;
acción n contador = contador+1 ;
Hasta que condición Hasta numero <= 0
Escribir ('El número de enteros
positivos es : ', contador);
Fin

CICLO PARA Ejemplo:


Iteración Fija Inicio
para var. Entera inicial hasta Escribir ‘Nombre : ‘;
final hacer Leer nom;
acción1 Escribir(‘Cuántas veces quieres
acción2 repetirlo ? : ‘);
: Leer n;
acción n para x=1 hasta n hacer
Escribir x , ’.- ‘, nom;
Fin

2.3.1.15 Ventajas

Se lee rápido, ya que se omiten características propias de cada lenguaje


de programación.
Es fácil de modificar.

2.3.1.15 Desventajas

Cada persona maneja su pseudocódigo.


Requiere mayores conocimientos del lector para entender el
pseudocódigo.
2.3.1.16 Principales características de este lenguaje
Se puede ejecutar en un ordenador

Es una forma de representación sencilla de utilizar y de manipular.

Facilita el paso del programa al lenguaje de programación.

Es independiente del lenguaje de programación que se vaya a utilizar.

Es un método que facilita la programación y solución al algoritmo del programa.

2.3.1.17 Todo documento en pseudocódigo debe permitir la


descripción de:
Instrucciones primitivas

Instrucciones de proceso

Instrucciones de control

Instrucciones compuestas

Instrucciones de descripción

2.3.1.18 Ejemplo

A continuación te mostramos un ejemplo en pseudocódigo> de un programa que


solicita un número al usuario, y muestra el resultado por pantalla:

En algoritmo indicamos el nombre del programa, y justo después debemos


declarar las variables que serán usadas en el programa (con var) indicando su tipo
de dato (un número de tipo entero, en nuestro ejemplo).
Entre inicio y fin escribiremos las diferentes acciones que irá realizando el
programa: usamos escribir para indicar que se mostrará un mensaje por pantalla
(el texto que se deba mostrar 'tal cual' debe ir entre paréntesis), y leer para pedir
un dato al usuario.
Fíjate también en que cada línea termina en punto y coma (menos inicio y fin).

2.3.1.19 Sistemas formales

La teoría de autómatas y la teoría de funciones recursivas 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 independientes de cualquier
computadora y de cualquier implementación.

2.3.1.20 Implementación

Muchos algoritmos son ideados para implementarse en un programa. Sin


embargo, los algoritmos pueden ser implementados en otros medios, como una
red neuronal, un circuito eléctrico o un aparato mecánico y eléctrico. Algunos
algoritmos inclusive se diseñan especialmente para implementarse usando lápiz y
papel. El algoritmo de multiplicación tradicional, el algoritmo de Euclides, la criba
de Eratóstenes y muchas formas de resolver la raíz cuadrada son sólo algunos
ejemplos.
2.3.1.21 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 datos de una solución (salida). Más aún, los datos se
pueden representar a su vez como secuencias de bits, y en general, de símbolos
cualesquiera. Como cada secuencia de bits representa a un número natural,
entonces los algoritmos son en esencia Funciones de los números en los
números naturales que sí se pueden calcular. Es decir que todo algoritmo calcula
una funció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 terminar, 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 algorítmicos, sin importar la
cantidad de memoria que ocupe 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.

2.3.1.22 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 especifiquen)
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 casos, su estudio es completamente abstracto
sin usar ningún tipo de lenguaje de programación ni cualquier otra
implementación; por eso, en ese sentido, comparte las caracterí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 lenguaje muy simple tal como Léxico, 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 podrían ejecutarse eternamente sin pararse, suponiendo el caso en el que
existiera algún dispositivo físico que fuera capaz de funcionar eternamente.

En este último caso, la finalización con éxito del algoritmo no se podría definir
como la terminación de éste con una salida satisfactoria, sino que el éxito estaría
definido en función de las secuencias de salidas dadas durante un período 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, mientras 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 positivas y negativas.

2.3.1.23 Ejemplo de algoritmo:

Descripción de alto nivel

Dado un conjunto finito C de números, se tiene el problema de encontrar el


número más grande. Sin pérdida de generalidad se puede asumir que dicho
conjunto no es vacío y que sus elementos están numerados.
Para encontrar el elemento máximo, se asume que el primer 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.

2.3.1.24 Descripción formal


El algoritmo puede ser escrito de una manera más formal en el siguiente
pseudocódigo:

Algoritmo Encontrar el máximo de un conjunto


función max(C) //C es un conjunto no vacío de números//
n ← | C | // | C | es el número de elementos de C//
m ← c0
para i ← 1 hasta n hacer
si ci > m entonces
m ← ci
devolver m

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

2.3.1.25 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;
}

2.3.1.26 Tipos de algoritmos según su función

Algoritmo de ordenamiento.
Algoritmo de búsqueda.
Algoritmos de grafos Ej. Algoritmos de agrupamientos star.

2.3.1.27 Técnicas de diseño de algoritmos

Algoritmos voraces (greedy): seleccionan los elementos más


prometedores del conjunto de candidatos 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 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.

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 subconjuntos disjuntos


obteniendo una solución de cada uno de ellos para después unirlas,
logrando así la solución al problema completo.

Metaheurísticas: encuentran soluciones aproximadas (no óptimas) a


problemas basándose en un conocimiento 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 implícito que se recorre de forma controlada
encontrando las mejores soluciones.

Vuelta atrás (backtraking): se construye el espacio de soluciones del


problema en un árbol que se examina completamente, almacenando las
soluciones menos costosas.
2.3.1.28 Complejidad algorítmica

Sea M un algoritmo y n el tamaño de los datos de entrada y/o salida. La


complejidad es una función f (n) que da el tiempo y/o espacio de almacenamiento
necesario en su ejecución. Dado que el espacio es un múltiplo de n, la
complejidad por lo general se refiere al tiempo de ejecución (que suele medirse
por el número de operaciones claves realizadas). Usualmente se denomina a T(n)
tiempo de ejecución de un programa de entradas de tamaño n. Aquí se refiere al
peor de los casos, el mayor.

El tiempo de ejecución de un programa depende de:

Tamaño de la entrada y/o salida.


Calidad del código generado por el compilador.
Naturaleza y velocidad de las instrucciones de la máquina empleada.
Complejidad temporal del algoritmo.

Rivas, M. (2021, 17 marzo). Técnicas de representación de algoritmos [Diapositivas].


http://aula.itleon.edu.mx/moodle/course/view.php?id=1142.
http://aula.itleon.edu.mx/moodle/mod/resource/view.php?id=34983

Rivas, M. (2021a, marzo 17). Diagramas de flujo [Diapositivas].


http://aula.itleon.edu.mx/moodle/course/view.php?id=1142.
http://aula.itleon.edu.mx/moodle/mod/resource/view.php?id=34984

Rivas, M. (2021b, marzo 17). Diagramas Nassi-Shneiderman [Diapositivas].


http://aula.itleon.edu.mx/moodle/mod/resource/view.php?id=34985.
http://aula.itleon.edu.mx/moodle/course/view.php?id=1142

Rivas, M. (2021c, marzo 17). Pseudocódigo [Diapositivas].


http://aula.itleon.edu.mx/moodle/mod/resource/view.php?id=34986.
http://aula.itleon.edu.mx/moodle/course/view.php?id=1142

Qué es un Algoritmo - Definición, Tipos y Aplicación (edrawsoft.com)


ALGORITMOS by (prezi.com)

Algoritmo - EcuRed

https://informaticapc.com/teoria-de-la-programacion/ejemplos-algoritmos-pseudocodigo.php

También podría gustarte