Pontifícia Universidade Católica do Rio Grande do Sul Instituto de Informática (II-PUCRS) Grupo de Apoio ao Projeto de Hardware - GAPH Projeto Lógico Automatizado de Sistemas Digitais Seqüenciais 2 - Fundamentação Teórica Ney Laert Vilar Calazans* Julho, 1998 *Com o apoio do Conselho Nacional de Desenvolvimento Científico e Tecnológico (CNPq) e da Fundação de Amparo à Pesquisa do Estado do Rio Grande do Sul (FAPERGS).
Sumário Escola98 H 1 - Estruturas Algébricas H 2 - Grafos H 3 - Funções H 4 - Representações de Funções Discretas H 5 - Análise de Complexidade de Algoritmos H 6 - Problemas Formais
1 - Estruturas Algébricas - conceitos básicos H Conjuntos: cardinalidade, elementos, conjunto potência, ; relações entre elementos ou conjuntos e conjuntos:»,,,,,, etc. H Produto Cartesiano: S T: {(s,t) s S, t T}; conceito expansível para S T U H Faltam operadores para expressar: ordenamento, equivalência/compatibilidade. H Problema: usar conjuntos para expressar isto.
1 - Estruturas Algébricas - exemplo e definição H Exemplo: Naturais (N) e Inteiros (Z) 3 N, -25 N, 6/3 N; 3 Z, -25 Z, 1/3 Z; Z N, N Z; H Contudo, como expressar que 25 39, ou então que - 25 25? H Solução: associar novas relações e conseqüentes operadores aos conjuntos! N Z 0 1 2 3 4 5 6-3-2-1 0 1 2 3 H Estrutura Algébrica - coleção de conjuntos e relações n-árias sobre estes; H Notação: <S,T,,r,δ,...>; H Base - relação binária.
1 - Estruturas Algébricas - relações binárias H Tripla <S,T,r>, onde S é domínio, T é o codomínio e r é o grafo, r S T; H Imagem r(s) de elemento do domínio é {t t T, (s,t) r}, extensível a qquer subconjunto de S. H Estrutura do grafo determina tipos de relação: completamente especificada - r(s), para todo s; sobre - r(s)=t (também dita cobertura de T); funcional - para todo s S, r(s) 1; um-para-um - para todo s s, r(s) r(s )= ;
1 - Relações binárias - exemplos completamente especificada sobre funcional um-para-um
1 - Relações binárias - partição H Combinações de propriedades -> importantes relações; H Partição: uma relação binária sobre e umpara-um; H Partição: cobertura onde blocos (classes) disjuntos dois a dois. partição
1 - Relações Binárias sobre um Conjunto H Aquelas onde S=T; H Propriedades adicionais -> novos tipos: reflexiva - r(s) {s}, para todo s S; simétrica - se r(s) {t}, então r(t) {s}, para qualquer s e qualquer t; antissimétrica - se para algum s e t, r(s) {t}, e também r(t) {s}, então s=t; transitiva - para todo s, t, e u em S, se r(s) {t}, e r(t) {u}, então r(s) {u}; H Como antes, propriedades são ortogonais!
1 - Relações binárias sobre conjunto- exemplos reflexiva simétrica antissimétrica transitiva
1 - Relações binárias - relações de ordem H Uma relação binária reflexiva e transitiva é relação de pré-ordem; H Relação de pré-ordem antissimétrica é relação de ordem; H Se para todo s t, um dentre (s,t) e (t,s) faz parte da relação de ordem, ordem é total, senão, é parcial. relação de ordem
1 - Relações de ordem - diagrama de Hasse H Forma gráfica ilustrando relação de ordem; H Grafo dirigido, com menor número de arestas; H Relação de ordem representada: < S 2, >; H Vértices - elementos de S, Arestas - relação. Exemplos {a,b,c} 3 30 {a,b} {a,c} {b,c} 6 10 15 2 {a} {b} {c} 2 3 5 Ø 1 1
Sumário Escola98 1 - Estruturas Algébricas H 2 - Grafos H 3 - Funções H 4 - Representações de Funções Discretas H 5 - Análise de Complexidade de Algoritmos H 6 - Problemas Formais
2 - Grafos - conceitos básicos H Formalmente, G=<V,E>, com conjunto V de vértices e relação binária E sobre V, E=<V 2,r>, elementos de r são arestas; H Dependendo de E, grafos podem ser dirigidos, não-dirigidos, ter laços ou não, etc; H Conceitos importantes: incidência de arestas, adjacência entre vértices, grau de um vértice, completude, caminho entre vértices, ciclicidade, conexidade, decomposição em subgrafos, isomorfismo, planaridade, árvores, etc, etc.
2 - Grafos - exemplos grafo não-dirigido a b c três componentes conexos grafo dirigido d e f grafo dirigido a b c subgrafo de a b c d e f f
Sumário Escola98 1 - Estruturas Algébricas 2 - Grafos H 3 - Funções H 4 - Representações de Funções Discretas H 5 - Análise de Complexidade de Algoritmos H 6 - Problemas Formais
3 - Funções H aqui - funções são relações binárias! H função parcial - relação binária funcional; H função completa - relação binária funcional e completamente especificada; H função no presente contexto = função parcial. função parcial função completa não é função
3 - Funções especiais H injeção - função um-para-um; H sobrejeção - função sobre; H bijeção - função sobre e um-para-um H função discreta - domínio e codomínio finitos. injeção sobrejeção bijeção
Sumário Escola98 1 - Estruturas Algébricas 2 - Grafos 3 - Funções H 4 - Representações de Funções Discretas H 5 - Análise de Complexidade de Algoritmos H 6 - Problemas Formais
4 - Representações de Funções discretas H Uma forma simples - vetor valor ordena-se elementos do domínio e usa-se vetor de imagens, indexado pelos elementos do domínio;» Exemplo: E de duas entradas - ordem de enumeração natural após conversão de base 2 para base 10.» Solução: [0 0 0 1] H Outras formas - tabela verdade, mapas de Karnaugh, soma de mintermos, produto de maxtermos, diagramas de decisão binária, diagramas de Hasse.
4 - Tabelas Cúbicas para Funções discretas H Introdução via exemplo: Sejam I 1 ={a,b,c}, I 2 ={d,e}, O 1 ={g,h} e O 2 ={i,j,k} conjuntos. Seja S= I 1 I 2 e seja F= {f 1,f 2 } um conjunto de funções discretas onde f 1 :S--> O 1 e f 2 :S--> O 2. H As tabelas cúbicas para estas funções podem ser: 1 2 3 C j D j C j D j C j D j I 1 I 2 f 1 f 2 I 1 I 2 f 1 f 2 I 1 I 2 f 1 f 2 {a} - h {a,b} {d} h k {a,b,c} {d} h k - {d} k - {d} k {b,c} {e} g j {a} {e} i {a} {e} h i {a} {e} h i {b} {d} h {b} {e} g - {b} {e} g - {c} {e} g j {c} {e} g j
4 - Diagramas de Decisão Binária H Existem há muito tempo, mas desde 1986 muito exploradas -> Bryant introduz forma canônica; H Forma muito compacta para manipular funções e conjuntos. Índice=1 a a b 0 1 0 0 1 Índice=2 b b 0 1 0 1 b 1 1 0 a 1 0 a 1 Índice=3 c c c c 0 1 0 1 0 1 0 1 0 c 1 0 1 c 0 0 0 1 0 1 1 1 1 0 1 0 1
Sumário Escola98 1 - Estruturas Algébricas 2 - Grafos 3 - Funções 4 - Representações de Funções Discretas H 5 - Análise de Complexidade de Algoritmos H 6 - Problemas Formais
5 - Análise de Complexidade de Algoritmos H Dados dois algoritmos A e B para resolver um problema, qual deles é melhor? principais critérios: tempo, armazenamento; H Escalabilidade - medida da capacidade de técnica p/ lidar com instâncias de tamanho crescente de problema ; H Lembrar-se da lei de Moore! Exemplo: em 1995, unidade de controle P6: 10 5 portas; em 2000, Pn: 10 8 portas!
5 - Análise de Complexidade de Algoritmos H Definições importantes: problema, algoritmo e tamanho da entrada (t e ); H Em geral, determinação de função de crescimento de uso de recursos é muito difícil, senão inviável! H Solução para projetar e analisar algoritmos: conjunto de funções conhecidas e composição que aproxima crescimento do algoritmo; classes de complexidade de problemas;
5 - Crescimento Assintótico de Funções H Notações assintóticas Ο, Ω, e Θ: limites superior, inferior e estrito (duplo); H Algoritmo f(n) é Ο(g(n)), ou f(n)= Ο(g(n)) se 0 f(n) c 1 g(n), para todo n n 0 ; H Restantes é análogo; H O é conjunto de funções. Consumo de Recursos n 0 n 1 n 2 c 1 g(n) f(n) c 2 g(n) Tamanho da Entrada
5 - Crescimento de Funções - operações H Tabela dá conjunto de funções de base; H Constantes normalmente pequenas; H Coeficientes constantes pequenos; H Linha divisória de complexidade - polinômios! log n n n log n n 2 n 3 2 n 3 n n! 1 2 2 4 8 4 9 2 2 4 8 16 64 16 81 24 3 8 24 64 512 256 6560 40320 4 16 64 256 4096 65536 ~10 7 ~10 13 5 32 160 1024 32768 ~10 9 ~10 15 ~10 35 10 1024 10240 ~10 6 ~10 9 ~10 308 ~10 488 ~10 2639 20 ~10 6 ~10 7 ~10 12 ~10 18???
5 - Crescimento de Funções - exemplo temporal H Supondo uma máquina de 100MIPs de desempenho coeficientes constantes unitários; H Para instâncias de entradas com três ordens de grandeza de diferença; H Lei de Moore - em 15 anos, algoritmo cúbico levaria 4 meses para executar sobre instância 10 6. n f(n)=n f(n)= n log n f(n)=n 2 f(n)=n 3 f(n)=2 n 10 3 10µs 100µs 10ms 10s ~10 285 anos 10 6 10ms 0,2s 2,7h 317anos?
5 - Classes de Complexidade de Problemas H Problema abstrato: relação binária do conjunto de instâncias sobre o conjunto de soluções Q=<I,S,p>; H Problema de decisão: solução é sim ou não; H Problema de otimização: com valor a maximizar ou a minimizar; H Problema concreto: resulta de codificar em binário o domínio de um problema de decisão abstrato.
5 - Classes de Complexidade de Problemas H Classe NPC: subconjunto de problemas em NP tal que qualquer elemento de NP pode ser reduzido a qualquer elemento de NPC; H Classe NPH: conjunto de problemas de decisão concretos tais que qualquer problema da classe NP pode ser reduzido a qualquer elemento seu; H Obviamente, NPC NPH.
5 - Classes de Complexidade de Problemas H Relação suposta como a mais provável entre as classes de complexidade acima: Problemas Concretos P NP NPC NPH
Sumário Escola98 1 - Estruturas Algébricas 2 - Grafos 3 - Funções 4 - Representações de Funções Discretas 5 - Análise de Complexidade de Algoritmos H 6 - Problemas Formais
6 - Problemas Formais H Dois exemplos, caminhos mais curto e mais longo entre dois vértices em um grafo: H Caminho_mais_curto (_mais_longo análogo): Instância: grafo não-dirigido G, peso natural l(e) para cada aresta e, dois vértices a,b e natural B. Questão: existe um caminho simples de a para b em G que tem comprimento total B ou menos? H Problemas concretos associados: Pertence à classe P (mais_curto) e NPC (mais_longo)!