Algoritmo

7
Algoritmo La lámpara no funciona ¿Está enchufada? ¿Foco quemado? Comprar nueva lámpara No Reemplazar el foco Enchufarla No Los diagramas de flujo sirven para representar algoritmos de manera gráfica. En matemáticas, lógica, ciencias de la computación y dis- ciplinas relacionadas, un algoritmo (del griego y latín, dixit algorithmus y este a su vez del matemático persa Al- Juarismi [1] ) es un conjunto prescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite rea- lizar una actividad mediante pasos sucesivos que no gene- ren dudas a quien deba realizar dicha actividad. [2] Dados un estado inicial y una entrada, siguiendo los pasos sucesi- vos se llega a un estado final y se obtiene una solución. Los algoritmos son el objeto de estudio de la algoritmia. [1] En la vida cotidiana, se emplean algoritmos frecuente- mente para resolver problemas. Algunos ejemplos son los manuales de usuario, que muestran algoritmos para usar un aparato, o las instrucciones que recibe un trabajador por parte de su patrón. Algunos ejemplos en matemática son el algoritmo de multiplicación, para calcular el pro- ducto, el algoritmo de la división para calcular el cocien- te de dos números, el algoritmo de Euclides para obtener el máximo común divisor de dos enteros positivos, o el método de Gauss para resolver un sistema de ecuaciones lineales. 1 Definición formal En general, no existe ningún consenso definitivo en cuan- to a la definición formal de algoritmo. Muchos autores los señalan como listas de instrucciones para resolver un cálculo o un problema abstracto, es decir, que un número finito de pasos convierten los datos de un problema (en- trada) en una solución (salida). [1][2][3][4][5][6] Sin embar- go cabe notar que algunos algoritmos no necesariamente tienen que terminar o resolver un problema en particular. Por ejemplo, una versión modificada de la criba de Era- tóstenes que nunca termine de calcular números primos no deja de ser un algoritmo. [7] A lo largo de la historia varios autores han tratado de definir formalmente a los algoritmos utilizando modelos matemáticos. Esto fue realizado por Alonzo Church en 1936 con el concepto de “calculabilidad efectiva” basa- da en su cálculo lambda y por Alan Turing basándose en la máquina de Turing. Los dos enfoques son equivalen- tes, en el sentido en que se pueden resolver exactamente los mismos problemas con ambos enfoques. [8][9] Sin em- bargo, estos modelos están sujetos a un tipo particular de datos como son números, símbolos o gráficas mientras que, en general, los algoritmos funcionan sobre una vasta cantidad de estructuras de datos. [3][1] En general, la parte común en todas las definiciones se puede resumir en las siguientes tres propiedades siempre y cuando no conside- remos algoritmos paralelos: [7] Tiempo secuencial. Un algoritmo funciona en tiempo discretizado –paso a paso–, definiendo así una secuencia de estados "computacionales" por cada entrada válida (la entrada son los da- tos que se le suministran al algoritmo antes de comenzar). Estado abstracto. Cada estado computacional puede ser descrito formalmente utilizando una estructura de primer orden y cada algoritmo es independiente de su implementación (los algo- ritmos son objetos abstractos) de manera que en un algoritmo las estructuras de primer orden son invariantes bajo isomorfismo. Exploración acotada. La transición de un es- tado al siguiente queda completamente deter- minada por una descripción fija y finita; es de- cir, entre cada estado y el siguiente solamente se puede tomar en cuenta una cantidad fija y limitada de términos del estado actual. 1

description

conceptos algoritmo

Transcript of Algoritmo

Page 1: Algoritmo

Algoritmo

La lámparano funciona

¿Estáenchufada?

¿Focoquemado?

Comprarnueva lámpara

No

Reemplazar el foco

Enchufarla

No

Los diagramas de flujo sirven para representar algoritmos demanera gráfica.

En matemáticas, lógica, ciencias de la computación y dis-ciplinas relacionadas, un algoritmo (del griego y latín,dixit algorithmus y este a su vez del matemático persa Al-Juarismi[1]) es un conjunto prescrito de instrucciones oreglas bien definidas, ordenadas y finitas que permite rea-lizar una actividad mediante pasos sucesivos que no gene-ren dudas a quien deba realizar dicha actividad.[2] Dadosun estado inicial y una entrada, siguiendo los pasos sucesi-vos se llega a un estado final y se obtiene una solución. Losalgoritmos son el objeto de estudio de la algoritmia.[1]

En la vida cotidiana, se emplean algoritmos frecuente-mente para resolver problemas. Algunos ejemplos son losmanuales de usuario, que muestran algoritmos para usarun aparato, o las instrucciones que recibe un trabajadorpor parte de su patrón. Algunos ejemplos en matemáticason el algoritmo de multiplicación, para calcular el pro-ducto, el algoritmo de la división para calcular el cocien-te de dos números, el algoritmo de Euclides para obtenerel máximo común divisor de dos enteros positivos, o elmétodo de Gauss para resolver un sistema de ecuacioneslineales.

1 Definición formal

En general, no existe ningún consenso definitivo en cuan-to a la definición formal de algoritmo. Muchos autoreslos señalan como listas de instrucciones para resolver uncálculo o un problema abstracto, es decir, que un númerofinito de pasos convierten los datos de un problema (en-trada) en una solución (salida).[1][2][3][4][5][6] Sin embar-go cabe notar que algunos algoritmos no necesariamentetienen que terminar o resolver un problema en particular.Por ejemplo, una versión modificada de la criba de Era-tóstenes que nunca termine de calcular números primosno deja de ser un algoritmo.[7]

A lo largo de la historia varios autores han tratado dedefinir formalmente a los algoritmos utilizando modelosmatemáticos. Esto fue realizado por Alonzo Church en1936 con el concepto de “calculabilidad efectiva” basa-da en su cálculo lambda y por Alan Turing basándose enla máquina de Turing. Los dos enfoques son equivalen-tes, en el sentido en que se pueden resolver exactamentelos mismos problemas con ambos enfoques.[8][9] Sin em-bargo, estos modelos están sujetos a un tipo particular dedatos como son números, símbolos o gráficas mientrasque, en general, los algoritmos funcionan sobre una vastacantidad de estructuras de datos.[3][1] En general, la partecomún en todas las definiciones se puede resumir en lassiguientes tres propiedades siempre y cuando no conside-remos algoritmos paralelos:[7]

Tiempo secuencial. Un algoritmo funciona entiempo discretizado –paso a paso–, definiendoasí una secuencia de estados "computacionales"por cada entrada válida (la entrada son los da-tos que se le suministran al algoritmo antes decomenzar).

Estado abstracto. Cada estado computacionalpuede ser descrito formalmente utilizando unaestructura de primer orden y cada algoritmo esindependiente de su implementación (los algo-ritmos son objetos abstractos) de manera queen un algoritmo las estructuras de primer ordenson invariantes bajo isomorfismo.

Exploración acotada. La transición de un es-tado al siguiente queda completamente deter-minada por una descripción fija y finita; es de-cir, entre cada estado y el siguiente solamentese puede tomar en cuenta una cantidad fija ylimitada de términos del estado actual.

1

Page 2: Algoritmo

2 2 MEDIOS DE EXPRESIÓN DE UN ALGORITMO

En resumen, un algoritmo es cualquier cosa que funcio-ne paso a paso, donde cada paso se pueda describir sinambigüedad y sin hacer referencia a una computadora enparticular, y además tiene un límite fijo en cuanto a lacantidad de datos que se pueden leer/escribir en un so-lo paso. Esta amplia definición abarca tanto a algoritmosprácticos como aquellos que solo funcionan en teoría, porejemplo el método de Newton y la eliminación de Gauss-Jordan funcionan, al menos en principio, con números deprecisión infinita; sin embargo no es posible programar laprecisión infinita en una computadora, y no por ello dejande ser algoritmos.[10] En particular es posible consideraruna cuarta propiedad que puede ser usada para validar latesis de Church-Turing de que toda función calculable sepuede programar en una máquina de Turing (o equivalen-temente, en un lenguaje de programación suficientementegeneral):[10]

Aritmetizabilidad. Solamente operacionesinnegablemente calculables están disponiblesen el paso inicial.

2 Medios de expresión de un algo-ritmo

Los algoritmos pueden ser expresados de muchas ma-neras, incluyendo al lenguaje natural, pseudocódigo,diagramas de flujo y lenguajes de programación entreotros. Las descripciones en lenguaje natural tienden a serambiguas y extensas. El usar pseudocódigo y diagramasde flujo evita muchas ambigüedades del lenguaje natural.Dichas expresiones son formas más estructuradas para re-presentar algoritmos; no obstante, se mantienen indepen-dientes de un lenguaje de programación específico.La descripción de un algoritmo usualmente se hace en tresniveles:

1. Descripción de alto nivel. Se establece el proble-ma, se selecciona un modelo matemático y se expli-ca el algoritmo de manera verbal, posiblemente conilustraciones y omitiendo detalles.

2. Descripción formal. Se usa pseudocódigo para des-cribir la secuencia de pasos que encuentran la solu-ción.

3. Implementación. Se muestra el algoritmo expresa-do en un lenguaje de programación específico o al-gún objeto capaz de llevar a cabo instrucciones.

También es posible incluir un teorema que demuestre queel algoritmo es correcto, un análisis de complejidad o am-bos.

Diagrama de flujo que expresa un algoritmo para calcular la raízcuadrada de un número x

2.1 Diagrama de flujo

Los diagramas de flujo son descripciones gráficas de algo-ritmos; usan símbolos conectados con flechas para indicarla secuencia de instrucciones y están regidos por ISO.Los diagramas de flujo son usados para representar al-goritmos pequeños, ya que abarcan mucho espacio y suconstrucción es laboriosa. Por su facilidad de lectura sonusados como introducción a los algoritmos, descripciónde un lenguaje y descripción de procesos a personas aje-nas a la computación.

2.2 Pseudocódigo

El pseudocódigo (falso lenguaje, el prefijo pseudo signifi-ca falso) es una descripción de alto nivel de un algoritmoque emplea una mezcla de lenguaje natural con algunasconvenciones sintácticas propias de lenguajes de progra-mación, como asignaciones, ciclos y condicionales, aun-que no está regido por ningún estándar. Es utilizado paradescribir algoritmos en libros y publicaciones científicas,y como producto intermedio durante el desarrollo de unalgoritmo, como los diagramas de flujo, aunque presentanuna ventaja importante sobre estos, y es que los algorit-mos descritos en pseudocódigo requieren menos espaciopara representar instrucciones complejas.El pseudocódigo está pensado para facilitar a las perso-

Page 3: Algoritmo

2.6 Estructuras secuenciales 3

nas el entendimiento de un algoritmo, y por lo tanto pue-de omitir detalles irrelevantes que son necesarios en unaimplementación. Programadores diferentes suelen utili-zar convenciones distintas, que pueden estar basadas en lasintaxis de lenguajes de programación concretos. Sin em-bargo, el pseudocódigo, en general, es comprensible sinnecesidad de conocer o utilizar un entorno de programa-ción específico, y es a la vez suficientemente estructuradopara que su implementación se pueda hacer directamentea partir de él.Así el pseudocódigo cumple con las funciones antes men-cionadas para representar algo abstracto los protocolosson los lenguajes para la programación. Busque fuentesmás precisas para tener mayor comprensión del tema.

2.3 Sistemas formales

La teoría de autómatas y la teoría de funciones recur-sivas proveen modelos matemáticos que formalizan elconcepto de algoritmo. Los modelos más comunes sonla máquina de Turing, máquina de registro y funcionesμ-recursivas. Estos modelos son tan precisos como unlenguaje máquina, careciendo de expresiones coloquialeso ambigüedad, sin embargo se mantienen independien-tes de cualquier computadora y de cualquier implemen-tación.

2.4 Implementación

Muchos algoritmos son ideados para implementarse enun programa. Sin embargo, los algoritmos pueden ser im-plementados en otros medios, como una red neuronal, uncircuito eléctrico o un aparato mecánico y eléctrico. Al-gunos algoritmos inclusive se diseñan especialmente paraimplementarse usando lápiz y papel. El algoritmo de mul-tiplicación tradicional, el algoritmo de Euclides, la cribade Eratóstenes y muchas formas de resolver la raíz cua-drada son sólo algunos ejemplos.

2.5 Variables

Son elementos que toman valores específicos de un tipode datos concreto. La declaración de una variable puederealizarse comenzando con var. Principalmente, existendos maneras de otorgar valores iniciales a variables:

1. Mediante una sentencia de asignación.

2. Mediante un procedimiento de entrada de datos (porejemplo: 'read').

Ejemplo:... i:=1; read(n); while i < n do begin (* cuerpo del bucle*) i := i + 1 end; ...

2.6 Estructuras secuenciales

La estructura secuencial es aquella en la que una acciónsigue a otra en secuencia. Las operaciones se suceden detal modo que la salida de una es la entrada de la siguientey así sucesivamente hasta el fin del proceso. La asignaciónde esto consiste, en el paso de valores o resultados a unazona de la memoria. Dicha zona será reconocida con elnombre de la variable que recibe el valor. La asignaciónse puede clasificar de la siguiente forma:

1. Simples: Consiste en pasar un valor constante a unavariable (a ← 15)

2. Contador: Consiste en usarla como un verificadordel número de veces que se realiza un proceso (a ←a + 1)

3. Acumulador: Consiste en usarla como un sumadoren un proceso (a ← a + b)

4. De trabajo: Donde puede recibir el resultado de unaoperación matemática que involucre muchas varia-bles (a ← c + b*1/2).

Un ejemplo de estructura secuencial, como obtener laárea de un triángulo:Inicio ... float b, h, a; printf(“Diga la base”); scanf("%f”,&b); printf(“Diga la altura”); scanf("%f”, &h); a =(b*h)/2; printf(“El área del triángulo es %f”, a) ... Fin

3 Algoritmos como funciones

Esquemática de un algoritmo solucionando un problema de ciclohamiltoniano.

Un algoritmo se puede concebir como una función quetransforma los datos de un problema (entrada) en los da-tos de una solución (salida). Más aun, los datos se puedenrepresentar a su vez como secuencias de bits, y en general,de símbolos cualesquiera.[1][9][11] Como cada secuenciade bits representa a un número natural (véase Sistema bi-nario), entonces los algoritmos son en esencia funcionesde los números naturales en los números naturales que síse pueden calcular. Es decir que todo algoritmo calculauna función f : N → N donde cada número natural es lacodificación de un problema o de una solución.En ocasiones los algoritmos son susceptibles de nunca ter-minar, por ejemplo, cuando entran a un bucle infinito.Cuando esto ocurre, el algoritmo nunca devuelve ningúnvalor de salida, y podemos decir que la función quedaindefinida para ese valor de entrada. Por esta razón seconsidera que los algoritmos son funciones parciales, es

Page 4: Algoritmo

4 6 VÉASE TAMBIÉN

decir, no necesariamente definidas en todo su dominio dedefinición.Cuando una función puede ser calculada por medios algo-rítmicos, sin importar la cantidad de memoria que ocu-pe o el tiempo que se tarde, se dice que dicha funciónes computable. No todas las funciones entre secuenciasdatos son computables. El problema de la parada es unejemplo.

4 Análisis de algoritmos

Como medida de la eficiencia de un algoritmo, se suelenestudiar los recursos (memoria y tiempo) que consumeel algoritmo. El análisis de algoritmos se ha desarrolladopara obtener valores que de alguna forma indiquen (o es-pecifiquen) la evolución del gasto de tiempo y memoriaen función del tamaño de los valores de entrada.El análisis y estudio de los algoritmos es una disciplina delas ciencias de la computación y, en la mayoría de los ca-sos, su estudio es completamente abstracto sin usar nin-gún tipo de lenguaje de programación ni cualquier otraimplementación; por eso, en ese sentido, comparte las ca-racterísticas de las disciplinas matemáticas. Así, el aná-lisis de los algoritmos se centra en los principios básicosdel algoritmo, no en los de la implementación particular.Una forma de plasmar (o algunas veces “codificar”) unalgoritmo es escribirlo en pseudocódigo o utilizar un len-guaje muy simple tal como Lexico, cuyos códigos puedenestar en el idioma del programador.Algunos escritores restringen la definición de algoritmoa procedimientos que deben acabar en algún momento,mientras que otros consideran procedimientos que po-drían ejecutarse eternamente sin pararse, suponiendo elcaso en el que existiera algún dispositivo físico que fue-ra capaz de funcionar eternamente. En este último caso,la finalización con éxito del algoritmo no se podría defi-nir como la terminación de este con una salida satisfac-toria, sino que el éxito estaría definido en función de lassecuencias de salidas dadas durante un periodo de vidade la ejecución del algoritmo. Por ejemplo, un algoritmoque verifica que hay más ceros que unos en una secuenciabinaria infinita debe ejecutarse siempre para que puedadevolver un valor útil. Si se implementa correctamente,el valor devuelto por el algoritmo será válido, hasta queevalúe el siguiente dígito binario. De esta forma, mien-tras evalúa la siguiente secuencia podrán leerse dos tiposde señales: una señal positiva (en el caso de que el nú-mero de ceros sea mayor que el de unos) y una negativaen caso contrario. Finalmente, la salida de este algoritmose define como la devolución de valores exclusivamentepositivos si hay más ceros que unos en la secuencia y, encualquier otro caso, devolverá una mezcla de señales po-sitivas y negativas.

5 Ejemplo de algoritmo

El problema consiste en encontrar el máximo de un con-junto de números. Para un ejemplo más complejo véaseAlgoritmo de Euclides.

5.1 Descripción de alto nivel

Dado un conjunto finito C de números, se tiene el pro-blema de encontrar el número más grande. Sin pérdi-da de generalidad se puede asumir que dicho conjuntono es vacío y que sus elementos están numerados comoc0, c1, . . . , cn .Es decir, dado un conjunto C = {c0, c1, . . . , cn} se pideencontrar m tal que x ≤ m para todo elemento x quepertenece al conjunto C .Para encontrar el elemento máximo, se asume que el pri-mer elemento ( c0 ) es el máximo; luego, se recorre elconjunto y se compara cada valor con el valor del má-ximo número encontrado hasta ese momento. En el casoque un elemento sea mayor que el máximo, se asigna suvalor al máximo. Cuando se termina de recorrer la lista,el máximo número que se ha encontrado es el máximo detodo el conjunto.

5.2 Descripción formal

El algoritmo puede ser escrito de una manera más formalen el siguiente pseudocódigo:Sobre la notación:

• "←" representa una asignación:m← x significa quela variablem toma el valor de x ;

• "devolver" termina el algoritmo y devuelve el valora su derecha (en este caso, el máximo de C ).

5.3 Implementación

En lenguaje C++:int max(int c[], int n) { int i, m = c[0]; for (i = 1; i < n;i++) if (c[i] > m) m = c[i]; return m; }

6 Véase también

6.1 Tipos de algoritmos según su función

• Algoritmo de ordenamiento

• Algoritmo de búsqueda

Page 5: Algoritmo

6.4 Disciplinas relacionadas 5

6.2 Técnicas de diseño de algoritmos

• Algoritmos voraces (greedy): seleccionan los ele-mentos más prometedores del conjunto de candida-tos hasta encontrar una solución. En la mayoría delos casos la solución no es óptima.

• Algoritmos paralelos: permiten la división de unproblema en subproblemas de forma que se puedanejecutar de forma simultánea en varios procesado-res.

• Algoritmos probabilísticos: algunos de los pasos deeste tipo de algoritmos están en función de valorespseudoaleatorios.

• Algoritmos determinísticos: el comportamiento delalgoritmo es lineal: cada paso del algoritmo tieneúnicamente un paso sucesor y otro antecesor.

• Algoritmos no determinísticos: el comportamientodel algoritmo tiene forma de árbol y a cada paso delalgoritmo puede bifurcarse a cualquier número depasos inmediatamente posteriores, además todas lasramas se ejecutan simultáneamente.

• Divide y vencerás: dividen el problema en subcon-juntos disjuntos obteniendo una solución de cadauno de ellos para después unirlas, logrando así la so-lución al problema completo.

• Metaheurísticas: encuentran soluciones aproxima-das (no óptimas) a problemas basándose en un cono-cimiento anterior (a veces llamado experiencia) delos mismos.

• Programación dinámica: intenta resolver problemasdisminuyendo su coste computacional aumentandoel coste espacial.

• Ramificación y acotación: se basa en la construcciónde las soluciones al problema mediante un árbol im-plícito que se recorre de forma controlada encon-trando las mejores soluciones.

• Vuelta atrás (backtracking): se construye el espa-cio de soluciones del problema en un árbol que seexamina completamente, almacenando las solucio-nes menos costosas.

6.3 Temas relacionados

• Cota inferior asintótica

• Cota ajustada asintótica

• Complejidad computacional

• Diagramas de flujo

• Diagrama Nassi-Shneiderman

• Máquina de Turing

6.4 Disciplinas relacionadas

• Ciencias de la Computación

• Análisis de algoritmos

• Complejidad computacional

• Informática

• Inteligencia artificial

• Investigación operativa

• Matemáticas

• Programación

7 Referencias[1] Brassard, Gilles; Bratley, Paul (1997). Fundamentos

de Algoritmia. Madrid: PRENTICE HALL. ISBN 84-89660-00-X.

[2] Real Academia Española. Diccionario de la lengua espa-ñola "Conjunto ordenado y finito de operaciones que per-mite hallar la solución de un problema."

[3] Cormen, Thomas; Leiserson, Charles; Rivest, Ronald;Stein, Clifford (2009). Introduction to algorithms. Cam-bridge, Massachusetts: The MIT Press. ISBN 978-0-262-53305-8.

[4] Ralph P. Grimaldi (1998). «Propiedades de los númerosenteros: Inducción matemática». Matemáticas Discreta yCombinatoria. México: AddisonWesley Longman deMé-xico. ISBN 968-444-324-2.

[5] Johnsonbaugh, Richard (2005). «Introducción a la teoríade números».Matemáticas Discretas. México: PEARSONEDUCACIÓN. ISBN 970-26-0637-3.

[6] Carl Reynolds & Paul Tymann (2008). Schaum’s Outli-ne of Principles of Computer Science. McGraw-Hill. ISBN978-0-07-146051-4.

[7] Gurevich, Yuri (2000). «Sequential Abstract StateMachi-nes capture Sequential Algorithms». ACM Transactionson Computational Logic 1 (1). ISSN 1529-3785, 77-111.

[8] John E. Savage (1987). The Complexity of Computing.Krieger Publishing Co. ISBN 089874833X.

[9] Sipser, Michael (2005). Introduction to the Theory ofComputation (2 edición). Course Technology. ISBN 978-0534950972.

[10] Nachum Dershowitz & Yuri Gurevich (2008). «A na-tural axiomatization of computability and proof ofChurch’s Thesis». Bulletin of Symbolic Logic 14 (3). ISSN10798986, 299-350.

[11] Kelley, Dean (1995). Teoría de Autómatas y LenguajesFormales. Prentice Hall. ISBN 0-13-497777-7.

Page 6: Algoritmo

6 9 ENLACES EXTERNOS

8 Bibliografía• Aho, A. The Design and Analysis of Computer Algo-rithms

• Cormen, T. H., Leiserson, C. E., Rivest, R. L. yStein, C. Introduction to Algorithms (2nd ed.)

• Brassard, G. y P. Bratley. Fundamentos de Algorit-mia, (ISBN 848966000X)

• Knuth, D. E. The Art of Computer Programming,[quien fue también, el creador del TeX]

• Mamber, U. Introduction to Algorithms. A CreativeApproach

• Sedgewick, R.Algorithms in C (3r ed) (también exis-ten versiones en C++ y Java)

9 Enlaces externos

Wikilibros

• Wikilibros alberga un libro o manual sobreAlgoritmia.

• Wikcionario tiene definiciones y otra informa-ción sobre algoritmo.Wikcionario

• Algoritmos para principiantes

• Portal de algoritmia

• Técnicas de Diseño de Algoritmos manual que ex-plica y ejemplifica los distintos paradigmas de dise-ño de algoritmos. Rosa Guerequeta y Antonio Va-llecillo (profesores de la Universidad de Málaga).

• Transparencias de la asignatura “Esquemas Algorít-micos”, Campos, J.

• Apuntes y problemas de Algorítmica por DomingoGiménez Cánovas

• Curso de Diseño de Algoritmos de Carlos Pes

Page 7: Algoritmo

7

10 Origen del texto y las imágenes, colaboradores y licencias

10.1 Texto• Algoritmo Fuente: https://es.wikipedia.org/wiki/Algoritmo?oldid=85693844 Colaboradores: Llull~eswiki, Pit~eswiki, Sabbut, Moriel,

Sauron, JorgeGG, Lourdes Cardenal, ManuelGR, Julie, Angus, Vivero, Riviera, Rosarino, Dodo, Ejmeza, Crescent Moon, Triku, Sms,Rsg, Tostadora, Elwikipedista, Tano4595, Jsanchezes, Ríos-Ortega, JAAC, Jecanre, Cinabrium, Schummy, Huhsunqu, Balderai, Ecemaml,Renabot, FAR, Ictlogist, Boticario, Soulreaper, Orgullomoore, AlfonsoERomero, Airunp, JMPerez, Edub, Yrithinnd, Taichi, Emijrp, Rem-biapo pohyiete (bot), Caiser, Magister Mathematicae, RobotQuistnix, Alhen, Superzerocool, Chobot, Dromero, Sancebau, Yrbot, Amadís,FlaBot, Vitamine, .Sergio, YurikBot, Mortadelo2005, GermanX, Zam, Willtron, KnightRider, The Photographer, YoaR, Gothmog, Nosé qué nick poner, Carutsu, C-3POrao, Jesuja, Banfield, Kepler Oort, Maldoror, Er Komandante, Camima, Haitike, KocjoBot~eswiki,Tomatejc, Jarke, Paintman, Rbonvall, Kn, Aleator, Jstitch, BOTpolicia, Gizmo II, CEM-bot, Jorgeu, Jorgelrm, Laura Fiorucci, Kojie,-jem-, Alexav8, Ignacio Icke, Efegé, Retama, AlphaWiki~eswiki, Baiji, Bot~eswiki, Antur, Dorieo, Ingenioso Hidalgo, Fsd141, Albert-MA, Thijs!bot, Xxim, Alvaro qc, Escarbot, Yeza, Zupez zeta, Drake 81, RoyFocker, Ninovolador, MorZilla, Cratón, Isha, Dogor, Gusgus,Obueno, JAnDbot, Jugones55, JuanRodríguez, Kved, DerHexer, Lecuona, Mansoncc, Muro de Aguas, Xavigivax, TXiKiBoT, S3v3r-1,Elisardojm, Humberto, Netito777, Sophie kowalsky, AS990, ZrzlKing, Chabbot, Pólux, Bucephala, AchedDamiman, VolkovBot, Snakeyes,Technopat, Queninosta, Raystorm, Libertad y Saber, Matdrodes, Elabra sanchez, Synthebot, DJ Nietzsche, BlackBeast, Shooke, Alleborgo-Bot, Muro Bot, Peregring-lk, Clarad, Komputisto, MiguelAngel fotografo, SieBot, Aitorzubiaurre, Danielba894, Ctrl Z, Francisco Mochis,Carmin, Rigenea, Drinibot, CASF, BOTarate, Arlm1, Fide07, STBot~eswiki, Mel 23, Guillervf91, Manwë, Fegc77, Greek, H3r3dia, Bue-naGente, Qix~eswiki, Relleu, PipepBot, Fadesga, Chuchot, Tirithel, Mutari, XalD, robot, Jarisleif, Javierito92, HUB, PeruProfe,Farisori, McMalamute, Estirabot, Eduardosalg, Veon, Leonpolanco, Pan con queso, Mar del Sur, Alejandrocaro35, Botito777, Petruss,Alexbot, Darkicebot, Valentin estevanez navarro, RoyFokker, Raulshc, Açipni-Lovrij, SilvonenBot, Camilo, UA31, Ucevista, AVBOT,David0811, Flakinho, Nocturnogatuno, MastiBot, Pedrito suarez, Angel GN, MarcoAurelio, Speedplus, Ezarate, Diegusjaimes, Jjflores-cueto, Arjuno3, Andreasmperu, Luckas-bot, Virgi, Ptbotgourou, Jotterbot, Vic Fede, Dangelin5, Eduman~eswiki, Nixón, DSisyphBot,XZeroBot, ArthurBot, Ruy Pugliesi, Lcpousa, SuperBraulio13, M.heda, Xqbot, Jkbw, GhalyBot, Junior1209, Pedrovicenterosero, Calitb,Albertochoa, Igna, Torrente, Botarel, BenzolBot, Heynry1, Gusbelluwiki, Jhoelito14, TobeBot, Adrianantoniors, Imperioonepiece, Half-drag, Aquiel, Mipataentutrasero, Wikielwikingo, Hantartico, KamikazeBot, , Abel406, TjBot, Alph Bot, Humbefa, Irvinopuma, Carloel calvo, Shining.Star, Foundling, GrouchoBot, Xxxmagicmanxxx, Edslov, EmausBot, Savh, HRoestBot, Sergio Andres Segovia, Macro-coliset, Emiduronte, ChuispastonBot, MadriCR, Waka Waka, Xpress500, Mjbmrbot, Miguel hdez, Ksarasola, Metrónomo, Antonorsi,MerlIwBot, Papaplus, Renly, ClausxD, Arthur 'Two Sheds’ Jackson, Sebrev, Ginés90, Kotas, MetroBot, Henry bedon, Gusama Romero,Acratta, Metilisopropilisergamida, Vetranio, Elvisor, Sandovaltk10, Helmy oved, Syum90, Legobot, Eyetheunlord, Balles2601, ConnieGB,Angelrafa00, Jarould, Matiia, Egis57, Crystallizedcarbon, AlexGaitan, Deforetop6, Yholo, Andres477, Sapristi1000, CarlosAR2000, Be-nito Álvaro Cifuentes, Lalito312000, Benigno Jimenez Garay, Lectorina, Holaxddddd, MatiasOlivera0, Joltenick y Anónimos: 812

10.2 Imágenes• Archivo:AlgoritmoRaiz.png Fuente: https://upload.wikimedia.org/wikipedia/commons/2/26/AlgoritmoRaiz.png Licencia: CC-BY-SA-

3.0 Colaboradores: Trabajo propio, hecho con OpenOffice.org Draw Artista original: Kn• Archivo:EsquemáticaAlgoritmo1.svg Fuente: https://upload.wikimedia.org/wikipedia/commons/a/a3/Esquem%C3%

A1ticaAlgoritmo1.svg Licencia: GFDL Colaboradores: Trabajo propio Artista original: Kn• Archivo:LampFlowchart-es.svg Fuente: https://upload.wikimedia.org/wikipedia/commons/b/bd/LampFlowchart-es.svg Licencia: CC

BY-SA 3.0 Colaboradores:• LampFlowchart.svg Artista original: LampFlowchart.svg: svg by Booyabazooka

• Archivo:Wikibooks-logo.svg Fuente: https://upload.wikimedia.org/wikipedia/commons/f/fa/Wikibooks-logo.svg Licencia: CC BY-SA3.0 Colaboradores: Trabajo propio Artista original: User:Bastique, User:Ramac et al.

• Archivo:Wiktionary-logo-es.png Fuente: https://upload.wikimedia.org/wikipedia/commons/0/06/Wiktionary-logo-es.png Licencia:CCBY-SA 3.0 Colaboradores: originally uploaded there by author, self-made by author Artista original: es:Usuario:Pybalo

10.3 Licencia del contenido• Creative Commons Attribution-Share Alike 3.0