Por que as funções computáveis ​​são contínuas?


7

Estou trabalhando para escrever um documento fácil de ler sobre a semântica denotacional do cálculo lambda. Para isso, introduzo CPOs, monotonicidade e continuidade. Um CPO é um conjunto com uma ordem parcial e um elemento inferior , exigindo que seja o menor elemento em e a existência do limite superior mínimo ( ) para cada cadeia em . Uma função entre dois CPOs , é monótona, se para todos o seguinte for válido:MMd0d1d2...MfMNa,bM

abf(a)f(b)

Uma função entre dois CPOs , é contínua, se for monótona e para todas as cadeias que temosfMNd0d1d2

f(iNdi)=iNf(di).

Quero dar aos meus leitores uma boa intuição sobre o significado dessas definições. No entanto, eu não tenho um que eu possa escrever. Seguindo Glynn Winskel em seu livro "A Semântica Formal de Linguagens de Programação" (1993), deve ser lido como aproxima-se de (página 72), o que significa que tem pelo menos tanta informação quanto . Isso leva a funções monótonas, refletindo mais informações sobre a entrada e mais informações sobre a saída (página 122). Isso é um pouco compreensível para mim. No entanto, a explicação da continuidade não está clara para mim:ababba

Como veremos, que as funções computáveis ​​devem ser contínuas decorre da idéia de que o aparecimento de uma unidade de informação na saída de uma função computável deve depender apenas da presença de finitas unidades de informação na entrada.

(página 73)

Isso ainda não está claro para mim depois de ler o exemplo do fluxo na seção 8.2 (páginas 121–123) ou esta resposta.

Portanto, minha pergunta final é: como convencer meus leitores de que funções computáveis ​​são contínuas? Por que não existe função computável que não seja contínua?

Seria bom se você pudesse me dar respostas / exemplos que não exijam a introdução rigorosa da computabilidade ou da teoria do ponto de correção, já que não quero me concentrar nessas coisas. Também seria ótimo se não fosse necessário conhecer antecipadamente o cálculo lambda e sua semântica denotacional, porque eu quero (e preciso) introduzir a monotonicidade e a continuidade diante deles.

EDIT: Por computável quero dizer Turing-computável. Por favor, corrija-me se eu não entender a definição de computável de Winskels na página 337, pois ela não é explicitamente definida como computável em Turing, mas de maneira equivalente (pelo menos aos meus olhos).

Também quero apontar outra fonte que encontrei que tenta explicar meu problema. Mas ainda não entendo seu exemplo, pois é basicamente o mesmo que o exemplo de fluxo da Winskel.

EDIÇÃO 2: Também seria um bom começo para me ajudar a entender o assunto, mostrando que todas as funções computáveis ​​são monótonas, ou seja, não existe função computável não monótona.

Respostas:


9

Existem várias maneiras de explicar "computável implica contínuo"; darei aqui duas dessas explicações.

Máquinas de Turing calculam mapas contínuos

Suponha que tenhamos uma máquina de Turing que absorve uma quantidade infinita de entradas gravadas em uma fita de entrada. Ele grava o resultado em uma fita de saída, onde as células de saída são gravadas uma vez. Existem fitas de sinal de trabalho. A máquina pode funcionar para sempre, preenchendo as células de saída. Isso é conhecido como uma máquina do tipo dois . (O argumento para outros tipos de máquinas será semelhante, mas mais simples.)

O seguinte deve ser óbvio: quando a máquina grava em uma célula de saída, seu funcionamento até esse ponto depende apenas de uma parte finita da fita de entrada, pelo simples motivo de que, em finitas etapas da computação, não poderia ter movido a cabeça de entrada passado algum ponto. Portanto, toda fita de entrada que esteja de acordo com a fita especificada até aquele momento faria com que a máquina escrevesse a mesma resposta na mesma célula de saída.

Mas essa é uma forma de continuidade, se colocarmos a topologia correta nos espaços das fitas de entrada e saída.

Primeiro, colocamos a topologia no conjunto dos símbolos que podem ser gravados nas células da fita. Para isso, basta escolher a topologia discreta. Uma fita é uma sequência infinita de símbolos, portanto, um elemento de , que é um produto de 's. Vamos colocar a topologia do produto.ΣΣωΣ

Lembre-se de que um conjunto aberto básico em para a topologia do produto tem o formato , em que . Ou seja, um conjunto aberto básico fixa uma parte inicial da sequência aos valores fornecidos .ΣωU(a0,,an1)={αΣωi<n.αi=ai}a0,,aiΣa0,,an

Agora podemos verificar se a função calculada pela máquina é realmente contínua. Tome um conjunto aberto básico e deixe . Precisamos verificar se está aberto. Para este fim, considerar qualquer . Se encontrarmos um conjunto aberto básico tal que , então terminamos.f:ΣωΣωV=U(a0,,an1)W=f1(V)WαWWαWW

Porque , temos . Assim, na entrada a máquina produz uma fita de saída começando com . No momento em que grava essas células, ele inspeciona no máximo as primeiras células da entrada, em busca de alguns . Podemos tomar e verificar se . É óbvio que . Para provar tomar qualquer e observar que e concordam com a primeiraαWf(α)Uαa0,a1,,an1kkNW:=U(α0,,αk)αWWαWWWβWf(α)f(β)n valores da saída. Isso implica que e, portanto, , conforme necessário.f(β)VβW

Mapas computáveis ​​são contínuos como mapas entre CPOs algébricasω

Primeiro, deixe-me observar que o que você definiu geralmente é chamado de " CPO" ( no nome indica que precisamos apenas de supremacia de cadeias).ωω

Na semântica denotacional, os tipos de dados correspondem a CPOs. De fato, eles correspondem a CPOs algébricas (isso está em sua tese?), Que são CPOs para os quais os elementos compactos formam uma base. Aqui estão algumas definições.ω ωω

Definição: Seja um CPO . Um elemento é compacto se, para cada cadeia tal que , existe tal que .DωdDx0x1dixijdxj

Definição: Um CPO é algébrico se todo for o supremo de elementos compactos abaixo dele.ωxD

A intuição por trás dos elementos compactos é que eles contêm "informações finitas". Um bom exemplo é , o conjunto de números naturais ordenados por , onde os elementos compactos são precisamente os subconjuntos finitos de (exercício!). Outro exemplo: no CPO de funções contínuas os elementos compactos são aquelas funções parciais que são iguais a todos os lugares, exceto em muitos argumentos finitos.P(N)NωNN

Dizer que um CPO é algebrico é dizer que todo elemento é completamente determinado pelas informações finitas que o aproximam. É fato que, na semântica denotacional, os tipos de dados correspondem aos CPOs algébricos , a menos que estejamos fazendo algo muito incomum.ωω

Agora podemos explicar por que todo mapa computável é contínuo. Suponha que e sejam CPOS computáveis. Suponha que , , é compacto e . Intuitivamente, isso diz que "informações finitas aparecem na saída ". Como é computável, deve-se calcular as informações acessando apenas uma quantidade finita de informações sobre , ou seja, existe um compacto tal que eDEωf:DExDeEeef(x)ef(x)fexdDdxef(d) . Este argumento deve ser comparado ao argumento da máquina de Turing acima. Nós estabelecemos:

Lema: Se é computável e para alguns e um compacto , então existe um compacto tal que e .f:DEef(x)xDeEdDdxef(d)

Podemos usar o lema para mostrar que um computável é contínuo. Suponha é uma cadeia em . Como é monótono, já sabemos que , mas também precisamos da desigualdade . Como é algébrico, basta mostrar que, sempre que é compacto e então . Portanto, assuma . Pelo lema, existe um compacto tal quefx0x1Dfif(xi)f(ixi)f(ixi)if(xi)EeEef(ixi)eif(xi)ef(ixi)dDdixi e . Como é compacto, existe tal que , portanto, pela monotonicidade de , temos . Acabamos.ef(d)djdxjfef(d)f(xj)if(xi)


Que definição de continuidade você está usando e como é semelhante à especificada? Não estou familiarizado com os termos conjunto aberto básico e topologia . Posso assumir que uma topologia nesse caso é análoga a um pedido?
user3389669

11
Estes são conceitos básicos em topologia, procure-os em qualquer livro sobre topologia. Eu não entendo direito. Você está escrevendo uma explicação sobre computabilidade e continuidade, mas não está familiarizado com a definição padrão de continuidade? (O que você está usando é um caso especial.) Ajudaria se você explicasse um pouco seus antecedentes e sua motivação. Talvez eu possa lhe dar conselhos melhores do que "aprender a andar antes de correr".
Andrej Bauer

Para ser sincero: sou estudante de ciência da computação e estou trabalhando na minha tese de mestrado. Minha tarefa é basicamente construir uma semântica denotacional para o cálculo lambda (como Dana Scott fez no início dos anos 70). Minha fonte principal é o livro »Semantik von Programmiersprachen«, de Rudolf Berghammer (alemão). A partir daí, tenho as definições. Infelizmente, nesse livro, a continuidade é motivada usando a teoria dos pontos fixos. Minha tese deve apresentar apenas o que é realmente necessário para construir o domínio adequado para um denot. sem. do cálculo lambda, então eu pulo essa parte.
user3389669

[continuação] Meu trabalho na construção e nas provas está concluído (também é um aspecto importante do meu trabalho estender as provas existentes para que não haja lacunas). Para dar um toque final à minha tese, quero motivar todas as definições de maneira intuitiva, para que possam ser facilmente lidas por outros jovens cientistas da computação. No entanto, como você pode ver, eu mesmo não tenho intuição.
user3389669

3
Obrigado pela explicação. Isso faz muito sentido. Primeiro, não acho que Dana Scott tenha usado CPOs. Ele usou redes contínuas e eu recomendo seus tipos de dados como redes . Isso lhe dará uma perspectiva histórica - cuidado para não inventar uma história falsa! Vou complementar minha resposta para motivar a continuidade dos CPOs.
Andrej Bauer
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.