Está en la página 1de 8

MINISTERIO DEL PODER POPULAR PARA LA DEFENSA

UNIVERSIDAD NACIONAL EXPERIMENTAL DE LA FUERZA ARMADA


NACIONAL BOLIVARIANA
NUCLEO MIRANDA
EXTENSION OCUMARE DEL TUY
SECCION: 01S-1242-D1 CONTADURIA

ALGORITMO

PROFESOR: ALUMNO: 1 SEMESTRE


REINALDO HERNANDEZ TONY CABEZA
C.I 31.774.313

OCUMARE 27 DE MARZO, 2023


ALGORITMO:
Es un conjunto de instrucciones definidas, ordenadas y acotadas para resolver un
problema, realizar un cálculo o desarrollar una tarea. Es decir, un algoritmo es un
procedimiento paso a paso para conseguir un fin. A partir de un estado e
información iniciales, se siguen una serie de pasos ordenados para llegar a la
solución de una situación.
En programación, un algoritmo supone el paso previo a ponerse a escribir el código.
Primero debemos encontrar la forma de obtener la solución al problema (definir el
algoritmo informático), para luego, a través del código, poder indicarle a la máquina
qué acciones queremos que lleve a cabo.  De este modo, un programa informático
no sería más que un conjunto de algoritmos ordenados y codificados  en un lenguaje
de programación para poder ser ejecutados en un ordenador.

TIPOS DE ALGORITMOS Y EJEMPLOS:

Algoritmos de búsqueda
Los algoritmos de búsqueda localizan uno o varios elementos que presenten una
serie de propiedades dentro de una estructura de datos.
Ejemplos de algoritmos de búsqueda

Existen diversos tipos de búsquedas, entre las que sobresalen: 


Búsqueda secuencial. En la que se compara el elemento a localizar con cada
elemento del conjunto hasta encontrarlo o hasta que hayamos comparado todos.

Búsqueda binaria. En un conjunto de elementos ordenados, hace una comparación


con el elemento ubicado en el medio y, si no son iguales, continúa la búsqueda en la
mitad donde puede estar. Y así sucesivamente en intervalos cada vez más pequeños
de elementos.

Algoritmos de ordenamiento
Reorganizan los elementos de un listado según una relación de orden. Las más
habituales son el orden numérico y el orden lexicográfico. Un orden eficiente
optimiza el uso de algoritmos como los de búsqueda y facilitan la consecución de
resultados legibles por personas y no solo máquinas.
Ejemplos de algoritmos de ordenamiento

Algunos algoritmos de ordenamiento son:
Ordenamiento de burbuja. Compara cada elemento de la lista a ordenar con el
siguiente e intercambia su posición si no están en el orden adecuado. Se revisa
varias veces toda la lista hasta que no se necesiten más intercambios.
Ordenamiento por selección. Vamos colocando el elemento más pequeño
disponible en cada una de las posiciones de la lista de forma consecutiva.

Ordenamiento rápido. Elegimos un elemento del conjunto (pivote) y reubicamos el


resto a cada uno de sus lados, en función de si son mayores o menores que el
elemento que estamos tomando como referencia. Repetimos el procedimiento en
cada subconjunto.

Algoritmos voraces
Los algoritmos voraces consisten en una estrategia de búsqueda que sigue una
heurística en la que se elige la mejor opción óptima en cada paso local con el
objetivo de llegar a una solución general óptima. Es decir, en cada paso del proceso
escogen el mejor elemento (elemento prometedor) y comprueban que pueda
formar parte de una solución global factible. Normalmente se utilizan para
resolver problemas de optimización.
Ejemplos de algoritmos voraces

En ocasiones, estos algoritmos no encuentran la solución global óptima, ya que al


tomar una decisión solo tienen en cuenta la información de las decisiones que han
tomado hasta el momento y no las futuras que puede adoptar.  Algunos casos en los
que los algoritmos voraces alcanzan soluciones óptimas son:

Problema de la mochila fraccional (KP). Disponemos de una colección de objetos


(cada uno de ellos con un valor y un peso asociados) y debemos determinar cuáles
colocar en la mochila para lograr transportar el valor máximo sin superar el peso
que puede soportar. 

Algoritmo de Dijkstra. Utilizado para determinar el camino más corto desde un


vértice origen hasta los demás vértices de un grafo, que tiene pesos en cada arista.

Codificación Huffman. Método de compresión de datos sin perder información, que


analiza la frecuencia de aparición de caracteres de un mensaje y les asigna
un código de longitud variable. Cuanto mayor sea la frecuencia le corresponderá un
código más corto.

Programación dinámica
La programación dinámica es un método de resolución de problemas en el que
dividimos un problema complejo en subproblemas y calculamos y almacenamos sus
soluciones, para que no haga falta volver a calcularlas más adelante para llegar a la
solución del problema. La programación dinámica reduce el tiempo de ejecución de
un algoritmo al optimizar la recursión.
Eso sí, para poder aplicarse a un problema, éste debe tener  subestructuras
óptimas y subproblemas superpuestos. Es decir, que en él se puedan usar
soluciones óptimas de subproblemas para encontrar la solución óptima del
problema en su conjunto y que el problema se pueda dividir en subproblemas que
se reutilizan para ofrecer el resultado global.
Usos de programación dinámica

Algunos casos en los que se utiliza son:

La serie de Fibonacci. Sucesión de números que comienza con “0” y “1” y, a partir


de ellos, cada número es resultado de la suma de los dos que le preceden. La
relación de recurrencia la define. 

Problema de la mochila.

Algoritmos probabilísticos
Es una técnica que usa una fuente de aleatoriedad como parte de su lógica.
Mediante un muestreo aleatorio de la entrada llega a una solución que puede no
ser totalmente óptima, pero que es adecuada para el problema planteado.
Se utiliza en situaciones con limitaciones de tiempo o memoria y cuando se puede
aceptar una buena solución de media, ya que a partir de los mismos datos se
pueden obtener soluciones diferentes y algunas erróneas. Para que sea más
probable ofrecer una solución correcta, se repite el algoritmo varias veces con
diferentes submuestras aleatorias y se comparan los resultados.  

DISEÑO DEL ALGORITMO

En la etapa del diseño se determina cómo hace el programa la tarea solicitada.  Los métodos más eficaces
para el proceso de diseño se basan en el conocido por divide y vencerás.
El proceso que convierte los resultados del análisis del problema en un diseño modular con refinamientos
sucesivos que permitan una posterior traducción a un lenguaje se denomina diseño de algoritmo.
El diseño del algoritmo es independiente del lenguaje de programación en el que se vaya a codificar
posteriormente. Las dos herramientas más utilizadas comúnmente para diseñar algoritmos son:

Diagramas de flujo. - Es una representación gráfica de un algoritmo.


Pseudocódigo. - Es una herramienta de programación en la que las instrucciones se escriben en
palabras similares al inglés o español, que facilita tanto la escritura como la lectura de programas. 
En esencia, el pseudocódigo se puede definir como un lenguaje de especificaciones de algoritmos.

VARIABLES

Las variables se representan con identificadores que hacen referencia a un lugar de la


memoria del programa en donde se almacena un dato. Una variable está asociada a un
tipo de datos, el cual y en función del tamaño del mismo determina la cantidad de bytes
que serán necesarios para almacenar la variable. En el caso de colecciones y al contrario
que con el resto de tipo de datos, ya sean primitivos u objetos complejos, la memoria
asignada a almacenar tales variables no se conoce de antemano, lo cual lleva a establecer
políticas de reserva de memoria:

 Reserva fija de memoria: Implica predeterminar la cantidad de memoria que se


asignará a la colección. Es una política extremadamente rígida, ya que llegados al
final de la zona de memoria no se podrían almacenar nuevos elementos.
 Reserva variable de memoria: Se dedica una zona de memoria, pudiendo ser de un
tamaño predeterminado o no, y en caso de sobrepasarse dicha zona de memoria
se vuelve a asignar otra zona, contigua o no, para impedir la restricción
mencionada arriba.

DIAGRAMA DE FLUJO

Es un diagrama que describe un proceso, sistema o algoritmo informático. Se usan


ampliamente en numerosos campos para documentar, estudiar, planificar, mejorar y
comunicar procesos que suelen ser complejos en diagramas claros y fáciles de
comprender. Los diagramas de flujo emplean rectángulos, óvalos, diamantes y otras
numerosas figuras para definir el tipo de paso, junto con flechas conectoras que
establecen el flujo y la secuencia. Pueden variar desde diagramas simples y dibujados a
mano hasta diagramas exhaustivos creados por computadora que describen múltiples
pasos y rutas. Si tomamos en cuenta todas las diversas figuras de los diagramas de
flujo, son uno de los diagramas más comunes del mundo, usados por personas con y
sin conocimiento técnico en una variedad de campos. Los diagramas de flujo a veces se
denominan con nombres más especializados, como "diagrama de flujo de procesos",
"mapa de procesos", "diagrama de flujo funcional", "mapa de procesos de negocios",
"notación y modelado de procesos de negocio (BPMN)" o "diagrama de flujo de
procesos (PFD)". Están relacionados con otros diagramas populares, como los
diagramas de flujo de datos (DFD) y los diagramas de actividad de lenguaje unificado
de modelado (UML).

Solución de problemas; Todos los días resolvemos problemas, aún sin ser consiente de
esto. Comúnmente tenemos que definir el problema, decidir con que información
necesitamos trabajar y cuales deben ser los resultados esperados. En particular, los
ingenieros en ciencias de la computación son resolvedores o solucionadores de
problemas computacionales.

En el ámbito computacional obtener una solución, muchas veces, implica escribir un


programa. Este proceso se encuentra dividido en dos fases principales:

Fase de resolución de problemas o Análisis y especificación: Entendimiento (definición)


del problema e identificación de cuál debe ser la solución. o Solución general
(algoritmo): Especifica los objetos (elementos) y sus interacciones para resolver el
problema o Verificación: Sigue los pasos exactamente para ver si la solución realmente
resuelve el problema.

Fase de implementación o Solución concreta: Traduce la especificación de objetos y la


solución general en un lenguaje de programación. o Pruebas: Se ejecuta el programa y
se checa los resultados. Si se encuentran errores, se analiza el programa y la solución
general para determinar la causa de los errores y entonces se hacen las correcciones.

Antes que se busque la solución, se debe entender el problema. Así que aquí cabe
preguntarnos: ¿qué es un problema? ¿Qué es un problema? Según Newell y Simón un
problema se define como “una situación en la cual un individuo desea hacer algo, pero
desconoce el curso de la acción necesaria para lograr lo que quiere” Otra definición es
la dada por Chi y Glaser, la cual lo define “como una situación en la cual un individuo
actúa con el propósito de alcanzar una meta utilizando para ello alguna estrategia en
particular”

Cuando hacemos referencia a la meta o a lograr lo que se quiere, nos estamos


refiriendo a lo que se desea alcanzar: la solución. La meta o solución está asociada con
un estado inicial y la diferencia que existe entre ambos se denomina “problema”. Las
actividades llevadas a cabo por los sujetos tienen por objeto operar sobre el estado
inicial para transformarlo en meta. De esta manera, se podría decir que los problemas
tienen cuatro componentes (Mayer, 1983). 1) las metas 2) los datos 3) las restricciones
4) los métodos

Consideremos el siguiente ejemplo: “Anita tiene una muñeca y quiere vestirla con
pantalón y blusa. Tiene cuatro pantalones: rojo, blanco, azul y negro y tiene tres
blusas: verde, amarillo y rosado. Ella quiere hacer diferentes combinaciones con todos
los pantalones y las blusas verde y rosada. ¿Cuántas combinaciones diferentes puede
hacer?” Para nuestro ejemplo la meta, consiste en saber cuántas combinaciones
diferentes puede hacer Anita con los pantalones y las blusas. Los datos son 4
pantalones y 3 blusas. Las restricciones son que Anita solo quiere utilizar 2 de las 3
blusas: la verde y rosada. En consecuencia, no todas las blusas van a ser consideradas
para las combinaciones. Por último, los métodos son las operaciones requeridas para
obtener el número de combinaciones. Una vez entendido qué es un problema, el
siguiente paso es comprender cómo podemos resolverlo, es decir, qué es la resolución
de problemas. ¿Qué es la resolución de problemas? Según Dijkstra (1991), la
resolución de problemas es un proceso cognoscitivo complejo que involucra
conocimiento almacenado en la memoria a corto y a largo plazo. Polya (1965) señala
que un problema puede resolverse correctamente si se realizan las fases o etapas
mostradas

Comprender el problema nos lleva a conocer qué es los que se va a resolver; mientras
que concebir un plan para llegar a la solución involucra el cómo. Una buena noticia es
que existen diferentes técnicas o estrategias que nos guían en la resolución de
problemas. 1.2 Técnicas o estrategias para resolución de problemas Las estrategias
para resolver problemas se refieren a las operaciones mentales que se utilizan para
pensar sobre la representación de las metas y los datos, con el fin de transformarlos en
metas y obtener una solución. Algunas técnicas para resolución de problemas

Hacer preguntas Una de las técnicas para resolución de problemas más simples pero
muy importante es la de hacer preguntas. Debemos asegurarnos que estamos
procediendo a resolver el problema real y no el problema que percibimos

Algunas preguntas útiles que podemos hacer son: 1. ¿Qué es lo que sé acerca del
problema? 2. ¿Cuál es la información con la que debo trabajar para encontrar la
solución? 3. ¿Cómo se ve la solución, ¿qué parece? 4. ¿Qué clase de casos especiales
existen? 5. ¿Cómo voy a saber que he encontrado la solución? Siempre que se nos dé
una tarea o un problema que no esté bien definido, o que se requiera información
adicional, debemos hacer preguntas hasta que tengamos claro exactamente qué es lo
que se quiere o tiene que hacer.
https://profile.es/blog/que-es-un-algoritmo-informatico/

https://sites.google.com/site/programacionvisualcetis50/Inicio/contenido/principios-de-
programacion/fases-del-proceso-de-programacion/diseno-del-algoritmo

https://sites.google.com/site/jscalgoritmo/variables

https://www.lucidchart.com/pages/es/que-es-un-diagrama-de-flujo

También podría gustarte