Traduccion Computability, Algorithms, and Complexity.
Enviado por cristianverde24 • 11 de Octubre de 2016 • Trabajo • 35.815 Palabras (144 Páginas) • 287 Visitas
Computabilidad, Algoritmos, y Complejidad
Curso 240
Parte yo
Computabilidad
1. Qué es un algoritmo?
Empezamos Parte yo con un problema que podría posar dificultades para quienes piensan com-puters es `todopoderoso'. Para analizar el problema, entonces hablamos la idea general de un algoritmo (como opposed a algoritmos particulares), y por qué es importante.
1.1 El problema
En raíz, Parte yo de este curso es sobre paradojas, como:
El menos numerar aquello no es definible por una frase inglesa habiendo menos que 100 letras.
(La paradoja es que hemos justo definió este número por tal frase. Piensa aproximadamente lo!) C.C. Chang Y H.J. Keisler Amablemente dedicó su Teoría `de Modelo del libro' a todos teóricos de modelo que haber nunca dedicó un libro a ellos. (Es dedicado a Chang y Keisler, o no?)
Las paradojas así a menudo surgen debido a self-referencia dentro de la declaración. El primer un implícitamente refiere a todo (corto) frases inglesas, incluyendo él. El segundo refiere implícitamente a todos los libros, incluyendo `Teoría de Modelo'. Ahora computando también utiliza lenguas — lenguajes de programación formales — que es capaz de self-referencia (por ejemplo, los programas pueden alterar, depura, compila o correr otros programas). Es allí paradojas similares en computar?
Aquí es un candidato. Tomar un alto-nivelar lenguaje de programación imperativo como Java. Cada programa es una cuerda de caracteres ingleses (letras, números, puntuación, etc). Así que podemos listar todo el syntactically programas correctos por orden alfabético, cuando P1, P2, P3, . . . Cada programa ocurre en esta lista.
Cada Pn producción alguna cuerda de símbolos, posiblemente la cuerda vacía. Lo podemos tratar tan outputting una cuerda de bits binarios (0 o 1). La mayoría de ordenadores trabajan de este modo — si la producción aparece a nosotros texto tan inglés, esto es porque la producción binaria ha sido tratada como ASCII (por ejemplo), y descodificado a inglés.
Ahora considerar el programa siguiente P:
8
1.1. El problema | 9 |
1 repite para siempre
2 genera el programa próximo Pn en la lista
- Corrido Pn según lo que el n th mordió de la producción
- Si P n rescinde o incita para entrada antes del n th mordió es producción entonces
5 producción 1
- Más si el nth mordió de P n la producción es 0 entonces
7 producción 1
- Más si el nth mordió de P n la producción es 1 entonces
9 producción 0
- Fin si
- El fin repite
- Esta lengua no es bastante Java, pero la idea es el mismo — ciertamente lo podríamos escribir formalmente en Java.
- Generando y corriendo el programa próximo (líneas 2 y 3) es fácil — generamos todas las cuerdas de texto por orden alfabético, y utilizar un intérprete para comprobar cada cuerda en vuelta para errores sintácticos. Si hay ninguno, la cuerda es nuestro programa próximo , y el intérprete lo puede correr. Esto es despacio, pero trabaja.
- Suponemos que podemos escribir un intérprete en nuestra lengua — ciertamente podemos escribir un Java intérprete en Java.
- En cada viaje alrededor del bucle, el intérprete está proporcionado con el texto del programa próximo, Pn, y el número n. Las carreras de intérprete Pn, parando ejecución si
(Un) Pn él para, (b) Pn incita para entrada o intenta leer un archivo, o (c) Pn ha producido n bits de producción.
- Todos otros pasos de P es fácil de implementar.
Tan P es un programa legítimo. Tan P es en la lista de Pns. Qué Pn es P ?
Supone que P es P 7, dice. Entonces P tiene la misma producción como P7. Ahora en el séptimo bucle de P , P7 (i.e., P) será generado, y corrido según lo que su séptima producción mordió. Las posibilidades son:
- P7 para o incita para entrada antes de que él producciones 7 bits (imposibles, cuando el código para P = P7 tiene ningún PARAR o declaración LEÍDA!)
- P7 la producción mordió 7, y es 0. Entonces P producciones 1 (mirada en el código encima). Pero esto 1 será la 7.ª producción mordió de P = P7, una contradicción!
- P7 la producción mordió 7, y es 1. Entonces P producciones 0 (mirada en el código otra vez). Pero esto 0 será P 7.ª producción mordió, y P = P7!
Esto es una contradicción : si P 7 producciones 0 entonces P producciones 1, y viceversa; aún así P estuvo supuesto para serP 7. Tan P no es P7 después de todo.
En la misma manera podemos mostrar que P no es Pn para cualquier n, porque P difiere de P n en el nth sitio de su producción. Tan P no es en nuestra lista de programas. Esto es imposible, cuando la lista contiene todos los programas de nuestra lengua!
10 1. Qué es un algoritmo?
Ejercicio 1.1 Qué es mal?
Las paradojas no podrían ser demasiado preocupándose en una lengua natural como inglés. Podríamos suponer que ingleses es impreciso, o el hablante está hablando barbaridad. Pero pensamos de com-puting como ingeniería precisa-disciplina matemática. Está utilizado para seguridad-aplicaciones críticas. Ciertamente no tenga que admitir cualesquier paradojas. Tenemos que por tanto examen-ine nuestra `paradoja' muy cuidadosamente.
...