ALGORITMO DISTRIBUÍDO PARA EXPLORAÇÃO DE CLÁUSULAS COM BOUNDED MODEL CHECKING ATRAVÉS DE UMA BUSCA EM PROFUNDIDADE

Tamanho: px
Começar a partir da página:

Download "ALGORITMO DISTRIBUÍDO PARA EXPLORAÇÃO DE CLÁUSULAS COM BOUNDED MODEL CHECKING ATRAVÉS DE UMA BUSCA EM PROFUNDIDADE"

Transcrição

1 PONTIFÍCIA UNIVERIDADE CATÓLICA DE MINA GERAI Departamento de Ciência da Computação ALGORITMO DITRIBUÍDO PARA EXPLORAÇÃO DE CLÁUULA COM BOUNDED MODEL CHECKING ATRAVÉ DE UMA BUCA EM PROFUNDIDADE Júlio César Vale Neves Belo Horizonte 2009

2 Júlio César Vale Neves ALGORITMO DITRIBUÍDO PARA EXPLORAÇÃO DE CLÁUULA COM BOUNDED MODEL CHECKING ATRAVÉ DE UMA BUCA EM PROFUNDIDADE Dissertação de Mestrado apresentada ao Programa de Pós-Graduação em Informática da Pontifícia Universidade Católica de Minas Gerais para obtenção do título de Mestre em Informática. Belo Horizonte 2009

3 FICHA CATALOGRÁFICA Elaborada pela Biblioteca da Pontifícia Universidade Católica de Minas Gerais N518a Neves, Júlio César Vale Algoritmo distribuído para exploração de cláusulas com bounded model checking através de uma busca em profundidade. / Júlio César Vale Neves. Belo Horizonte, f. : il. Orientador: Mark Alan Junho ong. Dissertação (Mestrado) Pontifícia Universidade Católica de Minas Gerais. Programa de Pós-graduação em Informática. Bibliografia. 1. Algoritmos Teses. 2. Algoritmos de computador I. ong, Mark Alan Junho. II. Pontifícia Universidade Católica de Minas Gerais. III. Título Bibliotecário: Fernando A. Dias CRB6/1084 CDU:

4

5 Dedico, principalmente, a minha esposa, Cinthia, pela paciência, apoio e companheirismo dedicado por todos esses anos. Ao meu orientador Mark ong, primeiramente por ter me aceitado como orientando, pelos ensinamentos, dedicação e esforço. A meu pai e minha mãe, principalmente por serem peças fundamentais da minha existência. Aos meus irmãos que sempre foram, para mim, exemplos de vida.

6 REUMO Nos últimos anos, novos e eficientes algoritmos de Verificação de Modelos têm sido desenvolvidos. Uma técnica, Verificação de Modelos por Fronteira ou Bounded Model Checking (BMC), tem sido particularmente promissora. BMC modela o sistema a ser verificado como fórmulas booleanas que satisfazem atribuições provendo contra-exemplos. Este trabalho apresenta um algoritmo distribuído utilizando uma abordagem em profundidade, utilizando o conceito de Verificação de Modelos por Fronteira. O modelo proposto divide o problema em vários solucionadores: Master, Primários e ecundários. Desta forma, a verificação é processada em diversas máquinas homogêneas. Este modelo em cluster permite explorar a simetria das cláusulas do modelo. Os resultados obtidos demonstram que este modelo ou particionamento através de uma abordagem em profundidade obtém ganhos significativos da ordem de 35% em relação ao tempo de resposta.

7 ABTRACT In the last few years, new and efficient algorithms for verification of models have been developed. A method, called Bounded Model Checking (BMC), has been particularly promising. The system to be checked by BMC is modeled as boolean formulas which satisfies the attributions providing counter-examples. This paper presents a distributed algorithm using a depth-first approach, using the BMC s concept. The proposed model breaks down the problem into many solutions: Master, Primary and econdary. In this way, the verification is processed in similar computers. This model allows to explore the model s clauses symmetry. The achieved results show that this model or partitioning through depth-first approach obtain significant gain of 35% related to the response time.

8 v umário LITA DE FIGURA...VII LITA DE TABELA... IX LITA DE ABREVIAÇÕE...X CAPÍTULO 1 INTRODUÇÃO MOTIVAÇÃO JUTIFICATIVA OBJETIVO PROBLEMA ORGANIZAÇÃO DO TRABALHO...14 CAPÍTULO 2 FUNDAMENTAÇÃO TEÓRICA INTRODUÇÃO VERIFICAÇÃO DE MODELO ETRUTURA KRIPKE DIAGRAMA BINÁRIO DE DECIÃO LÓGICA TEMPORAI Lógica Temporal Linear Lógica de Árvore de Computação ATIFABILIDADE Forma Normal Conjuntiva MÉTODO DPLL Heurísticas de Dedução Diagnóstico, Retrocesso e Aprendizado BOUNDED MODEL CHECKING...32 CAPÍTULO 3 TRABALHO RELACIONADO...36 CAPÍTULO 4 ABORDAGEM PROPOTA PARTICIONAMENTO...44 CAPÍTULO 5 REULTADO AMBIENTE COMPUTACIONAL Modelos imulações com K definido imulações com K indefinido...54

9 vi 5.2 REULTADO FINAI Modelo dme5.smv...58 CAPÍTULO 6 CONCLUÃO E TRABALHO FUTURO CONCLUÃO TRABALHO FUTURO...63 REFERÊNCIA BIBLIOGRÁFICA...64 APÊNDICE A...67 APÊNDICE B...72 APÊNDICE C...85

10 vii Lista de Figuras Figura 2.1 Modelo da comunicação entre transmissor e receptor...18 Figura 2.2 Construção de BDD...22 Figura 2.3 eqüência de estados para fórmula LTL básicas...24 Figura 2.4 Estados que obedecem a fórmulas CTL básicas...26 Figura 2.5 Exemplo BMC...33 Figura 3.1 Abordagem distribuída de Barros (2004)...40 Figura 4.1 Abordagem proposta utilizando vários solucionadores primários e secundários 42 Figura 4.2 Abordagem proposta utilizando vários solucionadores primários, secundários e Master...43 Figura 5.1 Tempos de resposta obtidos do modelo dme5.smv com cluster de 8 computadores (k definido)...51 Figura 5.2 Tempos de resposta obtidos do modelo dme5.smv com cluster de 12 computadores (k definido)...52 Figura 5.3 Tempos de resposta obtidos do modelo dme5.smv com cluster de 18 computadores (k definido)...53 Figura 5.4 Tempos de resposta obtidos do modelo dme5.smv com cluster de 8 computadores (k indefinido)...55 Figura 5.5 Tempos de resposta obtidos do modelo dme5.smv com cluster de 12 computadores (k indefinido)...56 Figura 5.6 Tempos de resposta obtidos do modelo dme5.smv com cluster de 18 computadores (k indefinido)...57 Figura 5.7 Utilização da memória do modelo dme5.smv...59 Figura 5.8 Quantidade de cláusulas do modelo dme5.smv...60 Figura 5.9 Tempo de resposta do modelo dme5.smv...61 Figura B.1 Utilização da memória do modelo dme8.smv...73 Figura B.2 Quantidade de cláusula do modelo dme8.smv...73 Figura B.3 Tempo de resposta do modelo dme8.smv...74

11 viii Figura B.4 Utilização da memória do modelo dme10.smv...75 Figura B.5 Quantidade de cláusula do modelo dme10.smv...76 Figura B.6 Tempo de resposta do modelo dme10.smv...76 Figura B.7 Utilização da memória do modelo dme20.smv...77 Figura B.8 Quantidade de cláusula do modelo dme20.smv...78 Figura B.9 Tempo de resposta do modelo dme20.smv...78 Figura B.10 Utilização da memória do modelo periodic.smv...79 Figura B.11 Quantidade de cláusula do modelo periodic.smv...80 Figura B.12 Tempo de resposta do modelo periodic.smv...80 Figura B.13 Utilização da memória do modelo p-queue.smv...81 Figura B.14 Quantidade de cláusula do modelo p-queue.smv...82 Figura B.15 Tempo de resposta do modelo p-queue.smv...82 Figura B.16 Utilização da memória do modelo gigamax_ltl.smv...83 Figura B.17 Quantidade de cláusula do modelo gigamax_ltl.smv...84 Figura B.18 Tempo de resposta do modelo gigamax_ltlt.smv...84

12 ix Lista de Tabelas Tabela 3.1 As sete regras de talmarck...37 Tabela 3.2 Resultados das simulações para programas DME5 e DME Tabela 5.1 Modelos para experimentos...50 Tabela 5.2 Resultados obtidos com cluster de 8 computadores (k definido)...51 Tabela 5.3 Resultados obtidos com cluster de 12 computadores (k definido)...52 Tabela 5.4 Resultados obtidos com cluster de 18 computadores (k definido)...53 Tabela 5.5 Resultados obtidos com cluster de 8 computadores (k indefinido)...54 Tabela 5.6 Resultados obtidos com cluster de 12 computadores (k indefinido)...56 Tabela 5.7 Resultados obtidos com cluster de 18 computadores (k indefinido)...57

13 x Lista de Abreviações BCP BDD BMC CNF CTL DBMC DP DLL DPLL LAM LTL MPI RBC AT VID Boolean Constraint Propagation Bynary Diagram Decision (Diagramas Binários de Decisão) Bounded Model Checking (Verificação de Modelo por Fronteira) Conjunctive Normal Forme (Forma Normal Conjuntiva) Computation Tree Logic (Lógica de Árvore de Computação) Distributed Bounded Model Checking (Verificação de Modelo por Fronteira Distribuído) Davis-Putnam Davis-Logemann-Loveland Davis, Putnam, Longemann e Loveland Local Area Multicomputer Linear Temporal Logic (Lógica Temporal Linear) Message Passing Interface Reduced Boolean Circuit atisfiability Variable tate Independent Decaying um

14 11 Capítulo 1 Introdução 1.1 Motivação A limitada capacidade humana em modelar sistemas e implementá-los com um alto nível de confiança é o grande fator motivador desta pesquisa - falhas são uma constante em qualquer sistema de computação. Diversas abordagens podem ser utilizadas para reduzir a probabilidade de falhas em um sistema. Testes e simulações, por exemplo, são técnicas comuns que tentam atingir tal objetivo. Estas abordagens, empregadas em um estado inicial de projeto quando o mesmo está repleto de falhas, certamente produzirão resultados satisfatórios. Entretanto, com sua evolução, dificilmente conseguirão detectar a presença de erros mais sutis visto que testar ou simular todas as situações possíveis é inviável de acordo com Myers (2004). Enquanto testes e simulações exploram apenas algumas possibilidades de cenários em um sistema, a abordagem de verificação de modelos faz uma exploração exaustiva de todos os cenários possíveis, segundo Clarke, Grumberg e Peled (1999). Nessa técnica, uma propriedade comportamental é verificada sobre um modelo formal do sistema através da enumeração exaustiva de todos os estados alcançáveis. Quando comparada a outras técnicas, a verificação de modelos apresenta duas vantagens: a primeira é justificada por ser totalmente automática e sua aplicação não necessita da supervisão de nenhum especialista. A segunda: quando detectada uma falha, um contra-exemplo é sempre demonstrado busca-se exibir as etapas da computação que geraram tal inconsistência. Por outro lado a verificação de modelos possui limitações. O tamanho do modelo a ser gerado pode se tornar inadequado e impossível de ser representado na memória. Entretanto, diversos estudos têm contribuído para a solução do problema. Existem técnicas, por exemplo,

15 12 que possibilitam a quebra do modelo e a análise das partes em separado, segundo Burch et al (1990) e McMillan (1992). Basicamente, a verificação de modelos efetua uma busca em largura do espaço de estados representados por diagramas binários de decisão (BDD), conforme Bryant (1986). BDDs representam funções características do conjunto de estados e permitem a computação das transições entre os mesmos ao invés de estados individuais. O primeiro verificador baseado em BDDs foi capaz de verificar modelos de significativa complexidade, como o protocolo de verificação de consistência de cache Futurebus+, segundo Clarke et al (1993). Durante a década de 1990, a capacidade dos verificadores baseados em BDDs aumentou, através de melhores implementações e progresso no uso de técnicas como abstração e raciocínio composicional, de acordo com Clarke et al (1993). No final da década de 1990 uma nova técnica, Bounded Model Checking (BMC) com solucionadores atisfiability (AT), trouxe resultados promissores, conforme estudos feitos por Clarke et al (2001), Biere et al (1999a) e Biere et al. (1999b). Esse método pode ser aplicado para as mais diversas propriedades como, por exemplo, sobrevivência (liveness) e segurança (safety). Propriedades de segurança demandam verificar se um dado conjunto de estados é alcançável; propriedades de sobrevivência envolvem a busca por laços no grafo de transições de estados. Informalmente, uma propriedade de segurança estipula que situações indesejáveis não aconteçam durante a execução de um programa e propriedades de sobrevivência estipulam que situações desejáveis aconteçam, segundo Alpern e chneider (1987). Um exemplo simples de propriedade de segurança é um invariante, que é uma propriedade que simplesmente tem que ser verdadeira em todos os estados alcançáveis do modelo. Obviamente, se existe uma seqüência de estados em que algum estado tem um suposto invariante falso, a propriedade não pode ser chamada de invariante. Experimentos mostram que buscas por contra-exemplos deste tipo são feitas com notável eficiência através de BMC, mesmo em modelos que seriam difíceis de serem tratados com BDDs, conforme resultados obtidos por Barros et al (2007). Outra vantagem comparativa está no fato de que BMC requer pouca intervenção manual enquanto BDDs exigem uma ordenação de variáveis e o uso de algumas abstrações manuais. A robustez e a escalabilidade de BMC faz esta técnica muita atrativa para a indústria. Além das vantagens já citadas, existe o fato de que os solucionadores AT como o GRAP, apresentado por ilva e akallah (1996) e Marques-ilva e akallah (1999), o ATO,

16 13 conforme Zhang (1997), Chaff por Moskewics et al (2001) e talmarck, apresentado por talmarck e aflund (1990), raramente precisam de espaço exponencial de memória, o oposto do comportamento dos BDDs para algumas situações. 1.2 Justificativa O uso de métodos formais, especificamente verificação de modelos com fronteira, é justificado pela crescente complexidade das aplicações computacionais exigindo crescentemente ferramentas de auxílio à detecção de erros, indispensáveis a sistemas de hardware e software. O desenvolvimento de um algoritmo de Verificação imbólica de Modelo Distribuído, utilizando um cluster de computadores, torna possível a verificação de sistemas ainda mais complexos. Através deste, pode-se detectar erros com mais facilidade, o que acarreta redução de custos, tempo e confiabilidade no modelo a ser verificado. 1.3 Objetivos O presente trabalho tem como objetivo contribuir para o desenvolvimento de uma abordagem para detecção de falhas em sistemas utilizando verificação de modelos com fronteiras baseada em solucionadores AT. Este estudo propõe e implementa um algoritmo distribuído para o problema através de uma busca em profundidade. Este trabalho tem por base uma solução inicial proposta por Barros et al (2007) que efetua uma busca em largura para a solução deste mesmo problema. Citam-se, a seguir, os principais objetivos alcançados neste trabalho: Aprendizado de modelagem de sistemas baseados em cláusulas descritas em CNF; Análise de soluções alternativas para resolução de problemas de verificação de modelos via resolvedores AT; Elaboração e implementação da solução distribuída;

17 14 Utilização de um ambiente em rede para a realização de simulações e estudos de caso; Análise comparativa dos resultados obtidos. 1.4 Problema abe-se da limitação humana no que tange o desenvolvimento de sistemas de informação por isso, a importância desta pesquisa que busca a qualidade no código. Através desta pesquisa, pretendeu-se responder as seguintes questões: como se certificar que a aplicação a ser implementada não apresentará nenhum problema futuro? Como exaurir todas as possibilidades de erros? Qual seria a melhor abordagem a ser utilizada? Existem diversas abordagens, uma delas é conhecida como monolítica ou seqüencial. Nesta não existe nenhuma distribuição do problema, ou seja, a verificação do modelo é realizada localmente em somente uma máquina. Outra abordagem é a distribuída por largura, onde o problema é dividido em partições distintas e entregue para diferentes solucionadores secundários com o objetivo de resolver o problema de cada partição. No final da execução de cada partição, os solucionadores secundários enviam as informações para o primário. Após o recebimento destas, outro passo é incrementado. Neste novo ciclo, o solucionador primário encaminha para os secundários um novo problema a ser resolvido. Este processo encerra-se quando o k definido é alcançado. Os resultados a serem posteriormente mostrados confirmam que, a abordagem proposta resulta em ganhos em até 35% em tempo de resposta, porém houve um aumento nos quesitos de utilização de memória e cláusulas conflito. 1.5 Organização do Trabalho Esta dissertação está assim organizada: este capítulo a introduz apresentando as justificativas, motivações, objetivos, problemas e a hipótese. O capítulo 2 apresenta uma visão

18 15 geral sobre as técnicas e conceitos que fundamentam e viabilizam o desenvolvimento da solução proposta. O capítulo 3 descreve alguns trabalhos relacionados ao tema. O capítulo 4 detalha o Projeto. O capítulo 5 apresenta os resultados obtidos, e por fim, no capítulo 6 as conclusões e trabalhos futuros.

19 16 Capítulo 2 Fundamentação Teórica 2.1 Introdução Este capítulo apresenta as bases teóricas que auxiliam o entendimento deste trabalho. Inicialmente são apresentas as notações e terminologias a serem seguidas. Posteriormente, são detalhados importantes conceitos. 2.2 Verificação de Modelos Considere um sistema modelado por um conjunto finito de estados e por relações de transição entre os mesmos. Dado um conjunto finito de propriedades associadas ao modelo, é possível definir, para cada um dos estados, um subconjunto das propriedades que sejam verdadeiras naquele estado. Estas propriedades são denominadas proposições atômicas e definem cada um dos estados univocamente - dois estados diferentes não podem obedecer a exatamente o mesmo conjunto de proposições atômicas. O objetivo da verificação é a certificação de propriedades que descrevem o modelo. Para se representar tal sistema torna-se necessário a utilização de uma estrutura que formalmente o descreva. A seção seguinte apresenta tal representação.

20 Estruturas Kripke Formalmente, uma estrutura Kripke sobre um conjunto de proposições atômicas P = {p 0,..., p n-1 } é uma quádrupla M = (, 0, R, ) tal que: é um conjunto finito de estados; s 0 é o conjunto de estados iniciais; R x é a relação total da transição de estados - para cada s, existe um s tal que (s, s ) R; : 2 p é a função que rotula cada estado s com os valores 0 ou 1 associados a cada p i P. O valor associado é 1 caso p i seja verdadeira e 0 caso contrário. Um caminho sobre a estrutura M a partir de um estado s 0 é definido como uma seqüência infinita de estados σ = s 0 s 1...s n tal que s 0 e R (s i, s i+1 ) seja definida para todo i 0. Uma seqüência de rótulos de σ é uma palavra infinita (s 0 ) (s 1 )... sobre o alfabeto {0,1} p. Nota-se que, de acordo com a definição acima, cada proposição corresponde a um valor binário. Isto nem sempre corresponde à melhor representação para os modelos de sistemas reais. Considere, por exemplo, um sistema de controle de um forno em que a temperatura seja a variável de interesse. uponha três faixas distintas: temperatura menor que C, entre C e C, e maior que C. Desta forma, a temperatura poderia ser representada pela letra F (Frio) para a primeira faixa, N (Normal) para a segunda e Q (Quente) para a última. Neste caso, a variável associada à temperatura não poderia mais ser considerada uma proposição atômica como definida acima, por possuir três estados possíveis. Entretanto, este tipo de problema não limita a definição de estrutura Kripke, já que é possível definir três novas proposições atômicas a, b e c associadas aos três estados possíveis. Com isso, por exemplo, a poderia ser verdadeira quando a temperatura estivesse abaixo de C e falsa nas outras ocasiões, enquanto b poderia ser verdadeira se a temperatura estivesse entre C e C e falsa nas outras ocasiões e, c verdadeiro se a temperatura for acima de 1.500ºC e falso caso contrário. e este procedimento for adotado, é possível

21 18 obedecer à definição acima ao custo do aumento de complexidade da representação do sistema. Outro exemplo de um sistema de estado finito pode ser visto na Figura 2.1 que representa os possíveis estados na comunicação entre um receptor e um transmissor de dados. O protocolo é definido, segundo Tanenbaum (2004), de modo tal que o transmissor envie mensagens de dados contidas em blocos numerados com valores 0 e 1 alternadamente. Figura 2.1 Modelo da comunicação entre transmissor e receptor Cada um dos estados pode ser identificado através de uma tripla XYZ, onde X representa o número da mensagem que o transmissor está enviando, Y representa o número da mensagem que o receptor está aguardando e Z é o conteúdo do canal de comunicação. Tanto X quanto Y só podem assumir os valores de 1 e 0. Z pode assumir os valores 0, 1, A e -. Os dois primeiros valores correspondem à transmissão de uma mensagem de dados, enquanto o valor A corresponde ao envio de um quadro de reconhecimento do receptor para o transmissor. Finalmente, o valor - indica que o canal não está sendo utilizado no momento, isto é, a mensagem anterior foi perdida ou recebida. Uma mensagem numerada como 0 é transmitida com sucesso quando ocorrer à transição do estado 1 para o estado 7. Quando esta transição ocorre, o receptor passa a esperar a mensagem numerada como 1 e envia um quadro de reconhecimento através do canal de comunicação. Este quadro, quando recebido pelo transmissor, provoca a transição do estado 7 para o estado 8. As transições do estado 8 para o estado 2 e deste último para o estado 1 são

22 19 análogas às anteriores, com a diferença que se referem à transmissão de uma mensagem numerada como 1. O modelo é capaz de representar falhas de comunicação que consistem basicamente em dois grupos: falha na transmissão de mensagem de dados, e falha na transmissão do reconhecimento. O primeiro grupo de falhas é representado pelas transições entre os estados 1 e 0 ou entre os estados 8 e 9. No primeiro caso, por exemplo, a mensagem numerada como 0 foi transmitida sem que tenha sido recebida pelo transmissor. Esta situação provoca a transição do estado 1 para o estado 0. O transmissor, após perceber que não houve o envio de reconhecimento, transmite novamente a mensagem numerada como 0, provocando o retorno para o estado 1. A falha no envio do quadro de reconhecimento é representada pelas transições para os estados 5 ou 4, dependendo da numeração da mensagem envolvida. No estado 5, por exemplo, o receptor recebeu a mensagem 0 mas foi incapaz de fazer o reconhecimento chegar ao transmissor. Isto faz com que o transmissor retransmita a mensagem 0, provocando a transição para o estado 6. Quando o receptor recebe a mensagem 0 novamente, um novo reconhecimento é transmitido, o que provoca o retorno para o estado 7. Quando, finalmente, ocorrer a transmissão do quadro de reconhecimento de forma satisfatória, a transição do estado 7 para 8 é disparada. Levando-se em conta o cenário apresentado acima e que o estado 1 é arbitrariamente escolhido como o estado inicial do sistema, pode-se definir os quatro elementos da estrutura Kripke M = (, 0, R, ) para este modelo como se segue: = {i 0 i 9}; 0 = {1}; R = {(0,1), (1,0), (1,7), (2,1), (2,4), (3,2), (3,4), (4,3), (5,6), (6,5), (6,7), (7,5), (7,8), (8,2), (8,9), (9,8)} ( 0 ) = ( 0, 0, - ), ( 1 ) = ( 0, 0, 0 ), ( 2 ) = ( 1, 0, A ), ( 3 ) = (1, 0, 1), ( 4 ) = ( 1, 0, - ), (5) = ( 0, 1, - ), ( 6 ) = ( 0, 1, 0 ), ( 7 ) = ( 0, 1, A ), ( 8 ) = ( 1, 1, 1 ), ( 9 ) = ( 1, 1, - ) Uma trajetória a partir do estado inicial 1 poderia ser a seguinte:

23 20 É possível associar uma linguagem L de palavras infinitas a uma estrutura de Kripke. O alfabeto da linguagem L é definido a partir de todos os possíveis rótulos da estrutura e as palavras da linguagem são definidas a partir de todas as possíveis seqüências infinitas de rótulos. Dada a natureza do problema, é possível até mesmo representar a linguagem definida por uma estrutura Kripke a partir de uma expressão regular, desde que se leve em conta que certas combinações podem ocorrer um número infinito de vezes. Usualmente, uma combinação infinita de vezes é representada pelo índice, ao passo que uma combinação finita é representada por um *. Qualquer trajetória definida a partir do exemplo da Figura 2.1 é constituída por uma possível seqüência finita de estados seguida por uma seqüência infinita. No exemplo, sete tipos de seqüências infinitas são admitidos. A situação em que uma mensagem sempre é transmitida com sucesso após um número finito de tentativas corresponde ao caminho em que há um número infinito de passagens pelos estados 1, 7, 8 e 2. As demais possibilidades correspondem a situações em que a transmissão de uma mensagem nem sempre ocorre. Por exemplo, seria possível que, após a transmissão de mensagens numeradas como 0 e 1 por um número finito de vezes, o transmissor não mais conseguisse fazer o envio de uma nova mensagem devido a uma eventual falha no canal de comunicação. e, neste caso, o transmissor estivesse tentando enviar uma mensagem numerada como 0, a estrutura representada pela Figura 2.1 estaria confinada indefinidamente entre estados 0 e 1, sem jamais conseguir transitar para o estado 7. Em resumo, todas as possíveis seqüências de estados da estrutura Kripke da Figura 2.1 poderiam ser representadas pela seguinte expressão regular: (1(01)*7(5(65)*67)*8(98)*2(4(34)*32)*) + (1(01)*7(5(65)*67)*8(98)*2(4(34)*32)*)*(10)) + (1(01)*7(5(65)*67)*8(98)*2(4(34)*32)*)*1(01)*75(65) + (1(01)*7(5(65)*67)*8(98)*2(4(34)*32)*)*1(01)*(75(65)*6) + (1(01)*7(5(65)*67)*8(98)*2(4(34)*32)*)*1(01)*7(5(65)*67)*(89) + (1(01)*7(5(65)*67)*8(98)*2(4(34)*32)*)*1(01)*7(5(65)*67)*8(98)*24(34) + (1(01)*7(5(65)*67)*8(98)*2(4(34)*32)*)*1(01)*7(5(65)*67)*8(98)*(24(34)*3)

24 21 A linguagem gerada pela estrutura corresponde exatamente à expressão regular apresentada, bastando que os números associados a cada um dos estados sejam distribuídos por seus respectivos rótulos. Conforme apresentado, estruturas Kripke são formalismos matemáticos que descrevem um modelo de um sistema. Por esta razão, serão utilizados os termos modelos, sistema e estrutura Kripke ao longo deste trabalho. A seção seguinte descreve os Digrmas Binários de Decisão (BDD) que são utilizados na representação das transições e estados de uma estrutura Kripke. 2.4 Diagrama Binários de Decisão Diagramas de Decisão Binário (BDD), são grafos acíclicos direcionados, utilizados para representar funções booleanas. Os BDDs foram introduzidos em sua forma atual por Bryant (1986), apesar de que as idéias gerais já fossem conhecidas há mais tempo. Conceitualmente, um BDD é uma função booleana, uma árvore de decisão para a função desejada, que obedece restrições de caminho da raiz à folha. Cada variável aparece apenas uma vez segundo uma certa ordenação. Cada caminho representa uma atribuição para as variáveis da função. Os vértices finais, ou folhas, representam o valor para um determinado caminho. Um exemplo pode ser visto na Figura 2.2. Em uma implementação típica, todos os BDDs utilizados são reduzidos ao máximo possível para maximizar os compartilhamentos de nós, de forma que a função seja representada por um ponteiro para o seu nó raiz. Por exemplo, na Figura 2.2, a função (x y z) é representada por um ponteiro para o seu nó do topo enquanto a função (y z) é representada por apenas um ponteiro para o nó de rótulo y mais à esquerda, ao invés de várias cópias dos nós.

25 22 x 0 1 y y z z z z x 0 1 y 0 1 y 1 0 z 0 1 z Figura 2.2 Construção de BDD De acordo com Bryant (1986), os BDDs são sensíveis ao ordenamento de suas variáveis. Em geral, a escolha da ordem das variáveis influencia o espaço utilizado (tamanho linear ou exponencial dos BDDs) em relação ao número de variáveis. Com exceção dos nós terminais, que são rotulados por zero ou um, cada nó no grafo têm duas arestas de saída, uma representando o caso onde o argumento correspondente é falso e o outro representando o caso onde o argumento correspondente é verdadeiro. Como observado a árvore de decisão tem 2 n caminhos distintos (onde n é o número de variáveis). No caso de BDDs há uma redução significativa do espaço para representar a mesma função. 2.5 Lógicas Temporais Lógicas temporais são formalismos que permitem descrever e analisar os comportamentos de estruturas Kripke a partir do comportamento das proposições atômicas ao longo das trajetórias, segundo Prior (1967), BlackBurn (1993) e Venema (2001).

26 23 O tempo físico não entra no problema da descrição. A preocupação é descrever as seqüências em que as proposições atômicas vão sendo obedecidas à medida que as possíveis trajetórias evoluem. Por exemplo, dada a estrutura da Figura 2.1, pode-se afirmar que o transmissor sempre troca o número da mensagem a ser enviada depois que recebe um reconhecimento da última mensagem enviada. Entretanto, nada pode ser concluído quanto ao tempo necessário entre a transmissão de uma mensagem e da seguinte. As lógicas temporais mais utilizadas para verificação em modelos são as lógicas Lógica Temporal Linear (LTL) e Lógica de Árvore de Computação (CTL). egue-se uma breve explicação sobre cada uma delas Lógica Temporal Linear A lógica temporal denominada LTL utiliza proposições atômicas, operadores booleanos e operadores temporais para construir fórmulas que especifiquem cada uma das possíveis trajetórias das estruturas Kripke. A semântica dos operadores temporais é definida a partir de uma trajetória específica. Embora muitos operadores temporais possam ser definidos, os operadores mais comuns são Fƒ (a fórmula ƒ será válida em algum futuro), Gƒ (a fórmula ƒ é válida globalmente é válida e sempre será válida), ƒ 1 Uƒ 2 (until - ƒ 1 é válida até que ƒ 2 seja válida, o que ocorrerá inevitavelmente) e Xƒ (next - ƒ será válida no próximo estado). Formalmente, é possível definir a sintaxe de uma fórmula pertencente ao conjuntos de fórmulas da lógica LTL sobre um conjunto P de proposições atômicas a partir das seguintes regra: qualquer proposição atômica p P é uma fórmula LTL; se ƒ 1 e ƒ 2 são fórmulas LTL, ƒ 1 ƒ 2 e ƒ 1 são fórmulas LTL; se ƒ 1 e ƒ 2 são fórmulas LTL, ƒ 1 U ƒ 2 e Xƒ 1 são fórmulas LTL. Pode-se definir outros operadores booleanos a partir das definições acima: ƒ 1 ƒ 2 ( ƒ 1 ƒ 2 ) ƒ 1 ƒ 2 ƒ 1 ƒ 2

27 24 ƒ 1 ƒ 2 A semântica de uma fórmula LTL pode ser definida através de uma trajetória infinita σ = s 0 s 1... de uma estrutura Kripke. O estado s 0 representa o primeiro estado da trajetória, e não necessariamente um estado inicial da estrutura. Primeiramente, define-se a seguinte notação M, σ = ƒ significando que ƒ é válida ao longo da trajetória σ da estrutura Kripke M. A Figura 2.3 apresenta seqüências de estados que obedecem algumas fórmulas LTL básicas. Figura 2.3 eqüência de estados para fórmula LTL básicas Lógica de Árvore de Computação Outra lógica denominada CTL também se aplica a estados de uma estrutura Kripke. Estas fórmulas são construídas associando-se os quantificadores E e A aos operadores temporais da lógica LTL. Dado qualquer operador temporal, o quantificador E torna a subfórmula CTL Eƒ verdadeira sempre que existir alguma trajetória a partir do primeiro estado de σ tal que ƒ seja verdadeiro. O quantificador A, por sua vez, torna a sub-fórmula Aƒ verdadeira sempre que todas as possíveis trajetórias a partir do primeiro estado de σ obedeçam a ƒ.

28 25 Dado um conjunto P de proposições atômicas, é possível definir a sintaxe de uma fórmula CTL a partir das seguintes regras: qualquer proposição atômica p P é uma fórmula CTL; se ƒ 1 e ƒ 2 são fórmulas CTL, ƒ 1 ƒ 2 e ƒ 1 são fórmulas CTL; se ƒ 1 e ƒ 2 são fórmulas CTL, Eƒ 1 Uƒ 2, Aƒ 1 Uƒ 2, AXƒ 1 e EXƒ 1 são fórmulas CTL. A semântica de uma fórmula CTL, para uma estrutura Kripke M = (, s 0, R, ), onde s 0 é um estado de M e σ = s 0 s é uma trajetória infinita a partir do estado s 0, tem as seguintes representações: M, σ = ƒ significa que ƒ é válida ao longo da trajetória σ da estrutura Kripke M. Neste contexto, ƒ é denominada uma fórmula de caminho. M, s 0 = ƒ significa que ƒ é válida no estado s 0 da estrutura Kripke M. Neste contexto, ƒ é denominada uma fórmula de estado. básicas. A Figura 2.4 apresenta seqüências de estados que obedecem algumas fórmulas CTL 2.6 atisfabilidade atisfiabilidade proposicional (AT) é o problema de decidir a existência de pelo menos uma atribuição às variáveis que torne uma fórmula proposicional verdadeira. Embora o problema de satisfiabilidade seja um problema bastante simples de se descrever, é um marco na teoria da complexidade computacional. De acordo com Cook (1971), foi o primeiro problema comprovado ser NP-completo. Dada esta classificação é bem improvável que exista algum algoritmo polinomial para o problema. No entanto, diversas pesquisas recentes mostram que algumas instâncias do problema de satisfiabilidade podem ser resolvidas eficientemente.

29 26 Figura 2.4 Estados que obedecem a fórmulas CTL básicas Muitos problemas podem ser codificados em AT, inclusive Verificação de Modelos com Fronteiras. As fórmulas geradas a partir destes problemas são entregues a solucionadores AT, normalmente no formato Forma Normal Conjuntiva (CNF), que será descrito a seguir, e estes, por sua vez, buscam por atribuições que satisfaçam as respectivas fórmulas Forma Normal Conjuntiva eja P um conjunto finito e fixo de símbolos proposicionais. e p P, então p e p são literais de P. A negação de um literal L, representada L, denota p se L é p, e p se L é p. Uma cláusula C é uma disjunção de literais L 1... L n. Uma cláusula unitária é uma cláusula contendo um único literal. Uma fórmula CNF é a conjunção de uma ou mais cláusulas C 1... C n.

30 27 Normalmente solucionadores AT trabalham com fórmulas na forma normal conjuntiva. Isso não é uma limitação, já que existem algoritmos polinomiais que transformam qualquer fórmula proposicional em uma fórmula equivalente no formato CNF. Um exemplo de fórmula CNF seria: (a d) ^ (a c h) ^ (a h l) ^ (b k) Pela estrutura de uma fórmula CNF é trivial notar que uma única atribuição de variáveis que satisfaça pelo menos um literal, em cada cláusula, soluciona o problema. 2.7 Método DPLL Diversos são os solucionadores baseados em AT. O primeiro algoritmo prático para AT pode ser reconhecido na obra de Davis e Putnam (1960). O método de Davis-Putnam (DP) foi apresentado originalmente como prova em duas fases para lógica de primeira ordem. A insatisfabilidade de uma fórmula de primeira ordem seria provada, primeiro, gerando-se um conjunto apropriado de instâncias fechadas que, então, numa segunda fase baseada na resolução, seriam provadas insatisfazíveis. Melhoras posteriores, tais como o método de Davis-Logemann-Loveland (DLL), focam majoritariamente sobre a fase proposicional, expandindo o método DP, baseado na resolução para um algoritmo de busca em profundidade com retrocesso (backtracking), denominado DPLL, de acordo com Davis, Logemann e Loveland (1962). A base do DPLL é um algoritmo de busca com retrocesso. Este algoritmo percorre o espaço de 2 n atribuições possíveis para as n variáveis da instância AT, organizando a busca através da manutenção de uma árvore de decisão. Cada nodo desta árvore de decisão representa uma atribuição a uma variável. Tais atribuições são conhecidas como atribuições de decisão e as variáveis são variáveis de decisão. Um nível é associado a cada atribuição para indicar a profundidade na árvore de decisão. Resumindo, em cada nodo dessa árvore de busca, o algoritmo decide por uma atribuição de valor a uma variável. Em seguida, computa as implicações imediatas através da aplicação iterativa da regra da cláusula unitária. Por exemplo, se a atribuição escolhida for

31 28 x 1 = 1, então a cláusula ( x 1 x 2 ) implica imediatamente que x 2 = 1. Esta atribuição, por sua vez, pode implicar em outras. De acordo com a definição de cláusula unitária, caso haja uma cláusula com um só literal, este literal terá que fazer parte da resposta final. As cláusulas que contém o literal podem ser eliminadas e as que contém a negação do literal podem ser simplificadas. A aplicação desta regra é chamada de Boolean Constraint Propagation (BCP). Durante a aplicação iterativa do BCP o algoritmo pode chegar a um conflito obrigando o algoritmo a realizar retrocessos. Um algoritmo baseado em DPLL, de acordo com Davis, Logemann e Loveland (1962), normalmente possui 4 funções principais: Decisão - escolhe uma atribuição de valores às variáveis em cada estágio do processo de busca. Existem muitas heurísticas para este procedimento; Dedução - implementa o BCP e mantém o grafo de decisões; Diagnóstico - identifica as causas dos conflitos e acrescenta novas cláusulas de aprendizado ao banco de cláusulas o que é chamado de aprendizado direcionado por conflito; Apagar - apaga a implicação feita no nível atual de decisão e suas implicações. Um solucionador AT baseado em DPLL normalmente é um software escrito em poucas linhas (1.000 linhas) e em linguagem C ou C++ por questão de eficiência. Na literatura os procedimentos Decide, Deduz e Diagnostica são considerados os três motores do solucionador. Diferentes implementações destes motores geram diferentes algoritmos AT. Nas seções a seguir serão descritas algumas abordagens relacionadas aos motores citados acima e posteriormente será apresentada uma nova proposta para resolver o problema AT que não segue a linha DPLL. Um dos pontos críticos no desempenho do solucionador AT são as heurísticas de decisão ou, em outras palavras, a estratégia de escolha da próxima variável a ser atribuída e o valor a ser atribuído a esta variável. A ordem de escolha pode ser estática (pré-determinada) ou decidida dinamicamente de acordo com o atual estado da busca. No decorrer dos anos várias heurísticas diferentes foram propostas por diferentes pesquisadores como Zhang (1997), Moskewics et al (2001) e Goldberg e Novikov (2002). As primeiras heurísticas como, por exemplo, buscar a variável com o máximo de ocorrências em cláusulas de tamanho mínimo, são consideradas heurísticas gulosas porque tentam gerar o maior número de implicações ou satisfazer a maioria das cláusulas. Elas são

32 29 úteis para instâncias aleatórias do AT, mas normalmente não têm um desempenho destacado em instâncias estruturadas, segundo Buro e Kleine (1992). Em um de seus trabalhos Moskewics et al (2001), propôs uma heurística denominada oma Decadente Independente do Estado da Variável ou Variable tate Independent Decaying um (VID). VID mantém uma pontuação para cada fase da variável. Inicialmente a pontuação é simplesmente o número de ocorrências do literal na fórmula. À medida que novas cláusulas que contém uma variável são adicionadas ao banco de cláusulas VID aumenta a pontuação desta variável por uma constante. Além disso, à medida que a busca progride as pontuações são divididas por uma constante. A conseqüência deste mecanismo é que variáveis com maior pontuação tendem a ser aquelas presentes nas cláusulas adicionadas mais recentemente. A variável com maior pontuação é a escolhida pelo motor de dedução. Por ser independente do estado das variáveis o mecanismo é mais barato de se manter. Experimentos têm mostrado que não só o mecanismo é competitivo, mas também utiliza apenas uma pequena porcentagem do tempo total de processamento. Esta heurística é usada, por exemplo, no solucionador Chaff, segundo Moskewics et al (2001). Recentemente foram propostas evoluções no esquema VID, conforme Goldberg (2002). A estratégia continua sendo a busca por variáveis que foram ativas recentemente. Entretanto, há diferença entre os dois esquemas: enquanto VID cria sua pontuação de acordo com as ocorrências das variáveis, a nova abordagem estabelece a pontuação baseada em conflitos. Quando um conflito ocorre todos os literais que foram responsáveis pelo mesmo tem sua pontuação incrementada. A pontuação neste esquema também é dividida por uma constante no decorrer do tempo, privilegiando as variáveis presentes nos conflitos mais recentes. Comparativamente o referido esquema é mais robusto em relação ao proposto em VID. A heurística apresentada é utilizada por BerkMin, segundo Goldberg et al (2002) Heurísticas de Dedução De acordo com Davis, Logemann e Loveland (1962), o motor de dedução poda o espaço de buscas através de implicações geradas a partir da atribuição de uma variável. Vários mecanismos de dedução têm sido propostos. Entretanto, estudos comprovam que o

33 30 mecanismo mais eficiente continua sendo a regra da cláusula unitária. Todos os solucionadores AT modernos incluem a mesma no motor de dedução. Como o BCP normalmente é a etapa que ocupa a maior parte do tempo de processamento, sua implementação influi diretamente na eficiência do algoritmo. Uma implementação simples e intuitiva para o BCP é manter contadores para cada cláusula. O solucionador GRAP, por exemplo, utiliza tal política, de acordo com Marques- ilva e akallah (1999). Nesta, cada cláusula mantém dois contadores, um para o número de literais que receberam o valor 1 e outro para os literais que receberam o valor 0. Cada variável mantém duas listas: uma com as cláusulas em que aparece como literal positivo e outra com as cláusulas em que aparece como literal negativo. Quando uma variável é atribuída, todas as cláusulas que contém esta variável em uma das suas fases tem seus contadores atualizados. e o contador de literais de valor 0 de uma cláusula contiver um valor igual ao número total de literais na cláusula, tem-se um conflito. e o valor for menor em uma unidade se comparado ao número total de literais tem-se uma cláusula unitária. O mecanismo é fácil de entender e implementar embora não seja o mais eficiente. Uma abordagem interessante de BCP é utilizada no solucionador Chaff, proposta por Moskewics et al (2001). A solução é denominada chamada de vigilância por dois literais. A idéia é baseada no seguinte princípio: se uma cláusula tem n literais, então só será preciso se preocupar com a mesma quando n 1 variáveis forem atribuídos com 0. Ou seja, só se aplica a regra da cláusula unitária quando o número de literais atribuídos com 0 passar de n 2 para n 1. Na implementação, cada cláusula tem dois literais especiais que são denominados literais de vigilância. Inicialmente nenhum literal de vigilância está atribuído. Quando um dos literais for atribuído com 0 uma das seguintes condições há de valer: Existe um literal na cláusula que não foi atribuído com 0 e não é o outro literal de vigilância. Então simplesmente substitui-se o literal de vigilância. Apenas o outro literal de vigilância não está atribuído. Então a cláusula é unitária. Apenas o outro literal de vigilância não está atribuído com 0. Mas, está atribuído com 1. A cláusula foi satisfeita. Não há nada mais a ser feito. Não há outro literal que não tenha sido atribuído com 0. Tem-se um conflito.

34 31 Este mecanismo apresenta duas grandes vantagens: é preciso examinar apenas cláusulas onde os literais de vigilância recebem o valor 0 e não é preciso alterar os literais de vigilância durante um eventual retrocesso. Uma vez que foram os últimos a serem atribuídos com 0, ou perderão a atribuição ou receberão 1 como valor Diagnóstico, Retrocesso e Aprendizado Diferente do processo de dedução em que até hoje as principais ferramentas se baseiam no método BCP proposto por DPLL, conforme Davis, Longemann e Loveland (1962), muitas foram as evoluções e propostas de heurísticas para resolução de diagnósticos, retrocessos e aprendizados. egundo Goldberg e Novikov (2002), dentre os métodos analisados destacam-se as técnicas utilizadas na ferramenta Berkmim onde, para o diagnóstico, são utilizados grafos de implicação propostos inicialmente em GRAP, conforme Marques-ilva e akallah (1999). De acordo com Goldberg e Novikov (2002), o aprendizado também utiliza da construção de novas cláusulas de conflito, que são gradativamente adicionadas à expressão inicial. Estas cláusulas são construídas com base em uma análise de literais mais ativos em relação aos conflitos, onde o grau de atividade é representado pelos nodos do grafo de implicação adjacentes aos nodos de conflito. A limpeza do banco de cláusulas também é feita com base no índice de atividade dos literais. As cláusulas com o maior número de literais inativos, são eliminadas. Com relação ao retrocesso pode-se destacar a técnica de restart que caracteriza-se pelo reinício no processo de resolução. Devido às novas cláusulas de aprendizado adicionadas ao problema. Conforme Goldberg e Novikov (2002), grandes ramificações da árvore de busca não precisarão mais serem avaliadas.

35 Bounded Model Checking Ao contrário de uma biblioteca BDD, um resolvedor AT não é capaz de executar o cálculo de um ponto fixo, segundo Clarke e Emerson (1982). Entretanto, pode ser utilizado na verificação de modelos através da determinação da possibilidade de satisfação de uma fórmula proposicional que, se verdadeira, comprova que uma propriedade é falsa. Considere, por exemplo, um modelo com um conjunto de estados iniciais definido por 0 (X) e uma relação de transição de estados dada por R(X, X, E), onde E representa o conjunto de entradas. Deseja-se verificar se todos os estados alcançáveis a partir dos estados em 0 obedecem à proposição p. ejam n e E n os conjuntos das variáveis X e E no instante da (n-1)-ésima aplicação da relação de transição de estados. Então, é possível construir a fórmula 0 (X 0 ) p(x 0 ), cuja satisfação garante que a propriedade p não é obedecida por algum estado inicial, ao mesmo tempo em que fornece um contra-exemplo para p. Caso a fórmula não seja satisfeita, pode-se construir uma segunda fórmula 0 (X 0 ) R(X 0, X 1, E 0 ) p(x 1 ) e fornecê-la como entrada ao resolvedor AT. Neste caso sendo a fórmula satisfeita, ter-se-á encontrado um contra-exemplo. Caso contrário, o processo prossegue com uma terceira fórmula que leva em conta uma aplicação adicional da relação de transição de estados. Em geral, pode-se verificar a satisfação de fórmulas no formato k 0( X 0) j = 1R( X j 1, X j, E j 1) p( X k ) até que: Um contra-exemplo seja encontrado, ou A proposição a ser verificada pelo resolvedor AT se torne complexa a ponto de inviabilizar a solução, ou eja alcançado um valor de k alto para se garantir que todas as possibilidades de encontrar um contra-exemplo, para a especificação, já tenham sido verificadas. BMC generaliza o raciocínio apresentado por Biere (1999a). Assim, dado uma fórmula LTL f e um modelo M = (, 0, R, ) no qual 0 = 0 (X) e R = R(X, X, E) são fornecidos, constrói-se uma proposição que é verdadeira se e somente se existe um contraexemplo para f de comprimento k + 1. Caso a proposição possa ser satisfeita, o problema da verificação é decidido sabendo-se que a propriedade é inválida. Caso contrário, o valor de k é incrementado e uma nova iteração é executada. O processo começa com k = 0 e prossegue até que alguma das condições indicadas acima seja satisfeita. A Figura 2.5 exemplifica uma

36 33 máquina de estados finitos. Nota-se que o conjunto de todas as proposições atômicas do modelo é {a, b, c}. Deseja-se verificar, neste modelo, se a fórmula F b é válida através da utilização de BMC. O objetivo é encontrar um contra-exemplo que consista em uma trajetória infinita na qual a proposição atômica b nunca seja válida. Este contra-exemplo deve necessariamente partir do estado inicial, atingir um determinado estado intermediário e, em seguida, retornar a este último. Esta última condição garante que a trajetória é infinita. Figura 2.5 Exemplo BMC Uma possível maneira de resolver o problema seria seguir a seguinte seqüência de passos: 1. Não é possível que exista um contra-exemplo com k = 0, já que o contraexemplo exige a ocorrência de um loop. Assim, o valor de k é incrementado. 2. Defina-se a fórmula F 1 (X 0,X 1 ) = 0 (X 0 ) R(X 0,X 1 ) P(X 0,X 1 ) L(X 0,X 1 ) onde P(X 0,X 1 ) representa as condições a serem cumpridas pelos dois estados da trajetória e L(X 0,X 1 ) é a condição que força a existência do loop do segundo estado para o estado inicial. Cada um dos fatores pode assumir as seguintes representações:

37 34 0 (X 0 ) = (a 0 b 0 c 0 ) R(X 0, X 1 ) = (a 0 b 0 c 0 a 1 b 1 c 1 ) (a 0 b 0 c 0 a 1 b 1 c 1 ) ( a 0 b 0 c 0 a 1 b 1 c 1 ) ( a 0 b 0 c 0 a 1 b 1 c 1 ) ( a 0 b 0 c 0 a 1 b 1 c 1 ) P(X 0, X 1 ) = b 0 b 1 e L(X 0, X 1 ) = (a 0 a 1 ) (b 0 b 1 ) (c 0 c 1 ) Como F 1 não pode ser satisfeita, k é incrementado e passa-se à etapa seguinte. 3. Monta-se a fórmula F 2 (X 0, X 1, X 2 ) = 0 (X 0 ) R(X 0,X 1 ) R(X 1,X 2 ) P(X 0,X 1,X 2 ) L(X 0,X 1,X 2 ) Neste contexto, P (X 0,X 1,X 2 ) representa a fórmula que garante que nenhum dos estados atingíveis após duas transições obedeça a b. Por outro lado, L(X 0,X 1,X 2 ) garante a existência do loop a partir dos estados atingíveis após duas transições e pode ser definida a partir de L(X 0,X 1 ) dada acima: L(X 0,X 1,X 2 ) = L(X 0,X 2 ) L(X 1, X 2 ) A fórmula F 2 ainda não pode ser satisfeita. Assim, k é incrementado novamente e passa-se à etapa seguinte. 4. Define-se F 3 (X 0, X 1, X 2 X 3 ) = 0 (X 0 ) R(X 0,X 1 ) R(X 1,X 2 ) R(X 2,X 3 ) P(X 0,X 1,X 2,X 3 ) L(X 0,X 1,X 2,X 3 ) que pode ser satisfeita. Assim, é possível concluir que a especificação F b não é válida após k = 3 aplicações da relação de transição de estados. Por outro lado, L(X 0,X 1,X 2,X 3 ) garante a existência do loop a partir dos estados atingíveis após três transições e pode ser definida a partir de L(X 0,X 1 ) dada acima: L(X 0,X 1,X 2, X 3 ) = L(X 0,X 3 ) L(X 1, X 3 ) L(X 2, X 3 )

38 35 Como já observado, a condição para o funcionamento do BMC é que a proposição a ser definida na (k+1)-ésima iteração deve ser satisfeita se e somente se existir algum contraexemplo de comprimento k+1. Isto permite a adoção de diferentes estratégias para a elaboração da proposição a ser avaliada pelo resolvedor AT. BMC possui vantagens e desvantagens em relação à verificação de modelos baseado em BDDs, conforme Biere et al (2003). Uma das principais vantagens do BMC é permitir a manipulação de modelos maiores do que os que podem ser manipulados por BDDs. abe-se, através de dados experimentais, que dificilmente um modelo com mais que algumas centenas de variáveis pode ser manipulado através do uso de BDDs. BMC, devido à capacidade dos resolvedores AT atuais, pode ser utilizado em modelos com milhares de variáveis. Uma outra vantagem do BMC sobre o model checking baseado em BDDs é que o primeiro fornece um contra-exemplo mínimo para a especificação, caso seja falsa. O contra-exemplo de uma ferramenta baseada em BDDs, ao contrário, não é garantidamente mínimo. Como desvantagem, BMC apresenta uma restrição importante em relação às técnicas baseadas em BDDs: permitir a verificação de uma especificação verdadeira, apenas se o número mínimo de iterações necessárias para garantir a propriedade for conhecido. Outro problema: à medida que o processo de iteração avança, as proposições tornam-se cada vez mais complexas inviabilizando a busca de um contra-exemplo.

Definição e avaliação de métricas para solucionadores SAT

Definição e avaliação de métricas para solucionadores SAT Definição e avaliação de métricas para solucionadores SAT Fernando Augusto Fernandes Braz Orientador: Mark Alan Junho Song Departamento de Ciência da Computação PUC Minas 9 de dezembro de 2009 Sumário

Leia mais

LÓGICA TEMPORAL COM RAMIFICAÇÕES (Branching time temporal logics)

LÓGICA TEMPORAL COM RAMIFICAÇÕES (Branching time temporal logics) LÓGICA TEMPORAL COM RAMIFICAÇÕES (Branching time temporal logics) UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA Lógica para computação Ananias Tessaro Bruno Fernandes Lucas Lopes Lógica

Leia mais

BCC204 - Teoria dos Grafos

BCC204 - Teoria dos Grafos BCC204 - Teoria dos Grafos Marco Antonio M. Carvalho (baseado nas notas de aula do prof. Haroldo Gambini Santos) Departamento de Computação Instituto de Ciências Exatas e Biológicas Universidade Federal

Leia mais

VERIFICAÇÃO FORMAL DE SISTEMAS MODELADOS EM ESTADOS FINITOS

VERIFICAÇÃO FORMAL DE SISTEMAS MODELADOS EM ESTADOS FINITOS NELSON FRANÇA GUIMARÃES FERREIRA VERIFICAÇÃO FORMAL DE SISTEMAS MODELADOS EM ESTADOS FINITOS Dissertação apresentada à Escola Politécnica da Universidade de São Paulo para obtenção do Título de Mestre

Leia mais

Especificação de Sistemas de Tempo Real com Gramática de Grafos. Leonardo Michelon Simone Costa Leila Ribeiro

Especificação de Sistemas de Tempo Real com Gramática de Grafos. Leonardo Michelon Simone Costa Leila Ribeiro Especificação de Sistemas de Tempo Real com Gramática de Grafos Leonardo Michelon Simone Costa Leila Ribeiro Roteiro Introdução Gramática de Grafos Baseada em Objetos (GGBO) GGBO Temporizada Semântica

Leia mais

3 Extensões dos modelos matemáticos

3 Extensões dos modelos matemáticos 3 Extensões dos modelos matemáticos Os modelos matemáticos definidos por (2-1) (2-6) e (2-7) (2-13), propostos por Achuthan e Caccetta e apresentados no Capítulo 2, são reforçados neste trabalho através

Leia mais

Análise e Síntese de Algoritmos

Análise e Síntese de Algoritmos Análise e Síntese de Algoritmos Problemas NP-Completos CLRS, Cap. 34 Contexto Algoritmos em Grafos Estruturas de Dados para Conjuntos Disjuntos Programação Linear Programação Dinâmica Algoritmos Greedy

Leia mais

2.6 O ALGORITMO DPLL. Preliminares

2.6 O ALGORITMO DPLL. Preliminares Preliminares 2.6 O ALGORITMO DPLL Newton José Vieira 05 de agosto de 2007 Base da grande maioria dos algoritmos para o problema da satisfabilidade. Leva esse nome graças a Davis, Putnam, Logemann e Loveland,

Leia mais

Análise e Síntese de Algoritmos. Problemas NP-Completos CLRS, Cap. 34

Análise e Síntese de Algoritmos. Problemas NP-Completos CLRS, Cap. 34 Análise e Síntese de Algoritmos Problemas NP-Completos CLRS, Cap. 34 Contexto Revisões [CLRS, Cap. 1-10] Algoritmos em Grafos [CLRS, Cap. 22-26] Algoritmos elementares Árvores abrangentes Caminhos mais

Leia mais

Análise e projeto de sistemas

Análise e projeto de sistemas Análise e projeto de sistemas Conteúdo: UML O processo de desenvolvimento de software Prof. Patrícia Lucas A linguagem de modelagem unificada (UML) A UML teve origem em uma tentativa de se unificar os

Leia mais

Lógica para computação - Linguagem da Lógica de Predicados

Lógica para computação - Linguagem da Lógica de Predicados DAINF - Departamento de Informática Lógica para computação - Linguagem da Lógica de Predicados Prof. Alex Kutzke ( http://alex.kutzke.com.br/courses ) 13 de Outubro de 2015 Razões para uma nova linguagem

Leia mais

PCC104 - Projeto e Análise de Algoritmos

PCC104 - Projeto e Análise de Algoritmos PCC104 - Projeto e Análise de Algoritmos Marco Antonio M. Carvalho Departamento de Computação Instituto de Ciências Exatas e Biológicas Universidade Federal de Ouro Preto 5 de dezembro de 2017 Marco Antonio

Leia mais

Teoria da Computação. Computabilidade e complexidade computacional

Teoria da Computação. Computabilidade e complexidade computacional Teoria da Computação Computabilidade e complexidade computacional 1 Computabilidade e Complexidade Computabilidade: verifica a existência de algoritmos que resolva uma classe de linguagens trata a possibilidade

Leia mais

2

2 ANÁLISE DE SISTEMAS (processo de desenvolvimento de sistemas) por Antônio Maurício Pitangueira 1 2 Levantamento de requisitos Análise de requisitos Projeto Implementação Testes Implantação Foco da disciplina

Leia mais

Universidade Federal da Paraíba CCEN Departamento de Informática Disciplina: Banco de Dados. Aula 1 Introdução a Banco de Dados

Universidade Federal da Paraíba CCEN Departamento de Informática Disciplina: Banco de Dados. Aula 1 Introdução a Banco de Dados Universidade Federal da Paraíba CCEN Departamento de Informática Disciplina: Banco de Dados Aula 1 Introdução a Banco de Dados 1. Introdução Um Sistema Gerenciador de Banco de Dados (SGBD) é constituído

Leia mais

Sistemas de Arquivos Distribuídos. Bruno M. Carvalho Sala: 3F2 Horário: 35M34

Sistemas de Arquivos Distribuídos. Bruno M. Carvalho Sala: 3F2 Horário: 35M34 Sistemas de Arquivos Distribuídos Bruno M. Carvalho Sala: 3F2 Horário: 35M34 Introdução Serviço de arquivos descreve os serviços oferecidos pelo sistema de arquivos aos clientes Servidor de arquivos processo

Leia mais

PORTUGUÊS ESTRUTURADO: INTRODUÇÃO INTRODUÇÃO À PROGRAMAÇÃO PROF. ALEXANDRO DOS SANTOS SILVA

PORTUGUÊS ESTRUTURADO: INTRODUÇÃO INTRODUÇÃO À PROGRAMAÇÃO PROF. ALEXANDRO DOS SANTOS SILVA PORTUGUÊS ESTRUTURADO: INTRODUÇÃO INTRODUÇÃO À PROGRAMAÇÃO PROF. ALEXANDRO DOS SANTOS SILVA SUMÁRIO Introdução Conceitos básicos Formato básico Tipos primitivos Variáveis Constantes Operadores Operações

Leia mais

Redes de Computadores. Prof. MSc André Y. Kusumoto

Redes de Computadores. Prof. MSc André Y. Kusumoto Redes de Computadores Prof. MSc André Y. Kusumoto andrekusumoto.unip@gmail.com Nível de Rede Comunicação entre dispositivos de uma mesma rede ocorrem de forma direta. Quando a origem e o destino estão

Leia mais

Linguagens Regulares. Prof. Daniel Oliveira

Linguagens Regulares. Prof. Daniel Oliveira Linguagens Regulares Prof. Daniel Oliveira Linguagens Regulares Linguagens Regulares ou Tipo 3 Hierarquia de Chomsky Linguagens Regulares Aborda-se os seguintes formalismos: Autômatos Finitos Expressões

Leia mais

(Model Checking) Estes slides são baseados nas notas de aula da Profa. Corina

(Model Checking) Estes slides são baseados nas notas de aula da Profa. Corina Verificação de Modelos (Model Checking) Estes slides são baseados nas notas de aula da Profa. Corina Cîrstea Agenda Lógica Temporal Lógica de Árvore de Computação (CTL) Verificação de Modelo do CTL Caminhos

Leia mais

PCC104 - Projeto e Análise de Algoritmos

PCC104 - Projeto e Análise de Algoritmos PCC104 - Projeto e Análise de Algoritmos Marco Antonio M. Carvalho Departamento de Computação Instituto de Ciências Exatas e Biológicas Universidade Federal de Ouro Preto 1 de novembro de 2018 Marco Antonio

Leia mais

Projeto e Análise de Algoritmos NP Completude. Prof. Humberto Brandão

Projeto e Análise de Algoritmos NP Completude. Prof. Humberto Brandão Projeto e Análise de Algoritmos NP Completude Prof. Humberto Brandão humberto@bcc.unifal-mg.edu.br Universidade Federal de Alfenas versão da aula: 0.4 Introdução Problemas intratáveis ou difíceis são comuns

Leia mais

Inteligência Artificial. Conceitos Gerais

Inteligência Artificial. Conceitos Gerais Inteligência Artificial Conceitos Gerais Inteligência Artificial - IA IA é um campo de estudo multidisciplinar e interdisciplinar, que se apóia no conhecimento e evolução de outras áreas do conhecimento.

Leia mais

TGR BCC Representação Computacional de Grafos. Prof. Ricardo José Pfitscher

TGR BCC Representação Computacional de Grafos. Prof. Ricardo José Pfitscher TGR BCC Representação Computacional de Grafos Prof. Ricardo José Pfitscher Cronograma Representação Matriz de djacências Lista de djacências Matriz de Incidências Representação Como podemos representar

Leia mais

Agenda. Complexidade Não Determinista A classe NP. A classe Co-NP Reduções de tempo polinomial. Definida por. Exemplos em:

Agenda. Complexidade Não Determinista A classe NP. A classe Co-NP Reduções de tempo polinomial. Definida por. Exemplos em: A Classe NP Agenda Complexidade Não Determinista A classe NP Definida por aceitação em tempo polinomial por NTM s instâncias positivas com provas de tamanho polinomial aceitação por verificadores em tempo

Leia mais

Dedução Natural e Sistema Axiomático Pa(Capítulo 6)

Dedução Natural e Sistema Axiomático Pa(Capítulo 6) Dedução Natural e Sistema Axiomático Pa(Capítulo 6) LÓGICA APLICADA A COMPUTAÇÃO Professor: Rosalvo Ferreira de Oliveira Neto Estrutura 1. Definições 2. Dedução Natural 3. Sistemas axiomático Pa 4. Lista

Leia mais

DIM Resolução e método tableaux DIM / 37

DIM Resolução e método tableaux DIM / 37 DIM0436 21. Resolução e método tableaux 20141014 DIM0436 20141014 1 / 37 Sumário 1 Demostração automática de fórmulas 2 Resolução 3 O método tableaux DIM0436 20141014 2 / 37 1 Demostração automática de

Leia mais

Algoritmos Combinatórios: Introdução

Algoritmos Combinatórios: Introdução lucia@site.uottawa.ca UFSC, Fevereiro, 2010 Estruturas e Problemas Combinatórios Introdução a Algoritmos Combinatórios O que são: Estruturas Combinatórias? Algoritmos Combinatórios? Problemas Combinatórios?

Leia mais

Teoria da Computação. Complexidade computacional classes de problemas

Teoria da Computação. Complexidade computacional classes de problemas Teoria da Computação Complexidade computacional classes de problemas 1 Universo de problemas Problemas indecidíveis ou não-computáveis Não admitem algoritmos Problemas intratáveis Não admitem algoritmos

Leia mais

Buscas Informadas ou Heurísticas - Parte II

Buscas Informadas ou Heurísticas - Parte II Buscas Informadas ou Heurísticas - Parte II Prof. Cedric Luiz de Carvalho Instituto de Informática - UFG Graduação em Ciência da Computação / 2006 FUNÇÕES HEURÍSTICAS - 1/7 FUNÇÕES HEURÍSTICAS - 2/7 Solução

Leia mais

Complexidade de Algoritmos. Edson Prestes

Complexidade de Algoritmos. Edson Prestes Edson Prestes O limite superior de complexidade de um problema refere-se ao melhor algoritmo que o resolve. nlog 2 n é um limite superior para o problema de classificação. O limite inferior de um problema

Leia mais

Buscas Informadas ou Heurísticas - Parte III

Buscas Informadas ou Heurísticas - Parte III Buscas Informadas ou Heurísticas - Parte III Prof. Cedric Luiz de Carvalho Instituto de Informática - UFG Mestrado em Ciência da Computação / 2006 BUSCA SMA* (Simplified Memory-Bounded A*) BUSCA SMA* (Simplified

Leia mais

Redes de Computadores. Prof. André Y. Kusumoto

Redes de Computadores. Prof. André Y. Kusumoto Redes de Computadores Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com 2/16 Nível de Rede Comunicação entre dispositivos de uma mesma rede ocorrem de forma direta. Quando a origem e o destino estão

Leia mais

Problemas Intratáveis ou computação eficiente X computação ineficiente

Problemas Intratáveis ou computação eficiente X computação ineficiente Problemas Intratáveis ou computação eficiente X computação ineficiente Problemas Tratáveis Os problemas que podem ser resolvidos em tempo polinomial em um computador típico são exatamente os mesmos problemas

Leia mais

SSC546 -Avaliação de Desempenho de Sistemas

SSC546 -Avaliação de Desempenho de Sistemas Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC546 -Avaliação de Desempenho de Sistemas Parte 1 -Aula 2 Sarita Mazzini Bruschi Material

Leia mais

Este conceito é bastante simples e será útil e conveniente nos itens seguintes, na definição das estruturas básicas de controle de execução.

Este conceito é bastante simples e será útil e conveniente nos itens seguintes, na definição das estruturas básicas de controle de execução. Capítulo 7 Controle de Fluxo de Execução Até o momento os algoritmos estudados utilizam apenas instruções primitivas de atribuição, e de entrada e saída de dados. Qualquer conjunto de dados fornecido a

Leia mais

Linguagens Formais e Autômatos. Autômatos Finitos Determinísticos (AFD)

Linguagens Formais e Autômatos. Autômatos Finitos Determinísticos (AFD) Linguagens Formais e Autômatos Autômatos Finitos Determinísticos (AFD) Cristiano Lehrer, M.Sc. Linguagens Regulares A teoria da computação começa com uma pergunta: O que é um computador? É, talvez, uma

Leia mais

Testes de software - Teste funcional

Testes de software - Teste funcional Testes de software - Teste funcional Vitor Alcântara de Almeida Universidade Federal do Rio Grande do Norte Natal, Brasil 30 de outubro de 2014 Alcântara (UFRN) Testes de software - Testes funcionais 30

Leia mais

Uma forma de classificação

Uma forma de classificação Uma forma de classificação L. Não-RE ou f. nãocomputáveis LRE ou MT ou f. comput. L. Indecidíveis ou Procedimentos L. Recursivas ou Decidíveis ou Algoritmos Outra forma de classificação Problemas Indecidíveis

Leia mais

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 12 PROFª BRUNO CALEGARO

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 12 PROFª BRUNO CALEGARO UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 12 PROFª BRUNO CALEGARO Santa Maria, 29 de Outubro de 2013. Revisão aula passada Modelagem de sistemas Perspectiva externa Perspectiva de iteração

Leia mais

Compressão de Textos. Introdução. Introdução. Introdução. O volume de informação textual disponível on-line é imenso:

Compressão de Textos. Introdução. Introdução. Introdução. O volume de informação textual disponível on-line é imenso: Compressão de Textos Estrutura de Dados II Prof. Guilherme Tavares de Assis Universidade Federal de Ouro Preto UFOP Instituto de Ciências Exatas e Biológicas ICEB Departamento de Computação DECOM O volume

Leia mais

Indução. Método de Prova por Indução. Jon Barwise e John Etchemendy, Capítulo: 16

Indução. Método de Prova por Indução. Jon Barwise e John Etchemendy, Capítulo: 16 Indução Método de Prova por Indução Referência: Capítulo: 16 Language, Proof and Logic Jon Barwise e John Etchemendy, 2008 1 Indução Métodos de prova já vistos relacionam-se diretamente com as propriedades

Leia mais

1 Lógica de primeira ordem

1 Lógica de primeira ordem 1 Lógica de primeira ordem 1.1 Sintaxe Para definir uma linguagem de primeira ordem é necessário dispor de um alfabeto. Este alfabeto introduz os símbolos à custa dos quais são construídos os termos e

Leia mais

2 Definição do Problema

2 Definição do Problema Definição do Problema. Formulação Matemática O problema do Fluxo Máximo entre todos os pares de nós surge no contexto de redes, estas representadas por grafos, e deriva-se do problema singular de fluxo

Leia mais

Análise e Projeto de Sistemas I. Curso de Sistemas de Informação. Karla Donato Fook DESU / DComp.

Análise e Projeto de Sistemas I. Curso de Sistemas de Informação. Karla Donato Fook DESU / DComp. Análise e Projeto de Sistemas I Curso de Sistemas de Informação Karla Donato Fook karladf@ifma.edu.br DESU / DComp 2018 2 1 Técnica que orienta a análise de sistemas para a essência do negócio ao qual

Leia mais

Especificação do TP3

Especificação do TP3 Especificação do TP3 Data de Entrega: 21/05/2008 1 Descrição do Problema O problema a ser resolvido neste trabalho é conhecido na literatura como o problema de isomorfismo de sub-grafos Uma definição formal

Leia mais

Introdução aos Algoritmos

Introdução aos Algoritmos Introdução aos Algoritmos Aula 05 Diogo Pinheiro Fernandes Pedrosa http://www2.ufersa.edu.br/portal/professor/diogopedrosa diogopedrosa@ufersa.edu.br Universidade Federal Rural do Semiárido Bacharelado

Leia mais

Teoria da Computação. Capítulo 1. Máquina de Turing. Prof. Wanderley de Souza Alencar, MSc.

Teoria da Computação. Capítulo 1. Máquina de Turing. Prof. Wanderley de Souza Alencar, MSc. Teoria da Computação Capítulo 1 Máquina de Turing Prof. Wanderley de Souza Alencar, MSc. Pauta 1. Introdução 2. Definição de Máquina de Turing 3. Variações de Máquina de Turing 4. A Tese de Church-Turing

Leia mais

Arquitecturas Paralelas I Computação Paralela em Larga Escala LESI - 4º Ano. Desenvolvimento de Aplicações Paralelas

Arquitecturas Paralelas I Computação Paralela em Larga Escala LESI - 4º Ano. Desenvolvimento de Aplicações Paralelas Arquitecturas Paralelas I Computação Paralela em Larga Escala LESI - 4º Ano Desenvolvimento de Aplicações Paralelas (gec.di.uminho.pt/lesi/ap10203/aula06aplicaçõespar.pdf) João Luís Ferreira Sobral Departamento

Leia mais

Análise Sintática de Frases utilizando Gramáticas Livres de Contexto Probabilísticas

Análise Sintática de Frases utilizando Gramáticas Livres de Contexto Probabilísticas Universidade de São Paulo Mestrado em Ciência da Computação Instituto de Matemática e Estatística Disciplina MAC5725 Lingüística Computacional Análise Sintática de Frases utilizando Gramáticas Livres de

Leia mais

USANDO UM MÉTODO INDUTIVO PARA RESOLVER PROBLEMAS. Bruno Maffeo Departamento de Informática PUC-Rio

USANDO UM MÉTODO INDUTIVO PARA RESOLVER PROBLEMAS. Bruno Maffeo Departamento de Informática PUC-Rio USANDO UM MÉTODO INDUTIVO PARA RESOLVER PROBLEMAS Bruno Maffeo Departamento de Informática PUC-Rio MÉTODO INDUTIVO O método indutivo para resolver problemas aqui empregado inspira-se na formulação mais

Leia mais

2.3.4 Algoritmos de SAT

2.3.4 Algoritmos de SAT 114 CAÍTULO 2. LÓGICA ROOSICIONAL 2.3.4 Algoritmos de SAT Os algoritmos de SAT (do inglês satisfiability ) têm o objectivo de determinar se uma dada fbf α é satisfazível ou não; em caso afirmativo, devolvem

Leia mais

ESTRUTURA DE DADOS. Arvore Binária Jose. Arvore Ternaria Direção

ESTRUTURA DE DADOS. Arvore Binária Jose. Arvore Ternaria Direção ESTRUTURA DE DADOS 1. Árvores: Uma das mais importantes classes de estruturas de dados em computação são as árvores. Aproveitando-se de sua organização hierárquica, muitas aplicações são realizadas usando-se

Leia mais

Roteamento e Roteadores. Conceitos Diversos

Roteamento e Roteadores. Conceitos Diversos e Roteadores Conceitos Diversos Um roteador é um dispositivo que provê a comunicação entre duas ou mais LAN s, gerencia o tráfego de uma rede local e controla o acesso aos seus dados, de acordo com as

Leia mais

MODELAGEM DE SISTEMAS. Introdução a Computação e Engenharia de Software. Profa. Cynthia Pinheiro

MODELAGEM DE SISTEMAS. Introdução a Computação e Engenharia de Software. Profa. Cynthia Pinheiro MODELAGEM DE SISTEMAS Introdução a Computação e Engenharia de Software Profa. Cynthia Pinheiro Introdução Modelagem de Sistemas: A modelagem de um sistema auxilia o analista a entender a funcionalidade

Leia mais

Introdução aos Algoritmos

Introdução aos Algoritmos Introdução aos Algoritmos Aula 05 Diogo Pinheiro Fernandes Pedrosa http://www2.ufersa.edu.br/portal/professor/diogopedrosa diogopedrosa@ufersa.edu.br Universidade Federal Rural do Semiárido Bacharelado

Leia mais

O Impacto da Modelação na Resolução de Problemas de Satisfação Proposicional

O Impacto da Modelação na Resolução de Problemas de Satisfação Proposicional O Impacto da Modelação na Resolução de Problemas de Satisfação Proposicional Ruben Martins Instituto Superior Técnico Universidade Técnica de Lisboa Mestrado em Matemática e Aplicações Ruben Martins O

Leia mais

Aula 10: Tratabilidade

Aula 10: Tratabilidade Teoria da Computação DAINF-UTFPR Aula 10: Tratabilidade Prof. Ricardo Dutra da Silva Na aula anterior discutimos problemas que podem e que não podem ser computados. Nesta aula vamos considerar apenas problemas

Leia mais

Planejamento & Escalonamento O algoritmo FF-métrico. Aldebaran Perseke 3 de abril de 2003

Planejamento & Escalonamento O algoritmo FF-métrico. Aldebaran Perseke 3 de abril de 2003 Planejamento & Escalonamento O algoritmo FF-métrico Aldebaran Perseke aldeba@ime.usp.br 3 de abril de 2003 Planejamento & Escalonamento Problemas de planejamento e escalonamento envolvem os seguintes aspectos:

Leia mais

Provadores de Teoremas baseados em contagem

Provadores de Teoremas baseados em contagem Provadores de Teoremas baseados em contagem Eduardo Menezes de Morais lenin@linux.ime.usp.br Orientador: Marcelo Finger Instituto de Matemática e Estatística - USP 16 de novembro de 2008 Eduardo Menezes

Leia mais

Formas Normais para Lógicas Modais

Formas Normais para Lógicas Modais GoBack Formas Normais para Lógicas Modais Cláudia Nalon http://www.cic.unb.br/docentes/nalon nalon@{cic.unb.br, unb.br} Universidade de Brasília Instituto de Ciências Exatas Departamento de Ciência da

Leia mais

Notas de Aula Guilherme Sipahi Arquitetura de Computadores

Notas de Aula Guilherme Sipahi Arquitetura de Computadores Notas de Aula Guilherme Sipahi Arquitetura de Computadores Endereçamento O Campo de endereço em uma instrução é pequeno. Para referenciar uma faixa de endereços maior na memória principal, ou em alguns

Leia mais

Otimização Combinatória - Parte 4

Otimização Combinatória - Parte 4 Graduação em Matemática Industrial Otimização Combinatória - Parte 4 Prof. Thiago Alves de Queiroz Departamento de Matemática - CAC/UFG 2/2014 Thiago Queiroz (DM) Parte 4 2/2014 1 / 33 Complexidade Computacional

Leia mais

Capítulo 8: O problema da parada. Decidibilidade e computabilidade. José Lucas Rangel Introdução.

Capítulo 8: O problema da parada. Decidibilidade e computabilidade. José Lucas Rangel Introdução. Capítulo 8: O problema da parada. Decidibilidade e computabilidade. José Lucas Rangel 8.1 - Introdução. Como observado no capítulo anterior, podemos substituir a definição informal de procedimento pela

Leia mais

Análise empírica de algoritmos de ordenação

Análise empírica de algoritmos de ordenação Análise empírica de algoritmos de ordenação Mario E. Matiusso Jr. (11028407) Bacharelado em Ciências da Computação Universidade Federal do ABC (UFABC) Santo André, SP Brasil mario3001[a]ig.com.br Resumo:

Leia mais

PROCURA E PLANEAMENTO

PROCURA E PLANEAMENTO PROCURA E PLANEAMENTO Primeiro Exame 20 de Janeiro de 2009 17:00-19:30 Este exame é composto por 14 páginas contendo 6 grupos de perguntas. Identifique já todas as folhas do exame com o seu nome e número.

Leia mais

5COP096 TeoriadaComputação

5COP096 TeoriadaComputação Sylvio 1 Barbon Jr barbon@uel.br 5COP096 TeoriadaComputação Aula 13 Prof. Dr. Sylvio Barbon Junior Sumário - Problemas NP-Completo Algoritmos Não-deterministas; Classes NP-Completo e NP-Dificil; Teorema

Leia mais

heapsort (int *x, int n) { int i, e, s, f, aux; /*fase de pré-processamento - cria heap inicial*/ for (i=1; i<n; i++) { e = x[i]; s = i; f = (s-1)/2;

heapsort (int *x, int n) { int i, e, s, f, aux; /*fase de pré-processamento - cria heap inicial*/ for (i=1; i<n; i++) { e = x[i]; s = i; f = (s-1)/2; heapsort (int *x, int n) { int i, e, s, f, aux; /*fase de pré-processamento - cria heap inicial*/ for (i=1; i0 && x[f]

Leia mais

Universidade Estadual da Paraíba - UEPB Curso de Licenciatura em Computação

Universidade Estadual da Paraíba - UEPB Curso de Licenciatura em Computação Universidade Estadual da Paraíba - UEPB Curso de Licenciatura em Computação Análise Semântica Disciplina: Compiladores Equipe: Luiz Carlos dos Anjos Filho José Ferreira Júnior Compiladores Um compilador

Leia mais

Resolução Exe 2.12 Monolítico Recursivo

Resolução Exe 2.12 Monolítico Recursivo Resolução Exe 2.12 Monolítico Recursivo Recursivo P R é R 1 onde R 1 def (se T1 então R 2 senão R 3 ) R 2 def F; R 3 R 3 def (se T2 então R 4 senão R 7 ) R 4 def G; R 5 R 5 def (se T1 então R 7 senão R

Leia mais

Algoritmos Distribuídos. AD Algoritmos Básicos 1

Algoritmos Distribuídos. AD Algoritmos Básicos 1 Algoritmos Distribuídos Algoritmos Básicos Antonio Alfredo Ferreira Loureiro loureiro@dcc.ufmg.br http://www.dcc.ufmg.br/~loureiro Este material está baseado no capítulo 4 do livro An Introduction to Distributed

Leia mais

Inteligência Artificial - IA. Resolução de problemas por meio de busca

Inteligência Artificial - IA. Resolução de problemas por meio de busca Resolução de problemas por meio de busca 1 Agente reativo - definido por ação reação Agente de resolução de problemas (ou baseado em objetivos) encontra sequencias de ações que leva ao estado desejável.

Leia mais

Procedimentos e Algorítmos Programas e Linguagens de Programação Tese de Church-Turing Formas de Representação de Linguagens

Procedimentos e Algorítmos Programas e Linguagens de Programação Tese de Church-Turing Formas de Representação de Linguagens Procedimentos e Algorítmos Programas e Linguagens de Programação Tese de Church-Turing Formas de Representação de Linguagens 1 Introdução Estudar computação do ponto de vista teórico é sinônimo de caracterizar

Leia mais

# $ % & ' ( ) * ' ( ) *! " " Orientador +, -

# $ % & ' ( ) * ' ( ) *!   Orientador +, - #$ %&'()* '()*!"" Orientador +,- ."%&/0#12 3"/%'0)/))&/ )4506 7" %/0)/))&/ 8906 8)) :"'/0)/))&/ '% '); Um roteador recebe em alguma de suas interfaces um pacote vindo da rede local ou da rede externa.

Leia mais

MODOS DE ENDEREÇAMENTO E CONJUNTO DE INSTRUÇÕES

MODOS DE ENDEREÇAMENTO E CONJUNTO DE INSTRUÇÕES MODOS DE ENDEREÇAMENTO E CONJUNTO DE INSTRUÇÕES Alexandre Lucas Chichosz Discente do curso Engenharia da Computação Calwann de Souza Freire Discente do curso Engenharia da Computação Myke Albuquerque Pinto

Leia mais

UML (Linguagem Modelagem Unificada) João Paulo Q. dos Santos

UML (Linguagem Modelagem Unificada) João Paulo Q. dos Santos UML (Linguagem Modelagem Unificada) João Paulo Q. dos Santos joao.queiroz@ifrn.edu.br Roteiro A importância da UML para projetar sistemas. Principais características do diagrama de classes e de sequência.

Leia mais

O que é um sistema distribuído?

O que é um sistema distribuído? Disciplina: Engenharia de Software 4 Bimestre Aula 1: ENGENHARIA DE SOFTWARE DISTRIBUÍDO O que é um sistema distribuído? Segundo Tanenbaum e Steen (2007) um sistema distribuído é uma coleção de computadores

Leia mais

Planejamento em IA. Blackbox Graphplan + SATplan. Leliane Nunes de Barros

Planejamento em IA. Blackbox Graphplan + SATplan. Leliane Nunes de Barros Planejamento em IA Blackbox Graphplan + SATplan Introdução SATplan métodos para compilar problemas de planejamento em fórmulas proposicionais (CNF) resolvidas por algoritmos SAT sistemáticos e estocásticos.

Leia mais

Introdução à Programação. João Manuel R. S. Tavares

Introdução à Programação. João Manuel R. S. Tavares Introdução à Programação João Manuel R. S. Tavares Sumário 1. Ciclo de desenvolvimento de um programa; 2. Descrição de algoritmos; 3. Desenvolvimento modular de programas; 4. Estruturas de controlo de

Leia mais

Lógica Computacional

Lógica Computacional Aula Teórica 5: Semântica da Lógica Proposicional António Ravara Simão Melo de Sousa Departamento de Informática, Faculdade de Ciências e Tecnologia, Universidade Nova de Lisboa Departamento de Informática,

Leia mais

Inteligência Artificial

Inteligência Artificial Inteligência Artificial CTC15 Aula 3b CTC15 Aula 3b 1 Sumário Exemplos de PSR Busca genérica aplicada à PSRs Backtracking Verificação forward Heurísticas para PSRs CTC15 Aula 3b 2 Problemas de satisfação

Leia mais

Capítulo 1. Aula Conectividade Caminhos

Capítulo 1. Aula Conectividade Caminhos Capítulo 1 Aula 7 1.1 Conectividade Muitos problemas podem ser modelados com caminhos formados ao percorrer as arestas dos grafos. Por exemplo, o problema de determinar se uma mensagem pode ser enviada

Leia mais

5 Fidedignidade Disponibilidade Confiabilidade Segurança Proteção Privacidade Integridade

5 Fidedignidade Disponibilidade Confiabilidade Segurança Proteção Privacidade Integridade 99 5 Fidedignidade O objetivo desta seção é apresentar a terminologia comumente utilizada na literatura de tolerância a faltas. Esta introdução é importante para auxiliar na identificação dos aspectos

Leia mais

Primeiro Trabalho de IA/SI: Buscas. Entrega: 03/03/2019 (2 semanas)

Primeiro Trabalho de IA/SI: Buscas. Entrega: 03/03/2019 (2 semanas) Primeiro Trabalho de IA/SI: Buscas Entrega: 03/03/2019 (2 semanas) 18 de Fevereiro de 2019 Este trabalho é para ser submetido via Moodle. Será desenvolvido principalmente durante as aulas práticas, mas

Leia mais

Estruturas de Dados Grafos

Estruturas de Dados Grafos Estruturas de Dados Grafos Prof. Eduardo Alchieri (introdução) Grafo é um conjunto de pontos e linhas que conectam vários pontos Formalmente, um grafo G(V,A) é definido pelo par de conjuntos V e A, onde:

Leia mais

BDDs. (Diagramas de Decisão Binária)

BDDs. (Diagramas de Decisão Binária) BDDs (Diagramas de Decisão Binária) Model Checking Inventado em 1981 por Ed Clarke e Al Emerson. Com Clarke e Emerson, J.P. Queille and Joseph Sifakis inventaram independentemente a checagem de modelos

Leia mais

Complexidade de Algoritmos. Edson Prestes

Complexidade de Algoritmos. Edson Prestes Edson Prestes A classe P consiste nos problemas que podem ser resolvidos em tempo Polinomial (Problemas tratáveis) A classe NP consiste nos problemas que podem ser verificados em tempo polinomial (Problemas

Leia mais

Análise e Projeto de Algoritmos

Análise e Projeto de Algoritmos Análise e Projeto de Algoritmos 2018.2 Classes P e NP P São os problemas que podem ser resolvidos em tempo polinomial por uma Máquina de Turing Determinística. NP São os problemas que podem ser decididos

Leia mais

Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. Banco de Dados Processamento e Otimização de Consultas

Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. Banco de Dados Processamento e Otimização de Consultas Processamento e Otimização de Consultas Banco de Dados Motivação Consulta pode ter sua resposta computada por uma variedade de métodos (geralmente) Usuário (programador) sugere uma estratégia para achar

Leia mais

Seleção de Atributos 1

Seleção de Atributos 1 Seleção de Atributos 1 Tópicos Por que atributos irrelevantes são um problema Quais tipos de algoritmos de aprendizado são afetados Seleção de atributos antes do aprendizado Benefícios Abordagens automáticas

Leia mais

Cálculo proposicional

Cálculo proposicional O estudo da lógica é a análise de métodos de raciocínio. No estudo desses métodos, a lógica esta interessada principalmente na forma e não no conteúdo dos argumentos. Lógica: conhecimento das formas gerais

Leia mais

Introdução à Programação

Introdução à Programação Introdução à Programação Linguagens de Programação: sintaxe e semântica de linguagens de programação e conceitos de linguagens interpretadas e compiladas Engenharia da Computação Professor: Críston Pereira

Leia mais

4 Uma Linguagem Baseada em Máquinas de Estado 4.1. A Linguagem

4 Uma Linguagem Baseada em Máquinas de Estado 4.1. A Linguagem 4 Uma Linguagem Baseada em Máquinas de Estado 4.1. A Linguagem Acredita-se nesse trabalho que características reativas e fortemente baseadas em modelos tornam necessária a criação de uma linguagem específica

Leia mais

SUMÁRIO. Fundamentos Árvores Binárias Árvores Binárias de Busca

SUMÁRIO. Fundamentos Árvores Binárias Árvores Binárias de Busca ÁRVORES SUMÁRIO Fundamentos Árvores Binárias Árvores Binárias de Busca 2 ÁRVORES Utilizadas em muitas aplicações Modelam uma hierarquia entre elementos árvore genealógica Diagrama hierárquico de uma organização

Leia mais

2 Estado da Arte. 2.1.Geração automática de casos de teste

2 Estado da Arte. 2.1.Geração automática de casos de teste 2 Estado da Arte Existem três conceitos importantes que serão abordados durante essa dissertação: geração automática de casos de teste, tabelas de decisão e geração automática de dados de teste. Foi realizada

Leia mais

Matemática Discreta 10

Matemática Discreta 10 Universidade Federal do Vale do São Francisco Curso de Engenharia da Computação Matemática Discreta 10 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br - www.univasf.edu.br/~jorge.cavalcanti 1 Muitas

Leia mais

Complexidade computacional

Complexidade computacional Complexidade computacional Marina Andretta ICMC-USP 15 de setembro de 2015 Baseado no livro Uma introdução sucinta a Algoritmos de Aproximação, de M. H. Carvalho, M. R. Cerioli, R. Dahab, P. Feofiloff,

Leia mais

Aprendizado de Máquina

Aprendizado de Máquina Aprendizado de Máquina Árvores de Decisão Luiz Eduardo S. Oliveira Universidade Federal do Paraná Departamento de Informática http://lesoliveira.net Luiz S. Oliveira (UFPR) Aprendizado de Máquina 1 / 28

Leia mais

Apêndice A. Pseudo-Linguagem

Apêndice A. Pseudo-Linguagem Apêndice A. Pseudo-Linguagem Apostila de Programação I A.1 Considerações Preliminares Os computadores convencionais se baseiam no conceito de uma memória principal que consiste de células elementares,

Leia mais