Estrutura da Apresentação

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

Download "Estrutura da Apresentação"

Transcrição

1 Programação em Lógica com Restrições utilizando o SICStus Prolog Luís Paulo Reis Docente da FEUP Investigador do LIACC NIAD&R Gab. I121 / I131 Estrutura da Apresentação PLR Domínios Interface do solver CLP(FD) do SICStus Resolução de CSPs (Domínios Finitos) Restrições Disponíveis no SICStus : Enumeração e Optimização 2 PLR Domínios Booleanos e Reais PLR Domínios Domínios Finitos 3 Boleanos: Esquema clp(b) use_module(library(clpb)). Reais e Racionais Esquema clp(q,r) use_module(library(clpq)). use_module(library(clpr)). Não são abordados na disciplina de PL! 4 Esquema clp(fd). Solver clp(fd) é um instância do esquema geral de PLR( CLP) introduzido em [Jafar & Michaylov87]. Útil para modelizar problemas de optimização discreta: Escalonamento, planeamento, alocação de recursos, empacotamento, geração de horários, etc. Características do solver clp(fd): Duas classes de restrições: primitivas e globais. Restrições são automaticamente traduzidas para conjunções de restrições primitivas e globais Valor lógico de uma restrição pode ser reflectido numa variável binária (0/1) reificação. Novas restrições primitivas podem ser adicionadas escrevendo indexicais Novas restrições globais podem ser escritas em Prolog. Algumas questões abordadas Interface do Solver CLP(FD) Como chamar o Solver clp(fd)? Como escrever programas simples? Restrições disponibilizadas pelo Sictsus? Predicados para pesquisa da solução? Predicados para estatísticas de execução? Como adicionar novas restrições globais? Como criar novas restrições primitivas? O solver clp(fd) está disponível como uma biblioteca :- use_module(library(clpfd)). Contém predicados para testar a consistência e o entailment de restrições FD e para resolver o problema, atribuindo valores às variáveis do problema. Um domínio finito é um subconjunto de inteiros pequenos e um restrição FD é uma relação entre um túplode pequenos inteiros. Só pequenos inteiros são admitidos como variáveis unbound neste domínio. 5 6

2 Interface do Solver CLP(FD) Colocação de Restrições 7 Todas a variáveis de domínio têm um domínio FD com valores associados (explicitamente ou implicitamente). Temporariamente estes domínios podem ser infinitos (sem valores mínimo lower bound e máximo upper bound ). O domínio das variáveis vai-se reduzindo sucessivamente conforme mais restrições são adicionadas. Se o domínio ficar vazio então as restrições não são, em conjunto, satisfazíveis, e o ramo corrente de computação falha. No final da computação é usual que cada variável tenha o seu domínio restringido a um único valor ( singleton ). Para tal é usual necessária alguma pesquisa (da responsabilidade do programador). 8 Uma restrição é chamada como qualquer outro predicado Prolog Exemplos:?- X in 1..5, Y in 2..8, X+Y #= T. X in 1..5, Y in 2..8, T in 3..13? yes?- X in 1..5, T in 3..13, X+Y #= T. X in 1..5, T in 3..13, Y in ? yes A resposta mostra a existência de domínios válidos para as variáveis. Resolução de CSPs Constraint Satisfaction Problems Resolução de CSPs Exemplo: SEND+MORE=MONEY CSP Constraint Satisfaction Problem ou PSR Problema de Satisfação de Restrições: Classe de problemas para que o solver clp(fd) é mais adequado Objectivo num CSP: Escolher valores (de domínios pré-definidos) para algumas variáveis de forma a que as restrições entre essas variáveis sejam todas satisfeitas. Criptograma - Send More Money Puzzle : Variáveis: letras S, E, N, D, M, O, R, Y Cada letra representa um dígito entre 0 e 9 Problema: Atribuir um valor distinto a cada dígito tal que: SEND + MORE = MONEY 9 10 Resolução de CSPs Constraint Satisfaction Problems Resolução de CSPs Exemplo: SEND+MORE=MONEY 11 Passos típicos na escrita de programa clp(fd): 1. Declarar variáveis e seus domínios 2. Colocar as restrições do problema 3. r por uma solução admissível através de pesquisa com backtracking ou uma solução óptima utilizando branch-and-bound. 12 :- use_module(library(clpfd)). puzzle([s,e,n,d,m,o,r,y]) :- domain([s,e,n,d,m,o,r,y], 0, 9), % passo 1 S#>0, M#>0, all_different([s,e,n,d,m,o,r,y]), % passo 2 sum(s,e,n,d,m,o,r,y ), labeling([], [S,E,N,D,M,O,R,Y]). % passo 3 sum(s, E, N, D, M, O, R, Y) :- 1000*S + 100*E + 10*N + D *M + 100*O + 10*R + E #= 10000*M *O + 100*N + 10*E + Y.?- puzzle([s,e,n,d,m,o,r,y]). D = 7, E = 5, M = 1, N = 6, O = 0, R = 8, S = 9, Y = 2?

3 Resolução de CSPs Exemplo: SEND+MORE=MONEY Resolução de CSPs Exemplo: SEND+MORE=MONEY 13 Por vezes um passo extra corresponde à colocação de restrições redundantes de forma a eliminar simetrias e reduzir o espaço de pesquisa Os domínios são definidos através do predicado domain/3 Restrições simples: S#>0 e M#>0 Predicado sum/8 coloca a restrição essencial Predicado all_different/1 garante que os valores atribuídos às variáveis serão distintos. com backtrack realizada por labeling/2. Estratégias de pesquisa distintas podem ser definidas (segundo parâmetro de labeling) No exemplo é usada a estratégia por defeito: seleccionar a variável à esquerda e atribuir-lhe o valores em ordem crescente. 14 E se invertermos? Primeiro labeling, depois restringir? :- use_module(library(clpfd)). puzzle([s,e,n,d,m,o,r,y]) :- domain([s,e,n,d,m,o,r,y], 0, 9), labeling([], [S,E,N,D,M,O,R,Y]), S#>0, M#>0, all_different([s,e,n,d,m,o,r,y]), sum(s,e,n,d,m,o,r,y ). sum(s, E, N, D, M, O, R, Y) :- 1000*S + 100*E + 10*N + D *M + 100*O + 10*R + E #= 10000*M *O + 100*N + 10*E + Y. Resulta no mecanismo GENERATE and TEST tradicional! Restrições Disponíveis Restrições Materializáveis Reified 15 Restrições Aritméticas Restrições de Pertença a Grupo Restrições Proposicionais Restrições definidas pelo Utilizador 16 Em vez de simplesmente colocar as restrições é útil reflectir o seu valor de verdade numa variável booleana (0/1) tal que: A restrição é colocada se B for colocado a 1 A negação da restrição é colocada se B for colocado a 0 B é colocado a 1 se a restrição se tornar entailed. B é colocado a 0 se a restrição se tornar disentailed. Este mecanismo é conhecido como reificação. Uma restrição reifiavél é escrita como:?- Constraint #<=> B. Exemplo: exactly(x,l,n) - Verdadeira se X ocorre exactamente N vezes na lista L. Pode ser defina como: exactly(_, [], 0). exactly(x, [Y L], N) :- X #= Y #<=> B, N #= M+B, exactly(x, L, M). Restrições Aritméticas Introdução Restrições Aritméticas Restrições Aritméticas Dedicadas 17 Definição:?Expr RelOp?Expr Expressões podem ou não ser lineares. Expressões lineares conduzem a maior propagação. Por exemplo: X/Y e X mod Y bloqueiam até Y estar ground (definido). Restrições Aritméticas podem ser reificadas:?- X in1..2, Y in3..5, X#=<Y #<=> B. B = 1, X in 1..2, Y in 3..5? Restrições lineares mantêm (pelo menos) consistência de intervalos e as suas versões reificadas detectam (pelo menos) entailment e desentailment de intervalos 18 As restrições seguintes expressam relações de entre a soma ou ou produto escalar e um valor: sum(+xs, +RelOp,?Value ) scalar_product(+coefs, +Xs, +RelOp,?Value ) knapsack(+coefs, +Xs,?Value) Utilizam algoritmos dedicados e são muito mais eficientes do que a colocação de uma série de restrições simples Estas restrições não podem ser reified

4 Restrições Aritméticas Soma e Produto Escalar Restrições Aritméticas Knapsack 19 sum(+xs, +RelOp,?Value) Onde: Xs é uma lista de inteiros ou variáveis de domínio, RelOp é um operador relacional e Value é um inteiro ou variável de domínio Verdadeira se a soma dos elementos de Xs tem a relação RelOp com Value scalar_product(+coefs,+xs, +RelOp,?Value) Onde Coefs é uma lista de comprimento n de inteiros, Xsé uma lista de comprimento n de inteiros ou variáveis de domínio, RelOp é um operador relacional e Value é um inteiro ou variável de domínio Verdadeiro se a soma de Coefs*Xstem a relação RelOp com Value 20 Caso especial de scalar_product/4 com RelOp #=: knapsack(+coefs, +Xs,?Value) Onde Coefs é uma lista de comprimento n de inteiros não negativos, Xsé uma lista de comprimento n de inteiros não negativos ou variáveis de domínio e Value é um inteiro ou variável de domínio. As variáveis de domínio devem ter limites finitos. Verdadeiro se a soma de Coefs*Xs é igual a Value Restrições de Pertença - Membership Restrições Proposicionais 21 domain(+variables, +Min, +Max) Onde Variables é uma lista de variáveis de domínio ou inteiros, Min é um inteiro ou o átomo inf ( minus infinity ), e Max é um inteiro ou o átomo sup (plus infinity). Verdadeiro se as variáveis são todas elementos do intervalo Min..Max. Não pode ser reified?x in +Range Define uma restrição de pertença ( membership ) X é um inteiro ou variável de domínio e Range é um ConstantRange Veradeiro de X é um elemento do intervalo?x in_set +FDSet Define uma restrição de pertença ( membership ) X é um inteiro ou variável de domínio e FDSet é um conjunto FD Verdadeiro de X é um elemento do FD set Restrições in/2 e in_set/2 podem ser materializadas (reified ) Mantêm consistência do domínio e as versões reified detectam domain - entailment e disentailment 22 Podem ser utilizadas como restrições reificáveis em fórmulas proposicionais sobre essas restrições Estas fórmulas são expandidas como sequências de restrições reificadas e restrições aritméticas. Exemplo: X #= 4 #\/ Y #= 6 expressa a disjunção de duas restrições de igualdade As folhas das fórmulas proposicionais podem ser restrições reificáveis, as constantes 0 ou 1 ou variáveis binárias (0/1) Novas restrições reificáveis podem ser definidas com indexicais Restrições Proposicionais Count 23 #\ :Q Verdadeiro se a restrição Q for falsa :P #/\ :Q Verdadeiro se as restrições P e Q são ambas verdadeiras :P #\ :Q Verdadeiro se exactamente uma das restrições P e Q é verdadeira :P #\/ :Q Verdadeiro se pelo menos uma das restrições P e Q é verdadeira :P #=> :Q :Q #<= :P Verdadeiro se a restrição Q é verdadeira ou se a restrição P é falsa :P #<=> :Q Verdadeiro se P e Q são ambas verdadeiras ou ambas falsas Note-se que o esquema de materialização (reification) é um caso particular das restrições preposicionais. 24 Também designadas restrições simbólicas Não são reificáveis. Mantém consistência de intervalos nos seus argumentos count(+val,+list,+relop,?count) Onde Val é um inteiro, List é uma lista de inteiros ou variáveis de domínio, Count é um inteiro ou variável de domínio, e RelOp é um operador relacional Verdadeiro se N é o número de elementos de List que são iguais a Val e N RelOp Count Ou seja: count/4 é uma generalização de exactly/3 count/4 mantém consistência de domínio, mas em geral global_cardinality( +Vars,+ Vals) é uma alternativa melhor

5 Global Cardinality global_cardinality(+vars,+vals) Onde: Varsé uma lista de inteiros ou variáveis de domínio e Vals é uma lista de termos V-K, onde V é um inteiro e K é uma variável de domínio ou um inteiro. Cada V deve ser único Verdadeiro se cada elemento de Vars é igual a um V e para cada par V-K, exactamente K elementos de Vars são iguais a V Se ou Vars ou Vals estão ground, e noutros casos especiais, global_cardinality/2 mantém a consistência de domínio, mas geralmente a consistência de intervalos não pode ser garantida Element element(?x,+list,?y) Onde: X e Ysão inteiros ou variáveis de domínio e List é uma lista de inteiros ou variáveis de domínio. Verdadeiro se o X-ésimo elemento de List é Y Operacionalmente os domínios de X e Y são restringidos de forma a que para cada elemento no domínio de X, existe um elemento compatível no domínio de Y, e vice versa Esta restrição usa um algoritmo optimizado para o caso especial em que List está ground element/3 mantém consistência de domínio em X e consistência de intervalos em List e Y All Different Descrição All Different Opções 27 all_different(+variables) all_distinct(+variables) all_different(+variables, +Options ) all_distinct(+variables, +Options) onde Variables é uma lista de variáveis de domínio ou inteiros Cada variável é restringida a tomar um valor único Equivalente a uma restrição \= para cada par de variáveis Options é uma lista de zero ou mais opções 28 on(on) - Quando acordar a restrição: dom (defeito para all_distinct/[1,2]), ou seja acordar quando o domínio de uma variável é alterado min acordar quando a lower bound é mudada max acordar quando a upper bound é mudada minmax acordar quando uma bound é mudada val (defeito para all_different/[1,2]) - acordar quando uma variável fica ground consistency(cons) Que algoritmo utilizar: global (defeito para all_distinct/[1,2]) Algoritmo de consistência de domínios - aproximadamente linear na dimensão dos domínios Local (defeito para all_different/[1,2]) Algoritmo idêntico ao conjunto de restrições binárias \=, aproximadamente linear no numero de variáveis bound Algoritmo de consistência de intervalos, quase linear no número de variáveis e valores All Different - Exemplo Restrição Ordenação 29 alldifferent([]). alldifferent([a L]) :- diff(a,l), alldifferent(l ). diff(_,[]). diff(a,[b L]) :- A #\= B, diff(a,l). alldifferent([s,e,n,d,m,o,r,y]) resulta em: S #\= E, S #\= N, S #\= D, S #\= M, S #\= O, S #\= R, S #\= Y, E #\= N, E #\= D, E #\= M, E #\=O, E #\= R, E #\= Y, N #\= D, N #\= M, N #\=O, N #\= R, N #\= Y, D #\= M, D #\=O, D #\= R, D #\= Y Idêntico ao all_different(list)! 30 Esta restrição captura a relação entre uma lista de valores, uma lista de valores ordenada de forma ascendente e as suas posições na lista original: sorting(+xs,+is,+ys) Os argumentos são listas de igual comprimento (N) de variáveis de domínio ou inteiros. Os elementos de Is estão no intervalo: 1..N. A restrição verifica-se se: Ys está em ordenação ascendente Is é uma permutação de 1..N. Para cada i em 1..N, Xs[i] é igual a Ys[Is[i]]

6 Relation Case 31 relation(?x,+maplist,?y) Onde X e Ysão inteiros ou variáveis de domínio e MapList é uma lista de pares: Inteiro-ConstantRange, onde cada chave Inteiro ocorre só uma vez Verdadeiro se MapList contém um par X-R e Y está no intervalo denotado por R. Os domínios de X e Y são restringidos de forma a que, para cada elemento no domínio de X, existe um elemento compatível no domínio de Y, e vice versa 32 case(+template, +Tuples, +Dag) case(+template, +Tuples, +Dag, +Options) Templateé um termo arbitrário non- ground Prolog (moldura) Tuples é uma lista de termos da mesma forma que Template (não devem partilhar variáveis com Template) Dag é uma lista de nós na forma node(id,x,successors), onde X é uma variável placeholder. O conjunto de todos os X deve ser igual ao conjunto de variáveis em Template O primeiro nó da lista é a raiz (rootid) Os nós ou são nós internos ou folhas, caso em que Successors é uma lista de termos (Min..Max)-ID2, onde ID2 refere-se ao nó filho. Para as folhas, Successors é uma lista de termos (Min..Max). Cada caminho da raiz a uma folha corresponde a um conjunto de tuplos admitido pela relação expressa pela restrição. Cada variável em Templatedeve ocorrer exactamente uma vez em cada caminho e não devem ocorrer ciclos. Options é uma lista de opções utilizada para controlar a restrição: leaves, on, prune. Restrição Assignment Restrição Circuit 33 Restrição sobre duas listas de dimensão n de variáveis. Cada variável é restringida a tomar um valor entre 1,...,n que é único para a sua lista. As listas são duais. assignment(+xs, +Ys) assignment(+xs, +Ys, +Options) onde Xs e Ys são listas de variáveis de domínio ou inteiros de dimensão n Options é uma lista idêntica à de all_different/2 com valor por defeito: [on(domain),complete(true)]. Verdadeiro se todos Xi, Yi no intervalo: 1,...,n e Xi=j se e só se: Yj=i. 34 Restringir n nós num grafo a formar um circuito Hamiltoniano. Os nós estão numerados de 1 a n e o circuito começa no nó 1 e visita cada um dos nós regressando à origem: circuit(+succ) circuit(+succ, +Pred) Succ é uma lista de comprimento n de variáveis de domínio ou inteiros. O i-ésimo elemento de Succ (Pred) é o sucessor (predecessor) de i no grafo. Verdadeiro se os valores formam um circuito Hamiltoniano Restrição Serialized - Introdução Restrição Serialized - Opções 35 Restringir n tarefas, cada qual com início Sj e duração Dj, de forma a que as tarefas não se sobreponham. As tarefas podem ser vistas como competindo por recursos exclusivos serialized(+starts,+durations) serialized(+starts,+durations,+options) Starts = [S1,...,Sn] e Durations = [D1,...,Dn] são listas de variáveis de domínio com limites finitos ou inteiros. Durations tem de ser nãonegativa. Verdadeiro se Starts e Durations denotam um conjunto de tarefas que não se sobrepõem, i.e.: Para todos 1 =< i<j =< n: Si+Di =< Sj OU Sj+Dj =< Si OU Di = 0 OU Dj = 0 A restrição serialized/[2,3] é um caso especial de cumulative /[4,5] Options é uma lista de zero ou mais das seguintes: 36 precedences(ps) restrições de precedência como lista de termos na forma: d(i,j,d), onde i e j devem ser números de tarefas e d um inteiro positivo ou sup, denotando: Si+d =< Sj OU Sj =< Si, se d for um inteiro Sj =< Si, se d for sup resource(r) R é unificado com um termo passado a order_resource/2 de forma a procurar uma ordenação consistente para as tarefas path_consistency(boolean) Se for verdadeiro um algoritmo redundante de consistência nos caminhos é utilizado na restrição para melhorar o corte no espaço de pesquisa static_sets(boolean) Se for veradeiro, um algoritmo redundante é utilizado que raciocina sobre o conjunto de tarefas que devem preceder (ou ser precedidas por) uma dada tarefa Outras opções: edge_finder(boolean), decomposition(boolean), bounds_only(boolean)

7 Restrição Serialized/3 Restrição Cumulativa A 37 serialized/3 pode modelizar um conjunto de tarefas que têm de ser serializadas (escalonadas) com tempos de setup dependentes da sequência Por exemplo, com 3 tarefas todas com duração 5, onde a tarefa 1 deve preceder a 2 e a tarefa 3 deve acabar antes da 2 ou começar 10 unidades de tempo depois da 2 começar:?- domain([s1,s2,s3], 0, 20), serialized([s1,s2,s3], [5,5,5], [precedences([d(2,1,sup),d(2,3,10)])]). S1 in 0..15, S2 in 5..20, S3 in 0..20? Os limites de S1 e S2 mudaram devido às restrições de precedência. Colocando S2 a 5 propaga S1=0 e S3 em Restringir n tarefas a ser realizadas no tempo em m máquinas. Cada máquina tem um limite de recursos. As tarefas são representadas por um termo O,D,E,H,M onde: O é o starttime, D a duração, E o end time, H o consumo de recursos e M o identificador da máquina As máquinas são representadas por termos: machine(m,l) onde M é um identificador e L é o limite de recursos da máquina Todos os campos são variáveis de domínio ou inteiros. L é um inteiro D deve ser não -negativo, mas H pode ser positivo ou negativo (interpretado como um consumo negativo, ou seja uma oferta de recurso) cumulatives(+tasks,+machines) cumulatives(+tasks,+machines,+options) Options é uma lista de: bound(b ), prune(p), generalization(boolean) e task_intervals(boolean) Restrição Cumulativa B Restrição Disjoint 39 Restringir n tarefas com início (start time) Sj, e duração Dj, e recursos Rj, de forma que o consumo de recursos não exceda Limit em qualquer altura: cumulative(+starts,+durations,+resources,?limit) cumulative(+starts,+durations,+resources,?limit,+options) Starts = [S1,...,Sn], Durations = [D1,...,Dn], Resource = [R1,...,Rn] são listas de variáveis de domínio ou inteiros, e Limit é uma variável de domínio ou um inteiro. Durations, Resources e Limit devem ser nãonegativas. Sendo: a = min(s1,...,sn), b = max(s1+d1,...,sn+dn) Rij = Rj, se Sj =< i < Sj+Dj Rij = 0 caso contrário A restrição não é violada se: Ri1+...+Rin =< Limit, para todos: a =< i < b Options tem a mesma forma de serialized/3, excepto resource(r ) 40 Conjunto de rectângulos ou linhas que não se devem sobrepor: disjoint1(+lines) disjoint1(+lines,+options) OndeLines é umalista de termos F(Sj,Dj) ou F(Sj,Dj,Tj), Sj e Dj são variáveis de domínio ou inteiros denotandoa origem e comprimentodalinha j respectivamente, F é um qualquer functor, e Tj é um termo atómicoopcional denotando o tipo de linha Options é uma lista de: decomposition(boolean), global(boolean), wrap(min,max), margin(t1,t2,d) Predicados de Enumeração Predicados de Optimização 41 Usualmente os solvers de restrições em domínios finitos não são completos, ou seja, não garantem que o conjunto de restrições é satisfazível! É necessário pesquisa (enumeração) para verificar a satisfabilidade e conseguir soluções concretas! Predicados para efectuar a pesquisa: labeling(:options, +Variables) Onde Variables é uma lista de variáveis de domínio ou inteiros e Options é uma lista de opções de pesquisa. Verdadeiro se uma atribuição de valores às variáveis que satisfaça todas as restrições pode ser encontrada indomain(?x) Onde X é uma variável de domínio ou um inteiro. Atribui numa ordem ascendente com backtracking valor admissíveis a X 42 Predicados de Optimização (Minimização/Maximização) de um Custo/Lucro: minimize(:goal,?x) maximize(:goal,?x) Utiliza o algoritmo branch-and-bound, com recomeço, para procurar uma atribuição que minimize/maximize a variável de domínio X. Goal deve ser um predicado Prolog que restrinja X a ficar com um valor, podendo ser um predicado labeling/2. O algoritmo chama Goal repetidamente com uma upper (lower) bound de X progressivamente mais restringida até a prova de optimalidade ser obtida (o que por vezes é demasiado demorado ) O argumento Options de labeling/2 controla a ordem de selecção de variáveis e valores e o tipo de solução a encontrar (única, óptima, etc.)

8 Opções de Ordenação de Variáveis 43 Options do labeling estão divididas em quatro grupos: Ordenação de variáveis: leftmost, min, max, ff, ffc ou variable(sel) Forma de Selecção de valores: step, enum, bisect, value(enum) Ordenação de valores: up, down Soluções a encontrar: all, minimize, maximize 44 Opções de Ordenação de variáveis: leftmost variável à esquerda (por defeito) min variável com menor lower bound max variável com maior upper bound ff - first-fail principle é usado variável com o menor domínio ffc - most constrained heuristic variável com o menor domínio, quebrando empates seleccionando a variável envolvida em mais restrições suspendidas variable(sel) Em que Sel é um predicado para seleccionar a próxima variável, chamado como: Sel(Vars, Selected, Rest) Sel deve suceder deterministicamente unificando Selected e Rest com a variável seleccionada e a lista restante Ordenação de Valores Ordenação de Valores 45 Opções de selecção de valores para uma variável: step - escolha binária entre X #= B e X #\= B, onde B é a lower ou upper bound de X. (opção por defeito) enum - Escolha múltipla para X correspondendo a valores no seu domínio bisect Escolha binária entre X #=< M e X #> M, onde M é o ponto médio do domínio de X (Divisão de domínio) value(enum) Enum é um predicado que deve reduzir o domínio de X, chamado como: Enum(X, Rest, BB0, BB) onde Rest é a lista de variáveis que necessitam de labeling excepto X, e BB0 e BB são: (ver slide seguinte) 46 Enum deve suceder de forma não-determinística reduzindo o domínio de X e efectuar backtrack, providenciando formas de redução de domínio alternativas Para assegurar que a pesquisa branch-and-boundfunciona correctamente deve chamar o predicado auxiliar: first_bound(bb0,bb) na sua primeira solução e later_bound(bb0,bb) em qualquer solução alternativa Enum deve ser um termo executável Opções na ordenação de valores (sem utilidade com a opção value(enum)): up ordenação ascendente (por defeito) down ordenação descendente Maximização e Minimização Maximização e Minimização 47 As opções seguintes controlam se todas as soluções devem ser enumeradas por backtracking ou se uma única solução que maximize(minimize) X deve ser encontrada: all - Todas as soluções são encontradas (por defeito) minimize(x) solução de custo mínimo maximize(x) solução de lucro máximo Utiliza o algoritmo branch-and-bound com recomeço para procurar uma atribuição que minimize ou maximize a variável de domínio X. O mecanismo de labeling deve restringir X a ficar com um valor para todas as atribuições de Variables. Opção: assumptions(k) Quando uma solução é encontrada, K é unificada com o número de escolhas feito 48 Exemplo 1: Enumerar soluções com ordenação de variáveis estática:?- constraints(variables), labeling([ ], Variables). [ ] é o mesmo que: [leftmost,step,up,all ] Exemplo 2: Minimizar uma função de custo utilizando pesquisa branchand-bounde ordenação dinâmica de variáveis usando o first-fail principle, e divisão de domínio explorando a parte superior dos domínios primeiro:?- constraints(variables, Cost), labeling([ff,bisect,down,minimize(cost)], Variables).

9 Maximização e Minimização Estatísticas Predicados de Estatísticas 49 de ordenação consistente de tarefas competindo por recursos exclusivos (em vez de atribuição de valores a variáveis de domínio): order_resource(+options, +Resource) Options é uma lista de opções de pesquisa e Resource representa um recurso como em serialized/3 no qual as tarefas devem ser serializadas. Verdadeiro se a ordenação total pode ser imposta nas tarefas, enumerando utilizando backtracking Opções de pesquisa: first, last selecção de tarefas para serem colocadas antes(depois) de todas as outras est Tarefas ordenadas por earliest start time. ist - Tarefas ordenadas por latest start time. ect - Tarefas ordenadas por earliest completion time. ict - Tarefas ordenadas por latest completion time. [first,est] (por defeito) e [last,lct] podem ser boas heurísticas. 50 Estatísticas de execução: fd_statistics(?key,?value) Estatísticas específicas do solver CLP(FD) Outras estatísticas (por exemplo tempo e consumo de memória): statistics/2 (normal) Para cada chave possível (Key), Value é unificado com o valor da estatística: Resumptions Número de vezes que uma restrição foi reatada Entailments Número de vezes que um (dis)entailment foi detectado por uma restrição Prunings Número de vezes que o domínio foi reduzido ( pruned ) Backtracks Número de vezes que foi encontrada uma contradição num domínio e falha foi detectada Constraints Número de restrições criadas fd_statistics Mostra um resumo das estatísticas a cima Conclusões Metodologia de resolução em PLR: Definição de variáveis e domínios, colocação de restrições, pesquisa da solução) SICStus Prolog providencia um grande número de restrições globais com aplicações distintas (all_distinct, sum, scalar_product, global_cardinality, element, cumulative, circuit, etc.) Possibilidade de definição de métodos de ordenação de variáveis e valores alternativos Possibilidade de resolução de problemas de optimização (maximização/minimização) 51

Programação Inteira. Advertência

Programação Inteira. Advertência Departamento de Informática Programação Inteira Métodos Quantitativos LEI 2006/2007 Advertência Autores João Moura Pires (jmp@di.fct.unl.pt) Susana Nascimento (snt@di.fct.unl.pt) Este material pode ser

Leia mais

Satisfação de Restrições. Capítulo 5 (disponível online)

Satisfação de Restrições. Capítulo 5 (disponível online) Satisfação de Restrições Capítulo 5 (disponível online) Sumário Problemas de Satisfação de Restrições (CSPs) Procura com Retrocesso para CSPs Procura Local para CSPs Estrutura dos CSPs Problemas de Satisfação

Leia mais

Problemas de Satisfação de Restrições

Problemas de Satisfação de Restrições Computação Inteligente Problemas de Satisfação de Restrições Lucas Augusto Carvalho Mestrado em Ciência da Computação 2011.1 DCOMP - Universidade Federal de Sergipe 1 Conteúdo Problemas de Satisfação de

Leia mais

PROGRAMAÇÃO LÓGICA POR RESTRIÇÕES NA RESOLUÇÃO DE PROBLEMAS

PROGRAMAÇÃO LÓGICA POR RESTRIÇÕES NA RESOLUÇÃO DE PROBLEMAS 3 PROGRAMAÇÃO LÓGICA POR RESTRIÇÕES NA RESOLUÇÃO DE PROBLEMAS A Programação Lógica por Restrições (PLR) corporiza um paradigma computacional que combina a natureza declarativa da programação em lógica

Leia mais

Utilização do SOLVER do EXCEL

Utilização do SOLVER do EXCEL Utilização do SOLVER do EXCEL 1 Utilização do SOLVER do EXCEL José Fernando Oliveira DEEC FACULDADE DE ENGENHARIA DA UNIVERSIDADE DO PORTO MAIO 1998 Para ilustrar a utilização do Solver na resolução de

Leia mais

IA: Problemas de Satisfação de Restrições. Prof. Msc. Ricardo Britto DIE-UFPI rbritto@ufpi.edu.br

IA: Problemas de Satisfação de Restrições. Prof. Msc. Ricardo Britto DIE-UFPI rbritto@ufpi.edu.br IA: Problemas de Satisfação de Restrições Prof. Msc. Ricardo Britto DIE-UFPI rbritto@ufpi.edu.br Introdução Um PSR é definido por um conjunto de variáveis X 1, X 2,..., X n, e por um conjunto de restrições,

Leia mais

Base de dados I. Base de dados II

Base de dados I. Base de dados II Base de dados I O que é? Uma base de dados é um simples repositório de informação, relacionada com um determinado assunto ou finalidade, armazenada em computador em forma de ficheiros Para que serve? Serve

Leia mais

Microsoft Excel na resolução de problemas de optimização

Microsoft Excel na resolução de problemas de optimização Universidade do Minho Escola de Engenharia Departamento Campus de Gualtar de Produção 4710-057 Braga e Sistemas Microsoft Excel na resolução de problemas de optimização Manual da disciplina de Métodos

Leia mais

O Método Simplex para

O Método Simplex para O Método Simplex para Programação Linear Formas de Programas Lineares O problema de Programação Matemática consiste na determinação do valor de n variáveis x 1, x 2,, x n que tornam mínimo ou máximo o

Leia mais

Inteligência Artificial. Prof. Tiago A. E. Ferreira Aula 11 Problemas com Satisfação de Vínculos

Inteligência Artificial. Prof. Tiago A. E. Ferreira Aula 11 Problemas com Satisfação de Vínculos Inteligência Artificial Prof. Tiago A. E. Ferreira Aula 11 Problemas com Satisfação de Vínculos 1 Constraint Satisfaction Problems (CSP) Conceitos básicos Busca cega simples e refinada Busca heurística

Leia mais

Inteligência Artificial Prof. Marcos Quinet Pólo Universitário de Rio das Ostras PURO Universidade Federal Fluminense UFF

Inteligência Artificial Prof. Marcos Quinet Pólo Universitário de Rio das Ostras PURO Universidade Federal Fluminense UFF Inteligência Artificial Prof. Marcos Quinet Pólo Universitário de Rio das Ostras PURO Universidade Federal Fluminense UFF No capítulo anterior... Estratégias de busca auxiliadas por heurísticas (A*, BRPM)

Leia mais

Programas simples em C

Programas simples em C Programas simples em C Problema 1. Escreve um programa em C que dados dois inteiros indique se são iguais ou qual o maior. Utilizar a construção em 5 etapas... quais? 1. Perceber o problema 2. Ideia da

Leia mais

Paradigmas de Programação

Paradigmas de Programação Paradigmas de Programação Tipos de Dados Aula 5 Prof.: Edilberto M. Silva http://www.edilms.eti.br Prof. Edilberto Silva / edilms.eti.br Tipos de Dados Sistema de tipos Tipos de Dados e Domínios Métodos

Leia mais

Projeto e Análise de Algoritmos Projeto de Algoritmos Tentativa e Erro. Prof. Humberto Brandão humberto@bcc.unifal-mg.edu.br

Projeto e Análise de Algoritmos Projeto de Algoritmos Tentativa e Erro. Prof. Humberto Brandão humberto@bcc.unifal-mg.edu.br Projeto e Análise de Algoritmos Projeto de Algoritmos Tentativa e Erro Prof. Humberto Brandão humberto@bcc.unifal-mg.edu.br Laboratório de Pesquisa e Desenvolvimento Universidade Federal de Alfenas versão

Leia mais

PROGRAMAÇÃO LINEAR. Resolução de problemas de programação linear usando o comando Solver, no Excel.

PROGRAMAÇÃO LINEAR. Resolução de problemas de programação linear usando o comando Solver, no Excel. PROGRAMAÇÃO LINEAR Resolução de problemas de programação linear usando o comando Solver, no Excel. Para além da resolução pelo método gráfico e/ou outros métodos, é possível resolver um problema de PL

Leia mais

Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos 2005.1. Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos 2005.

Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos 2005.1. Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos 2005. genda nálise e Técnicas de lgoritmos Jorge Figueiredo onceitos ásicos O Problema das Rainhas Template Genérico Mochila inária acktracking and ranch-and-ound Jogo da Troca de olas Jogo da Troca de olas

Leia mais

À DESCOBERTA DE SOFTWARE

À DESCOBERTA DE SOFTWARE À DESCOBERTA DE SOFTWARE PARA EXPLORAR A PROGRAMAÇÃO LINEAR NO ENSINO SECUNDÁRIO Paula Maria Barros (1), Ana Isabel Pereira (1), Ana Paula Teixeira (2) (1) Instituto Politécnico de Bragança, (2) Universidade

Leia mais

Introdução à Lógica de Programação

Introdução à Lógica de Programação Sistemas Operacionais e Introdução à Programação Introdução à Lógica de Programação 1 Estruturas de dados Representação computacional das informações do problema ser resolvido Informações podem ser de

Leia mais

Gestão de bases de dados e listas

Gestão de bases de dados e listas Gestão de bases de dados e listas Uma das tarefas mais comuns em que são utilizadas folhas de cálculo é a gestão de listas (listas de números de telefone, listas de clientes, listas de tarefas, listas

Leia mais

Computabilidade 2012/2013. Sabine Broda Departamento de Ciência de Computadores Faculdade de Ciências da Universidade do Porto

Computabilidade 2012/2013. Sabine Broda Departamento de Ciência de Computadores Faculdade de Ciências da Universidade do Porto Computabilidade 2012/2013 Sabine Broda Departamento de Ciência de Computadores Faculdade de Ciências da Universidade do Porto Capítulo 1 Computabilidade 1.1 A noção de computabilidade Um processo de computação

Leia mais

Problemas de Satisfação de Restrições

Problemas de Satisfação de Restrições Problemas de Satisfação de Restrições Texto base: Stuart Russel e Peter Norving - Inteligência Artificial David Poole, Alan Mackworth e Randy Goebel - Computational Intelligence A logical approach junho/2007

Leia mais

FACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO. Projeto e Análise de Algoritmos II Lista de Exercícios 2

FACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO. Projeto e Análise de Algoritmos II Lista de Exercícios 2 FACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO Projeto e Análise de Algoritmos II Lista de Exercícios 2 Prof. Osvaldo. 1. Desenvolva algoritmos para as operações abaixo e calcule a complexidade

Leia mais

Análise e Projeto de Algoritmos

Análise e Projeto de Algoritmos Análise e Projeto de Algoritmos Prof. Eduardo Barrére www.ufjf.br/pgcc www.dcc.ufjf.br eduardo.barrere@ice.ufjf.br www.barrere.ufjf.br Complexidade de Algoritmos Computabilidade: Um problema é computável

Leia mais

Investigação Operacional- 2009/10 - Programas Lineares 3 PROGRAMAS LINEARES

Investigação Operacional- 2009/10 - Programas Lineares 3 PROGRAMAS LINEARES Investigação Operacional- 2009/10 - Programas Lineares 3 PROGRAMAS LINEARES Formulação A programação linear lida com problemas nos quais uma função objectivo linear deve ser optimizada (maximizada ou minimizada)

Leia mais

Computação Paralela. Desenvolvimento de Aplicações Paralelas João Luís Ferreira Sobral Departamento do Informática Universidade do Minho.

Computação Paralela. Desenvolvimento de Aplicações Paralelas João Luís Ferreira Sobral Departamento do Informática Universidade do Minho. Computação Paralela Desenvolvimento de Aplicações Paralelas João Luís Ferreira Sobral Departamento do Informática Universidade do Minho Outubro 2005 Desenvolvimento de Aplicações Paralelas Uma Metodologia

Leia mais

Projeto e Análise de Algoritmos Projeto de Algoritmos Tentativa e Erro Parte 2. Prof. Humberto Brandão humberto@bcc.unifal-mg.edu.

Projeto e Análise de Algoritmos Projeto de Algoritmos Tentativa e Erro Parte 2. Prof. Humberto Brandão humberto@bcc.unifal-mg.edu. Projeto e Análise de Algoritmos Projeto de Algoritmos Tentativa e Erro Parte 2 Prof. Humberto Brandão humberto@bcc.unifal-mg.edu.br versão da aula: 0.3 Última aula teórica Algoritmo de Tentativa e Erro:

Leia mais

Arrendamento de espaço num armazém

Arrendamento de espaço num armazém Construção de Modelos de Programação Linear e Inteira 6 Arrendamento de espaço num armazém Uma empresa planeia arrendar espaço num armazém, sendo as suas necessidades para os próximos 5 meses as seguintes:

Leia mais

Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: 2010-1 Prof. Dr. Raimundo Moura

Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: 2010-1 Prof. Dr. Raimundo Moura UFPI CCN DIE Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: 2010-1 Prof. Dr. Raimundo Moura O projeto Desenvolver um compilador de um subconjunto básico da linguagem PORTUGOL.

Leia mais

Métodos Numéricos e Estatísticos Parte I-Métodos Numéricos Teoria de Erros

Métodos Numéricos e Estatísticos Parte I-Métodos Numéricos Teoria de Erros Métodos Numéricos e Estatísticos Parte I-Métodos Numéricos Lic. Eng. Biomédica e Bioengenharia-2009/2010 O que é a Análise Numérica? Ramo da Matemática dedicado ao estudo e desenvolvimento de métodos (métodos

Leia mais

Capítulo 1 Erros e representação numérica

Capítulo 1 Erros e representação numérica Capítulo 1 Erros e representação numérica Objetivos Esperamos que ao final desta aula, você seja capaz de: Pré-requisitos Identificar as fases de modelagem e os possíveis erros nelas cometidos; Compreender

Leia mais

Layouts Balanceamento de Linhas. Maria Antónia Carravilla

Layouts Balanceamento de Linhas. Maria Antónia Carravilla Layouts Balanceamento de Linhas Maria Antónia Carravilla Abril 1998 1. Layouts... 1 1.1 Definição, tipos de layouts... 1 1.1.1 Definição... 1 1.1.2 Factores determinantes para a construção de um layout...

Leia mais

Faculdade de Engenharia Optimização. Prof. Doutor Engº Jorge Nhambiu

Faculdade de Engenharia Optimização. Prof. Doutor Engº Jorge Nhambiu 1 Programação Linear (PL) Aula 5: O Método Simplex. 2 Algoritmo. O que é um algoritmo? Qualquer procedimento iterativo e finito de solução é um algoritmo. Um algoritmo é um processo que se repete (itera)

Leia mais

Métodos de Programação I 2. 1 Ana Maria de Almeida CAPÍTULO 2 CONTEÚDO

Métodos de Programação I 2. 1 Ana Maria de Almeida CAPÍTULO 2 CONTEÚDO Métodos de Programação I 2. 1 CAPÍTULO 2 CONTEÚDO 2.1 Programação: Conceitos Fundamentais 2.1.1 Fases de construção de um programa executável 2.2.2 Metodologia da programação 2.2 A Linguagem Pascal 2.2.1

Leia mais

Algoritmos Genéticos (GA s)

Algoritmos Genéticos (GA s) Algoritmos Genéticos (GA s) 1 Algoritmos Genéticos (GA s) Dado um processo ou método de codificar soluções de um problema na forma de cromossomas e dada uma função de desempenho que nos dá um valor de

Leia mais

Programação em Lógica com Restrições Exame sem consulta - Duração: 3 horas

Programação em Lógica com Restrições Exame sem consulta - Duração: 3 horas DI-FCT/UNL 17 de Junho de 2010 Programação em Lógica com Restrições Exame sem consulta - Duração: 3 horas N º : Nome: Grupo 1 (4 valores) 1 a) Para cada um dos seguintes golos, indique se sucede (com V,

Leia mais

Evolução via Selecção Natural (Darwin) - sobrevivem os mais aptos (fittest )

Evolução via Selecção Natural (Darwin) - sobrevivem os mais aptos (fittest ) Generalidades A metáfora Biológica Evolução via Selecção Natural (Darwin) - sobrevivem os mais aptos (fittest ) Operadores Genéticos (Mendel) - recombinação (crossover ) - mutação (mutation ) Algoritmos

Leia mais

Faculdade de Engenharia Optimização. Prof. Doutor Engº Jorge Nhambiu

Faculdade de Engenharia Optimização. Prof. Doutor Engº Jorge Nhambiu 1 Programação Não Linear Aula 25: Programação Não-Linear - Funções de Uma única variável Mínimo; Mínimo Global; Mínimo Local; Optimização Irrestrita; Condições Óptimas; Método da Bissecção; Método de Newton.

Leia mais

Análise de Sensibilidade

Análise de Sensibilidade Análise de Sensibilidade Transparências de apoio à disciplina de Investigação Operacional rupo de ontrolo e estão Análise de Sensibilidade A análise de sensibilidade permite responder a um conjunto de

Leia mais

Inteligência Artificial Taguspark

Inteligência Artificial Taguspark Inteligência Artificial Taguspark Segundo Teste/ Exame Época Normal 7 de Julho de 2005 Esta prova tem 12 páginas. Preencha cuidadosamente o nome e número de cada página desta prova. Este teste/exame tem

Leia mais

IA: Busca Competitiva. Ricardo Britto DIE-UFPI rbritto@ufpi.edu.br

IA: Busca Competitiva. Ricardo Britto DIE-UFPI rbritto@ufpi.edu.br IA: Busca Competitiva Ricardo Britto DIE-UFPI rbritto@ufpi.edu.br Sumário Introdução Árvores de Jogos Minimax Antecipação Limitada Poda Alfa-beta Introdução Jogos têm sido continuamente uma importante

Leia mais

Resolução de Problemas Com Procura. Capítulo 3

Resolução de Problemas Com Procura. Capítulo 3 Resolução de Problemas Com Procura Capítulo 3 Sumário Agentes que resolvem problemas Tipos de problemas Formulação de problemas Exemplos de problemas Algoritmos de procura básicos Eliminação de estados

Leia mais

Electrónica de Seguros

Electrónica de Seguros Sistema Multi-Agente Mediação Electrónica de Seguros Luís Nogueira (ISEP) Eugénio Oliveira (FEUP) LIACC / NIAD&R Motivação e Objectivos Problema apresentado na Industrial Session - AMEC SIG Meeting, 2001

Leia mais

Engenharia de Processos e Sistemas

Engenharia de Processos e Sistemas Engenharia de Processos e Sistemas Implementação e Aplicação de Modelos em Escalonamento de Produção Susana Relvas Departamento de Engenharia e Gestão Instituto Superior Técnico susana.relvas@ist.utl.pt

Leia mais

Teoria da Computação - Programação OCaml Ficha de exercícios

Teoria da Computação - Programação OCaml Ficha de exercícios Teoria da Computação - Programação OCaml Ficha de exercícios Simão Melo de Sousa Em parte, estes exercícios baseam-se nas fichas práticas retiradas do site OCaml Hump 1 Aritmética Exercício 1 (Fibbonacci)

Leia mais

PC Fundamentos Revisão 4

PC Fundamentos Revisão 4 exatasfepi.com.br PC Fundamentos Revisão 4 André Luís Duarte...mas os que esperam no Senhor renovarão as suas forças; subirão com asas como águias; correrão, e não se cansarão; andarão, e não se fatigarão.is

Leia mais

APLICAÇÕES DA DERIVADA

APLICAÇÕES DA DERIVADA Notas de Aula: Aplicações das Derivadas APLICAÇÕES DA DERIVADA Vimos, na seção anterior, que a derivada de uma função pode ser interpretada como o coeficiente angular da reta tangente ao seu gráfico. Nesta,

Leia mais

Licenciatura em Matemática Aplicada Investigação Operacional Exercícios de Programação Inteira

Licenciatura em Matemática Aplicada Investigação Operacional Exercícios de Programação Inteira Licenciatura em Matemática Aplicada Investigação Operacional Exercícios de Programação Inteira Filipe Alvelos Departamento de Produção e Sistemas Universidade do Minho Primeira versão: 23 de Outubro de

Leia mais

SQL. SQL (Structured Query Language) Comando CREATE TABLE. SQL é uma linguagem de consulta que possibilita:

SQL. SQL (Structured Query Language) Comando CREATE TABLE. SQL é uma linguagem de consulta que possibilita: SQL Tópicos Especiais Modelagem de Dados Prof. Guilherme Tavares de Assis Universidade Federal de Ouro Preto UFOP Instituto de Ciências Exatas e Biológicas ICEB Mestrado Profissional em Ensino de Ciências

Leia mais

Base de dados I. Uma base de dados é um simples repositório de informação relacionado com um determinado assunto ou finalidade

Base de dados I. Uma base de dados é um simples repositório de informação relacionado com um determinado assunto ou finalidade Base de dados I O que é? Uma base de dados é um simples repositório de informação relacionado com um determinado assunto ou finalidade Para que serve? Serve para gerir vastos conjuntos de informação de

Leia mais

Escola Secundária c/3º CEB José Macedo Fragateiro. Curso Profissional de Nível Secundário. Componente Técnica. Disciplina de

Escola Secundária c/3º CEB José Macedo Fragateiro. Curso Profissional de Nível Secundário. Componente Técnica. Disciplina de Escola Secundária c/3º CEB José Macedo Fragateiro Curso Profissional de Nível Secundário Componente Técnica Disciplina de Sistemas Digitais e Arquitectura de Computadores 29/21 Módulo 1: Sistemas de Numeração

Leia mais

Resolução da Lista 2 - Modelos determinísticos

Resolução da Lista 2 - Modelos determinísticos EA044 - Planejamento e Análise de Sistemas de Produção Resolução da Lista 2 - Modelos determinísticos Exercício 1 a) x ij são as variáveis de decisão apropriadas para o problemas pois devemos indicar quantos

Leia mais

CAP. I ERROS EM CÁLCULO NUMÉRICO

CAP. I ERROS EM CÁLCULO NUMÉRICO CAP. I ERROS EM CÁLCULO NUMÉRICO 0. Introdução Por método numérico entende-se um método para calcular a solução de um problema realizando apenas uma sequência finita de operações aritméticas. A obtenção

Leia mais

Problema apresentado no AMEC SIG meeting da rede AgentLink, 2001

Problema apresentado no AMEC SIG meeting da rede AgentLink, 2001 Luís Nogueira (ISEP) Eugénio Oliveira (FEUP) LIACC / NIAD&R Problema apresentado no AMEC SIG meeting da rede AgentLink, 2001 Sistema multi-agente Comparar e avaliar produtos complexos Valor acrescentado

Leia mais

1. Introdução 2. Representação de números 2.1. Conversão Numérica 2.2. Aritmética de ponto flutuante 3. Erros 3.1 Erros Absolutos e Relativos

1. Introdução 2. Representação de números 2.1. Conversão Numérica 2.2. Aritmética de ponto flutuante 3. Erros 3.1 Erros Absolutos e Relativos 1. Introdução 2. Representação de números 2.1. Conversão Numérica 2.2. Aritmética de ponto flutuante 3. Erros 3.1 Erros Absolutos e Relativos 1. Introdução O que é cálculo numérico? Corresponde a um conjunto

Leia mais

Universidade Estadual de Mato Grosso do Sul - Curso de Ciência da Computação Disciplina: Estruturas de Dados Profª. Raquel Marcia Müller

Universidade Estadual de Mato Grosso do Sul - Curso de Ciência da Computação Disciplina: Estruturas de Dados Profª. Raquel Marcia Müller 1 Listas Lineares Dentre as estruturas de dados não primitivas, as listas lineares são as de manipulação mais simples. Uma lista linear agrupa informações referentes a um conjunto de elementos que, de

Leia mais

EXCEL TABELAS DINÂMICAS

EXCEL TABELAS DINÂMICAS Informática II Gestão Comercial e da Produção EXCEL TABELAS DINÂMICAS (TÓPICOS ABORDADOS NAS AULAS DE INFORMÁTICA II) Curso de Gestão Comercial e da Produção Ano Lectivo 2002/2003 Por: Cristina Wanzeller

Leia mais

Programação Elementar de Computadores Jurandy Soares

Programação Elementar de Computadores Jurandy Soares Programação Elementar de Computadores Jurandy Soares Básico de Computadores Computador: dispositivos físicos + programas Dispositivos físicos: hardware Programas: as instruções que dizem aos dispositivos

Leia mais

Figura 13.1: Um exemplo de árvore de diretório.

Figura 13.1: Um exemplo de árvore de diretório. 13. Árvores W. Celes e J. L. Rangel Nos capítulos anteriores examinamos as estruturas de dados que podem ser chamadas de unidimensionais ou lineares, como vetores e listas. A importância dessas estruturas

Leia mais

SQL Linguagem de Manipulação de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

SQL Linguagem de Manipulação de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri SQL Linguagem de Manipulação de Dados Banco de Dados SQL DML SELECT... FROM... WHERE... lista atributos de uma ou mais tabelas de acordo com alguma condição INSERT INTO... insere dados em uma tabela DELETE

Leia mais

Best-first search. Pesquisa informada. Best-first search Pesquisa gananciosa (greedy) Best-first search

Best-first search. Pesquisa informada. Best-first search Pesquisa gananciosa (greedy) Best-first search Pesquisa informada Dispomos de informação especifica sobre o problema. Esta informação pode ser disponibilizada por uma função de avaliação que indica o quão desejável é expandir um determinado nó. Best-first

Leia mais

Módulo III. Folhas de Cálculo

Módulo III. Folhas de Cálculo Módulo III Ferramentas do Office Folhas de Cálculo Ferramentas de produtividade 1 Folhas de Cálculo O que é: Uma Folha de Cálculo é, por tradição, um conjunto de células que formam uma grelha ou tabela

Leia mais

Pesquisa Operacional Programação em Redes

Pesquisa Operacional Programação em Redes Pesquisa Operacional Programação em Redes Profa. Alessandra Martins Coelho outubro/2013 Modelagem em redes: Facilitar a visualização e a compreensão das características do sistema Problema de programação

Leia mais

Curriculum DeGóis Guia de preenchimento do Curriculum Vitae (Informação mínima necessária)

Curriculum DeGóis Guia de preenchimento do Curriculum Vitae (Informação mínima necessária) Curriculum DeGóis Guia de preenchimento do Curriculum Vitae (Informação mínima necessária) /curriculum Julho de 2008 Versão 1.1 1 Introdução O objectivo deste guia é auxiliar o utilizador da Plataforma

Leia mais

Notas de aula número 1: Otimização *

Notas de aula número 1: Otimização * UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL UFRGS DEPARTAMENTO DE ECONOMIA CURSO DE CIÊNCIAS ECONÔMICAS DISCIPLINA: TEORIA MICROECONÔMICA II Primeiro Semestre/2001 Professor: Sabino da Silva Porto Júnior

Leia mais

Power Systems. Monitorizar o ambiente de virtualização

Power Systems. Monitorizar o ambiente de virtualização Power Systems Monitorizar o ambiente de virtualização Power Systems Monitorizar o ambiente de virtualização Nota Antes de utilizar as informações contidas nesta publicação, bem como o produto a que se

Leia mais

Sistemas de Nomes Planos

Sistemas de Nomes Planos Sistemas de Nomes Planos November 2, 2009 Sumário Sistemas de Nomes Planos e DHTs Chord Sistemas de Nomes Planos Tipicamente, sistemas de nomes à escala da Internet usam nomes estruturados hierarquicamente.

Leia mais

Uma lei que associa mais de um valor y a um valor x é uma relação, mas não uma função. O contrário é verdadeiro (isto é, toda função é uma relação).

Uma lei que associa mais de um valor y a um valor x é uma relação, mas não uma função. O contrário é verdadeiro (isto é, toda função é uma relação). 5. FUNÇÕES DE UMA VARIÁVEL 5.1. INTRODUÇÃO Devemos compreender função como uma lei que associa um valor x pertencente a um conjunto A a um único valor y pertencente a um conjunto B, ao que denotamos por

Leia mais

Aula 01. - Bibliografia - Definições - Operadores - Criação de um algoritmo - Exercícios. Algoritmo e Programação. Prof. Fábio Nelson.

Aula 01. - Bibliografia - Definições - Operadores - Criação de um algoritmo - Exercícios. Algoritmo e Programação. Prof. Fábio Nelson. - Bibliografia - Definições - Operadores - Criação de um algoritmo - Exercícios Aula 01 Slide 1 BIBLIOGRAFIA SCHILDT H. C Completo e Total, Makron Books. SP, 1997. Curso de linguagem C da UFMG. ZIVIANI,

Leia mais

Planeamento e Controlo de Projectos

Planeamento e Controlo de Projectos Planeamento e Controlo de Projectos Transparências de apoio à leccionação de aulas teóricas Versão 2.1 c 2010, 2006, 1998 Maria Antónia Carravilla José Fernando Oliveira FEUP Planeamento e Controlo de

Leia mais

Exemplos de Vistas SQL. Tipos em SQL. Linguagem de Definição de Dados (DDL) CREATE VIEW todososclientes As

Exemplos de Vistas SQL. Tipos em SQL. Linguagem de Definição de Dados (DDL) CREATE VIEW todososclientes As Exemplos de Vistas SQL Considere-se a vista (com o nome todososconsumidores) contento os nomes das agências e seus clientes CREATE VIEW todososclientes As Π nomebalcao,nomecliente (temconta conta) Π nomebalcao,nomecliente

Leia mais

UFCD 787. Administração de base de dados. Elsa Marisa S. Almeida

UFCD 787. Administração de base de dados. Elsa Marisa S. Almeida UFCD 787 Administração de base de dados Elsa Marisa S. Almeida 1 Objectivos Replicação de base de dados Gestão de transacções Cópias de segurança Importação e exportação de dados Elsa Marisa S. Almeida

Leia mais

Geração de código. Ivan Ricarte INTRODUÇÃO À COMPILAÇÃO

Geração de código. Ivan Ricarte INTRODUÇÃO À COMPILAÇÃO Geração de código Ivan Ricarte 2008 Sumário Geração de código intermediário Código de três endereços Notação pós-fixa Otimização de código Heurísticas de otimização Geração de código em linguagem simbólica

Leia mais

Um Modelo Matemático de Gestão de Recursos Humanos

Um Modelo Matemático de Gestão de Recursos Humanos 30 Um Modelo Matemático de Gestão de Recursos Humanos JORGE SANTOS Departamento de Matemática, Escola Superior de Tecnologia de Viseu 1. Introdução O material que aqui publicamos foi resultado de várias

Leia mais

Exemplo de Subtração Binária

Exemplo de Subtração Binária Exemplo de Subtração Binária Exercícios Converta para binário e efetue as seguintes operações: a) 37 10 30 10 b) 83 10 82 10 c) 63 8 34 8 d) 77 8 11 8 e) BB 16 AA 16 f) C43 16 195 16 3.5.3 Divisão binária:

Leia mais

e à Linguagem de Programação Python

e à Linguagem de Programação Python Introdução a Algoritmos, Computação Algébrica e à Linguagem de Programação Python Curso de Números Inteiros e Criptografia Prof. Luis Menasché Schechter Departamento de Ciência da Computação UFRJ Agosto

Leia mais

O Problema do Troco Principio da Casa dos Pombos. > Princípios de Contagem e Enumeração Computacional 0/48

O Problema do Troco Principio da Casa dos Pombos. > Princípios de Contagem e Enumeração Computacional 0/48 Conteúdo 1 Princípios de Contagem e Enumeração Computacional Permutações com Repetições Combinações com Repetições O Problema do Troco Principio da Casa dos Pombos > Princípios de Contagem e Enumeração

Leia mais

Pedro Vasconcelos DCC/FCUP. Programação Funcional 15 a Aula Árvores de pesquisa

Pedro Vasconcelos DCC/FCUP. Programação Funcional 15 a Aula Árvores de pesquisa Programação Funcional 15 a Aula Árvores de pesquisa Pedro Vasconcelos DCC/FCUP 2014 Árvores binárias Um árvore binária é um grafo dirigido, conexo e acíclico em que cada vértice é de um de dois tipos:

Leia mais

Geração de código intermediário. Novembro 2006

Geração de código intermediário. Novembro 2006 Geração de código intermediário Novembro 2006 Introdução Vamos agora explorar as questões envolvidas na transformação do código fonte em uma possível representação intermediária Como vimos, nas ações semânticas

Leia mais

Programação Linear com o Microsoft Excel R

Programação Linear com o Microsoft Excel R Programação Linear com o Microsoft Excel R Adriano Verdério 1, Clezio A. Braga 1 1 Colegiado do Curso de Matemática - Centro de Ciências Exatas e Tecnológicas da Universidade Estadual do Oeste do Paraná

Leia mais

b : nas representações gráficas de funções do tipo

b : nas representações gráficas de funções do tipo do as suas escolhas a partir daí. Nesta situação, tendem a identificar as assímptotas verticais, as assímptotas horizontais e a associar as representações analítica e gráfica que têm estas características

Leia mais

Chord. Tecnologias de Middleware. Fernando Martins - fmp.martins@gmail.com

Chord. Tecnologias de Middleware. Fernando Martins - fmp.martins@gmail.com Chord Tecnologias de Middleware 2006/2007 Fernando Martins - fmp.martins@gmail.com Tópicos Objectivo Motivação Peer-To-Peer Chord Descrição Geral Características Distintivas Comparação DNS Modelo do Sistema

Leia mais

Modelo de Dados Relacional Restrições de um Banco de Dados Relacional

Modelo de Dados Relacional Restrições de um Banco de Dados Relacional Modelo de Dados Relacional e as Restrições de um Banco de Dados Relacional Modelo de Dados Relacional Conceitos do Modelo Relacional Representa o banco de dados como uma coleção de relações. Comparação

Leia mais

3 Configuração Colaborativa de Linha de Produtos de Software

3 Configuração Colaborativa de Linha de Produtos de Software 3 Configuração Colaborativa de Linha de Produtos de Software Tendo em vista os problemas e limitações apresentados na Seção 1.1 e Seção 2.2, propomos uma nova forma de abordar a configuração colaborativa

Leia mais

Teoria da Complexidade

Teoria da Complexidade handout.pdf June 5, 0 Teoria da Complexidade Cid C. de Souza / IC UNICAMP Universidade Estadual de Campinas Instituto de Computação o semestre de 0 Revisado por Zanoni Dias Autor Prof. Cid Carvalho de

Leia mais

Aula 4 Pseudocódigo Tipos de Dados, Expressões e Variáveis

Aula 4 Pseudocódigo Tipos de Dados, Expressões e Variáveis 1. TIPOS DE DADOS Todo o trabalho realizado por um computador é baseado na manipulação das informações contidas em sua memória. Estas informações podem ser classificadas em dois tipos: As instruções, que

Leia mais

Gestão de dados. Organização da Informação => Base de Dados (BD) => Informação Estruturada

Gestão de dados. Organização da Informação => Base de Dados (BD) => Informação Estruturada Gestão de dados Organização da Informação em Bases de Dados Conceitos básicos Organização da Informação em Folhas de Cálculo Tabelas de dados Ordenação Formulários Filtros Funções pré-definidas da Categoria

Leia mais

CTC-17 Inteligência Artificial Problemas de Busca. Prof. Paulo André Castro pauloac@ita.br

CTC-17 Inteligência Artificial Problemas de Busca. Prof. Paulo André Castro pauloac@ita.br CTC-17 Inteligência Artificial Problemas de Busca Prof. Paulo André Castro pauloac@ita.br www.comp.ita.br/~pauloac Sala 110, IEC-ITA Sumário Agentes que buscam soluções para problemas: Exemplo Tipos de

Leia mais

7.2. TESTE DE WILCOXON-MANN-WHITNEY

7.2. TESTE DE WILCOXON-MANN-WHITNEY CAPÍTULO 7 TESTES NÃO PARAMÉTRICOS No primeiro quadro aparece a estatística descritiva para as duas variáveis, no segundo quadro aparecem o número de sinais (+) e ( ) (na coluna N ), a média ( Mean Rank

Leia mais

Tempo Real 7/4/2010. Aula 10. Engenharia de Sistemas Embarcados

Tempo Real 7/4/2010. Aula 10. Engenharia de Sistemas Embarcados Agenda Aula 10 Engenharia de Sistemas Embarcados Prof. Abel Guilhermino Tópico: Sistemas de Tempo Real Conceitos Gerais Processos de Tempo Real Periódico, Aperiódicos e Esporádicos Escalonamento de Tempo

Leia mais

As fases na resolução de um problema real podem, de modo geral, ser colocadas na seguinte ordem:

As fases na resolução de um problema real podem, de modo geral, ser colocadas na seguinte ordem: 1 As notas de aula que se seguem são uma compilação dos textos relacionados na bibliografia e não têm a intenção de substituir o livro-texto, nem qualquer outra bibliografia. Introdução O Cálculo Numérico

Leia mais

Os primeiros passos com a TI-Nspire

Os primeiros passos com a TI-Nspire Os primeiros passos com a TI-Nspire 1. Cria um novo documento: pressiona a tecla HOME, c, e selecciona 6:New Doc pressionando 6 ou quando o ícone estiver seleccionado. Se tiveres outro documento aberto,

Leia mais

FUNÇÃO COMO CONJUNTO R 1. (*)= ou, seja, * possui duas imagens. b) não é uma função de A em B, pois não satisfaz a segunda condição da

FUNÇÃO COMO CONJUNTO R 1. (*)= ou, seja, * possui duas imagens. b) não é uma função de A em B, pois não satisfaz a segunda condição da FUNÇÃO COMO CONJUNTO Definição 4.4 Seja f uma relação de A em B, dizemos que f é uma função de A em B se as duas condições a seguir forem satisfeitas: i) D(f) = A, ou seja, o domínio de f é o conjunto

Leia mais

Algoritmos Computacionais ( Programas )

Algoritmos Computacionais ( Programas ) Algoritmos Computacionais ( Programas ) A partir deste tópico, consideramos a utilização do universo Computacional na solução de problemas. Para tanto devemos lembrar que a transposição de problemas do

Leia mais

Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Standards ISO e ANSI SQL-86, SQL-89, SQL-92, SQL:1999, SQL:2003

Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Standards ISO e ANSI SQL-86, SQL-89, SQL-92, SQL:1999, SQL:2003 Bases de Dados Introdução à linguagem SQL História Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R Renomeada para SQL (Structured Query Language) Standards ISO e ANSI SQL-86, SQL-89,

Leia mais

PROGRAMAÇÃO DE MICROPROCESSADORES 2011 / 2012

PROGRAMAÇÃO DE MICROPROCESSADORES 2011 / 2012 Departamento de Engenharia Electrotécnica PROGRAMAÇÃO DE MICROPROCESSADORES 2011 / 2012 Mestrado Integrado em Engenharia Electrotécnica e de Computadores 1º ano 2º semestre Trabalho Final Reservas de viagens

Leia mais

Disciplina de Banco de Dados Parte V

Disciplina de Banco de Dados Parte V Disciplina de Banco de Dados Parte V Prof. Elisa Maria Pivetta CAFW - UFSM Modelo de Dado Relacional O Modelo Relacional O Modelo ER é independente do SGDB portanto, deve ser o primeiro modelo gerado após

Leia mais

Álgebra Linear. Mauri C. Nascimento Departamento de Matemática UNESP/Bauru. 19 de fevereiro de 2013

Álgebra Linear. Mauri C. Nascimento Departamento de Matemática UNESP/Bauru. 19 de fevereiro de 2013 Álgebra Linear Mauri C. Nascimento Departamento de Matemática UNESP/Bauru 19 de fevereiro de 2013 Sumário 1 Matrizes e Determinantes 3 1.1 Matrizes............................................ 3 1.2 Determinante

Leia mais

Árvores. Seqüência de arcos, com origem na raiz e final em um determinado nó. Quantos caminhos existem para se atingir um determinado nó?

Árvores. Seqüência de arcos, com origem na raiz e final em um determinado nó. Quantos caminhos existem para se atingir um determinado nó? 39 Árvores Conceitue caminho. Seqüência de arcos, com origem na raiz e final em um determinado nó. Quantos caminhos existem para se atingir um determinado nó? Apenas um. O que determina o tamanho de um

Leia mais

Representação de Dados

Representação de Dados Representação de Dados Propriedades Domínio - Valores que um tipo de dado pode assumir; Gama de variação - N.º de valores que um dado pode assumir; Precisão Distância entre dois valores consecutivos Operações

Leia mais

Optimização de um Plano de Marketing Directo. para o Sector da Banca ESTATÍSTICA E GESTÃO DE INFORMAÇÃO

Optimização de um Plano de Marketing Directo. para o Sector da Banca ESTATÍSTICA E GESTÃO DE INFORMAÇÃO Optimização de um Plano de Marketing Directo para o Sector da Banca Daniel Barata Trabalho de projecto para obtenção do Grau de Mestre em ESTATÍSTICA E GESTÃO DE INFORMAÇÃO Instituto Superior de Estatística

Leia mais