ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Traduccion Computability, Algorithms, and Complexity.


Enviado por   •  11 de Octubre de 2016  •  Trabajo  •  35.815 Palabras (144 Páginas)  •  287 Visitas

Página 1 de 144

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.

...

Descargar como (para miembros actualizados) txt (213 Kb) docx (1 Mb)
Leer 143 páginas más »
Disponible sólo en Clubensayos.com