Teoria de Problemas - Departamento de Informática e ...j.barreto/TC/Problemas.pdf · Teoria de...
Transcript of Teoria de Problemas - Departamento de Informática e ...j.barreto/TC/Problemas.pdf · Teoria de...
Teoria de Problemas
Jorge Muniz Barreto
UFSC-INE
Curso:Teoria da Computação
J.M.Barreto UFSC-INE
Que é um problema?
• Enunciado:
George Polya:
• Quais são os dados(D)?
• Quais são as respostaspossíveis (R)?
• Qual a condição (C)?
• Caracterização
Que é um problema?
J.M.Barreto UFSC-INE
Definição de Problema
• Um problema é o objeto matemáticoP=<D,R,c>, consistindo de dois conjuntosnão vazios, D os dados e R os resultadospossíveis e de uma relação binária c, acondição, que caracteriza uma soluçãosatisfatória, associando a cada elemento doconjunto de dados a Solução única desejada
J.M.Barreto UFSC-INE
Exemplo: diagnóstico médicoUm problema de diagnóstico médico P envolve:• O conjunto de dados disponível d ε D, onde d são
os dados (observação da anamnese, sintomas,resultados de laboratório, etc) que pertencem aoconjunto D de dados possíveis.
• R é o conjunto de doenças possíveis.
• A condição que caracteriza uma soluçãosatisfatória consiste em encontrar o par <d,r> onde
• r ∈ R é o diagnóstico desejado.
J.M.Barreto UFSC-INE
Exemplo: raiz de polinômio
• solução do problema da busca das raízes deum polinômio com coeficientes reaisconsiste em associar a cada conjunto decoeficientes de um polinômio particularp(x) de grau n, n números complexos cn demodo a satisfazer a condição de que o valorde p(x) fazendo x = c para todo n seja nulo.
J.M.Barreto UFSC-INE
Como Definir uma Função?(1/5)
• Enumeração exaustiva
Neste caso fornece-se todos os conjuntos de pares,dado, resultado. Evidentemente, este modo dedefinir uma função, só se aplica no caso que oconjunto de dados é finito.
• Exemplo: seja uma agenda de telefones. Ela podeser considerada como a função que associa a cadanome de pessoa seu telefone.
J.M.Barreto UFSC-INE
Como Definir uma Função?(2/5)
Declarativamente:
Definir declarativamente um problema é darpropriedades que devem ser satisfeitas pela soluçãodo problema.
Exemplo 1: Dado um número real associa doisnúmeros cuja soma de seus quadrados \'e igual aonúmero real dado. A solução pode ser visualizadacomo um círculo, centrado na origem de um planocom coordenadas ortonormais (eixos ortogonais ede mesma escala), de raio igual ao número dado.
J.M.Barreto UFSC-INE
Como Definir uma Função?(3/5)
• Declarativamente-Exemplo 2: Seja a função característica do conjunto das
equações diofantinas de quarta órdem que temsolução. Ora a partir de 3 sabe-se não haverteorema permitindo saber se o problema tem ounão solução. Logo, o que resta é tentar todos aspossibilidades... e como existem infinitos númerosinteiros não se pode ter certeza, se calculando oproblema tem solução ou ainda não foi achada ounão tem solução!
J.M.Barreto UFSC-INE
Como Definir uma Função?(4/5)
• Por um algoritmo: Um programa de computador define a
correspondência entre dados e resultados sempreque ele para conseguindo chegar a uma solução.Portanto um programa pode ser considerado comoum modo de definir um problema.
• Exemplo: Formulário de Imposto de Renda emum País com leis mais complicadas que o nosso...
J.M.Barreto UFSC-INE
Como Definir uma Função?(5/5)
• Por exemplos:
Pode-se reconhecer que, neste caso, a solução nãoé única: todas as funções que sejam iguais dentroda região em que o problema é definido sãoválidas. Trata-se de fazer uma aproximação.
• Costuma-se empregar redes neurais comaprendizado supervisionado. Usam-se osexemplos para treinar a rede e obtem-se valoresestimados da solução para os outros valoresusando a propriedade de generalização das redes
J.M.Barreto UFSC-INE
Computabilidade
• Intuitivamente uma função é ditacomputável se é possível calcular seu valor,dado qualquer elemento do seu domínio.
• Será toda função, bem definida,computável?
NEM SEMPRE!!!
J.M.Barreto UFSC-INE
Computabilidade• Enumeração
Sempre computável, bastaler o segundo elemento dopar.
• Exemplos: Obtem-se aproximação da
solução. Caso excelentepara tratamento por redesneurais.
• Por programa:Impossível saber se o programa para: não computável.
J.M.Barreto UFSC-INE
ComputabilidadePrograma constante
Read x;While x ≠ 10 do
x := x + 1;
Print x;
End;
**************
Ora para x>10 oprograma não para!
Vai ficarcalculando
A vida toda?Não para?
J.M.Barreto UFSC-INE
Computabilidade parcial
• Uma função é parcialmente computável se épossível calcular seu valor para apenasalguns elementos do seu domínio dedefinicão.
• O exemplo anterior era parcialmentecomputável.
J.M.Barreto UFSC-INE
Decidibilidade
• Decidibilidade é o caso particular decomputabilidade quando a função só admitedois valores.
• Quando se fala se um problema é solúveltem-se um problema de decidibilidade.
• Um problema é parcialmente dicidível seele é decidível para um subconjunto própriodo seu conjunto de argumentos admissíveis.
J.M.Barreto UFSC-INE
Problema da Parada (1/5)
• Trata-se em outras palavras decidir se umprograma é um algoritmo, ou seja, umprograma que acaba.
• Se o número de dados é finito, o problemaconsiste em verificar para todos os dados.
• Caso contrário, é impossível provar que elepara para qualquer dado do conjunto dedados possíveis.
J.M.Barreto UFSC-INE
Problema da Parada (2/5)
• Admita-se que exista um programa“Testador” que recebe como dados umprograma a testar se para “P” e o seuconjunto de dados “D”.
• A saida de “Testador” que sempre para sera“Sim” ou “Não” conforme “P” para ou nãopara todos os dados de “D”.
J.M.Barreto UFSC-INE
Problema da Parada (3/5)
• Nada impede de considerar “P” como dado de “P”e assim tem-se o caso de Testador testando se“P(P)” para. Este é o âmago da demosntração pordiagonalizacão.
ProgramaTestador
P(D) para?
Não
Sim
P
D
e para
e para
ProgramaTestadorP(P) para? Sim
PNão
e para
e para
J.M.Barreto UFSC-INE
Problema da Parada (4/5)
e chama P(P)
P(P) para?
Sim
P
Nãoe para
Programa Gaiato
e chamaGaiato(Gaiato)
Sim
Nãoe paraPrograma GaiatoGaiato
Gaiato(Gaiato) para?
J.M.Barreto UFSC-INE
Problema da parada (5/5)
• Conclusão:
• Se Gaiato(Gaiato) para, chama Gaiato(Gaiato), logonão para e se a resposta é que não para , então para.Conclui-se portanto que esta impossibilidade foiencontrada por uma das premissas ser falsa. Como aúnica premissa feita foi a da existência do programa``Testador'', pode-se afirmar não existir talprograma.
J.M.Barreto UFSC-INE
Equações Diofantinas (1/2)• As equações diofantinas tem este nome em
homenagem a Diofantus, matemático grego queestudou sistemas de equações algébricas onde oscoeficientes são números naturais e se buscamSoluções no conjunto dos naturais.
• No caso de uma equação a uma incógnita, do tipo:
ay = bx
• a condição para existência de solução é• que a ≠ 0 e “b” divisível por “a”. Neste caso existe
uma infinidade de soluções dadas por:
y = b x onde x = 0,1,2,3…
a
J.M.Barreto UFSC-INE
Equacões Diofantinas (2/2)
• Para o caso de equações linearessimultâneas não existe teorema assegurandoa existência de solução a partir de 3incógnitas.
E assim aparece o nosso exemplo!
J.M.Barreto UFSC-INE
Máquina de Turing• Hipótese de Church-
Turing:
• Toda função computávelpode ser calculada pelaMáquina de Turing. As nãocomputáveis não podem.
• A Máquina de Turing temuma unidade de controle,uma fita que serve de entradae saída e uma memóriailimitada.
k k
Máquina de Turing
(Memória tão grandequanto for necessário)
J.M.Barreto UFSC-INE
Máquina de Turing
• Ações:• ir para um novo estado
(modificar a memóriada máquina);
• escrever algo na fita;
• mover a cabeça deleitura para esquerdaou para direita.
• Em função de:• estado em que se
encontra a máquina;
• símbolo de entrada;
J.M.Barreto UFSC-INE
Teste de Turing• Foi o idealizador do Teste de
Turing de Inteligência.
• Um interrogador faz perguntasa um computador e a um serhumano sem saber quem équem.
Ganha o interrogador se em um tempo razoável puderdizer com argumentos convincentes quem é quem.Computador e seu par ganham, sendo declaradosinteligentes se o interrogador não conseguir.
J.M.Barreto UFSC-INE
Alan Mathison Turing (1912-1954)• Durante a segunda guerra foi
convocado pelo governo inglêstendo trabalhado de 1939/45 noMinisterio de Relações Exterioresem trabalho confidencial que atéhoje mantém esse status.
• Em homenagem a seus trabalhosem computação, deu seu nome aomais prestigioso prêmio dadoanualmente pela ACM.
Suicidou-se em 1954, vítima da intolerância
J.M.Barreto UFSC-INE
Máquina de Turing
• O grande interesse daMáquina de Turing éoferecer um meioexperimental deverificar acomputabilidade deum problema. Bastaverificar se esta elapode resolve-lo.
Equivalentes:• Cálculo λ• Linguagens While
• Neurocomputadores
N
W
λλ
J.M.Barreto UFSC-INE
Maquina de Turing e Sequencial
• Tanto a Maquina de Turing quanto aMáquina Sequencial tem estado, entrada,saida, etc…
• Qual a difereça entre as duas que faz aMáquina de Turing mais potente?
• A Máquina de Turing é capaz de escreverna sua entrada modificando-a.
J.M.Barreto UFSC-INE
Complexidade
• Computabilidade diz respeito a se umproblema, modelado como função pode ounão ser resolvido.
• Complexidade diz respeito à quantidade derecursos necessários para resolver umproblema.
J.M.Barreto UFSC-INE
Complexidade
• Normalmente quando se fala decomplexidade se pensa em computadoresdigitais, ou CBI como sera visto maisadiante.
• Os recursos mais pensados são:
•Memória
•Tempo.
J.M.Barreto UFSC-INE
Complexidade
• A complexidade de um problema, comrelação a um conjunto bem definido derecursos, é definida como aquela queconsidera o modo mais parcimonioso de usode recursos conhecido para a solução doproblema.
J.M.Barreto UFSC-INE
Complexidade (Importância)
• Se fosse perfeitamente conhecido comodeterminar a complexidade de um problemano caso das quatro abordagens CA(Computação algoritmica), IAS, IAC, IAE eIAH, seria possível, dado um problema, antesde tentar resolvê-lo, determinar estascomplexidades e escolher aquela que fosse amenor, usando-a na resolução do problema.
J.M.Barreto UFSC-INE
Complexidade
• Um algoritmo é dito de complexidade linearquando a quantidade de recursos para sua execuçãoaumenta proporcionalmente à quantidade de dadosenvolvida no enunciado do problema.
• polinomial quando a quantidade de recursos parasua execução aumenta mais devagar do que algumpolinômio função da quantidade de dados envolvidano enunciado do problema.
J.M.Barreto UFSC-INE
Complexidade
• Um algoritmo polinomial é dito de grau N, seexiste um polinômio de grau N que cresça com osdados mais rapidamente que cresce a quantidadede recursos necessária à execução do algoritmo enão existe polinômio de grau N-1 com talcaracterística.
Mostrar que a multiplicaçnao de matrizes,usando a definicão, é dada por:
≈ 2n3
J.M.Barreto UFSC-INE
Complexidade
• Um problema é dito NP-Completo se nãose conhece algoritmo de órdem polinomialcapaz de resolvê-lo.
• Problemas ditos NP-Completos sãoabordados com solucões aproximadas emIA, usando heurísticas.
J.M.Barreto UFSC-INE
NP-Completos
• Problemas NP-Completos são geralmentesinônimo de problemas cuja solucao exata écomputável mas se o número de variáveisaumentar se torna de solução impossível.
• Nunca se provou que não existe algoritmopolinomial que resolva os problemas NP-completos.
J.M.Barreto UFSC-INE
NP-Completos (Exemplo)
• Caixeiro viajante:• Um caixeiro viajante deve visitar n cidades. Ele
conhece o preço do deslocamento entre cada par decidades. Para economizar, deseja-se conhecer opercurso que lhe permita visitar todas as cidades,voltar a origem e de menor custo.
• Apesar da aparência de pouca utilidade este é oproblema a ser resolvido por um caminhão tanquede distribuição de petróleo.
J.M.Barreto UFSC-INE
Computabilidade Conexionista
• Chama-se neurocomputador um computador emque o funcionamento interno é feito por redesneurais munido de dispositivos de entrada e saída.Até o presente momento tudo foi feito comcomputadores digitais em mente, os quais temessencialmente no uso de instruções sua diferençados neurocomputadores. Por esta razão, e paraevitar confusão, eles serão chamados deComputadores Baseados em Instruções ou CBI(IBC em inglês).
J.M.Barreto UFSC-INE
Computabilidade Conexionista• Com o advento dos neurocomputadores
veio a pergunta:
“Será que algum problema que não podia ser resolvido pela Máquina de Turing, ou por um CBI, pode ser resolvido por um
neurocomputador?”
J.M.Barreto UFSC-INE
Computabilidade Conexionista
Em um CBI tem-se:1 - o computador virtual
(circuitos e programas),
2 - o ato de fazer ocomputador apto aresolver um problemaespecífico (carregar oprograma na máquina),
3 - resolver o problema(executar o programa).
Em Neurocomputador:1 - a rede de neurônios com
entradas e saídas (simulado oumaterialmente implementado),
2 - um meio de fixar os pesos dasconexões, muitas vezes usandoum algorítmo de aprendizagem(equivalente a carregar oprograma),
3 - usar a rede educada e resolver oproblema com os dados a seremusados na entrada da rede(identico à rodar o programa).
J.M.Barreto UFSC-INE
Computabilidade Conexionista
A computabilidade de um problema depende dospontos 1 e 2. Com efeito, a possibilidade de resolverum problema depende do apoio material que sedispõe e se existe um programa (caso de um CBI) ouse existe um conjunto de pesos de conexões (caso deum neurocomputador) capaz de resolver o problema.Por outro lado a complexidade do problema dependedo ponto 3, ou seja rodar o programa ou excitar arede com os dados a serem usados.
J.M.Barreto UFSC-INE
Computabilidade Conexionista
• Teorema: Todo problema que pode ser resolvidopor um CBI poderá ser resolvido, por uma RNAmunida de convenientes dispositivos de entrada esaida.
• Prova:
• A prova se baseia em que pode-se construir umCBI com redes neurais. Basta lembrar que comredes neurais é possível construir circuitos lógicos.
J.M.Barreto UFSC-INE
Computabilidade Conexionista
•
“Bias” = 0,6 “Bias” = 0,4
1u
yyyu
2u
1u
2u
0,5
-10,5
0,5
0,5
NÃO E OU
Ψ Ψ
Ψ
uΣ
Ψ
Circuitos da lógica combinacional
J.M.Barreto UFSC-INE
Complexidade Conexionista
• Circuitofundamental dalógica sequencial:
⇒A
B
C
Neurônio dinâmico 1
Neurônio dinâmico 2
J.M.Barreto UFSC-INE
Computabilidade Conexionista
• Todo problema que pode ser resolvido por umaRNA pode ser aproximado, com a precisãodesejada por um CBI.
• Justificativa:simular uma RNA em um CBIenvolve apenas produto escalar e cálculo de umafunção. Pode-se portanto fazer programa parasimular qualqueer rede em um CBI.
Como no CBI existe quantização das variáveis emjogo, a simulação é uma aproximação.
J.M.Barreto UFSC-INE
Complexidade Conexionista• Embora pouco seja conhecido sobre complexidade quando
se usa um neurocomputador, sabe-se que em termos decomplexidade as coisas são diferentes em termos de CBI eneurocomputadores.
• Para ver que as coisas são diferentes basta considerar umexemplo simples. Seja o caso de um circuito implementandouma RNA direta síncrona com três camadas. Suponha-seainda que ela foi treinada para associar padrões (por exemploum sistema especialista de diagnóstico associando sintomasaos correspondentes diagnósticos). Como não há retroações,o tempo para a rede dar uma resposta é sempre o mesmo:três ciclos de relógio! E isso para qualquer número desintomas e doenças.
J.M.Barreto UFSC-INE
Complexidade Conexionista
• Existem muito poucos estudos sobrecomplexidade de problemas voltada para a soluçãopor neurocomputadores. Note-se que não se tratade falar da complexidade de problemas ligados aoaprendizado das RNA, tais como a complexidadede um algoritmo de aprendizado de redes, que temsido tratado por vários autores e é reconhecidocomo problema importante.
J.M.Barreto UFSC-INE
Complexidade Conexionista
• A complexidade a que o presente estudo se refereé a quantidade de recursos em termos de RNAnecessãrios para poder resolver um determinadoproblema, eventualmente considerando-se umacerta precisão. Estes recursos incluem o tipo derede a ser escolhido, a topologia da rede, etc.
J.M.Barreto UFSC-INE
Complexidade?Computabilidade?
• Como não consegueresolver poderia indicar serum problema decomputabilidade…
• Falso! Pensando assim,guardar 200 telefones seriaproblema decomputabilidade, seconsiderasse meu celular...
• Algumas vêzes estesdois conceitos semisturam… Seja oTeorema: “Uma rededireta com duascamadas de entrada esaida não consegueresolver problemaslinearmente nãoseparáveis.”
J.M.Barreto UFSC-INE
Livro Perceptrons, Minsky, Papert
• O livro citado é uma obra remarcável nateoria da complexidade conexionista, pordar guias de estruturas e problemas quepodem ser resolvidos por cada uma.
• Em particular o problema da separabilidadelinear é notório.
J.M.Barreto UFSC-INE
Complexidade de RNA
• Teorema 1:
Toda RNA constituídaapenas de neurôniosestáticos, incluindociclos (ou seja, comretroação), éequivalente a umaoutra rede estática semciclos.
• Teorema 2:
Toda rede direta, comtopologia por camadas,com neurônios lineares éequivalente a uma redelinear contendo apenasduas camadas de neurôniosseparadas por uma camadade conexões.
J.M.Barreto UFSC-INE
Paradigma de Programação
• Programar um neurocomputador pode serconsiderado como um novo paradigma deprogramação, em que não é necessário nemdefinir o algoritmo nem definir o problemaprecisamente. Basta introduzir no computadorrelações entre conceitos ou usar exemplos deproblemas parecidos já resolvidos para seremusados na fase de aprendizado. A RNA, usandosua capacidade de generalização se torna capaz deresolver o problema desejado.
J.M.Barreto UFSC-INE
Tipos de Problemas
• Problemas Algorítmicos Numéricos;
• Problemas Algorítmicos Não-Numéricos;
• Problemas Não Algoritmicos;
• Heurísticas.
J.M.Barreto UFSC-INE
Características de Problemas
• São conhecidos os passos para achar a solução?
• O problema é decomponível?
• Passos para as soluções podem ser desfeitos?
• O universo é predizível?
• Uma boa solução é relativa ou absoluta?
• O conhecimento disponível é consistente?
• Qual a importância do conhecimento?
J.M.Barreto UFSC-INE
São conhecidos os passos para achara solução?• o problema é suficientemente bem definido que se
pode dizer como vai ser a solução.
• Por exemplo, no problema do jogo do 8, sabe-seexatamente o que é possivel fazer e como fazer.Entretanto seja identificar se uma assinatura emum cheque é ou não falsa. Ora, neste caso quemfaz o exame usa técnicas difíceis de seremexpressas por regras fixas.
J.M.Barreto UFSC-INE
O problema é decomponível?
J.M.Barreto UFSC-INE
Agora temos uma brilhante solução!Só falta descobrir qual o problema!