Algoritmo
| Algoritmo | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||
| |||||||||||||
| |||||||||||||
| Wikidata C:Commons | |||||||||||||

Un algoritmo[1] é un conxunto ordenado e finito de operacións sinxelas que conducen á resolución dun problema, como por exemplo a formulación programática paso a paso para producir unha serie de resultados nun programa en informática. Máis especificamente, en matemáticas, constitúe o conxunto de procesos (e símbolos que os representan) para efectuar un cálculo. Partindo dun estado inicial e unha entrada determinada, a aplicación dos pasos sucesivos dun algoritmo conduce a un estado final que proporciona unha solución ao problema exposto. Os algoritmos utilízanse como especificacións para realizar cálculos e procesamento de datos. Os algoritmos máis avanzados poden empregar condicións para desviar a execución do código por diversas rutas (o que se coñece como toma de decisións automatizada) e deducir inferencias válidas (o que se coñece como razoamento automatizado).
Pola contra, unha heurística é un método para resolver problemas sen resultados correctos ou óptimos ben definidos.[2] Por exemplo, aínda que os sistemas de recomendación das redes sociais adoitan denominarse "algoritmos", en realidade baséanse en heurísticas, xa que non existe unha recomendación verdadeiramente "correcta".
A palabra algoritmo ten orixe no alcume Al-Khwarizmi, do matemático persa do século IX, Abu Yafar Mohámmed Abenmusa,[3] cuxas obras foron traducidas no occidente cristián no século XII, recibindo unha delas o nome "Algorithmi de numero indorum", sobre os algoritmos usando o sistema de numeración decimal (indiano). Outros autores, con todo, defenden a orixe da palabra en Al-goreten (raíz - concepto que se pode aplicar aos cálculos).
O concepto de algoritmo é frecuentemente ilustrado co exemplo dunha receita, aínda que moitos algoritmos son máis complexos. Eles poden repetir pasos (facer interaccións) ou necesitar decisións (tales como comparacións ou lóxica) ata que a tarefa sexa completada. Un algoritmo correctamente executado non resolverá un problema se o algoritmo fose incorrecto ou non fose apropiado ao problema.
Un algoritmo non representa, necesariamente, un programa de computador, e si os pasos necesarios para realizar unha tarefa. A súa posta en funcionamento pode ser feita por un computador, por outro tipo de autómata ou mesmo por un ser humano. Diferentes algoritmos poden realizar a mesma tarefa usando un conxunto diferenciado de instrucións en máis ou menos tempo, espazo ou esforzo que outros. Por exemplo, un algoritmo para se vestir pode especificar que vostede vista primeiro as medias e os zapatos antes de vestir o pantalón, en canto outro algoritmo especifica que vostede debe primeiro vestir o pantalón e despois as medias e os zapatos. Fica claro que o primeiro algoritmo é máis difícil de executar que o segundo.
Como método eficaz, un algoritmo pode expresarse nun espazo e un tempo finitos[4] e nun linguaxe formal ben definido[5] para calcular unha función.[6] Partindo dun estado inicial e unha entrada inicial (quizais baleira),[7] As instrucións describen un cálculo que, ao executarse, desenvólvese ao longo dun número finito de pasos[8] unha serie de estados sucesivos ben definidos, que finalmente dan lugar a un "resultado"[9] e que termina nun estado final. A transición dun estado ao seguinte non é necesariamente determinista; algúns algoritmos, coñecidos como algoritmos aleatorios, incorporan entradas aleatorias.[10]
O estudo dos algoritmos constitúe o obxecto central da algoritmia.[11]
Definición
[editar | editar a fonte]Unha definición informal é "un conxunto de regras que define con precisión unha secuencia de operacións",[12] o que incluiría todos os programas informáticos (incluídos os que non realizan cálculos numéricos) e calquera procedemento burocrático establecido[13] como unha receita dun libro de cociña.[14] En xeral, un programa é un algoritmo só se finalmente se detén[15]—aínda que os bucles infinitos ás veces poidan resultar desexables. Boolos e Jeffrey definen un algoritmo como un conxunto explícito de instrucións para determinar un resultado, que pode seguir tanto unha máquina computacional como un ser humano capaz unicamente de realizar operacións elementais específicas sobre símbolos.[16]
Etimoloxía
[editar | editar a fonte]
O vocábulo algoritmo ten as súas raíces na latinización do nisba, que indica a orixe xeográfica, do nome do matemático persa Muhammad ibn Musa al-Khwarizmi como algorismus.[17][18] Al-Khwārizmī (الخوارزمی c. 780–850) foi un matemático, astrónomo, xeógrafo e estudoso da Casa da Sabedoría de Bagdad,[19] e o seu nome significa "natural de Khwarazm", rexión que facía parte do Grande Irán e actualmente pertence a Uzbekistán.[20][21]
Arredor de 825, al-Khwarizmi escribiu un tratado en árabe sobre o sistema de numeración indoarábigo, que foi traducido ao latín durante o século XII. O manuscrito comeza coa frase Dixit Algorizmi ("Así falou Al-Khwarizmi"), onde "Algorizmi" foi a latinización do nome de Al-Khwarizmi que fixo o tradutor.[22] Al-Khwarizmi foi o matemático máis lido en Europa a finais da idade media, especialmente por outro dos seus libros, Álxebra.[23] No latín medieval final, algorismus significaba simplemente "sistema de numeración decimal".[24] No século XV, pola influencia da palabra grega ἀριθμός (arithmos), "número", a palabra latina alterouse a algorithmus. O vocábulo inglés algorithm foi recollido no século XVII e o sentido moderno da expresión déuselle no século XIX.[25]
Historia
[editar | editar a fonte]Algoritmos antigos
[editar | editar a fonte]Desde a antigüidade documentáronse procedementos paso a paso para resolver problemas matemáticos. Entre eles inclúense os da matemática babilónica (ao redor do 2500 a. C.),[26] matemáticas exipcias (cara ao ano 1550 a. C.),[26] matemáticas indias (arredor do ano 800 a. C. e posteriores),[27][28] o oráculo de Ifá (arredor do ano 500 a. C.),[29] matemáticas gregas (arredor do ano 240 a.C.),[30] matemáticas chinesas (arredor do ano 200 a. C. e posteriores),[31] e matemáticas árabes (arredor do ano 800 d.C.).[32]
Algoritmos e linguaxes de programación de computadores
[editar | editar a fonte]Xeralmente, os algoritmos descríbense informalmente nunha linguaxe próxima da lingua natural, máis facilmente comprendida por un ser humano que por un computador. Un algoritmo pode, na maior parte dos casos, ser aplicado en calquera linguaxe de programación.
Formalizando algoritmos
[editar | editar a fonte]Un programa de computador é esencialmente un algoritmo que di ao computador os pasos específicos e en que orde eles deben ser executados, como por exemplo, os pasos a seren tomados para calcular as notas que serán impresas nos boletíns dos alumnos dunha escola.
Para calquera proceso computacional, o algoritmo precisa estar rigorosamente definido, especificando como se comportará en todas as circunstancias. A corrección do algoritmo pode ser probada matematicamente, ben como a cantidade asintótica de tempo e espazo (complexidade) necesarios para a súa execución. Estes aspectos dos algoritmos son materia da análise de algoritmos.
Posta en funcionamento
[editar | editar a fonte]Hai hoxe unha gran variedade de linguaxes de programación, cada unha con características específicas que poden facilitar a aplicación de determinados algoritmos ou atender a propósitos máis xerais.
Os algoritmos non se poñen en funcionamento só como programas para computadores, senón que tamén se poden aplicar en circuítos eléctricos ou ata no noso cerebro cando executamos operacións aritméticas. A análise de algoritmos é unha rama da ciencia da computación que estuda as técnicas de proxecto de algoritmos e os algoritmos de forma abstracta, sen estaren aplicados nunha linguaxe de programación en particular ou dalgún outro modo. Un medio de exhibir un algoritmo é mostrar o seu pseudocódigo.
Algoritmos como funcións
[editar | editar a fonte]
Un algoritmo pode concibirse como unha función que transforma os datos dun problema (entrada) nos datos dunha solución (saída). Aínda máis, os datos poden representarse á súa vez como secuencias de bits, e en xeral, de símbolos calquera.[33] Como cada secuencia de bits representa un número natural, entón os algoritmos son en esencia funcións dos números naturais nos números naturais que si se poden calcular. É dicir que todo algoritmo calcula unha función onde cada número natural é a codificación dun problema ou dunha solución.
En ocasións os algoritmos son susceptibles de non rematar nunca, por exemplo, cando entran nun bucle infinito. Cando ocorre isto, o algoritmo nunca devolve ningún valor de saída, e podemos dicir que a función queda indefinida para ese valor de entrada. Por esta razón considérase que os algoritmos son funcións parciais, é dicir, non necesariamente definidas en todo o seu dominio de definición.
Cando unha función pode ser calculada por medios algorítmicos, sen importar a cantidade de memoria que ocupe ou o tempo que se tarde, dise que esa función é computable. Non todas as funcións entre secuencias datos son computables. O problema da parada é un exemplo.
Exemplo de algoritmo
[editar | editar a fonte]O problema consiste en atopar o máximo dun conxunto de números.
Descrición de alto nivel
[editar | editar a fonte]Dado un conxunto finito de números, tense o problema de atopar o número máis grande. Sen perda de xeneralidade pode asumirse que ese conxunto non é baleiro e que os seus elementos están numerados como .
É dicir, dado un conxunto pídese atopar tal que para todo elemento que pertence ao conxunto .
Para atopar o elemento máximo, asúmese que o primeiro elemento () é o máximo; despois, percórrese o conxunto e compárase cada valor co valor do máximo número atopado ata ese momento. No caso no que un elemento sexa maior que o máximo, asígnase o seu valor ao máximo. Cando se termina de percorrer a lista, o máximo número que se atopou é o máximo de todo o conxunto.
Descrición formal
[editar | editar a fonte]O algoritmo pode ser escrito dunha maneira máis formal no seguinte pseudocódigo:
Atopar o máximo dun conxunto:función max() // é un conxunto non baleiro de números// ← // é o número de elementos de // ← para ← ata facer se entón ←
devolver
Sobre a notación:
- "←" representa unha asignación: ← significa que a variable toma o valor de ;
- "devolver" termina o algoritmo e dá o valor á súa dereita (neste caso, o máximo de ).
Posta en funcionamento
[editar | editar a fonte]En linguaxe 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;
}
Exemplo en pseudocódigo
[editar | editar a fonte]Exemplo dun algoritmo que devolve a suma de dous valores (tamén coñecidos como parámetros ou argumentos) que son introducidos na chamada da función:
función SumaDeDousValores (A numérico, B numérico)
{
declara SUMA numérico
SUMA <-- A + B
retorna SUMA
}
Exemplo dun algoritmo (WinPseudo 1.4) que imprime todos os números menores que <Limite>:
#-----------------------------------------
# Pseudocódigo para imprimir todos os
# números menores que <Limite>
#-----------------------------------------
INICIO Programa1 - Imprime todos os números menores que <Limite>
VAR
NUMERICO i
NUMERICO Limite
FIN-VAR
LER (Limite)
IMPRIMIR NL
i = 0
MENTRES (i < Limite)
IMPRIMIR ENTEIRO (i)
IMPRIMIR ", "
i = i + 1
FIN-MENTRES
FINAL
Notas
[editar | editar a fonte]- ↑ Definicións no Dicionario da Real Academia Galega e no Portal das Palabras para algoritmo.
- ↑ David A. Grossman, Ophir Frieder, Information Retrieval: Algorithms and Heuristics, 2nd edition, 2004, ISBN 1402030045
- ↑ https://portaldaspalabras.gal/lexico/mira-que-din/algoritmo/
- ↑ "Calquera algoritmo matemático clásico, por exemplo, pode describirse cun número finito de palabras en inglés" (Rogers 1987:2).
- ↑ Ben definido no que respecta ao axente que executa o algoritmo: "Existe un axente computacional, normalmente humano, capaz de reaccionar ante as instrucións e realizar os cálculos." (Rogers 1987:2).
- ↑ "un algoritmo é un procedemento para calcular unha «función» (en relación cunha notación determinada para os números enteiros)... esta limitación (ás funcións numéricas) non supón ningunha perda de xeneralidade", (Rogers 1977:1).
- ↑ "Un algoritmo ten cero ou máis entradas, é dicir, cantidades que se lle proporcionan inicialmente antes de que o algoritmo comece" (Knuth 1973:5).
- ↑ "Un procedemento que reúna todas as características dun algoritmo, salvo que posiblemente careza de finitud, pode denominarse «método computacional»." (Knuth 1971:5).
- ↑ "Un algoritmo ten unha ou máis saídas, é dicir, magnitudes que gardan unha relación determinada coas entradas" (Knuth 1973:5).
- ↑ É discutible se un proceso con procesos internos aleatorios (sen incluír a entrada) constitúe ou non un algoritmo. Rogers opina que: "o cálculo leva a cabo de forma discreta e por pasos, sen utilizar métodos continuos nin dispositivos analóxicos... e desenvólvese de maneira determinista, sen recorrer a métodos ou dispositivos aleatorios, por exemplo os dados". (Rogers 1987:2).
- ↑ Brassard, Gilles; Bratley, Paul (1997). Fundamentos de Algoritmia. Madrid: PRENTICE HALL. ISBN 84-89660-00-X.
- ↑ Stone (1971), p. 8.
- ↑
Simanowski, Roberto (2018). The Death Algorithm and Other Digital Dilemmas. Untimely Meditations 14. Traducido por Chase, Jefferson. Cambridge, Massachusetts: MIT Press. p. 147. ISBN 9780262536370. Arquivado dende o orixinal o 22 de decembro de 2019. Consultado o 12 de abril do 2026.
[...] o seguinte nivel de abstracción da burocracia central: algoritmos que operan a escala mundial.
- ↑
Dietrich, Eric (1999). "Algorithm". En Wilson, Robert Andrew; Keil, Frank C. The MIT Encyclopedia of the Cognitive Sciences. MIT Cognet library. Cambridge, Massachusetts: MIT Press (publicado o 2001). p. 11. ISBN 9780262731447. Consultado o 12 de abril do 2026.
Un algoritmo é unha receita, un método ou unha técnica para facer algo.
- ↑ Stone esixe que "debe concluír nun número finito de pasos"" (Stone 1973:7–8).
- ↑ Boolos, Jeffrey & 1974, 1999
- ↑ "Al-Khwarizmi biography". www-history.mcs.st-andrews.ac.uk. Arquivado dende o orixinal o 2 de agosto de 2019. Consultado o 3 de maio de 2017.
- ↑ "Etymology of algorithm". Chambers Dictionary. Arquivado dende o orixinal o 31 de marzo de 2019. Consultado o 13 de decembro de 2016.
- ↑ "Hellenistic Mathematics". The Story of Mathematics. Arquivado dende o orixinal o September 11, 2019. Consultado o 2019-11-14.
- ↑ Hogendijk, Jan P. (1998). "al-Khwarzimi". Pythagoras 38 (2): 4–5. Arquivado dende o orixinal o 12 de abril de 2009.
- ↑ Oaks, Jeffrey A. "Was al-Khwarizmi an applied algebraist?". University of Indianapolis. Arquivado dende o orixinal o 18 de xullo de 2011. Consultado o 30 de maio de 2008.
- ↑ Brezina, Corona (2006). Al-Khwarizmi: The Inventor Of Algebra. The Rosen Publishing Group. ISBN 978-1-4042-0513-0.
- ↑ Foremost mathematical texts in history Arquivado 9 de xuño de 2011 en Wayback Machine., segundo Carl B. Boyer.
- ↑ "algorismic". The Free Dictionary. Arquivado dende o orixinal o 21 de decembro de 2019. Consultado o 2019-11-14.
- ↑ Oxford English Dictionary, Third Edition, 2012 s.v.
- 1 2 Chabert, Jean-Luc (2012). A History of Algorithms: From the Pebble to the Microchip. Springer Science & Business Media. pp. 7–8. ISBN 9783642181924.
- ↑ Sriram, M. S. (2005). "Algorithms in Indian Mathematics". En Emch, Gerard G.; Sridharan, R.; Srinivas, M. D. Contributions to the History of Indian Mathematics (en inglés). Springer. p. 153. ISBN 978-93-86279-25-5.
- ↑ Hayashi, T. (1 de xaneiro de 2023). Brahmagupta. Encyclopedia Britannica.
- ↑ Zaslavsky, Claudia (1970). "Mathematics of the Yoruba People and of Their Neighbors in Southern Nigeria". The Two-Year College Mathematics Journal 1 (2). pp. 76–99. ISSN 0049-4925. JSTOR 3027363. doi:10.2307/3027363.
- ↑ Cooke, Roger L. (2005). The History of Mathematics: A Brief Course. John Wiley & Sons. ISBN 978-1-118-46029-0.
- ↑ Chabert, Jean-Luc, ed. (1999). A History of Algorithms (en inglés). ISBN 978-3-540-63369-3. doi:10.1007/978-3-642-18192-4.
- ↑ Dooley, John F. (2013). A Brief History of Cryptology and Cryptographic Algorithms. Springer Science & Business Media. pp. 12–3. ISBN 9783319016283.
- ↑ Kelley, Dean (1995). Teoría de Autómatas y Lenguajes Formales. Prentice Hall. ISBN 0-13-497777-7. Arquivado dende o orixinal o 14 de novembro de 2012. Consultado o 22 de maio de 2016.
Véxase tamén
[editar | editar a fonte]Bibliografía
[editar | editar a fonte]- Axt, P (1959). "On a Subrecursive Hierarchy and Primitive Recursive Degrees". Transactions of the American Mathematical Society 92 (1). pp. 85–105. JSTOR 1993169. doi:10.2307/1993169.
- Bell, C. Gordon and Newell, Allen (1971), Computer Structures: Readings and Examples, McGraw–Hill Book Company, New York. ISBN 0-07-004357-4.
- Blass, Andreas; Gurevich, Yuri (2003). "Algorithms: A Quest for Absolute Definitions" (PDF). Bulletin of European Association for Theoretical Computer Science 81. Arquivado dende o orixinal (PDF) o 2022-10-09. Includes a bibliography of 56 references.
- Bolter, David J. (1984). Turing's Man: Western Culture in the Computer Age (1984 ed.). Chapel Hill, NC: The University of North Carolina Press. ISBN 978-0-8078-1564-9., ISBN 0-8078-4108-0
- Boolos, George; Jeffrey, Richard (1999) [1974]. Computability and Logic (4th ed.). Cambridge University Press, London. ISBN 978-0-521-20402-6.: cf. Chapter 3 Turing machines where they discuss "certain enumerable sets not effectively (mechanically) enumerable".
- Burgin, Mark (2004). Super-Recursive Algorithms. Springer. ISBN 978-0-387-95569-8.
- Campagnolo, M.L., Moore, C., and Costa, J.F. (2000) An analog characterization of the subrecursive functions. In Proc. of the 4th Conference on Real Numbers and Computers, Odense University, pp. 91–109
- Church, Alonzo (1936). "An Unsolvable Problem of Elementary Number Theory". American Journal of Mathematics 58 (2). pp. 345–363. JSTOR 2371045. doi:10.2307/2371045. Reprinted in The Undecidable, p. 89ff. The first expression of "Church's Thesis". See in particular page 100 (The Undecidable) where he defines the notion of "effective calculability" in terms of "an algorithm", and he uses the word "terminates", etc.
- Church, Alonzo (1936). "A Note on the Entscheidungsproblem". The Journal of Symbolic Logic 1 (1). pp. 40–41. JSTOR 2269326. doi:10.2307/2269326. Church, Alonzo (1936). "Correction to a Note on the Entscheidungsproblem". The Journal of Symbolic Logic 1 (3). pp. 101–102. JSTOR 2269030. doi:10.2307/2269030. Reprinted in The Undecidable, p. 110ff. Church shows that the Entscheidungsproblem is unsolvable in about 3 pages of text and 3 pages of footnotes.
- Daffa', Ali Abdullah al- (1977). The Muslim contribution to mathematics. London: Croom Helm. ISBN 978-0-85664-464-1.
- Davis, Martin (1965). The Undecidable: Basic Papers On Undecidable Propositions, Unsolvable Problems and Computable Functions. New York: Raven Press. ISBN 978-0-486-43228-1. Davis gives commentary before each article. Papers of Gödel, Alonzo Church, Turing, Rosser, Kleene, and Emil Post are included; those cited in the article are listed here by author's name.
- Davis, Martin (2000). Engines of Logic: Mathematicians and the Origin of the Computer. New York: W.W. Nortion. ISBN 978-0-393-32229-3. Davis offers concise biographies of Leibniz, Boole, Frege, Cantor, Hilbert, Gödel and Turing with von Neumann as the show-stealing villain. Very brief bios of Joseph-Marie Jacquard, Babbage, Ada Lovelace, Claude Shannon, Howard Aiken, etc.
Este artigo incorpora material en dominio público de Paul E. Black. "algorithm". Dictionary of Algorithms and Data Structures. NIST. O valor |mode=configuracióné incorrecto (Axuda)- Dean, Tim (2012). "Evolution and moral diversity". Baltic International Yearbook of Cognition, Logic and Communication 7. doi:10.4148/biyclc.v7i0.1775.
- Dennett, Daniel (1995). Darwin's Dangerous Idea. New York: Touchstone/Simon & Schuster. pp. 32–36. ISBN 978-0-684-80290-9.
- Dilson, Jesse (2007). The Abacus ((1968, 1994) ed.). St. Martin's Press, NY. ISBN 978-0-312-10409-2., ISBN 0-312-10409-X
- Yuri Gurevich, Sequential Abstract State Machines Capture Sequential Algorithms, ACM Transactions on Computational Logic, Vol 1, no 1 (July 2000), pp. 77–111. Includes bibliography of 33 sources.
- van Heijenoort, Jean (2001). From Frege to Gödel, A Source Book in Mathematical Logic, 1879–1931 ((1967) ed.). Harvard University Press, Cambridge. ISBN 978-0-674-32449-7., 3rd edition 1976[?], ISBN 0-674-32449-8 (pbk.)
- Hodges, Andrew (1983). Alan Turing: The Enigma. New York: Simon and Schuster. ISBN 978-0-671-49207-6., ISBN 0-671-49207-1. Cf. Chapter "The Spirit of Truth" for a history leading to, and a discussion of, his proof.
- Kleene, Stephen C. (1936). "General Recursive Functions of Natural Numbers". Mathematische Annalen 112 (5). pp. 727–742. doi:10.1007/BF01565439. Arquivado dende o orixinal o 3 de setembro de 2014. Consultado o 11 de abril do 2026. Presented to the American Mathematical Society, September 1935. Reprinted in The Undecidable, p. 237ff. Kleene's definition of "general recursion" (known now as mu-recursion) was used by Church in his 1935 paper An Unsolvable Problem of Elementary Number Theory that proved the "decision problem" to be "undecidable" (i.e., a negative result).
- Kleene, Stephen C. (1943). "Recursive Predicates and Quantifiers". Transactions of the American Mathematical Society 53 (1). pp. 41–73. JSTOR 1990131. doi:10.2307/1990131. Reprinted in The Undecidable, p. 255ff. Kleene refined his definition of "general recursion" and proceeded in his chapter "12. Algorithmic theories" to posit "Thesis I" (p. 274); he would later repeat this thesis (in Kleene 1952:300) and name it "Church's Thesis"(Kleene 1952:317) (i.e., the Church thesis).
- Kleene, Stephen C. (1991) [1952]. Introduction to Metamathematics (Tenth ed.). North-Holland Publishing Company. ISBN 978-0-7204-2103-3.
- Knuth, Donald (1997). Fundamental Algorithms, Third Edition. Reading, Massachusetts: Addison–Wesley. ISBN 978-0-201-89683-1.
- Knuth, Donald (1969). Volume 2/Seminumerical Algorithms, The Art of Computer Programming First Edition. Reading, Massachusetts: Addison–Wesley.
- Kosovsky, N.K. Elements of Mathematical Logic and its Application to the theory of Subrecursive Algorithms, LSU Publ., Leningrad, 1981
- Kowalski, Robert (1979). "Algorithm=Logic+Control". Communications of the ACM 22 (7). pp. 424–436. doi:10.1145/359131.359136.
- A.A. Markov (1954) Theory of algorithms. [Translated by Jacques J. Schorr-Kon and PST staff] Imprint Moscow, Academy of Sciences of the USSR, 1954 [i.e., Jerusalem, Israel Program for Scientific Translations, 1961; available from the Office of Technical Services, U.S. Dept. of Commerce, Washington] Description 444 p. 28 cm. Added t.p. in Russian Translation of Works of the Mathematical Institute, Academy of Sciences of the USSR, v. 42. Original title: Teoriya algerifmov. [QA248.M2943 Dartmouth College library. U.S. Dept. of Commerce, Office of Technical Services, number OTS.]
- Minsky, Marvin (1967). edition = First Computation: Finite and Infinite Machines
|url=incorrecto (Axuda). Prentice-Hall, Englewood Cliffs, NJ. ISBN 978-0-13-165449-5. Minsky expands his "...idea of an algorithm – an effective procedure..." in chapter 5.1 Computability, Effective Procedures and Algorithms. Infinite machines. - Post, Emil (1936). "Finite Combinatory Processes, Formulation I". The Journal of Symbolic Logic 1 (3). pp. 103–105. JSTOR 2269031. doi:10.2307/2269031. Reprinted in The Undecidable, pp. 289ff. Post defines a simple algorithmic-like process of a man writing marks or erasing marks and going from box to box and eventually halting, as he follows a list of simple instructions. This is cited by Kleene as one source of his "Thesis I", the so-called Church–Turing thesis.
- Rogers, Hartley Jr. (1987). Theory of Recursive Functions and Effective Computability. The MIT Press. ISBN 978-0-262-68052-3.
- Rosser, J.B. (1939). "An Informal Exposition of Proofs of Godel's Theorem and Church's Theorem". Journal of Symbolic Logic 4 (2). pp. 53–60. JSTOR 2269059. doi:10.2307/2269059. Reprinted in The Undecidable, p. 223ff. Herein is Rosser's famous definition of "effective method": "...a method each step of which is precisely predetermined and which is certain to produce the answer in a finite number of steps... a machine which will then solve any problem of the set with no human intervention beyond inserting the question and (later) reading the answer" (p. 225–226, The Undecidable)
- Santos-Lang, Christopher (2015). "Moral Ecology Approaches to Machine Ethics" (PDF). En van Rysewyk, Simon; Pontier, Matthijs. Machine Medical Ethics. Intelligent Systems, Control and Automation: Science and Engineering 74. Switzerland: Springer. pp. 111–127. ISBN 978-3-319-08107-6. doi:10.1007/978-3-319-08108-3_8. Arquivado dende o orixinal (PDF) o 2022-10-09.
- Scott, Michael L. (2009). Programming Language Pragmatics (3rd ed.). Morgan Kaufmann Publishers/Elsevier. ISBN 978-0-12-374514-9.
- Sipser, Michael (2006). Introduction to the Theory of Computation. PWS Publishing Company. ISBN 978-0-534-94728-6.
- Sober, Elliott; Wilson, David Sloan (1998). Unto Others: The Evolution and Psychology of Unselfish Behavior. Cambridge: Harvard University Press. ISBN 9780674930469.
- Stone, Harold S. (1971). Introduction to Computer Organization and Data Structures. McGraw-Hill, New York. ISBN 9780070617261. Cf. in particular the first chapter titled: Algorithms, Turing Machines, and Programs. His succinct informal definition: "...any sequence of instructions that can be obeyed by a robot, is called an algorithm" (p. 4).
- Tausworthe, Robert C (1977). Standardized Development of Computer Software Part 1 Methods. Englewood Cliffs NJ: Prentice–Hall, Inc. ISBN 978-0-13-842195-3.
- Turing, Alan M. (1936–37). "On Computable Numbers, With An Application to the Entscheidungsproblem". Proceedings of the London Mathematical Society. Series 2 42. pp. 230–265. doi:10.1112/plms/s2-42.1.230.. Corrections, ibid, vol. 43(1937) pp. 544–546. Reprinted in The Undecidable, p. 116ff. Turing's famous paper completed as a Master's dissertation while at King's College Cambridge UK.
- Turing, Alan M. (1939). "Systems of Logic Based on Ordinals". Proceedings of the London Mathematical Society 45. pp. 161–228. doi:10.1112/plms/s2-45.1.161. hdl:21.11116/0000-0001-91CE-3. Reprinted in The Undecidable, pp. 155ff. Turing's paper that defined "the oracle" was his PhD thesis while at Princeton.
- United States Patent and Trademark Office (2006), 2106.02 **>Mathematical Algorithms: 2100 Patentability, Manual of Patent Examining Procedure (MPEP). Latest revision August 2006
- Zaslavsky, C. (1970). Mathematics of the Yoruba People and of Their Neighbors in Southern Nigeria. The Two-Year College Mathematics Journal, 1(2), 76–99. https://doi.org/10.2307/3027363
- NIST Releases First 3 Finalized Post-Quantum Encryption Standards. https://www.nist.gov/news-events/news/2024/08/nist-releases-first-3-finalized-post-quantum-encryption-standards
Lecturas adicionais
[editar | editar a fonte]- Bellah, Robert Neelly (1985). Habits of the Heart: Individualism and Commitment in American Life. Berkeley: University of California Press. ISBN 978-0-520-25419-0.
- Berlinski, David (2001). The Advent of the Algorithm: The 300-Year Journey from an Idea to the Computer. Harvest Books. ISBN 978-0-15-601391-8.
- Chabert, Jean-Luc (1999). A History of Algorithms: From the Pebble to the Microchip. Springer Verlag. ISBN 978-3-540-63369-3.
- Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L.; Stein, Clifford (2009). Introduction To Algorithms (3rd ed.). MIT Press. ISBN 978-0-262-03384-8.
- Harel, David; Feldman, Yishai (2004). Algorithmics: The Spirit of Computing. Addison-Wesley. ISBN 978-0-321-11784-7.
- Hertzke, Allen D.; McRorie, Chris (1998). "The Concept of Moral Ecology". En Lawler, Peter Augustine; McConkey, Dale. Community and Political Thought Today. Westport, CT: Praeger.
- Knuth, Donald E. (2000). Selected Papers on Analysis of Algorithms Arquivado 01 de xullo de 2017 en Wayback Machine.. Stanford, California: Center for the Study of Language and Information.
- Knuth, Donald E. (2010). Selected Papers on Design of Algorithms Arquivado 16 de xullo de 2017 en Wayback Machine.. Stanford, California: Center for the Study of Language and Information.
- Wallach, Wendell; Allen, Colin (novembro de 2008). Moral Machines: Teaching Robots Right from Wrong. US: Oxford University Press. ISBN 978-0-19-537404-9.
Outros artigos
[editar | editar a fonte]Ligazóns externas
[editar | editar a fonte]| Wikimedia Commons ten máis contidos multimedia na categoría: Algoritmo |
- Exemplos de algoritmos básicos
- Todo sobre algoritmos Arquivado 03 de maio de 2020 en Wayback Machine.
