O documento apresenta máquinas de Turing com memória limitada e prova que o problema Accept é decidível, enquanto o problema Empty é indecidível para este tipo de máquina. Apresenta reduções via histórias de computação e exemplos de máquinas de Turing com memória limitada resolvendo problemas de aceitação e não aceitação.
O documento discute os conceitos de microprogramação horizontal e vertical. A microprogramação horizontal controla diretamente as portas lógicas, enquanto a vertical codifica sinais para economizar bits. A vertical reduz o tamanho das microinstruções, mas aumenta o número necessário e reduz a velocidade. Dividindo o microprograma em memória de controle e nanomemória é possível economizar espaço quando há poucas instruções diferentes.
O documento discute computação paralela e como aproveitar o máximo desempenho dos processadores multicore e manycore. Resume que a capacidade computacional evoluiu mais rápido que o software, e que processamento paralelo é essencial para obter o máximo desempenho possível. Também apresenta técnicas como OpenMP, MPI e Intel Cilk Plus para dividir tarefas entre núcleos e aproveitar recursos como instruções SIMD.
Introdução ao desenvolvimento de firmwareselliando dias
O documento introduz os conceitos de firmware para sistemas embarcados, comparando arquiteturas de firmware estruturado e baseado em kernel. Também discute tópicos como desenvolvimento cruzado, ciclo de desenvolvimento, quantização, look-up tables e sistemas operacionais de tempo real.
Este documento apresenta os detalhes de uma disciplina de programação de sistemas embarcados, incluindo informações sobre local e horário das aulas, datas importantes, referências bibliográficas, tópicos abordados como linguagem C, hardware utilizado e ambiente de programação, e conceitos como diretivas de compilação e uso de arquivos .c e .h.
TDC2018SP | Trilha Go - Entendendo alocacao de memoria no Gotdc-globalcode
O documento discute alocação de memória no Go, explicando como o alocador do Go funciona baseado no TCMalloc. Ele descreve as três categorias de alocação (pequena, grande e minúscula), como as threads usam caches locais e como os objetos são alocados e liberados entre o cache, mcentral e mheap. O GC coleta objetos não utilizados para liberar memória periodicamente.
O documento discute a computação quântica, incluindo sua origem, princípios, aplicações e desenvolvimento tecnológico. Aborda conceitos como qubits, portas lógicas quânticas, algoritmos de Shor e Grover, e o primeiro computador quântico prático fabricado pela D-Wave. A computação quântica tem o potencial de resolver problemas complexos em tempo muito menor do que os computadores convencionais.
1. O documento apresenta uma coletânea de exercícios resolvidos relacionados com sinais e sistemas para alunos de engenharia informática.
2. Os exercícios estão organizados em capítulos sobre sinais discretos, representação no domínio do tempo para sistemas LTI discretos, transformada Z e sinais contínuos.
3. O documento fornece soluções detalhadas para exercícios retirados de livros de sinais e sistemas com o objetivo de apoiar o estudo dos al
O documento discute técnicas para reduzir a latência em jogos online, incluindo terminal burro, interpolação no cliente, predição no cliente, dead reckoning e rewind do servidor. A chave é sincronizar o estado entre cliente e servidor usando interpolação, predição e simulação para que os jogadores vejam os eventos o mais próximo possível do tempo real, apesar da latência na rede.
O documento discute os conceitos de microprogramação horizontal e vertical. A microprogramação horizontal controla diretamente as portas lógicas, enquanto a vertical codifica sinais para economizar bits. A vertical reduz o tamanho das microinstruções, mas aumenta o número necessário e reduz a velocidade. Dividindo o microprograma em memória de controle e nanomemória é possível economizar espaço quando há poucas instruções diferentes.
O documento discute computação paralela e como aproveitar o máximo desempenho dos processadores multicore e manycore. Resume que a capacidade computacional evoluiu mais rápido que o software, e que processamento paralelo é essencial para obter o máximo desempenho possível. Também apresenta técnicas como OpenMP, MPI e Intel Cilk Plus para dividir tarefas entre núcleos e aproveitar recursos como instruções SIMD.
Introdução ao desenvolvimento de firmwareselliando dias
O documento introduz os conceitos de firmware para sistemas embarcados, comparando arquiteturas de firmware estruturado e baseado em kernel. Também discute tópicos como desenvolvimento cruzado, ciclo de desenvolvimento, quantização, look-up tables e sistemas operacionais de tempo real.
Este documento apresenta os detalhes de uma disciplina de programação de sistemas embarcados, incluindo informações sobre local e horário das aulas, datas importantes, referências bibliográficas, tópicos abordados como linguagem C, hardware utilizado e ambiente de programação, e conceitos como diretivas de compilação e uso de arquivos .c e .h.
TDC2018SP | Trilha Go - Entendendo alocacao de memoria no Gotdc-globalcode
O documento discute alocação de memória no Go, explicando como o alocador do Go funciona baseado no TCMalloc. Ele descreve as três categorias de alocação (pequena, grande e minúscula), como as threads usam caches locais e como os objetos são alocados e liberados entre o cache, mcentral e mheap. O GC coleta objetos não utilizados para liberar memória periodicamente.
O documento discute a computação quântica, incluindo sua origem, princípios, aplicações e desenvolvimento tecnológico. Aborda conceitos como qubits, portas lógicas quânticas, algoritmos de Shor e Grover, e o primeiro computador quântico prático fabricado pela D-Wave. A computação quântica tem o potencial de resolver problemas complexos em tempo muito menor do que os computadores convencionais.
1. O documento apresenta uma coletânea de exercícios resolvidos relacionados com sinais e sistemas para alunos de engenharia informática.
2. Os exercícios estão organizados em capítulos sobre sinais discretos, representação no domínio do tempo para sistemas LTI discretos, transformada Z e sinais contínuos.
3. O documento fornece soluções detalhadas para exercícios retirados de livros de sinais e sistemas com o objetivo de apoiar o estudo dos al
O documento discute técnicas para reduzir a latência em jogos online, incluindo terminal burro, interpolação no cliente, predição no cliente, dead reckoning e rewind do servidor. A chave é sincronizar o estado entre cliente e servidor usando interpolação, predição e simulação para que os jogadores vejam os eventos o mais próximo possível do tempo real, apesar da latência na rede.
O documento discute técnicas de programação para máquinas de Turing, incluindo armazenamento no estado, várias trilhas e subrotinas. Estas técnicas permitem representar MTs de forma mais modular e eficiente, sem aumentar seu poder de cálculo. Exemplos ilustram como estas técnicas podem ser usadas para projetar MTs para problemas como aceitação de linguagens regulares e multiplicação.
O documento discute microcontroladores PIC e programação em linguagem C. Apresenta tópicos como estrutura interna dos microcontroladores PIC, declaração de variáveis, operadores, configuração de periféricos como ADCs e PWM, uso de interrupções e memória EEPROM. Inclui também exemplos de código C para controlar dispositivos com PIC.
O documento discute microcontroladores PIC e programação em linguagem C. Apresenta tópicos como estrutura interna dos microcontroladores PIC, declaração de variáveis, operadores, entrada e saída digital, conversor AD, interrupções e uso da memória EEPROM.
O documento descreve o método de acesso CSMA/CD utilizado em redes Ethernet. O CSMA/CD permite que várias estações compartilhem o mesmo meio de comunicação, detectando colisões através da monitoração do nível de voltagem no cabo. Quando uma colisão é detectada, as estações enviam um sinal de colisão e aguardam um tempo aleatório antes de retransmitirem os dados.
1. O documento discute interrupções e timers no microcontrolador PIC, especificamente no PIC16F877A.
2. Apresenta as características e funcionalidades dos timers TMR0, TMR1 e TMR2, assim como suas respectivas funções no compilador C.
3. Fornece um exemplo de como configurar o TMR0 para gerar interrupções a cada 1 segundo utilizando prescaling e contagem programada.
O microprocessador ez80190 possui características como clock de até 50MHz, CPU de 8 bits, endereçamento linear de 16MB e interface universal ZILOG. Ele inclui 6 timers programáveis, 32 bits de GPIO divididos em 4 portas e um Watchdog Timer com 4 períodos de intervalo programáveis. O dispositivo também suporta operações DMA e comunicação serial UART.
When and Why Your Code Starts to Smell BadCarlos Eduardo
O documento discute quando e por que códigos começam a feder mal, resumindo:
1) Analisou quando vários tipos de code smells surgem em projetos de software, encontrando que a maioria aparece logo após a criação da classe.
2) Classificou commits que introduziram code smells, encontrando que a maioria ocorreu para corrigir bugs ou adicionar novas funcionalidades.
3) Discutiu ameaças à validade do estudo como possíveis falsos positivos na detecção de code smells.
Experimentos envolvendo ações de Rejuvenescimento de SoftwareCarlos Eduardo
O documento descreve experimentos realizados para avaliar diferentes ações de rejuvenescimento de software, como reiniciar o computador, sistema operacional, processos e threads. Os resultados mostraram que o Linux teve melhores tempos para ações que envolvem o núcleo do sistema, enquanto o Windows foi melhor para ações internas à JVM. Reiniciar processos de forma graciosa evitou erros, mas aumentou levemente o tempo de resposta.
Programação Orientada a Objetos - Pós Graduação - Aula 8 - Bad Smells & Desig...Carlos Eduardo
Slides da oitava e última aula de Programação Orientada a Objetos no curso de Pós Graduação em Análise e Desenvolvimento Aplicados à Gestão Empresarial
O documento discute os princípios da programação orientada a objetos, como baixo acoplamento, alta coesão e programação voltada à interface. Também aborda tópicos como composição de comportamentos, evitar herança em favor da composição e cuidados com objetos mutáveis.
O documento descreve um vazamento de descritores de socket na JDK que não fechavam corretamente as conexões SSL, levando a um erro de "muitos arquivos abertos". O problema foi reproduzido executando um código de teste que abriu muitas conexões SSL sem fechá-las, resultando na falha após 9000 conexões.
Programação Orientada a Objetos - Pós Graduação - Aula 5 - refactoring com ho...Carlos Eduardo
O documento discute refatoração de código usando o padrão de projeto Hook Class. Especificamente, descreve como refatorar uma classe DAO usando herança para composição através da criação de uma interface e injeção de dependência na classe DAO.
O documento discute programação orientada a objetos, acoplamento e desacoplamento de classes. Ele apresenta como refatorar um código com alto acoplamento entre classes para diminuir essa dependência e torná-lo mais flexível e mantível através da introdução de uma classe ServiceLocator. O documento também explica como separar a lógica de negócio de um sistema desktop em um servidor, de forma que ambos possam evoluir de forma independente.
O documento descreve as etapas para construir um sistema MVC (Model View Controller) utilizando programação orientada a objetos em Java. Inicialmente, é criada a interface gráfica do usuário e em seguida são implementadas as classes de domínio, DAO e controlador para realizar o mapeamento objeto-relacional com Hibernate e permitir a comunicação entre a camada de visão e modelo. Por fim, são implementadas validações dos campos e removida a geração automática de tabelas no banco de dados.
Este documento discute programação orientada a objetos. Ele introduz os conceitos básicos de POO e destaca a importância de modelagem de classes. Também discute problemas comuns como código procedural disfarçado de POO e a dificuldade de mudança em projetos de classes complexos. Finalmente, fornece princípios e padrões de projeto orientados a objetos.
Detecting bad smells in source code using change history informationCarlos Eduardo
This document presents an approach called HIST to detect bad smells in source code by analyzing change history information extracted from version control systems. HIST detects 5 types of bad smells from Fowler's catalog by analyzing co-changes between source code artifacts. An evaluation of HIST on open source projects found it outperformed traditional static code analysis techniques, as it can detect smells characterized by how source code changes over time. Future work could explore hybrid detection approaches and applying HIST to other types of smells.
Recommending refactoring operations in large software systemsCarlos Eduardo
The document discusses algorithms for recommending refactoring operations in large software systems. It describes two main algorithms - a clustering-based algorithm and a graph-based algorithm. The clustering-based algorithm identifies groups of similar methods and entities that could be extracted into separate classes. The graph-based algorithm builds a matrix of relationships between methods and identifies strongly related chains of methods that could form candidate classes. Both algorithms were evaluated on open source systems and shown to effectively recommend extract class refactoring opportunities.
Mini Curso - Programação de Interfaces Gráficas - aula extra persistênciaCarlos Eduardo
Este documento resume um mini curso sobre programação de interfaces gráficas com Java e persistência de dados com Hibernate. Ele inclui instruções sobre como configurar um banco de dados JavaDB, mapear classes com anotações JPA, implementar um DAO para realizar operações CRUD e validar que os dados são persistidos corretamente.
Mini Curso - Programação de Interfaces Gráficas - aula 4Carlos Eduardo
Este documento resume a quarta aula de um mini curso sobre programação de interfaces gráficas. Os objetivos da aula incluem concluir o desenvolvimento do CRUD de fornecedores iniciado na aula anterior, criar o CRUD de produtos e distribuir o sistema usando Java Web Start. O documento também fornece instruções para implementar essas funcionalidades.
Mais conteúdo relacionado
Semelhante a Máquinas de turing com memória limitada
O documento discute técnicas de programação para máquinas de Turing, incluindo armazenamento no estado, várias trilhas e subrotinas. Estas técnicas permitem representar MTs de forma mais modular e eficiente, sem aumentar seu poder de cálculo. Exemplos ilustram como estas técnicas podem ser usadas para projetar MTs para problemas como aceitação de linguagens regulares e multiplicação.
O documento discute microcontroladores PIC e programação em linguagem C. Apresenta tópicos como estrutura interna dos microcontroladores PIC, declaração de variáveis, operadores, configuração de periféricos como ADCs e PWM, uso de interrupções e memória EEPROM. Inclui também exemplos de código C para controlar dispositivos com PIC.
O documento discute microcontroladores PIC e programação em linguagem C. Apresenta tópicos como estrutura interna dos microcontroladores PIC, declaração de variáveis, operadores, entrada e saída digital, conversor AD, interrupções e uso da memória EEPROM.
O documento descreve o método de acesso CSMA/CD utilizado em redes Ethernet. O CSMA/CD permite que várias estações compartilhem o mesmo meio de comunicação, detectando colisões através da monitoração do nível de voltagem no cabo. Quando uma colisão é detectada, as estações enviam um sinal de colisão e aguardam um tempo aleatório antes de retransmitirem os dados.
1. O documento discute interrupções e timers no microcontrolador PIC, especificamente no PIC16F877A.
2. Apresenta as características e funcionalidades dos timers TMR0, TMR1 e TMR2, assim como suas respectivas funções no compilador C.
3. Fornece um exemplo de como configurar o TMR0 para gerar interrupções a cada 1 segundo utilizando prescaling e contagem programada.
O microprocessador ez80190 possui características como clock de até 50MHz, CPU de 8 bits, endereçamento linear de 16MB e interface universal ZILOG. Ele inclui 6 timers programáveis, 32 bits de GPIO divididos em 4 portas e um Watchdog Timer com 4 períodos de intervalo programáveis. O dispositivo também suporta operações DMA e comunicação serial UART.
Semelhante a Máquinas de turing com memória limitada (6)
When and Why Your Code Starts to Smell BadCarlos Eduardo
O documento discute quando e por que códigos começam a feder mal, resumindo:
1) Analisou quando vários tipos de code smells surgem em projetos de software, encontrando que a maioria aparece logo após a criação da classe.
2) Classificou commits que introduziram code smells, encontrando que a maioria ocorreu para corrigir bugs ou adicionar novas funcionalidades.
3) Discutiu ameaças à validade do estudo como possíveis falsos positivos na detecção de code smells.
Experimentos envolvendo ações de Rejuvenescimento de SoftwareCarlos Eduardo
O documento descreve experimentos realizados para avaliar diferentes ações de rejuvenescimento de software, como reiniciar o computador, sistema operacional, processos e threads. Os resultados mostraram que o Linux teve melhores tempos para ações que envolvem o núcleo do sistema, enquanto o Windows foi melhor para ações internas à JVM. Reiniciar processos de forma graciosa evitou erros, mas aumentou levemente o tempo de resposta.
Programação Orientada a Objetos - Pós Graduação - Aula 8 - Bad Smells & Desig...Carlos Eduardo
Slides da oitava e última aula de Programação Orientada a Objetos no curso de Pós Graduação em Análise e Desenvolvimento Aplicados à Gestão Empresarial
O documento discute os princípios da programação orientada a objetos, como baixo acoplamento, alta coesão e programação voltada à interface. Também aborda tópicos como composição de comportamentos, evitar herança em favor da composição e cuidados com objetos mutáveis.
O documento descreve um vazamento de descritores de socket na JDK que não fechavam corretamente as conexões SSL, levando a um erro de "muitos arquivos abertos". O problema foi reproduzido executando um código de teste que abriu muitas conexões SSL sem fechá-las, resultando na falha após 9000 conexões.
Programação Orientada a Objetos - Pós Graduação - Aula 5 - refactoring com ho...Carlos Eduardo
O documento discute refatoração de código usando o padrão de projeto Hook Class. Especificamente, descreve como refatorar uma classe DAO usando herança para composição através da criação de uma interface e injeção de dependência na classe DAO.
O documento discute programação orientada a objetos, acoplamento e desacoplamento de classes. Ele apresenta como refatorar um código com alto acoplamento entre classes para diminuir essa dependência e torná-lo mais flexível e mantível através da introdução de uma classe ServiceLocator. O documento também explica como separar a lógica de negócio de um sistema desktop em um servidor, de forma que ambos possam evoluir de forma independente.
O documento descreve as etapas para construir um sistema MVC (Model View Controller) utilizando programação orientada a objetos em Java. Inicialmente, é criada a interface gráfica do usuário e em seguida são implementadas as classes de domínio, DAO e controlador para realizar o mapeamento objeto-relacional com Hibernate e permitir a comunicação entre a camada de visão e modelo. Por fim, são implementadas validações dos campos e removida a geração automática de tabelas no banco de dados.
Este documento discute programação orientada a objetos. Ele introduz os conceitos básicos de POO e destaca a importância de modelagem de classes. Também discute problemas comuns como código procedural disfarçado de POO e a dificuldade de mudança em projetos de classes complexos. Finalmente, fornece princípios e padrões de projeto orientados a objetos.
Detecting bad smells in source code using change history informationCarlos Eduardo
This document presents an approach called HIST to detect bad smells in source code by analyzing change history information extracted from version control systems. HIST detects 5 types of bad smells from Fowler's catalog by analyzing co-changes between source code artifacts. An evaluation of HIST on open source projects found it outperformed traditional static code analysis techniques, as it can detect smells characterized by how source code changes over time. Future work could explore hybrid detection approaches and applying HIST to other types of smells.
Recommending refactoring operations in large software systemsCarlos Eduardo
The document discusses algorithms for recommending refactoring operations in large software systems. It describes two main algorithms - a clustering-based algorithm and a graph-based algorithm. The clustering-based algorithm identifies groups of similar methods and entities that could be extracted into separate classes. The graph-based algorithm builds a matrix of relationships between methods and identifies strongly related chains of methods that could form candidate classes. Both algorithms were evaluated on open source systems and shown to effectively recommend extract class refactoring opportunities.
Mini Curso - Programação de Interfaces Gráficas - aula extra persistênciaCarlos Eduardo
Este documento resume um mini curso sobre programação de interfaces gráficas com Java e persistência de dados com Hibernate. Ele inclui instruções sobre como configurar um banco de dados JavaDB, mapear classes com anotações JPA, implementar um DAO para realizar operações CRUD e validar que os dados são persistidos corretamente.
Mini Curso - Programação de Interfaces Gráficas - aula 4Carlos Eduardo
Este documento resume a quarta aula de um mini curso sobre programação de interfaces gráficas. Os objetivos da aula incluem concluir o desenvolvimento do CRUD de fornecedores iniciado na aula anterior, criar o CRUD de produtos e distribuir o sistema usando Java Web Start. O documento também fornece instruções para implementar essas funcionalidades.
Mini Curso - Programação de Interfaces Gráficas - aula 3Carlos Eduardo
O documento descreve as etapas para concluir o desenvolvimento de um CRUD (criar, ler, atualizar, deletar) de fornecedores em uma aplicação Java usando o framework NetBeans. Inclui instruções para adicionar classes de domínio, DAO, controle e visualização, além de vincular campos, adicionar eventos de salvar, excluir e limpar campos.
Mini Curso - Programação de Interfaces Gráficas - aula 2Carlos Eduardo
Este documento descreve a segunda aula de um mini-curso sobre programação de interfaces gráficas. Os objetivos da aula são internacionalizar o aplicativo e criar CRUDs no padrão MVC. É explicado como internacionalizar o aplicativo para diferentes idiomas e como criar frames internos para diferentes telas. Também é mostrado como criar a tela de fornecedor no padrão MVC.
Mini Curso - Programação de Interfaces Gráficas - aula 1Carlos Eduardo
Este documento apresenta um mini curso sobre programação de interfaces gráficas com Swing. Ele discute a criação de um projeto em NetBeans usando o padrão MVC e vinculação de componentes com Beans Binding. O documento também fornece uma visão geral dos principais componentes Swing e do framework.
O documento discute o gerenciamento de bancos de dados NoSQL, apresentando conceitos como modelos de dados chave-valor, orientado a documentos e família de colunas. Exemplos de bancos NoSQL como MongoDB, Neo4j e Cassandra são apresentados.
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...Faga1939
Este artigo tem por objetivo apresentar como ocorreu a evolução do consumo e da produção de energia desde a pré-história até os tempos atuais, bem como propor o futuro da energia requerido para o mundo. Da pré-história até o século XVIII predominou o uso de fontes renováveis de energia como a madeira, o vento e a energia hidráulica. Do século XVIII até a era contemporânea, os combustíveis fósseis predominaram com o carvão e o petróleo, mas seu uso chegará ao fim provavelmente a partir do século XXI para evitar a mudança climática catastrófica global resultante de sua utilização ao emitir gases do efeito estufa responsáveis pelo aquecimento global. Com o fim da era dos combustíveis fósseis virá a era das fontes renováveis de energia quando prevalecerá a utilização da energia hidrelétrica, energia solar, energia eólica, energia das marés, energia das ondas, energia geotérmica, energia da biomassa e energia do hidrogênio. Não existem dúvidas de que as atividades humanas sobre a Terra provocam alterações no meio ambiente em que vivemos. Muitos destes impactos ambientais são provenientes da geração, manuseio e uso da energia com o uso de combustíveis fósseis. A principal razão para a existência desses impactos ambientais reside no fato de que o consumo mundial de energia primária proveniente de fontes não renováveis (petróleo, carvão, gás natural e nuclear) corresponde a aproximadamente 88% do total, cabendo apenas 12% às fontes renováveis. Independentemente das várias soluções que venham a ser adotadas para eliminar ou mitigar as causas do efeito estufa, a mais importante ação é, sem dúvidas, a adoção de medidas que contribuam para a eliminação ou redução do consumo de combustíveis fósseis na produção de energia, bem como para seu uso mais eficiente nos transportes, na indústria, na agropecuária e nas cidades (residências e comércio), haja vista que o uso e a produção de energia são responsáveis por 57% dos gases de estufa emitidos pela atividade humana. Neste sentido, é imprescindível a implantação de um sistema de energia sustentável no mundo. Em um sistema de energia sustentável, a matriz energética mundial só deveria contar com fontes de energia limpa e renováveis (hidroelétrica, solar, eólica, hidrogênio, geotérmica, das marés, das ondas e biomassa), não devendo contar, portanto, com o uso dos combustíveis fósseis (petróleo, carvão e gás natural).
ATIVIDADE 1 - ADSIS - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
Em determinadas ocasiões, dependendo dos requisitos de uma aplicação, pode ser preciso percorrer todos os elementos de uma árvore para, por exemplo, exibir todo o seu conteúdo ao usuário. De acordo com a ordem de visitação dos nós, o usuário pode ter visões distintas de uma mesma árvore.
Imagine que, para percorrer uma árvore, tomemos o nó raiz como nó inicial e, a partir dele, comecemos a visitar todos os nós adjacentes a ele para, só então, começar a investigar os outros nós da árvore. Por outro lado, imagine que tomamos um nó folha como ponto de partida e caminhemos em direção à raiz, visitando apenas o ramo da árvore que leva o nó folha à raiz. São maneiras distintas de se visualizar a mesma árvore.
Tome a árvore binária a seguir como base para realizar percursos que partirão sempre da raiz (nó 1).
Figura 1 - Árvore binária
Fonte: OLIVEIRA, P. M. de; PEREIRA, R. de L. Estruturas de Dados II. Maringá: UniCesumar, 2019. p. .
Com base na árvore anterior, responda quais seriam as ordens de visitação, partindo da raiz:
a) Percorrendo a árvore pelo algoritmo Pré-Ordem.
b) Percorrendo a árvore pelo algoritmo Em-Ordem.
c) Percorrendo a árvore pelo algoritmo Pós-Ordem.
Obs.: como resposta, informar apenas os caminhos percorridos em cada Situação:
a) Pré-ordem: X - Y - Z.
b) Em-ordem: X - Y - Z.
c) Pós-ordem: X - Y - Z.
ATENÇÃO!
- Você poderá elaborar sua resposta em um arquivo de texto .txt e, após revisado, copiar e colar no campo destinado à resposta na própria atividade em seu STUDEO.
- Plágios e cópias indevidas serão penalizados com nota zero.
- As perguntas devem ser respondidas de forma adequada, ou seja, precisam ser coerentes.
- Antes de enviar sua atividade, certifique-se de que respondeu todas as perguntas e não se esqueceu nenhum detalhe. Após o envio, não são permitidas alterações. Por favor, não insista.
- Não são permitidas correções parciais no decorrer do módulo, isso invalida seu processo avaliativo. A interpretação da atividade faz parte da avaliação.
- Atenção ao prazo de entrega da atividade. Sugerimos que envie sua atividade antes do prazo final para evitar transtornos e lentidão nos servidores. Evite o envio de atividade em cima do prazo.
A linguagem C# aproveita conceitos de muitas outras linguagens,
mas especialmente de C++ e Java. Sua sintaxe é relativamente fácil, o que
diminui o tempo de aprendizado. Todos os programas desenvolvidos devem
ser compilados, gerando um arquivo com a extensão DLL ou EXE. Isso torna a
execução dos programas mais rápida se comparados com as linguagens de
script (VBScript , JavaScript) que atualmente utilizamos na internet
Este certificado confirma que Gabriel de Mattos Faustino concluiu com sucesso um curso de 42 horas de Gestão Estratégica de TI - ITIL na Escola Virtual entre 19 de fevereiro de 2014 a 20 de fevereiro de 2014.
As classes de modelagem podem ser comparadas a moldes ou
formas que definem as características e os comportamentos dos
objetos criados a partir delas. Vale traçar um paralelo com o projeto de
um automóvel. Os engenheiros definem as medidas, a quantidade de
portas, a potência do motor, a localização do estepe, dentre outras
descrições necessárias para a fabricação de um veículo
Em um mundo cada vez mais digital, a segurança da informação tornou-se essencial para proteger dados pessoais e empresariais contra ameaças cibernéticas. Nesta apresentação, abordaremos os principais conceitos e práticas de segurança digital, incluindo o reconhecimento de ameaças comuns, como malware e phishing, e a implementação de medidas de proteção e mitigação para vazamento de senhas.
1. Redução via Histórias de
Computação em Máquinas de
Turing com memória limitada
Pós Graduação em Ciência da ComputaçãoPós Graduação em Ciência da Computação
Aluno: Carlos Eduardo DantasAluno: Carlos Eduardo Dantas
2. Máquinas de Turing com Memória LimitadaMáquinas de Turing com Memória Limitada
ObjetivosObjetivos
• Apresentar as reduções por histórias de
computação e as Máquinas de Turing com
memória limitada;
• Provar que o problema Accept é decidível
para este tipo de máquina;
• Provar via redução por histórias de
computação que o problema Empty é
indecidível para este tipo de máquina.
3. Máquinas de Turing com Memória LimitadaMáquinas de Turing com Memória Limitada
Revisão - redutibilidadeRevisão - redutibilidade
• Uma redução é uma maneira de converter
um problema em outro, onde a solução
para o segundo problema seja usada para
resolver o primeiro.
• A ≤ B ( A se reduz a B)
• Resolver A não pode ser mais difícil que
resolver B
• Se B for decidível, A também será.
• Se A for indecidível, B também será
4. Máquinas de Turing com Memória LimitadaMáquinas de Turing com Memória Limitada
Redução via Histórias deRedução via Histórias de
ComputaçãoComputação
• O método da história de computação é
uma técnica para provar que ATM é
redutível a certas linguagens;
• Esse método é útil quando o problema a
ser mostrado como indecidível envolve
testar a existência de algo;
• Por exemplo, a indecidibilidade do 10º
problema de Hilbert: testar a existência de
raízes inteiras em um polinômio.
5. Máquinas de Turing com Memória LimitadaMáquinas de Turing com Memória Limitada
Redução via Histórias deRedução via Histórias de
ComputaçãoComputação
• A história de computação para uma MT
sobre uma entrada é a seqüência de
configurações pelas quais MT passa a
medida em que ela processa a entrada;
• Uma configuração é como uma fotografia
instantânea no meio de sua computação;
• Uma configuração é constituída do estado
do controle, posição da cabeça e conteúdo
da fita.
6. Máquinas de Turing com Memória LimitadaMáquinas de Turing com Memória Limitada
Redução via Histórias deRedução via Histórias de
Computação - DefiniçãoComputação - Definição
• Seja M uma MT e w uma cadeia de entrada.
• Uma história de computação de aceitação para M
sobre w é uma seqüência de configurações, C1,
C2,...,Cn, onde:
• C1 é a configuração inicial de M sobre w,
• Cn é uma configuração de aceitação de M, e
• Cada Ci segue de Ci-1 conforme as regras de M.
• Uma história de computação de rejeição para M
sobre w é definida similarmente, exceto que Cn é
de rejeição.
7. Máquinas de Turing com Memória LimitadaMáquinas de Turing com Memória Limitada
Redução via Histórias deRedução via Histórias de
Computação - DefiniçãoComputação - Definição
• Histórias de computação são seqüências finitas.
• Se M não pára sobre w, nenhuma história de
computação de aceitação ou de rejeição existe
para M sobre w.
• MTs determinísticas têm no máximo uma
história de computação sobre qualquer entrada;
• Provas de indecidibilidade usando o método de
história de computação podem ser usadas em
máquinas de turing com memória limitada.
8. Máquinas de Turing com Memória LimitadaMáquinas de Turing com Memória Limitada
Máquinas de Turing comMáquinas de Turing com
memória limitadamemória limitada
• Também são chamados de Autômato
Linearmente Limitado (ALL);
• Tipo restrito de Máquina de Turing na
qual à cabeça de leitura-escrita não é
permitido mover-se para fora da parte da
fita contendo a entrada.
9. Máquinas de Turing com Memória LimitadaMáquinas de Turing com Memória Limitada
Definição formalDefinição formal
• = Conjunto de estados;
• = alfabeto de entrada;
• = alfabeto da fita, onde {<,>} E ;
• = função de transição;
• = estado inicial;
• = estado de aceitação;
• = estado de rejeição, onde t != r.
10. Máquinas de Turing com Memória LimitadaMáquinas de Turing com Memória Limitada
RestriçõesRestrições
• A Máquina M não pode modificar os
caracteres {<,>} por nenhum outro, nem
mover a fita para fora das extremidades
{<,>};
• Resolve apenas problemas que requerem
memória que possa caber dentro da fita
usada para a entrada;
• Para uma entrada de comprimento n, a
quantidade de memória disponível é
linear em n.
11. Máquinas de Turing com Memória LimitadaMáquinas de Turing com Memória Limitada
Poder computacionalPoder computacional
• Os decisores para AAFD,AGLC,EAFD e EGLC são
todos ALLs;
• Toda LLC pode ser decidida por um ALL.
12. Máquinas de Turing com Memória LimitadaMáquinas de Turing com Memória Limitada
O problemaO problema AALL
• AALL= {<M,w>| M é um ALL que aceita a
cadeia w};
• Observa-se que a descrição é semelhante
ao AMT;
• Com o método da diagonalização, foi
provado que AMTé indecidível;
• Será provado que AALLé decidível.
13. Máquinas de Turing com Memória LimitadaMáquinas de Turing com Memória Limitada
LemaLema
• Seja M um ALL com q estados e g
símbolos no alfabeto de fita. Existem
exatamente qngn
configurações distintas
de M para uma fita de comprimento n.
• M tem q estados;
• O comprimento de sua fita é n;
• A cabeça pode estar em uma das n
posições, e gn
cadeias possíveis de
símbolos de fita aparecem sobre a fita.
14. Máquinas de Turing com Memória LimitadaMáquinas de Turing com Memória Limitada
LemaLema
• Ex: Seja M um ALL com q = 3 estados, g =
4 símbolos no alfabeto, e uma fita de
entrada com comprimento n = 5, temos
15360 possíveis configurações distintas
para a máquina M.
15. Máquinas de Turing com Memória LimitadaMáquinas de Turing com Memória Limitada
Teorema:Teorema: AALL é decidívelé decidível
• Como M é um ALL, a quantidade de fita é
limitada, logo a repetição de uma
configuração continuamente caracteriza
um loop.
16. Máquinas de Turing com Memória LimitadaMáquinas de Turing com Memória Limitada
Teorema:Teorema: AALL é decidívelé decidível
• Prova: o algoritmo que decide AALL é como
segue:
• L = “Sobre a entrada <M,w>, onde M é
um ALL e w é uma cadeia:
1. Simule M sobre w por passos ou até
que ela pare;
2. Se M parou, aceite se ela aceitou e rejeite se
ela rejeitou. Se ela não parou, rejeite”.
17. Máquinas de Turing com Memória LimitadaMáquinas de Turing com Memória Limitada
Exemplo 1Exemplo 1
• = {q0,q1,qa,qr}
• = {0}
• = {0,<,>}
• =
• = q0
• = qa
• = qr
(q0,<) (q0,<,R)
(q0,>) (qr,>,L)
(q0,0) (q1,0,R)
(q1,>) (qa,>,L)
(q1,0) (q0,0,R)
18. Máquinas de Turing com Memória LimitadaMáquinas de Turing com Memória Limitada
Exemplo 1Exemplo 1
• Segue a execução da máquina sobre a
entrada w = 000. Segue o histórico de
computação:
• Para o input 000, = 4x3x33
= 324,
logo, com 6 movimentos, a máquina parou
antes do limite de passos, aceitando.
q0<000>
<qo000>
<0q100>
<00qo0>
<000q1>
<00qa0>
19. Máquinas de Turing com Memória LimitadaMáquinas de Turing com Memória Limitada
Exemplo 2Exemplo 2
• = {q0,q1,qa,qr}
• = {0}
• = {0,<,>}
• =
• = q0
• = qa
• = qr
(q0,<) (q0,<,R)
(q0,>) (qr,>,L)
(q0,0) (q1,0,R)
(q1,>) (q1,>,L)
(q1,0) (q0,0,R)
20. Máquinas de Turing com Memória LimitadaMáquinas de Turing com Memória Limitada
Exemplo 2Exemplo 2
• Segue a execução da máquina sobre a
entrada w = 000. Segue o histórico de
computação:
• Para o input 000, = 4x3x33
= 324,
logo, com 324 movimentos, a máquina
parou no limite de passos, caracterizando
um loop.
q0<000> <0q10>>
<qo000> <q10>>>
<0q100> <q1>>>>
<00qo0> <q1>>>>
<000q1> <q1>>>>
<00q10> <q1>>>>...
21. Máquinas de Turing com Memória LimitadaMáquinas de Turing com Memória Limitada
Teorema: ETeorema: EALLALL é indecidívelé indecidível
• Se AALL é decidível, como provar que EALL é
indecidível?
• EALL = {<M>|M é um ALL onde L(M) =
empty};
• Deverá ser feita uma redução de ATM para
EALL , contudo utilizando um método
diferente, denominado de redução por
história de computação.
22. Máquinas de Turing com Memória LimitadaMáquinas de Turing com Memória Limitada
Teorema: ETeorema: EALLALL é indecidívelé indecidível
• IDÉIA DA PROVA: Essa prova é por redução a
partir de ATM. Se EALL fosse decidível, ATM também
seria.
• Suponha que EALL seja decidível.
• Para uma MT M e uma entrada w podemos
determinar se M aceita w construindo um certo
ALL B e então testando se L(B) é vazia.
• A linguagem que B reconhece compreende todas
as histórias de computação de aceitação para M
sobre w.
23. Máquinas de Turing com Memória LimitadaMáquinas de Turing com Memória Limitada
Teorema: ETeorema: EALLALL é indecidívelé indecidível
• Se M aceita w, L(B) contém uma cadeia e,
portanto, é não vazia. Se M não aceita w, L(B) é
vazia;
• A construção de B se caracteriza por uma única
cadeia, com as configurações separadas pelo
símbolo #.
24. Máquinas de Turing com Memória LimitadaMáquinas de Turing com Memória Limitada
Teorema: ETeorema: EALLALL é indecidívelé indecidível
• Quando ALL B receber uma entrada x, B quebra
x em cadeias C1#C2#...#Cn, e determina se Ci
satisfaz as três condições de uma história de
computação de aceitação:
1 - C1 é a configuração inicial para M sobre w.
2 - Cada Ci+1 segue ligitimamente de Ci.
3 - Cn é uma configuração de aceitação para M.
25. Máquinas de Turing com Memória LimitadaMáquinas de Turing com Memória Limitada
Teorema: ETeorema: EALLALL é indecidívelé indecidível
• Com ALL B decidindo, é possível decidir ATM,
pela redução abaixo, obtendo uma contradição:
• MT R decide EALL. MT S decide AMT
S = “Sobre a entrada <M,w>, onde M é uma MT e
w, uma cadeia:
1 - Construa o ALL B a partir de M e w.
2 - Rode R sobre a entrada <B>
3 - Se R rejeita, aceite; se R aceita, rejeite.”
26. Máquinas de Turing com Memória LimitadaMáquinas de Turing com Memória Limitada
ConclusõesConclusões
• Máquinas de Turing com memória limitada são
poderosas como reconhecedores e o problema
Accept pode ser decidível a partir destas;
• Outros problemas como o Empty permanecem
indecidíveis mesmo neste tipo de máquina, com
memória limitada.
27. Máquinas de Turing com Memória LimitadaMáquinas de Turing com Memória Limitada
ReferênciasReferências
• [1] Sipser, Michael. Introdução à teoria da
computação / Michael Sipser.Thomsom
Learning, 2007;
• [2] Martin, John . "Introduction to Languages
and the Theory of Computation " , Tata
McGraw-Hill, Third Edition;
• [3]
http://www.cs.uky.edu/~lewis/texts/theory/autom
• [4]
http://www.fit.vutbr.cz/~janousek/vyuka/vsl2/ne